티스토리 뷰
유비쿼터스 언어란?
유비쿼터스 언어(Ubiquitous Language)는 기획자, 개발자, 도메인 전문가가 같은 개념을 같은 단어로 부르자는 약속이다.
"장바구니"를 어떤 개발자는 관심 상품 목록이라고 이해하고, 다른 팀원은 구매 직전에 담아두는 공간으로 이해할 수 있다. 이런 인식 차이가 쌓이면 대화할 때마다 "그게 무슨 뜻이야?"를 반복하게 된다.
유비쿼터스 언어를 정하면 이 비용이 사라진다. 관심 상품은 "좋아요", 장바구니는 "미래에 구매할 상품을 담아두는 공간"으로 팀 전체가 같은 뜻으로 쓴다.
용어 사전 (Glossary)
유비쿼터스 언어를 실제로 관리하는 방법이 용어 사전이다. Bounded Context별로 해당 맥락에서 쓰이는 용어와 그 의미를 정리하면 된다.
| Bounded Context | 용어 | 의미 |
|---|---|---|
| 상품(Product) | 상품(Product) | 사용자가 구매할 상품의 정보 |
| 브랜드(Brand) | 브랜드(Brand) | 상품이 속한 브랜드 정보 |
| 좋아요(Like) | 좋아요(Like) | 사용자가 관심 있는 상품을 표시한 것 |
| 장바구니(Cart) | 장바구니(Cart) | 사용자가 미래에 구매할 상품을 담아두는 공간 |
| 장바구니(Cart) | 장바구니 항목(CartItem) | 장바구니에 담긴 상품 |
| 주문(Order) | 주문(Order) | 사용자가 상품을 구매하겠다고 표시한 행위 |
| 주문(Order) | 주문 항목(OrderItem) | 주문에 포함된 개별 상품 정보 |
| 주문(Order) | 주문 취소(Order Cancellation) | 사용자가 주문을 철회하는 행위 |
| 배송(Delivery) | 배송(Delivery) | 사용자가 주문한 상품을 전달하는 행위 |
| 배송(Delivery) | 배송지(Delivery Address) | 사용자가 주문한 상품을 전달받을 주소 |
| 회원(Member) | 회원(Member) | 서비스에 가입한 사용자 |
마무리
유비쿼터스 언어는 코드에도 반영되어야 한다. 용어 사전에서 "장바구니 항목"이라고 정의했으면 클래스 이름도 CartItem이어야 하고, 변수명도 cartItem이어야 한다. 코드와 용어가 따로 놀면 결국 개발자끼리도 "이 클래스가 그 개념 맞아?"를 반복하게 된다.
용어 사전은 한 번 만들고 끝이 아니다. 도메인이 바뀌면 용어도 바뀌고, 용어가 바뀌면 코드도 바뀌어야 한다. 번거롭지만 이걸 안 하면 시간이 지날수록 팀원들이 서로 다른 언어로 말하게 된다.
'라이브러리&프레임워크 > Spring' 카테고리의 다른 글
| 이커머스 좋아요 집계 방식 비교 (0) | 2026.03.15 |
|---|---|
| 동시성 전략, 경합 빈도만 보면 안 되는 이유 (0) | 2026.03.09 |
| Bounded Context란 무엇인가? (0) | 2026.03.01 |
| API 개발 시 중복 요청을 고려해본 적이 있나요? (0) | 2025.11.23 |
| JPA 엔티티에서 Setter 대신 Builder 패턴을 사용해야 하는 이유 (0) | 2025.11.10 |
