Inflearn brand logo image
Inflearn brand logo image
개발 · 프로그래밍

/

백엔드

마이크로서비스 디자인 패턴 완벽 가이드

이 과정은 마이크로서비스 애플리케이션 개발을 위한 MSA 디자인 패턴과 구현 전략에 필요한 다양한 내용 및 패턴과 설계에 대해 배워보는 과정입니다. 기존의 모놀리식 애플리케이션을 MSA 방식으로 성공적으로 전환하는 데 필요한 핵심 지식과 실질적인 방법론에 대해서 학습하게 됩니다. 마이크로서비스 아키텍처의 근간을 이루는 다양한 디자인 패턴에 대해 분석하고, 각 패턴이 어떤 상황에 적합하며 어떻게 적용되는지 학습할 수 있습니다.

(5.0) 수강평 2개

수강생 307명

이런 걸 배울 수 있어요

  • 마이크로서비스 아키텍처의 이해

  • 마이크로서비스 아키텍처 패턴의 이해

  • 마이크로서비스 설계에 따른 패턴의 적용

마이크로서비스 아키텍쳐에서의 패턴을 이해하고 애플리케이션에 적용해 보실 수 있습니다.

기초적인 마이크로서비스 아키텍쳐의 개념과 구성을 이해하셨다면, 이제는 애플리케이션구축에 필요한 서비스 결정과 MSA의 패턴을 이용하여 마이크로서비스 애플리케이션을 설계하고 구축해 보실 수 있습니다.

복잡한 시스템을 유연하고 확장 가능하며 유지보수하기 쉬운 마이크로서비스 아키텍처로 혁신하고자 하는 모든 개발자 및 아키텍트에게 필수적인 과정이 될 것입니다. 이번 강의를 통해 애플리케이션 개발의 핵심 역량을 강화하세요!

  • 모놀리식과 마이크로서비스 아키텍처의 이해, 대규모 모놀리식 아키텍처와 마이크로서비스의 차이를 이해하고, 각 접근 방식의 장단점을 배울 수 있습니다.

  • 기본적인 모놀리스 방식의 애플리케이션을 마이크로서비스 아키텍쳐의 구조로 변환하기 위해 필요한 과정과 고민해야 할 중요 포인트에 대해 설명하고 있습니다.

  • MSA 설계 원칙: 확장성과 안정성을 높이기 위한 마이크로서비스 아키텍처(MSA) 설계 원칙을 다룹니다. 도메인 분할, 느슨한 결합, 독립 배포 등의 핵심 개념에 대해 학습할 수 있습니다.

  • 본 강의를 통해, 서비스 유형에 맞는 마이크로서비스 아키텍쳐의 패턴을 이해하고, MSA 패턴을 적용하기 위해 필요한 개념에 대해 이해하실 수 있습니다.

  • MSA 핵심 패턴 학습:API 게이트웨이, 서비스 디스커버리, 사가 패턴주요 MSA 디자인 패턴을 실제 사례와 함께 공부할 수 있습니다.


  • 가상의 MSA 예제를 구현하고 실행 과정에 필요한 전 과정을 함께 실습해 보실 수 있습니다.

  • MSA의 주요 패턴 별 사용률에 대한 그래프는 다음과 같습니다.



이런 분들께 추천해요

이 강의를 들어야 하는 분 (1)

MSA의 개념과 이해를 가지고, 마이크로서비스 도입을 검토 중인 조직에서 애플리케이션 구축을 위한 아키텍쳐와 적용가능한 패턴을 실습 예제를 통해 학습하고자 하는 분

이 강의를 들어야 하는 분 (2)

MSA의 Inner/Outer Architecture를 구성할 때, 적용할 수 있는 다양한 MSA 패턴, 처리 매커니즘을 통해 대규모 서비스 개발 및 유지보수하려고 하는 백엔드 개발자

이 강의를 들어야 하는 분 (3)

Spring Boot + Spring Cloud를 이용한 마이크로서비스 애플리케이션을 개발하면서, 데이터 관리와 분산 트랜잭션에 대해 조금 더 심화 된 내용을 알고 싶으신 분

