개발 · 프로그래밍

/

데브옵스 · 인프라

[DevOps 정석 1] Monolith to Microservice 전환 with Spring/Python/Node.js와 Strangler Fig 패턴

기존 레거시 모놀리스 시스템을 마이크로서비스 아키텍처로 전환하는 과정을 실습을 통해 알아봅니다. 총 2회까지 지식공유자의 코드 리뷰도 함께 받아보실 수 있습니다!

(5.0) 수강평 1개

수강생 99명

Thumbnail

초급자를 위해 준비한
[데브옵스 · 인프라, 백엔드] 강의입니다.

이런 걸
배워요!

  • 마이크로서비스 개발

  • Stragler Fig 패턴

  • 기존 시스템을 마이크로서비스로 전환 실습

미니 프로젝트로 직접 따라해보는 
MSA Migration for DevOps. 

모놀리스에서 마이크로서비스로
스트랭글러 패턴 마이그레이션

Legacy Monolith to MSA?

스트랭글러 패턴(Strangler Fig Pattern)을 이용하여 기존 레거시 모놀리스 시스템을 마이크로서비스 아키텍처로 안전하게, 그리고 점진적으로 전환해 봅니다.

이 과정은 “DevOps의 정석: Project Set” 시리즈 중 첫 번째 과정입니다. 모놀리스 시스템에서 마이크로서비스로 마이그레이션을 진행할 때 어떤 방법으로 개발을 진행해야 할까요? 또, 데브옵스적 측면에서는 어떠한 기술들을 적용해야 할까요? 이 과정에서 필요한 것이 바로 Strangler Fig Pattern입니다.

• • •

이 강의에서는 Java(자바) 및 Spring Boot(스프링 부트) 기반의 모놀리스 시스템을 Spring(스프링)과 Python(파이썬) 그리고 Node.js(노드)를 통해 분리해보는 과정을 설명합니다. 이 과정에서 부수적으로 필요한 Stubbing framework (Mountebank), Featuer Toggle(FlipT), API Gateway(Spring Cloud Gateway) 및 Full-Stack Application Telemetry(Jaeger)를 사용하는 방법에 대해 소개합니다. 

아울러 Java - Node.js - Python을 기반으로 한 유닛 테스트(Unit Test) 및 Mocking에 대한 방법을 알아보며, 각 언어별 Coverage Test 분석 방법을 함께 배우게 됩니다.


MSA 마이그레이션을 위한 미니 프로젝트
Strangler Fig Pattern 3-Step

1️⃣
마이그레이션을 하고자 하는 파트 인식

2️⃣
새로운 마이크로서비스 내에 해당하는 파트를 구현

3️⃣
시스템 마이그레이션에 유연성을 주기 위한 패턴 고려
(예: Parallel Run)

MSA 전환에 대한 고민에 해결책을 제시합니다.

Case 1 마이크로서비스로 전환하는 경우는 어떤 때인가요?

우리 조직/프로젝트에서 꼭 마이크로서비스를 도입해야 하는지에 대한 기준점과 사전 준비 사항에 대해 알려드립니다.

Case 2 Java / Python / Node.js에서 유닛 테스트를 이용해 TDD를 하고 싶은데, 각 기능을 어떻게 Mocking해야 하나요?

Java, Python & Node.js의 유닛 테스트에 대한 샘플을 제시하고 이에 대해 설명함으로써, 실전에서 복사 & 붙여넣기로 TDD를 시작할 수 있는 기반을 제시해드립니다.

Case 3 다른 프로그래밍 언어 기반의 환경을 실전과 유사한 형태로 경험해볼 수 있을까요?

모놀리스에서 시작해 마이크로서비스로 분리하는 전체 과정에 대해 설명합니다. 또한, 수강생 여러분이 작성하신 코드에 대해 최대 2회까지 코드 리뷰를 제공해드립니다.

Case 4 마이크로서비스로 전환을 할 때 필요한 기술은 어떤 게 있나요?

마이크로서비스로 전환할 때 쓰이는 프로그래밍 기술뿐만 아니라, 운영을 원활하게 할 수 있는 기술들을 함께 소개하고 실습을 진행해봅니다.


이 강의만의 특징을 
확인해보세요.

  • ✅ 유닛 테스트 기반의 TDD에 대한 자신감을 기르고, 처음 유닛 테스트를 작성할 때 느끼는 어려움을 줄입니다.
  • ✅ Docker-Compose 및 Dockerfile을 이용한 Containerization에 대한 이해를 높입니다.
  • ✅ MSA 운영 중 발생할 수 있는 이슈 대응에 대해 Telemetry를 통한 통합적 분석 방법을 얻을 수 있습니다.
  • ✅ Spring Cloud Gateway를 통한 API Gateway Pattern 및 프론트엔드에서 많이 발생하는 CORS Error를 대응하는 방법에 대해 알 수 있습니다.

하나의 흐름을 그릴 수 있습니다

미니 프로젝트에 대한 시나리오를 세우고 이를 해결해 나가는 전체 과정을 보여드리는 형식으로 수업을 진행합니다.

확실한 이해를 돕습니다

각 챕터에서 수행하는 결과물은 Github Repository로 제공하며, 이를 도출해내는 과정에 대해 최대한 자세히 설명하고 있습니다.

이유와 원리를 생각합니다

어떤 기술이나 이론이 왜 도입되어야 하는지에 대한 이유를 제시합니다. 또한 이를 Docker를 이용해 컨테이너로 구현하는 방법에 대해서도 설명해드립니다.

코드 리뷰를 제공합니다

최대 2회까지 수강생이 작성하신 코드에 대한 Code Review를 받아보실 수 있습니다.

상세 커리큘럼 📖

