MSA, 백엔드, DDD, Java, 스프링부트, 강의, Spring, Springboot
  • 프로그래밍
  • 중급

DDD를 활용한 MSA 구현 : Java/SpringBoot 기반 클라우드 네이티브 앱 개발

MSA 아키텍처부터 Java와 SpringBoot, 쿠버네티스를 활용한 클라우드 네이티브 어플리케이션 프로젝트로 'MSA 개발 경험'을 위한 A to Z 커버!

2기
강의 일정
23.11.04 ~ 23.12.23 (총 8회) 매주 토요일 10:00~13:00 (총 24시간)

유니콘 IT 기업 개발자의 필수 우대조건
DDD와 MSA 혼자 공부하기 어려웠다면?

[도메인 주도 설계로 시작하는 마이크로서비스 개발] 저자에게 직접 피드백 받으세요!

강의소개

DDD,MSA 개발은 정해진 답이 없고 광범위합니다.
SK 전사 MSA전문가에게 아키텍팅부터 개발 배포까지 가이드 받으세요.

MSA 강의

01. DDD의 전략적, 전술적 설계로 시작하는 MSA 구현

DDD(Domain Driven Design)는 도메인 내부에서 문제 해결을 위한 도메인을 모델링하는 기법, 즉 비즈니스 규칙에 대한 경계를 설정하는 설계 방식으로 MSA를 구축하기 위한 가장 좋은 방법 중 하나입니다. MSA는 아키텍처는 고객 경험 향상과 동시에 서비스의 유연성, 확장성 등을 향상시킬 수 있기에 우리는 전략적 설계인 이벤트 스토밍 기법을 활용하여 비즈니스 도메인 매핑 및 Bounded Context를 식별하며, 전술적 설계를 위해 Bounded Context 내부를 모델링함으로써 더욱 견고하고 최적화된 성능을 제공하는 시스템을 구현하실 수 있습니다.

02. MSA 내부 아키텍처 패턴에 대한 완벽한 이해로 비즈니스 로직 구현!

내부 아키텍처의 경우, 표준이 없기 때문에 MSA를 설계하는 데 가장 어려운 부분입니다. 본 강의에서는 마이크로서비스 내부 구조 정의를 위한 다양한 내부 아키텍처 패턴을 학습하여 전통적인 레이어드 아키텍처의 한계와 헥사고널, 클린 아키텍처의 특징 비교를 통해 바람직한 마이크로서비스 내부 구조에 대한 사고방식을 습득합니다. 나아가 개별 마이크로서비스의 비즈니스 로직 구현 패턴 및 내부 아키텍처 스타일에 대한 기준을 정의할 수 있습니다.

03. 모놀리식에서 MSA 아키텍처로 전환하여 실무에 즉시 적용하고 싶다면!

백엔드를 구현한 MSA 개발 프로젝트를 진행합니다. 구체적으로 헥사고널의 내부 영역인 도메인 모델, 유스케이스를 구현하고 외부 영역인 API 컨트롤러 구현, CQRS + EDA 의 적용 사례에 대해 살펴봅니다. 분산 아키텍처 상황에서의 비지니스 정합성을 맞추기 위해 결과적 일관성을 구현한 프로젝트를 완성합니다. 나아가 MSA를 구성하는 다양한 기술 요소의 홍수 사이에서 어떠한 단위 기술에 집중할지, 무엇부터 먼저 공부해야 할지 판단할 수 있습니다.


본 강의에서
무엇을 얻어갈 수 있나요?

MSA 개발의 A to Z: 설계부터 구축까지

  • MSA의 최신 기법 습득

    DDD와 헥사고날 아키텍처

    도메인 주도 설계(Domain - Driven Design)를 통해 기능적으로 응집성 있고 다른 서비스와 의존관계가 적은 마이크로서비스를 식별하게 하는 MSA 구조를 구성합니다. 헥사고날 아키텍처를 통해 마이크로서비스 내부 구조 역시 기술 변화에 유연한 구조를 가지게 함으로써 비즈니스 변화에 민첩하게 대응하게끔 합니다. 이를 통해 유연한 구조를 갖는 마이크로서비스를 설계하는 방법을 습득합니다.

    MSA 강의
  • MSA 설계 역량

    외부, 내부 아키텍처 패턴 중심으로

    클라우드 네이티브 구축에 필수인 MSA의 내/외부 아키텍처를 모두 다룹니다. 내부 아키텍처로는 레이어드, 헥사고날, 클린 아키텍처가 시스템의 기민한 변경을 위해서 어떤 유연성을 제공할 수 있는지, 외부 아키텍처로는 MSA의 주요 패턴과 기술 요소를 완벽히 파악합니다. 또한 아키텍팅, 설계, 개발, 테스트 프로세스를 통해 MSA에 대한 거시적인 시선을 갖출 수 있습니다.

    MSA 강의
  • MSA 개발 프로젝트

    Java와 SpringBoot 활용

    유니콘 IT 기업들이 개발자에게 요구하는 MSA 개발 경험을 달성할 수 있습니다. 스프링 부트 기반 개발환경 설정부터 MSA 패키지 구조 구현과 API 컨트롤러를 구현하는데서 나아가 구현한 기능의 완결성 검토를 위해 코드기반의 단위 테스트와 API 테스트를 진행해 볼 예정입니다. 추가로 CQRS와 EDA 적용 사례에 대해 살펴보고 분산 아키텍처 상황에서의 비즈니스 적합성을 맞추기 위한 결과적 일관성 개념을 이해하고 구현합니다.

    MSA 강의