수강 후에는

  • 모놀리스 애플리케이션을 MSA 애플리케이션으로 전환하기 위해 필요한 구성과 아키텍쳐 및 패턴에 대해 이해하실 수 있습니다.

  • MSA에 필요한 데이터 동기화 방법분산 트랜잭션에서의 데이터 처리 방법에 대해 이해하실 수 있습니다.

  • 마이크로서비스 애플리케이션 개발을 위해 고려해야하는 아키텍쳐와 패턴, 그리고 다양한 패턴에 대해 적용하는 방법에 대해 이해할 수 있습니다.

  • MSA의 다양한 디자인 패턴을 상황에 맞게 적용하여 문제 해결 능력이 향상될 수 있습니다.

  • 기존 프로젝트나 서비스에 MSA를 도입할 때 명확한 로드맵을 그릴 수 있게 되며, DevOps 문화클라우드 인프라에 대한 이해를 바탕으로 배포 환경을 설계할 수 있게 됩니다.

이 강의의 특징

서비스 유형별 MSA 패턴의 이해

본 강의는 모놀리스 방식의 애플리케이션과 마이크로서비스로 개발된 애플리케이션 간의 아키텍쳐와 서비스의 관점에 대한 차이점과 장단점을 이해하고, 시나리오 및 주제별로 마이크로서비스의 분해 패턴부터, 데이터 통신, 테스트 전략에 이르기까지, 다양한 MSA 패턴을 구분하여 학습하실 수 있습니다.

MSA 패턴이 적용된 샘플 예제를 직접 구현

모놀리스 방식과 마이크로서비스 방식으로 구성 된 30개의 실습 예제를 바탕으로 서비스에 적용해 볼 수 있는 MSA 패턴을 단계적으로 적용해 볼 수 있으며, 클라우드 서비스에 배포하는 과정에 대해서도 학습 해 보실 수 있습니다.

이런 내용을 배워요

마이크로서비스 아키텍쳐의 패턴의 종류와 이해

마이크로서비스 아키텍쳐 형태로 서비스를 구성하기 위해 고려해야하는 구조적인 상황과 다양한 패턴을 서비스간의 통신, 비동기 데이터 처리 방법, 데이터 관리 관점으로 분류하여 단계별로 학습하실 수 있습니다.

분산 트랜젹션 처리를 위한 기술과 적용 방법

마이크로서비스 아키텍쳐에서의 데이터 관리 방법과 분산 트랜젹션 처리를 위해 고려해야 하는 CQRS, Event Sourcing, SAGA, Event Driven Architecture에 대한 이해 뿐만 아니라, 실습 예제를 통해, 구현하는데 필요한 과정에 대해서 학습하실 수 있습니다.

강의에서 다루는 MSA 패턴은 다음과 같습니다.

  • API 게이트웨이 (API Gateway): 클라이언트의 모든 요청을 단일 진입점에서 받아 인증, 로깅, 라우팅 등을 처리하는 패턴입니다. 여러 마이크로서비스를 한 곳에서 관리할 수 있습니다.

  • 서비스 디스커버리 (Service Discovery): 동적으로 변화하는 서비스 인스턴스들의 위치를 중앙 레지스트리에 등록하고 찾는 패턴입니다. 이를 통해 서비스 간 통신 시 주소를 자동으로 탐색합니다.

  • 동기 (Synchronous)& 비동기 (Asynchronous) 통신: 동기 통신은 요청을 보낸 서비스가 응답을 받을 때까지 기다리는 방식으로, 응답이 올 때까지 스레드가 블로킹 됩니다. REST / gRPC / GraphQL API 방식으로 동기 통신을 구현할 수 있습니다. 비동기 통신은 요청을 보낸 서비스가 응답을 기다리지 않고 즉시 다음 작업을 진행하는 방식으로, Kafka와 같은 메시지 브로커를 통해 이벤트를 발행하고, 구독하는 방식으로 통신하게 됩니다.

  • 서킷 브레이커 (Circuit Breaker): 한 서비스의 장애가 연쇄적으로 퍼지는 것을 막기 위해 호출을 단락시키는 패턴입니다. 외부 서비스가 불능일 때 일정 시간 호출을 중단하고 빠른 실패(Fail-fast)를 유도합니다.

  • 폴백 (Fallback) 처리: 서킷 브레이커 등이 작동했을 때 대비책으로, 대체 응답이나 재시도 로직을 제공하는 패턴입니다. 부분 장애 시 시스템의 탄력성(resilience)을 높여 줍니다.

  • 사가 패턴 (Saga): 분산된 서비스들에서 데이터 일관성을 유지하기 위한 분산 트랜잭션 패턴입니다. 각 서비스의 로컬 트랜잭션을 이벤트/메시지로 연결하여 최종 일관성을 보장합니다.

  • CQRS & 이벤트 소싱:CQRS(Command Query Responsibility Segregation)는 읽기와 쓰기 모델을 분리하여 확장성을 높이는 패턴이고, 이벤트 소싱(Event Sourcing)은 상태 변경을 이벤트 로그로 저장해 이력 기반으로 상태를 복원하는 패턴입니다. 함께 사용되어 복잡한 비즈니스의 데이터를 관리합니다.

  • EDA: Event Driven Architecture는 이벤트의 생성, 감지, 소비 및 사용을 중심으로 시스템을 설계하는 소프트웨어 아키텍처 패턴입니다. 마이크로서비스 애플리케이션들의 구성요소들이 '이벤트'를 통해 서로 통신하고 상호작용하는 방식입니다.

  • BFF (Backend for Frontend): 웹, 모바일 등 플랫폼별 특화된 백엔드를 제공하는 패턴입니다. 각 프론트엔드의 요구에 맞는 전용 API 계층을 만들어 효율성과 개발 생산성을 높입니다.

