DDD와 MSA #3

DeokwonPark·2022년 11월 29일
1

4. 마이크로서비스와 애자일 개발 프로세스

마이크로서비스를 만들기 위한 가장 효울적인 프로세스는 실제로 동작하는 제픔중심의 애자일 개발 프로세스이다.
애자일방법론에서의 설계란 어느정도 개발을 시작할 수 있을정도의 가벼운 설계를 말한다. 설계를 단순하고 간단하게 하고 개발을 진행한 뒤 지속적인 리팩토링을 하는 작업이 더 효율적라고 판단하기 때문이다.

1) 도메인 주도 설계와 마이크로서비스

마이크로서비스를 도출하고 내부구조를 설계하는데 도메인 주도 설계 기법을 활용하는 것이 효과적이다.
DDD에는 전략적 설계와 전술적 설계라는 설계영역이 있다.

  • 전략적 설계 : 유비쿼터스 언어를 통해 도메인 지식을 공유하고, 이를 기준으로 개념과 경계를 식별해 바운디드 컨텍스트를 정의하고 경계의 관계를 컨텍스트 맵으로 정의하는 활동 (???)
  • 전술적 설계 : 식별된 바운디드 컨텍스트 내에 도메인 개념인 도메인 모델을 구성하는 유용한 모델링 구성요소들을 설명(???)

2) 기민한 설계/개발 프로세스

반복적인 스크럼 생명주기

스프린트는 스크럼의 반복적인 생명주기이며 보통 1~4주 동안 실행된다. 백로그라는 일감 목록을 기준으로 매 스프린트마다 실제로 동작하는 소프트웨어를 시연하고 피드백을 얻는다.

  • 스크럼 팀 : 여러 직능을 가진 다양한 전문가들이 팀을 이루어 의사결정이 빠르고 협업이 긴밀하다는 장점을 가진다.

스프린트 내 개발 공정

스프린트 내에서 개발을 살펴보면 백엔드 개발자와 프런트엔드 개발자 역할대로 공정이 구분된다. 두 영역의 접목은 API설계를 통해 진행된다.

백엔드 설계 및 개발
백엔드 설계의 시작은 API설계이다. API 설계는 프론트엔드에 제공해야할 명세이므로 초기에 설계하여 프론트엔드와 협의해야한다.
도메인 모델 설계는 DDD를 적용하여 UML등을 활용한 별도의 모델링 없이 화이트보드와 같은 단순한 도구들을 활용하여 모델을 작성하고 이를 바로 소스코드로 도메인 모델을 개발한다.

프런트엔드 설계 및 개발
백엔드 API를 호출하여 제공된 데이터를 기반으로 UI에 어떻게 표현할것인가를 정의하는 활동이다.

빌드 및 배포
기민한 개발을 위해서 개발이 진행되는 과정에서 지속적으로 빌드되고 배포 되도록 빌드 및 배포 환경을 자동화 해야한다.

  • 소스코드 리포지토리 : 프런트, 백엔드를 위한 소스코드 리포지토리 구성(Git,GitHub,SVN)
  • Build Job 구성 : 리포지토리의 소스코드를 통합하여 컴파일 및 테스트하는 활동을 자동화 한다.(젠킨스)
  • 컨테이너 생성파일 작성 : 배포 환경을 컨테이너 환경으로 구성할 경우 운영체제와 WAS에 빌드된 애플리케이션을 묶어서 컨테이너 이미지를 생성하는 스크립트를 작성할 수 있다.
  • 배포 스크립트 작성 : 자동으로 배포하는 스크립트를 작성한다.

1개의 댓글

comment-user-thumbnail
2022년 12월 1일

잘보고 갑니다 ㅎㅎ 정리가 잘 되어있어서 좋네요

답글 달기