MSA 개발 역량 갖추어
IT 공룡기업의 개발자로 성장하세요!


본 강의가 특별한 이유는
무엇인가요?

1

23년차 아키텍트의 MSA 직강

개발자가 클라우드 환경 개발에 진입할 수는 있겠지만 체계적인 소프트웨어 설계, 개발 과정에 대한 이해가 있으려면 아키텍트의 역량이 필요합니다. 일반적인 소프트웨어 개발과정과는 다르게 아키텍팅, 설계 수준부터 가르칩니다.

2

MSA 구현부터 K8s 배포까지

국내 강의들은 MSA 패턴 또는 구현에 치중되어 있습니다만 본 강의에서는 MSA 프로젝트 구현에 필수적인 패턴부터 개발 프로세스와 DDD(도메인 주도 설계)에 대해 다룰 뿐 아니라 Java와 SpringBoot를 사용하여 클라우드 네이티브 어플리케이션 구현까지 진행합니다.

3

오프라인 네트워킹

다양한 회사의 현직자들과의 네트워킹을 통해 MSA 에 대한 현업에서의 고민들을 경험할 수 있습니다.또한, 현직 어플리케이션 아키텍트에게 실시간으로 MSA 개발에 대한 피드백을 얻을 수 있습니다.

수강 대상

이런 분들은 꼭 들으셔야 해요!


MSA 개발 역량을 갖추어
유니콘 IT 기업으로 이직하고 싶은 개발자


MSA 프로젝트 초기단계부터
구축경험이 필요한 사람


MSA형태의 첫 애플리케이션 개발을 준비하는 개발자/기술리더

강사소개

우리 강사님을 소개할게요!

MSA 강의
한정헌
이력사항
  • (현) SK(주) C&C 소프트웨어 Cloud Architect
  • 한국정보기술연구원, LG 전자 MSA 과정 강의
  • 한국표준협회, 한국품질협회, 신세계 스파로스 아카데미 MSA 과정 멘토링
저서
  • [도메인 주도 설계로 시작하는 마이크로서비스 개발] 저자

MSA 강의

1. 자기소개 부탁드립니다.

안녕하세요. 23년차 개발자 한정헌입니다.
다양한 도메인 환경에서 프로젝트, 애플리케이션 경험을 가지고 있고 개발자 입장에서는 개발 과정이 즐겁고 행복해야하며, 만든 프로그램은 유지보수가 편하고, 유연하고 구조적으로 아름다워야 한다고 생각합니다. 그렇지만 제가 겪은 현실은 그렇지 못한 상황이라 도리어 개발 과정이 매우 고단할뿐더러, 우리가 만든 소프트웨어는 기능만 간신히 돌아가는 품질로 매우 아름답지 못하는 상태가 더 많죠.저의 경력들이 이를 개선하기 위해서 나름 노력들을 한 과정이었다고 생각합니다. 그동안은 업계 현실이 워낙 척박했기 때문에 이런 과정은 무시되고 결과만 어느정도 나오면 되는 프로그램이 존재할 수 있었겠지만 최근에 클라우드 환경에서의 애플리케이션의 개발 환경과 문화는 더이상 지속 가능한 진화를 만들어 내지 못한다고 생각합니다. 따라서 개발환경, 과정, 문화, 아키텍처, 설계 기법에의 많은 변화가 필요하고 이를 위한 기여를 하고 싶고 하고 있기에 여러분들과 함께 그 경험을 나눠보려합니다.

2. 강의에서는 주로 어떤 내용을 다룰 예정이시고, 어떤 형태로 진행되나요?