이 강의를 만든 사람

  • IT 경력 25년 동안의 강의, 컨설팅 및 개발 경력을 바탕으로, 실무적인 경험과 노하우를 이해하기 위한 설명으로 강의를 진행하고 있습니다.

  • MSA에 대한 기본적인 이해와 소개를 바탕으로 MSA의 이해를 한단계 업그레이드 할 수 있는 마이크로서비스 패턴에 대한 이해와 적용에 대해 다루고 있습니다.

  • "Spring Boot를 이용한 RESTful Web Services 개발", "Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)", "Jenkins를 이용한 CI/CD Pipeline 구축, "DevOps를 위한 Docker 가상화 기술(Private Harbor Registry)" 강의에 이어지는 MSA 구현과 패턴에 대한 내용을 설명하고 있습니다.

  • "머리속의 지식은 지식이 아니다."라는 생각으로 제가 가지고 있는 작은 경험과 지식을 잘 포장하고, 보다 이해하기 쉽도록 설명하기 위해 노력하고 있습니다. Java와 Spring Framework에 대한 관심이 Cloud Native와 Micrsoervice Architecture까지 이어지는 분들이라고 하면 보다 쉽게 이해할 수 있는 강의가 될 것이라고 생각합니다.

궁금한 점이 있나요?

Q. 강의에서 다루는 소스 코드를 구현하거나 실행하기 위해 필요한 인프라 구성 및 실습 환경은 어떻게 되나요?

강의에서 사용하고 있는 예제 코드 총 30개로 되어 있으며, 각 섹션이 진행되면서, 섹션에서 소개하고 있는 내용에 기반한 코드로 변형해 가며 실행해 보실 수 있습니다. 모든 소스 코드는 Java언어 기반의 Spring framework + Spring Boot를 이용하여 작성 되었습니다. 간단한 온라인 쇼핑몰이라는 주제를 가지고 상품 목록보기, 구매하기 등과 같은 기본적인 기능을 가지고 있는 예제 프로젝트입니다. 온라인 쇼핑몰 소스를 실행하기 위해서는 Windows 또는 MacOS 환경에일서 JDK와 Eclipse나 IntelliJ와 같은 IDE를 사용하시면 디버깅과 함께 쉽게 실행하실 수 있으며, Docker Desktop과 같은 컨테이너 가상화 환경을 구축하여 사용하실 수 있다면, 패키징 되어 있는 컨테이너 이미지를 바탕으로 실행해 보실 수 있습니다. 그렇지만, MSA 패턴을 적용하여 프로젝트의 일부를 수정하면서, 테스트를 해야 하기 때문에, IDE를 이용하는 실습 환경을 권장 드립니다. 마지막으로 실습에 필요한 환경 및 SW를 요약하면 아래와 같습니다.

  • Windows 10 or 11 또는 MacOS Intel chip 버전 or Apple chip 버전

  • JDK 17+

  • IntelliJ IDEA (Community 또는 Ultimate 버전 상관 없음)

  • Visual Studio Code

  • Postman

  • Chrome web browser

  • Docker Desktop

