패스트캠퍼스 챌린지 26일차
도메인 주도 설계 개요(DDD) 및 기존(전통적) 방법론 소개
기존 개발 프로세스
기획자
- 사업기획
- 서비스기획
- 요구사항 정의
마케터
- 사업기획
- 지표 관리
- 아이디어 제안(기획자에게 추가적인 아이디어 제안)
개발자
- 설계 및 구현(기획자와 마케터가 구상해 놓은 것을 실제로 구현) - DB의 구조는 어떻게? 언어는 뭘로? 보안은 어떻게? 서버는 어떻게? 등을 정의.
- 유지보수
디자이너
- 페이지 및 배너 디자인
=> PM이 이러한 인원의 트러블을 조율하고 일정에 차질이 없도록 관리하는 사람 - PM
=> 해당 인원들을 통해서 하기와 같은 업무 프로세스를 수행
기획/디자인/마케팅에서 전체적인 프로세스
- 시장조사(IF 시장성이 있다면 서비스 기획)
- 서비스 기획
- 베타 서비스 개발
- 마케팅(소규모) - User Feed Back바탕으로 기획 수정
- 서비스 기획
- 마케팅(소규모)...반복
개발자 입장의 프로세스
전체적인 요구사항 => 설계 => 구현 => 마케팅 => 수정된 요구사항 => 설계 => 구현 => 반복...
- 기획과 개발에서 각자의 애로 사항 발생 - 소프트웨어 개발과 도메인 모델(기획)과의 불일치 발생
- 결론적으로 도메인을 추상화하여 모델을 만들고 모델을 실체화하여 소프트웨어를 만들기까지 어려움이 발생
: 의사소통에서 많은 loss발생
참고) 도메인: 실제 서비스 / 모델은 서비스를 개발자가 구현을 하기 위해 간략화한 설계도
해결방안
DDD
1. 보편언어 사용
도메인에 대한 어휘를 이해관계자(기획자, 개발자, 분석가)들이 모두 이해할 수 있는 공통 언어로 정의.
2. 모델 주도 설계
도메인과 모델의 간극을 최소화
분석/설계/구현의 모든 단계를 관통하는 하나의 모델을 유지
=> 의사소통이 좀 더 잘 되도록 하자!
도메인의 복잡성, 즉 소프트웨어의 복잡성을 해결하기 위해서는 의사소통을 잘 되도록 해야 한다.
DDD(전략적 설계)
- BROAD하게 비즈니스에 맞도록 맞게 설계하는 것
- 서비스 안에서 일어 날 수 있는 모든 상황(Context)을 고려 - Event Storming(주문, 주문 취소, 배송 등등등)
- 이것들을 바탕으로 각 Context 그룹핑
- 왜 그Context 룹핑?: 하나하나 Context를 설계하기에는 너무 어려움. 어느 정도 추상화 하기 위해 영향으로 구분.
- Bounded Context
- 컨텍스트 맵핑을 통해 Bounded Context간의 관계를 정의
=> 최종적으로 도메일 모델을 생성.
=> 도메인 모델: 일종의 설계도로 서비스의 다양한 기능들을 간략화해서 추상화한 설계도.
=> 여러가지 Context를 분리하고 Context mapping으로 연결하고 분리와 연결한 기능을 가지고 있음.
예)
맞춤형 AI 문제 추천 앱
- 아이가 먼저 진단 테스트(Diagnostic test)를 봐서
- 레벨을 진단(Level(by part)). 즉, 아이의 수준을 진단 한 다음
- 어떤 부분에서 취약점이 있는 지 판단하여
- 판별된 Level을 바탕으로 Custom problem set, 즉 유사한 문제를 추천.
- 학생이 문제를 풀면 거기서 Wrong Prob. 를 통해 결과물을 바탕으로
- 다시 Level(by part)로 Level을 진단하고 Custom problem set을 생성
- 최종적으로 Level을 통해 백분위 - Predicted Points - 를 계산하고 어떤 부분을 집중적으로 봐야 할 지 알기 위해 Custom Course를 추천
DDD(전술적 설계)
- 전략적 설계보다 전략 안에서 세세하게 모델링하는 것
- 개발방법론이 아닌 일종의 철학.
지금까지 DDD의 철학에 대해서 알아 보았는데, 의사소통만 DDD가 쉽다 뿐이지 솔직히 개발자가 개처럼 일한다는 건 DDD나 뭐나 똑같은 것 같다. 그래서 강의의 짤 인증샷과 함께 오늘은 -끝-
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성 되었습니다.
#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한 번에 끝내는 AWS 인프라 구축과 DevOps 운영 초격차 패키지 Online!
'OS and 코딩 > AWS' 카테고리의 다른 글
CH02_05. (백엔드) Django 기초 1 (0) | 2021.11.28 |
---|---|
CH02_04. (설계) 어플리케이션 이벤트스토밍 (0) | 2021.11.27 |
CH02_02. (개요) 프로젝트 개요(온라인 주문 어플리케이션) (0) | 2021.11.25 |
한 번에 끝내는 AWS 인프라 구축과 DevOps 운영 초격차 패키지 Online CH02_01. (0) | 2021.11.24 |
한 번에 끝내는 AWS 인프라 구축과 DevOps 운영 초격차 패키지 Online! - Part2(AWS기반 소규모 & 중규모 아키텍트 설계) ch1_12 (0) | 2021.11.23 |