안녕하세요. 메타클라우드 입니다. 😎
패스트캠퍼스 챌린지 08일차 블로그 학습 정리 포스팅입니다.
학습기록
금번 포스팅은 서비스 설계 방법에 대해 알아보는 강의를 정리하였습니다. 패스트캠퍼스 08일차 수강 인증샷 입니다.
1. 모놀리식 vs 마이크로서비스
- 모놀리식 아키텍쳐는 마이크로서비스 아키텍쳐의 반대되는 개념이면서 전통적인 아키텍쳐를 지칭하는 의미로 생겨난 용어입니다. 보통은 하나의 서비스나 애플리케이션이 커다란 하나의 아키텍쳐를 가질 때 모놀리식(Monolithic) 아키텍쳐라 합니다.
- 모놀리식 아키텍쳐의 경우 개발 초기에는 단순 아키텍쳐 구조로 쉽게 개발하고 End-to-End 테스트가 용이할 수 있지만 프로젝트 규모가 점점 커지면 작은 수정사항도 전체를 다시 빌드하고 배포해야 하거나 또는 유지보수가 점점 어려워지고 일부 오류가 전체에 영향을 끼치는 단점이 있습니다.
- 대규모로 커지면 단점이 많지만 소규모 애플리케이션이나 서비스에서는 모놀리식 아키텍쳐를 적용하는 것이 나쁜것만은 아닙니다.
- 마이크로서비스 아키텍쳐는 하나의 큰 애플리케이션이나 서비스를 여러개의 작은 애플리케이션과 서비스로 작게 쪼개어 변경과 조합이 쉽게 될수 있도록 만든 아키텍쳐를 마이크로서비스 아키텍쳐(Microservice Architecture, MSA)라 합니다.
- 마이크로서비스 아키텍쳐는 클라우드 컴퓨팅 환경, REST API의 일반화, Docker와 같은 컨테이너 기술의 발전 등 기술 발전에 힘입어 좀 더 손쉽게 구현하게 될 수 있게됐습니다.
- MSA는 모놀리식 아키텍쳐의 문제점들을 어느정도 보완해 줄 수 있는 장점이 있습니다. 예를들면 서비스 단위가 작다보니 작은 변경사항에 대하여 전체 서비스 중단없이 신속하게 배포가 가능하다는 장점이 있습니다.
- 물론 단점도 있습니다. 전체 서비스가 커지면 서비스 간 서로 호출하는 API가 늘어나서 통신 비용이나 Latency가 증가할 수도 있고 데이터가 여러 서비스에 분산되어 저장되기 때문에 한번에 조회 및 관리가 어려운 점이 있습니다.
2. DDD(Domain Driven Design)
- 먼저 도메인(Domain)의 사전적 정의는 정보와 활동의 영역으로 애플리케이션 내의 로직들이 관여하는 정보와 활동의 영역이라고 생각하면 됩니다.
- 그렇다면 DDD(Domain Driven Design) 도메인 주도 디자인이란 개발을 함에 있어 앞서 설명한 도메인이 중심이 되어 개발하는 방식을 말합니다.
- 기존 개발 프로세스의 경우 기획자의 서비스 기획의 내용 등 요구사항을 개발자가 받아서 설계하고 서비스를 개발하고 이러한 사이클이 계혹 반복되는데 여기서 기획과 개발 사이에서 커뮤니케이션의 어려움 등으로 기획과 개발 산출물의 괴리가 생기는 문제가 있습니다.
- 이에 대한 해결책으로 기획자, 개발자, 디자이너 등 각각의 파트들이 이해할 수 있도록 각각의 도메인을 서비스별로 정의하여 커뮤니케이션을 도메인을 중심으로 개발 프로세스를 변경하는 것을 DDD라고 합니다.
- DDD도 마이크로서비스와 마찬가지로 클라우드 컴퓨팅환경 발전, Docker와 같은 컨테이너를 통한 Scale in / out 등 기술의 발전을 통해 이를 사용한 개발 프로세스와 운영 환경이 대세가 되어 점점 더 DevOps가 중요해 지고 있습니다.
3. Event Storming
- 이벤트 스토밍은 DDD를 실무에 써보기 위한 방법이라 생각하면 됩니다. 더 쉽게 설명드리자면 도메인으로 정의한 것을 기획자, 개발자, 디자이너 모두 서로 공통된 언어로 공유하고 전체 서비스가 어떻게 돌아가는지 한눈에 볼 수 있는 지도(또는 타임라인)을 만드는 것을 이벤트 스토밍이라 합니다.
- 이러한 방법론은 Alberto Brandolini라는 이탈리아 출신의 DDD 컨설턴트가 DDD 설계를 가속화 시킬 수 있는 설계 기법을 고안해 낸 것을오 서비스를 도메인 및 이벤트로 정의한 것을 기획자, 개발자, 디자이너 등 각각의 이해 관계자들이 모여서 브레인 스토밍하는 워크샵을 이벤트 스토밍이라 부릅니다.
- 보다 자세한 내용은 아래 SK C&C 테크 블로그의 이벤트 스토밍에 대한 포스팅을 참고하면 더욱 도움이 될 것 같습니다.
https://engineering-skcc.github.io/microservice%20modeling/Event-Storming/
마이크로서비스 모델링 ④ : 이벤트 스토밍을 통한 마이크로서비스 도출
DDD의 전략적 설계를 쉽고 빠르게 진행할 수 있는 이벤트 스토밍을 통한 마이크로서비스 도출 워크샵에 대해 알아보자.
engineering-skcc.github.io
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
수강료 100% 환급 챌린지 | 패스트캠퍼스
딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!
fastcampus.co.kr
'DevOps > Fast Campus' 카테고리의 다른 글
[패스트캠퍼스 챌린지 10일차] - 백엔드 Django 2 (0) | 2021.11.10 |
---|---|
[패스트캠퍼스 챌린지 09일차] - 백엔드 Django 1 (0) | 2021.11.09 |
[패스트캠퍼스 챌린지 07일차] - AWS Bastion Host (0) | 2021.11.07 |
[패스트캠퍼스 챌린지 06일차] - AWS NACL & SG (0) | 2021.11.06 |
[패스트캠퍼스 챌린지 05일차] - Public, Private Subnet 구성 (0) | 2021.11.05 |