Q. 마이크로서비스 아키텍쳐로 애플리케이션이나 서비스를 구성하려고 하는데, 디자인 패턴을 반드시 적용해야 하나요?

IT 관련 애플리케이션이나 서비스를 개발하면서 사용한 프로그래밍 언어나 데이터베이스를 선택할 수 있습니다. 그리고 업무에 필요한 Domain Knowledge를 바탕으로 개발자의 알고리즘에 따라 다양한 형태로 개발될 수 있습니다. 구현하고자 하는 업무 로직은 정해진 과정이나 프로세스가 있다기 보다는, 구현하는 개발자가 생각하는 최선의 방법과 효율적인 알고리즘을 통해 구현하시면 된다고 생각합니다. 다만, 같은 유형의 Domain 서비스에서 기존 개발되었던 수많은 애플리케이션에서 이미 검증 된 개발 방식이나 프로세스나 개발 유형들은 존재하고 있습니다. 기존에 개발 되었던 이러한 방식을 참고하면, 효율적이고 검증 된 방법으로 서비스를 구현해 볼 수 있다고 생각됩니다. 디자인패턴(Desigin Pattern)은 이렇듯 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 그 방법에 이름을 붙여서 이후에 재사용하기 좋은 형태로 특정 규약을 만들어서 정리한 것이고, 이러한 디자인 패턴은 소프트웨어 설계에 있어 공통적인 문제들에 대한 표준적인 해법과 작명법을 제안하고 있습니다. 즉 "효율적인 코드를 만들기 위한 방법론"이라고 생각하면 좋을 것 같습니다. 마이크로서비스 아키텍쳐에서도 서비스의 분할에서도 분산 트랜잭션에 대한 처리에 이르기까지 다양한 형태의 디자인 패턴이 제시되고 있고, 이러한 MSA 디자인 패턴을 적용하면, 보다 효율적이고, 안정적인 서비스를 구현하시는데에 도움이 됩니다. 결론적으로 MSA 뿐만 아니라, 다른 SW 개발 시, 디자인 패턴의 적용은 선택사항 이지만, 제대로 적용된 디자인 패턴은 효율적이고 안정적인 시스템 개발에 도움이 된다고 생각됩니다.

Q. Spring Boot, Spring Cloud에 대한 지식이 없는데 강의를 수강할 수 있을까요?

본 강의는 Spring Boot + Spring Cloud를 기반으로 하는 MSA에 대한 기본적인 지식을 가지고 있다는 전제아래 MSA 패턴에 대한 부분을 설명하고 있습니다. MSA에서 말하고 있는 Outer Architecutre의 개념이나, JPA를 이용하여 기본적인 CRUD(Create, Read, Update, Delete)에 대한 작업을 처리하는 데에 어떤 프로세스로 작동되는지 정도만 이해하고 있어도, MSA 패턴에 대한 부분을 공부하시는 데에 충분하다고 생각됩니다. 다만, 기존에 작성된 모놀리스 방식의 애플리케이션과 새롭게 구성될 MSA 방식의 애플리케이션이 어떤 구조로 변경되었고, 적용되었는지를 잘 이해하시려면, Spring Boot나 Spring Cloud에 대한 기본적인 이해를 갖추고 있는 상태에서 수업 진행 하시면 학습 효과가 배가 될 수 있다고 생각됩니다.

수강 전 참고 사항

실습 환경

  • 운영 체제 및 버전(OS): Windows 10+, macOS Intell chip, macOS Apple chip, CentOS7+, Ubuntu 16.04+

  • 사용 도구: JDK 17+, Spring Boot, Spring Cloud, Visual Studio Code, Postman, Docker Desktop, IntelliJ Commnity (Ultimate 권장)

  • PC 사양: CPU i5+, RAM 16G+, Storage 50G+, Internet 가능 환경

학습 자료