MSA를 단순 아키텍처가 아닌 개발문화관점에서 바라보며, 소프트웨어 역사에서 어떤 필요성에 있어 진화해왔는지, 왜 MSA가 대두되었는지, 일반적인 소프트웨어 개발 과정을 모두 포함한 "아키텍팅-설계-개발-테스트" 순으로 진행하려고 합니다.

3. 본 강의에서 배운 내용을 수강생 분들이 어떻게 활용할 수 있을까요?

클라우드 네이티브의 끝판 왕인 마이크로서비스 개발에 관심이 있거나 실무에 적용하려는 수강생 한테 도움이 될 것 같고 실제 현업의 프로젝트를 진행하는데 활용 될 수 있다고 생각합니다.

4. 다른 강의와 어떤 차별점이 있나요?

시중에 클라우드 관련 요소 기술에 대한 강의는 많이 있는 것 같습니다. 예를 들면 AWS, 애저, k8s관련 플랫폼 교육, 또는 단위 프론트 엔드 기술, 스프링 부트같은 백엔드 기술과 관련된 강의말이죠. 하지만 우리의 목표인 소프트웨어 개발은 이런 단위 기술에 대한 이해도보다는 단위 기술을 아우르는 아키텍팅, 설계, 개발 과정을 이해하는 것이 더 우선되어야 한다고 생각합니다. 본 교육은 MSA 진행 전반에 걸친 숲을 파악하고 숲이 어떠한 나무들로 이루어져 있는구나를 파악하게 하려고 합니다. 따라서 단위 기술 예를 들면 스프링부트, 메시지 큐등을 이해하기에는 본 강의가 부족할 것 입니다. 그렇지만 전체적인 숲을 이해함으로써 이후에 어떤 기술 분야를 좀 더 학습하면 되겠구나하는 좋은 방향성, 이정표를 가지게 될 것으로 생각됩니다.

5. 마지막으로 수강생들에게 하고 싶으신 말이 있다면?

이번 강의를 통해 MSA전반에 따른 지식 요소 및 어떠한 마이크로서비스 구조가 바람직하고 어떠한 설계, 개발 과정이 필요한지 알 수 있을 것이라고 생각합니다. 또한 물론 교육과정 상으로는 가장 바람직한 과정과 구조를 소개하겠지만 현실은 다양한 트레이드 오프, 아키텍처 결정, 설계 결정을 요구합니다. 현장에서 느끼는 이론과는 다른 한계 사항들 그것들을 위한 실용적인 판단 및 고려사항을 우리나라의 개발 생태계를 아름답게 만들 미래의 동료들과 나누고 싶습니다.