1. Strangler Fig Pattern이란 무엇인가?

  • Monolith가 반드시 나쁜 것인가?
  • Microservice는 언제 도입하는 것이 좋을까?
  • Monolith to Microservice Patterns
  • Strangler Fig Pattern 구현

2. Monolith Architect - Project Set Monolith Architect 소개

  • Monolith - Trading information system structure
  • Target architect
  • Source code access request

3. Migration implementation - Monolith side: FlipT를 이용한 Service 분리 준비

  • Continuous Deployment - Deploy stage review
  • What is FlipT?

4. Microservice - Ticker service with Python
5. Microservice - Price service with Node.js 
6. Microservice - Strategy service with Java 
7. Endpoint integration with Spring Cloud Gateway 
8. Wrap Up


DevOps의 정석 
이정석입니다.

한국 · 호주 · 영국에서 Full-stack Developer, DevOps Engineer/Consultant로 15년 정도 일하고 있는 Digital Nomad IT Engineer입니다. IT 조직 운영 최적화를 위해 끊임없이 새로운 주제에 대해 공부하고 있으며, 은퇴할 때까지 Engineer로 생활하고 싶다는 꿈을 가지고 있습니다. 현재는 호주 Melbourne에 있는 한 은행의 Developer Experience 팀에서 DevOps로 활동하고 있습니다.

상세 이력

  • 전) The Latin Traveller에서 인턴으로 첫 직장 생활 시작! [London, UK]
  • 전) 한진그룹 토파스여행정보 - Java/Oracle 개발 [Seoul, KR]
  • 전) NuSkin Korea - Java/Oracle 개발 [Seoul, KR]
  • 비즈니스 흐름에 대한 호기심으로 Full-time MBA 과정 졸업 [Seoul/Nice, KR/FR]
  • 전) KOSCOM - C 개발 [Seoul, KR]
  • 전) KDB대우증권 - Java, C#, Python, MongoDB, Oracle, Sybase, ActiveMQ 등을 이용한 개발 [Seoul, KR]
  • 전) National Australia Bank (NAB) - Full-stack Development [Melbourne, AU]
  • 전) 호주 4대 은행 중 한 곳 - Full-stack Development/In-house DevOps Consulting [Melbourne, AU]
  • 전) Amazon Web Services - DevOps Consultant [Seoul/Melbourne, KR/AU]
  • 현) 호주 4대 은행 중 한 곳 - DevOps로 DORA Metrics 정의와 Scalable CI Structure 구현으로 씨름 중... [Melbourne, AU]

Q&A 💬

Q. 실무 데브옵스 경험이 없습니다. 수강할 수 있을까요?

본 강의는 초보자 대상으로 구성하여, 기초적인 코딩 지식이 있으면 수강 가능합니다. 자세한 내용은 하단 [선수 지식]을 확인해주세요.

Q. "DevOps의 정석" 강의를 들어야만 이 강의를 들을 수 있나요?

"DevOps의 정석" 강의를 들은 후 본 강의를 들을 경우 이해가 더 좋긴 하지만, 수강하지 않아도 본 강의를 들을 수 있으며, 본 강의를 듣는데 필요한 "DevOps의 정석" 강의 해당 부분을 요약하여 전달해드리는 부분이 있습니다.

Q. 코드 리뷰는 왜 2번까지 제공하나요?

코드 리뷰는 기본적으로 Pull Request에 포함된 내용이 실행 가능한 레벨까지 구현이 되어 있다는 가정하에 진행됩니다. 이에 따라 수강생 여러분이 요청하신 코드를 지식공유자가 리뷰를 하고 이에 대한 피드백을 드렸을 때, 피드백 기반으로 수정한 내용이 올바른 방향으로 수정되었는지 확인해 드리기 위하여 최대 2번까지 코드 리뷰를 제공합니다.

💾 수강 전 확인해주세요!

  • 강의 실습을 원활하게 진행하기 위해서는 macOS, Linux, Windows 10/11 64bit with WSL 2 feature 환경 및 8GB 이상의 메모리가 갖춰진 PC가 필요합니다. (강의에서는 코드 편집기로 Visual Studio Code를 사용합니다.)
  • 수업 자료는 [섹션 2 - Project Set Monolith Architect 소개] 수업 하단 노트를 확인해주세요. Source Code Repository에 대한 접근을 요청하는 구글 폼 링크를 제공하고 있습니다. 소스코드 접근 승인까지는 최대 48시간이 걸릴 수 있으며, 본 강의의 소스 코드 및 콘텐츠를 타인과 공유하시면 안됩니다.
  • 선수 지식으로 최소 1개 이상의 프로그래밍 언어를 사용할 수 있어야 합니다.

연관 강의 함께 보기 📺

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 기존 시스템을 마이크로서비스 형태로 분리해본 적이 없는 사람

  • 마이크로서비스 제작의 핸즈온 실습이 필요한 사람

  • Java/Node/Python에 대한 유닛 테스트 코드 작성 법이 궁금한 사람

선수 지식,
필요할까요?

  • 최소 1개 이상의 프로그래밍 언어를 사용할 수 있어야 합니다.

한국/호주/영국에서 Full-stack developer, DevOps Engineer/Consultant로 15년 정도 일을 하고 있는 Digital Nomad IT Engineer 입니다. IT 조직 운영의 최적화를 위해 끊임 없이 새로운 주제에 대해서 공부를 하고 있으며, 은퇴할 때까지 Engineer로 생활하고 싶다는 꿈을 가지고 있습니다. 현재는 호주 Melbourne에 있는 한 은행의 Developer Experience 팀에서 DevOps로 활동하고 있습니다.

커리큘럼

전체

9개 ∙ (5시간 21분)

  • Strangler Fig Pattern 이란 무엇인가?

    29:55

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

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!