선수 지식 및 유의사항

  • 자바 프로그래밍의 이해 및 Spring Framework의 기념적인 개념을 이해하시면 강의를 수강하시는 데에 도움이 됩니다.

  • 강의에 사용되는 예제 코드는 그대로 실행해 보실 수 있으나, 수강생분들의 환경에 따라서 일부 수정되어야 하는 부분이 있을 수 있습니다.

  • 강의에 관련된 질문은 게시판을 통해 남겨주시면, 확인하는데로 답변드리도록 하겠습니다.

  • 강의에 관련된 교안 및 소스코드에 대한 저작권은 강사에게 있으나, 사용이 필요하실 경우 출처를 남겨 주시면 감사드리겠습니다.

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 마이크로서비스 애플리케이션을 개발하려는 개발자

  • 마이크로서비스 아키텍처를 설계하려는 엔지니어

  • MSA에 대한 이해를 바탕으로 MSA 패턴을 적용하려는 개발자

선수 지식,
필요할까요?

  • Java + Spring framework

  • Spring Boot

  • Spring Cloud

안녕하세요
입니다.

28,795

수강생

1,518

수강평

1,343

답변

4.8

강의 평점

8

강의

저는 IT 엔지니어입니다. 언젠가 직업란에 "회사원?", "개발자?", "강사?" 어떤 단어를 선택해야 할 지 고민이 되었던 때가 있었습니다. 그러다가, IT 엔지니어라는 표현이 제가 잘 어울리는 직업명이라는 생각이 들어 지금까지도 직업란에는 "IT 엔지니어"라고 적고 있습니다.

직업이라는 것은 자신의 일을 나타내는 것이고, 일이라는 것은 재미있고, 도움이 되는 일이면 좋겠다는 생각을 가지고 있습니다. 누구나 다 원하는대로 일을 하며 살수는 없지만, 저는 제가 하는 있는 이 일을 좋아하는 있고, 잘하고 싶어하는 사람입니다. 개발자로써, 강사로써, 컨설턴트로써의 역할을 해 오면서, 매번 새롭게 출시되고 변화하는 IT 신기술을 따라가기에 급급하지만, 그래도, 남들보다 조금이라도 먼저 접하고, 전파하고, 사용하고 싶은 사람 중 한명입니다. 

최근 관심을 가지고 있는 분야는 온라인 교육 컨설팅입니다. 그리고 관심있는 기술은 Cloud Native Architecture, Blockchain, Machine Learning, Kafka, Kuberbetes 등입니다. 이러한 기술은 실제로 강의도 하고 있고 업무에 적용해서 사용도 하고 있습니다. 하지만, 워낙 방대한 주제이다 보니, 아직까지도 계속 공부하고 있습니다.

머리속에 가지고 있는 것은 진정한 지식이 아니라고 합니다. 저는 제가 가진 지식과 경험을 다양한 방벙을 통해 공유하려 합니다. 그리고, 새로운 분야, 새로운 기술에 계속 도전하고 있는 IT 엔지니어가 될 것입니다.  

 

 

  • ) 엔제이원컴퍼니 대표 

  • ) 동국대학교 국제정보대학원 정보보호학과 대우교수

  • ) JP Morgan Chase AMJ Tech consultant (일본)

  • ) 삼성 SDS CMS 사업본부 책임 엔지니어

 

 

커리큘럼

전체

118개 ∙ (26시간 38분)

해당 강의에서 제공:

수업자료
강의 게시일: 
마지막 업데이트일: 

수강평

전체

2개

5.0

2개의 수강평

  • 김동운님의 프로필 이미지
    김동운

    수강평 10

    평균 평점 4.6

    5

    27% 수강 후 작성

    국비를 스프링으로 마치고 실무 투입돼서 스프링부트 감도 못 잡고 막막하던 때 우연히 강사님 강의를 듣고 감을 잡아 지식을 확장하며 살아 남을 수 있었습니다. 이번 강의는 MSA의 흐름을 잡아주는 좋은 강의네요. 매번 유용한 강의 감사드립니다.

    • javarunner님의 프로필 이미지
      javarunner

      수강평 54

      평균 평점 5.0

      5

      15% 수강 후 작성

      Dowon Lee님의 다른 강의

      지식공유자님의 다른 강의를 만나보세요!

      비슷한 강의

      같은 분야의 다른 강의를 만나보세요!