커리큘럼 (8)

  • 1주차. 마이크로서비스 개념, 진행시 고려할 사항

    강의 목표

    • 클라우드 환경에서 가장 바람직한 애플리케이션 형태로 왜 마이크로서비스가 화두가 되고 있는지 알아보고, 모노리식 애플리케이션과의 차이를 통해 그 주요 특징을 살펴봅니다. 실무에서 진행되고 있는 기존 레거시 애플리케이션에서 클라우드 환경으로의 전환 과정에서의 진화되는 클라우드 애플리케이션 유형을 알아보고 그 유형중의 가장 진화된 형태인 마이크로서비스의 성숙도 및 진행 고려사항도 살펴봅니다.

    이론

    • 클라우드 환경에서의 마이크로서비스의 의미
    • 모노리스와 마이크로서비스 비교 , 기반 조건들 ,주요 특징
    • 클라우드 전환 프로세스에 따른 클라우드향 애플리케이션 유형 및 마이크로서비스 성숙도
  • 2주차. MSA 외부 아키텍처/패턴 학습과 도커,쿠버네티스실습

    강의 목표

    • 소프트웨어 개발에서의 아키텍처링과 설계간의 관계를 이해하고 주요 아키텍처 스타일을 살펴보고 마이크로서비스 아키텍처를 구성하는 외부 아키텍처, 내부 아키텍처 개념을 이해한다. 
      MSA 외부 아키텍처를 구성하는 주요 패턴 및 기술 요소들을 알아본다.

    이론

    • 아키텍처링과 설계, 주요 아키텍처 스타일
    • 내/외부 아키텍처 구성 요소
    • MSA 패턴 1: 인프라, 운영 관리

    실습

    • 도커 컨테이너 생성(도커 데스크탑 설치, 도커 파일 생성)
    • katacode를 활용한 쿠버네티스 실습
  • 3주차. MSA 내부 아키텍처/패턴 학습과 레이어드, 헥사고널 구조 만들기

    강의 목표

    • MSA 내부 아키텍처를 구성하는 주요 패턴 및 기술 요소들을 알아본다.

      마이크로서비스 내부를 구성하는 주요 내부 애플리케이션 아키텍처에 대해 살펴보며 전통적인 레이어드 아키텍처의 문제점을 헥사고널/ 클린 아키텍처가 어떻게 해소하고 있는지, 이러한 아키텍처가 시스템의 기민한 변경을 위해 어떤 유연성을 제공하는지 이해한다.

    이론

    • MSA 패턴 2: 플랫폼 패턴,어플리케이션 관련 패턴
    • 마이크로서비스 내부 아키텍처: 레이어드, 헥사고널, 클린

    실습

    • IDE설치, 설정, 스프링 부트 프로젝트 생성 
    • 스프링 부트 패키지 구조로  레이어드, 헥사고널 구조 만들어서 비교해 보기 
  • 4주차. DDD학습과 전술적 설계 실습

    강의 목표

    • 마이크로서비스 구현를 위한 기민한 애자일 프로세스를 살펴보고 설계기법으로 가장 많이 사용하고 있는 도메인 주도 설계에 대해 알아본다.

    이론

    • 애자일한 Cloud native 개발 프로세스
    • 도메인 주도 설계(Domain Driven Design) 개념
    • DDD 전략적/ 전술적 설계 주요 구성 요소

    실습

    • draw.io를 활용한 전술적 설계 실습
  • 5주차. 이벤트 스토밍 워크샵을 통한 전략적 설계

    강의 목표

    • 마이크로서비스 설계 시, 중요한 요소가 전체 업무 기능 중에 어떠한 기능들을 마이크로서비스로 식별하여 분리할것인지를 명확하게 판단해야합니다.
      실제 업무 흐름을 기반으로 가장 빠르고 쉽게 마이크로서비스를 도출할 수 있는 이벤트 스토밍 워크샵 실습을 통해 도메인 주도 설계의 전략적 설계를 이해합니다. 

    이론

    • 이벤트 스토밍 워크샵 진행 방법 소개

    실습

    • miro를 활용한 이벤트 스토밍 워크샵 진행
  • 6주차. MSA구현: 마이크로서비스 패키지 구조 구현

    강의 목표

    • 마이크로서비스 개발을 위한 샘플 비지니스를 소개하고 개발의 입력물인 설계 산출물을 이해한다. 
      개발 환경 및 서비스 구현 기술 요소에 대해 이해하고, 헥사고날 아키텍처를 어떻게 패키지 구조로 구현되는 지 알아본다.

    이론

    • 샘플 비지니스 소개 및 이벤트 스토밍 결과
    • 대상 마이크로서비스 도메인 모델 소개
    • 개발 환경설정요소 소개
    • 마이크로 서비스 구현 기술 요소 설명
    • 헥사고날 아키텍처 구현을 위한 패키지 구조 정의

    실습

    • 스프링 부트 기반 개발환경 설정
    • 마이크로서비스 패키지 구조 구현
  • 7주차. MSA 구현: 외,내부 영역 구현과 단위 테스트

    강의 목표

    • 제공된 샘플에 기반하여 헥사고날의 내부 영역인 도메인 모델,유스케이스를 구현하고 외부 영역인 API 컨트롤러를 구현한다. 
      구현한 기능의 완결성을 검토하기 위해 코드기반의 단위테스트 를 수행하고, API 테스트도 수행해 본다.

    이론

    • 헥사고날한 마이크로서비스 내부 구성요소 및 역할 소개

    실습

    • 내부영역 구현 - 도메인 모델 ,유스케이스구현
    • 외부영역 구현 – API 컨트롤러 구현
    • 내부영역 단위 테스트 수행
    • 외부영역 API 테스트 수행
  • 8주차. MSA 구현: CQRS, EDA와 이벤트 메시지 큐 설정을 통해 결과적 일관성 구현

    강의 목표

    • 샘플로 제공한 비지니스 상에서의 CQRS + EDA 의 적용 사례에 대해 살펴보고 분산 아키텍처 상황에서의 비지니스 정합성을 맞취기 위한 결과적 일관성 개념을 이해하고 구현해 본다.

    이론

    • CQRS + EDA , 결과적 일관성 개념 이해

    실습

    • 이벤트 메시지 큐 설정(카프카 또는 래빗엠큐 등)
    • EDA, 비동기 통신을 통한 결과적 일관성 구현

커리어 성장으로 가는 길, 러닝스푼즈와 함께 하세요!

지금 보고 계시는 강의의 관련 태그로 다른 강의도 찾아보세요.

오프라인

DDD를 활용한 MSA 구현 : Java/SpringBoot 기반 클라우드 네이티브 앱 개발

강의찾기