IT STUDY LOG
[마이크로서비스] 02. 도메인 주도 설계와 모놀리식 분해 전략 본문
# 학습 내용
1. 도메인 주도 설계와 모놀리식 분해 전략
도메인이란?
- 도메인 지식 : 어떤 산업, 분야를 이해하기 위해 필요한 지식
- 도메인 : 지식, 영향력, 또는 활동 영역으로 개발 분야에서는 소프트웨어로 해결하려는 문제 영역을 의미
도메인 모델의 예시
- 온라인 서점에서 "도서"라는 하위 도메인을 개발 영역에서 모델링한다면?
도메인을 표현하는 대표적인 사례, 도메인 모델
- OOP : 객체지향 프로그래밍에서는 도메인이 클래스(상태, 동작을가지는 객체)로 표현
- ERD
도메인 주도 설계 (Domain Driven Design)
- 하나의 도메인 모델에 대한 이해관계가 각각 다름을 인정하고, 각 팀에 적합한 하위 도메인을 설정하고, 해당 하위 도메인에 대한 맥락을 알고 있는 사람이 따라야할 비즈니스 규칙에 대한 경계를 설정하는 설계 방식
- 도메인 내부에서 문제 해결이 가능한 형태로 도메인을 모델링하는 기법
- 마이크로서비스로 구현 가능
도메인 주도 설계 (Domain Driven Design)의 주요 용어
1. 보편 언어(ubiquitous language)
- 도메인의 특정 업무와 관련된 사람들 사이에서 통용되는 개념
2. 한정된 맥락(bounded context)
- 설계하는 시스템이 존재하는 도메인의 특정 부분에만 초점을 맞추는 것을 의미
DDD가 제안하는 해결책
업무 범위를 분리
- 모델의 경계를 분명히 하고 업무 범위 내로만 아키텍처를 구성 -> 보편 타당한 클래스 이름 짓기가 가능
- 모든 도메인에 용어를 맞추기 위해 모호한 단어를 쓸 필요가 없음
서비스를 분리
- 데이터베이스도 서비스 별로 분리
마이크로서비스 아키텍처
- DDD를 실현하기에 딱 맞는 마이크로서비스 아키텍처
- DDD를 실현하기 위한 방법 중 하나임여 DDD의 유일한 해결책은 아님(마이크로서비스 =/= DDD)
마이크로서비스 아키텍처를 도입하기 위해서는
- 도메인 지식을 가진 엔지니어가 팀마다 존재해야 함
- 자연스레 기능 조직이 아니라 목적 조직화됨
- 여러 서비스가 잘 결합할 수 있도록 디자인
- 동시에 다른 서비스에 지나치게 의존해서는 안됨
- 서비스를 오케스트레이션 해야 함
- 오케스트레이터는 각 서비스가 죽는지 안 죽는지 여부, 트래픽이 수용 가능한지 아닌지 여부, 인프라 유지보수(업그레이드, 패치 등) 업무 등에만 집중
마이크로서비스로 소프트웨어를 작성하려면
- 소프트웨어 작성에 앞서 팀의 일하는 방식을 보다 독립적으로 만들어내야 함
- 마이크로서비스 아키텍처를 통해 팀의 일하는 방식이 보다 독립적으로 만들어질 수 있음
∴ 즉, 문화로서의 DevOps를 실천해야만 가능
# References
챗 GPT
'devops bootcamp 4 > DevOps 인프라 관리' 카테고리의 다른 글
[마이크로서비스 작성] 02. 마이크로서비스 배포 툴 (0) | 2023.05.09 |
---|---|
[마이크로서비스 작성] 01. 독립적인 서비스 구성 (1) | 2023.05.09 |
[마이크로서비스] 04. CQRS (0) | 2023.05.08 |
[마이크로서비스] 03. API 디자인과 프로세스 간 통신 (1) | 2023.05.08 |
[마이크로서비스] 01. 마이크로서비스 구조와 특징 (0) | 2023.05.03 |