보편적 언어(Ubiquitous Language)는 도메인 주도 설계(DDD)에서 개발자, 도메인 전문가, 이해관계자 등 프로젝트 팀 전체가 모델을 정의하고 소통할 때 사용하는 공통된 언어 체계이다. 기술적 용어가 아닌 비즈니스 도메인의 개념을 반영하며, 대화뿐만 아니라 소스 코드, 문서, 다이어그램에 일관되게 적용되어 의사소통의 간극을 해소한다.
2. 핵심 가치
의사소통 비용 절감: 모호한 기술 용어나 잘못 해석된 비즈니스 용어로 인한 오해를 방지하여 설계의 정확도 향상.
코드와 모델의 일치: 보편적 언어로 정의된 개념이 클래스명, 변수명, 메서드명에 직접 반영되어 코드가 곧 비즈니스 문서의 역할을 수행.
의미적 경계 형성: 특정 용어가 바운디드 컨텍스트(Bounded Context) 내에서만 유효한 의미를 가짐으로써 모듈 간의 결합도를 낮추고 응집도를 높임.
3. 구축 및 실천 방법
용어집 관리: 도메인 전문가와 협의하여 핵심 도메인 개념에 대한 명확한 정의와 용어를 정리한 공유 용어집(Shared Glossary) 유지.
이벤트 스토밍 (Event Storming): 협업 워크샵을 통해 도메인 이벤트와 커맨드를 식별하며 자연스럽게 보편적 언어 도출.
지속적 갱신: 비즈니스 환경이 변화함에 따라 도메인 모델과 언어를 끊임없이 동기화하고 코드에 반영.
4. 트레이드오프 및 주의사항
협업 오버헤드: 도메인 전문가의 지속적인 참여와 깊은 모델링 시간이 필수적이므로 초기 분석 리소스가 많이 소요됨.
엄격한 규율 요구: 팀 내에서 약속된 용어를 코드에 강제하고, 일관성을 유지하기 위한 지속적인 리뷰와 문서화 노력이 필요함.
컨텍스트 오염 방지: 하나의 단어가 여러 컨텍스트에서 서로 다른 의미로 쓰일 경우, 이를 명확히 분리된 바운디드 컨텍스트로 격리하여 언어의 순수성 유지.