마이크로서비스 아키텍처

자바스프링 기반 MSA

빠르게 성장하는 회사의 개발팀엔
저처럼 MSA 전환을 진행할 수 있는 리더가 필요합니다.
29CM의 회사 규모가 커지면서
모놀리틱에서 MSA로 전환해야 하는 시점임을 인식하였고,
긴 시간 동안 팀원들을 설득하여
현재 회사의 모든 시스템을 MSA로 전환하고 있어요.

비즈니스 성공을 이끄는 개발자가 좋은 개발자고,
기술은 비즈니스 성과를 만들어내야 의미 있습니다.
요구사항에 빠르게 대처할 수 있는 설계방식을 통해
특정 기능을 추가하더라도
기존 기능에 문제가 없는 설계와 구현 방식을 이루어 내야해요.

개발 업계에서 일하다 보면 실제로 믿고 의지할 사수가 부족한 현실이죠.
능력 있는 개발자는 더 좋은 조건이 있는 곳으로 떠나니까요.
이 강의에서 쿠팡, 토스, 클래스101, 29CM의 경험을 공유하며
그런 사수의 부재를 채워드리겠습니다.



by 엔지니어 이희창

Brand-new Sight

당신의 회사도 성장 속도에 맞게
Microservice Architecture 전환을 시도하고 있나요?



유저들을 빠르게 만족시키는 개발이 가능하도록
목적 조직으로 운영되는 기업들,
네카라쿠배 포함 많은 대기업들이 이미
MSA를 도입했습니다.

MSA 전환이 필요한 시점을 놓쳐버린 회사는
점점 경쟁력을 잃고 시장에서 생존하기 어렵습니다.

채용 시장에서 MSA 경험자들이 왜 우대받는 지 이해되시죠?

빠르게 성장하는 회사의 경우,
비즈니스 성공을 위해 MSA로의 전환이 필수입니다.

▼ Monolithic과 MSA의 차이가 헷갈린다면 클릭! ▼


Monolithic (모놀리틱) 방식의 개발이라면 주문 서비스 로직과 선물하기 로직, 그리고 그 외 모든 로직이 하나의 프로젝트 안에서 다 구현되는 개념입니다.

Microservice Architecture (MSA) 방식의 개발이라면 주문 서비스 로직 프로젝트를 만들고, 선물하기 서비스 로직 프로젝트도 만들고, 이렇게 독립된 프로젝트를 만든 후에 서로간의 프로젝트가 메시지를 주고 받으면서, 유저에게 제공할 하나의 기능을 만들어내는 개념입니다. MSA 방식은 각 프로젝트마다의 기능을 각자가 관리하기 때문에, 작은 단위로 개발과 운영을 빠르게 할 수 있습니다. 다만, 뭉칠수 있는 개념을 쪼개었기 때문에 그만큼 운영이 어려울 수도 있구요.

제 성공담에 비추어 볼 때
현실에서 모놀리틱을 MSA로 전환하는 것이 어려운 이유는,

우선, 기존 도메인 로직을 파악하는 과정 자체가 쉽지 않습니다. 둘째로 기존 서비스와 신규 MSA 서비스가 동일한 기능을 제공해야 하기 때문에 많은 검증과 안전 장치를 마련해야 하구요. 마지막으로 기존 서비스를 신규 MSA 로 전환했을 때 그 의미를 개발팀 이외의 구성원들에게 설명하고 납득시켜야 하기 때문입니다.

실제로 저는 2020년 8월 29CM에 조인한 지 1주일차부터 MSA 전환을 위해 노력했습니다. 1주일동안 밤새며 준비한 뒤 목표 및 방향성에 대해 발표했고, 경영진을 비롯한 팀원들을 1:1로 열심히 설득했습니다.
개발팀의 존재 목적은 비즈니스 가치를 만들어내는 것이고, 현재의 기술 스택과 서비스 구조에서는 이를 이루기 어렵다는 것을 시작으로, 지금이 MSA로 전환해야 하는 명확한 시점이고, 이를 위해 Java/Spring으로 기술 스택을 같이 전환하겠다는 것까지요. 한국 시장에서 Python/Django 스택보다 개발자 채용도 수월해 질 것이라는 것도 어필했어요.

MSA 필요 시점

유저의 요구를 빠르게 대응하고 싶지만, 배포하면 계속 장애가 발생한다.

기능 개발 요청을 받은 후 거의 한 달이 지나도록 실제 서비스에 반영을 하지 못하고 있다.

회사의 규모가 커지면서 시리즈 A단계로 도약하는 회사인데, 아직 MSA로 전환하지 않았다.

현재 속한 곳이 혹은 지금 당장은 MSA를 실무에서 활용하지 않지만, 개발자로서 경쟁력을 높이고, 대기업으로 이직하고 싶다.

MSA 학습

Fast campus Only !

이희창이 29CM에서 진행한 프로젝트의 도메인을 구현하며,
실무에서 부딪힐 현실적인 어려움을 극복하고
MSA 전환에 성공하는 비법
을 최초로 공개합니다!

개발자 스스로 코드 구현을 잘 하고 있는지에 대해 고민하고 있는 사람들에게 명확한 가이드라인을 제시합니다.

모놀리틱 방식으로 운영되고 있는 회사에서 MSA 적용을 해보고 싶은 사람에게 실제적인 도움이 됩니다.

이론을 다루고 있는 시중의 책들이 어떻게 '실제로' 적용이 되는지 알려줍니다.

구글링해서 찾기 어렵지만, 실제 코드 구현 시 많이 이야기되는 개념과 원칙을 정리합니다.

MSA 이론만으론 회사 비즈니스에도,
개발자 커리어에도 도움이 안됩니다.
실무 현장의 고민까지 담긴 프로젝트로 배우셔야죠!

제가 개발 현장에서 실제로 고민한 내용과 시행착오를 반영한 코드를 제공하기 때문에 작은 규모의 스타트업의 경우에는 크게 변형할 필요 없이 쉽게 적용해 볼 수 있을거라 생각합니다. 기존 도서나 강의 콘텐츠가 실무에서 동떨어져 있는 점이 아쉬우셨죠?

29CM의 배송 예정일, 추천 상품 기능, 선물하기 기능 등은 사실 모놀리틱에서는 생각만 하고 구현할 수 없었던 백로그 상의 기능들이었는데요, MSA로 전환하는 과정에서 성공적으로 출시하였답니다!

이런 생생한 현업 이야기가 묻어나는 Best Practice가 궁금하시죠? 잘 짜여진 코드와 MSA 전환에 필요한 이론부터 실무 프로젝트까지 경험하고 싶은 자바/스프링 개발자 여러분, 지금 강의에서 뵙겠습니다!


현업 동료 개발자들이 앞다투며 극찬한
이희창의 실력과 실무 노하우
지금 이 강의로 놓치지 마세요!

Top of Top

닿는 곳마다 비즈니스 성공을 부르는
간결함의 아버지 이희창.

29CM의 Monolithic 아키텍처에서 MSA로의 전환을 리딩하는 개발 디렉터.

앞서 말씀드렸듯, 모놀리틱 아키텍처를 MSA로 전환하는 것은 결코 쉬운 일이 아닙니다. 성장하는 스타트업의 아키텍처를 성공적으로 전환시킨 두 사례가 있는데요, 그 중에 특히 29CM에서의 과정이 기억에 남네요. 조인 후 일주일도 안 된 시점부터 밤새 레거시를 파악하며 설득 자료를 준비했어요. 백엔드 팀원들 한 명 한 명을 1:1로 계속 설득했고, 성공했습니다. 쉽진 않지만 필수적이고 보람있는 과정이었죠. 이런 전환은 뚝딱 만들어지는 게 아니라, 필요성에 대한 공감대 형성을 바탕으로 점진적으로 이루어져야 하는 것이기에, 내년 말 완성을 목표로 아키텍처를 전환하는 중입니다. 달리는 차에서 바퀴를 하나씩 바꿔가는 것이라 이해해도 좋겠네요.

토스페이 첫 런칭과 간편결제 서비스 개발의 주역, 간결의 아버지.

토스 동료들이 저를 '간결의 아버지'라고 부르는데요, 코드를 간결하게 쓴다고 칭찬 받는 걸로 생각하시는 분들이 있더라구요. 사실은 간편결제 서비스를 개발한 시점에 아이가 생겨서 얻은 별명이랍니다. 재밌죠? (웃음) 토스에 2017년 6월 입사하여 4명의 동료 개발자들과 신규 서비스를 만들고 운영하는 팀에서 일했습니다. 그 과정에서 펀드 소액투자, P2P 분산투자, 편의점 바코드 결제, 축의금 송금, 비트코인 유지보수, 상품권 구매 유지보수 및 고도화 등을 진행하였고, 그 과정에서 살아남은 몇몇개의 서비스 중에서 토스 간편결제 서비스를 17년 11월부터 본격적으로 개발과 운영, 고도화를 진행하게 되었어요. 이후 배달의 민족 서비스 내에 토스 간편결제 서비스가 연동되는 개발도 완료했습니다. 마지막으로, 제 별명과는 상관없지만 제 코드가 실제로도 간결하다는 말도 덧붙이고 싶네요!

재지팩트, 빅토리아슈즈 등 이벤트의 대형 트래픽을 대응하는 든든한 개발팀의 선봉장.

굉장히 이슈가 되었던 재지팩트와의 콜라보 굿즈는 10분만에 완판될 정도로 대량의 트래픽이 몰렸죠. 저희 팀은 이벤트 후 반드시 회고하고, 성능 개선점을 도출하는 과정을 진행합니다. 그리고 그에 맞게 개선 작업을 진행해두죠. 이것이 매번 대규모 트래픽을 유인하는 프로모션마다 이슈 없이 잘 대응할 수 있는 비법 중 하나랍니다. 현재 기획 단계에 있는 다른 프로모션 이벤트들도 두려움 없이 즐겁고 신나는 마음으로 기대하고 있습니다.

29CM 개발자 이희창

• 2020.08 ~ 현재
29CM / Director of Engineering
- Monolithic에서 Microservice Architecture 전환 과정 주도
(의사 결정, 도메인 도출 및 도메인간 계층 구조 정의, 기반 기술 정의, 기반 인프라 정의 및 구축)
- spring boot 기반의 주요 서비스 설계 및 구현
- 회사의 비전와 얼라인되도록 주도적인 팀 문화를 만들고 팀 빌딩에 기여
- 선물하기 서비스 런칭
(서비스 전체 구조를 설계함, 구현의 일부에 참여함, 개발 전체를 리딩하고 PO와 긴밀히 협업함)
- 29CM 대형 프로모션마다 이슈 없도록 대응
(빅토리아슈즈, 재지팩트와 같은 대량의 트래픽이 예상되는 프로모션마다 이슈 없도록 대응함, 이벤트 후 도출된 성능 개선점을 찾고 그에 맞게 개선 작업을 진행함)

• 2019.11 ~ 2020.07
클래스101 / Head of Engineering
- Monolithic에서 Microservice Architecture 전환 과정 주도
- spring boot 기반의 주요 서비스 설계 및 구현
- 정기구독 서비스 런칭

• 2017.06 ~ 2019.11
토스 / Senior Software Engineer
[toss-x (신규 사업팀)]
- 펀드 소액투자, P2P 분산투자
- 편의점 바코드 결제
- 축의금 송금 서비스
- 자동차 이용 프로그램 (1차 파일럿) 서비스

[토스 결제팀]
- MSA 기반으로 결제 서버군의 인프라 분리
- 그 외 에러로그 기반으로 발생하는 개선 포인트 도출 및 해결, 업무 위임
- 넥슨, 라이엇게임즈, 배달의민족, 위메프, 11번가, 이베이, 무신사, 인터파크, 롯데면세점, 스팀, 제주항공, 교보문고 등의 주요 가맹점 연동 및 지원

[토스 보험팀]
- 성능 개선을 위한 녹취 파일 서버 분리
- elk & kafka & slack 기반의 로그 모니터링 구축

• 2016.03 ~ 2017.06
쿠팡 / Senior Software Engineer
Warehouse Management System Team
- 재고조사 로직 개선 (30% 이상의 업무 효율 개선을 만들어냄)
- 입고 로직의 주요기능 개발

Heritage Story

이희창이 실제 사용하는 도메인으로
MSA 주요 프로젝트 2종 구현하기.

DDD로 주문 프로젝트 구현

이희창님께서 실제 현업에서 사용하는 개발 디자인 문서 양식 일부를 엿보고, 더 나은 서비스 구현 방식은 어떤 것인지 인사이트를 얻습니다. 도메인 주도 설계(DDD)의 개념을 이해하고, 실제 주문 서비스 개발 과정에 적용하여 정의된 Partner, Item, Order 도메인을 순차적으로 구현해봅니다.

MSA를 활용한 선물 프로젝트 구현

주문 도메인과 API를 주고 받으며 운영 될 선물하기 서비스를 개발합니다. 코드를 처음부터 작성하기 보다 주문 프로젝트를 바탕으로 빠르게 개발하고, 두 서버 간의 통신 패턴을 살펴봅니다.

Java/Spring 개발자의 Next Step!

구현한 프로젝트를 바탕으로 모놀리식 개발 환경에 익숙한 Java/Spring 개발자가 실무에서 안정적이고, 점진적으로 마이크로서비스아키텍처로 전환할 때 고려해야하는 점과 노하우를 학습합니다. 구간 구간 마다 적용되는 이론과 왜 그런 선택을 했는 지 사유까지 배울 수 있도록 구성했습니다.

MSA 실무와 가장 가까운 이야기

요구사항을 붙이서 볼륨을 키우면 작은 스타트업에서는 그대로 쓸 수 있는 수준의 코드로 가르쳐드립니다. 토스, 클래스101과 29CM에서 겪었고 지금도 겪고 있는 실제 고민거리와 운영 성공담에서 우러나오는 실무 노하우를 전수합니다. 코드는 Github에 올려드릴 예정이고, 코드에 대한 상세한 설명도 PDF를 통해 제공해드립니다.

29CM 개발 디렉터 이희창 님의 이야기를
지금 최저가로 만나보세요!
(자동) (자동) (자동)
정가 (자동)
현재 판매가 (자동)
12개월 무이자 할부 시 (자동)
상세 커리큘럼
| 개요.

✔ 개요.
강의와 강사 소개.

⚬ 강의 및 강사 소개
⚬ 강의 구성 방향 소개
⚬ Microservice Architecture의 정의와 장단점, 전환을 고민해야 하는 시점 등
⚬ 안정적이면서도 빠른 대응이 가능한 애플리케이션 개발의 중요성

| 프로젝트 구조 및 설계

DDD layered architecture

✔ 프로젝트 구조 및 설계.
강의에서 진행할 프로젝트 구현의 전체 구조와 이론적 배경을 설명.

⚬ 비즈니스 가치를 충족하는 좋은 구현
⚬ 프로젝트 Layer 구성 (DDD 가 말하는 layered architecture 를 적당히 응용하여 활용)
⚬ 아키텍쳐 및 규약 정의 (통신 규약, 시스템간 인터페이스, 개발 언어 및 프레임워크 등등)


✔ 권장하는 구현 방식.
프로젝트 구현에서 권장하는 구현 방식에 대한 이야기.

⚬ 개발 디자인 문서 작성
⚬ API 명세
⚬ setter 의 사용 최소화
⚬ transaction 범위 설정 등


| 주문 프로젝트 개발.

partner domain

✔ 주문 프로젝트 개발.
주문 프로젝트 구현에 앞서 전체 요구사항과 맥락을 공유함.

⚬ 주문 프로젝트의 요구사항과 배경 설명
⚬ 도메인별 다이어그램 공유


✔ partner 도메인 개발 1.
partner 도메인의 domain, infrastructure layer 를 개발하고 그 과정에서 대체키와 DIP 개념도 함께 설명함.

⚬ partner domain 개발 (Entity, Service 구현)
⚬ partner infrastructure 개발 (Reader, Store, DIP 개념)
⚬ 추가 공유: 대체키, DIP


✔ partner 도메인 개발 2.
partner 도메인의 application, interfaces layer 를 개발하고 그 과정에서 API 응답 체계 개념도 함께 설명함.

⚬ partner application 개발
⚬ partner interfaces 개발
⚬ 추가 공유: 로깅의 중요성, API 응답 체계


✔ item 도메인 개발.
item 도메인을 개발하고 그 과정에서 DDD 의 aggregate, Factory 와 Repository, 연관관계 설정, MapStruct 사용 등을 함께 설명함.

⚬ item 도메인 개발
⚬ 추가 공유: DDD 의 aggregate, Factory 와 Repository, 연관관계 설정, MapStruct 사용


✔ order 도메인 개발.
order 도메인을 개발하고 그 과정에서 보상 트랜잭션 개념 등을 함께 설명함.

⚬ order 도메인 개발
⚬ 추가 공유: 보상 트랜잭션


| 선물하기 프로젝트 개발.

선물하기 기능 flow

✔ 선물하기 프로젝트 개발.
선물하기 프로젝트의 요구사항과 배경, 서비스 아키텍처 공유함.

⚬ 선물하기 프로젝트의 요구사항과 배경 설명
⚬ 서비스 아키텍처 공유


✔ 설계 및 검토.
기존에 구현한 주문 프로젝트를 활용하여 선물하기 기능을 구현하기 위한 flow 설계를 검토함.

⚬ 기존에 구현한 주문 프로젝트를 활용하여 선물하기 기능을 구현하기 위한 flow 설계 검토
⚬ 서비스간의 통신 패턴과 상세 기술 선택, 근거
⚬ 유저 요구사항 중심으로 flow 검토


✔ 구현.
사전에 검토한 flow를 바탕으로 선물하기 프로젝트를 개발함.

⚬ 선물하기 프로젝트 구현
⚬ retrofit, aws sqs, 메시징 형태


| MSA 전환과 운영에 대한 tips.

💡29CM에서의 실제 MSA 전환 경험을 자세하게 알고 싶다면, 강의에서 만나요!

MSA 전환과 운영

✔ MSA 전환과 운영에 대한 tips.
MSA 전환과 실제 운영에 대한 경험과 지식을 공유함.

⚬ MSA 전환 시기 검토 및 내부 설득
⚬ 회사 전체 도메인의 의존관계 도식화
⚬ Monolithic 을 MSA로 분리 및 전환하는 단계별 과정
⚬ 서버간 통신 구현체 검토 (RestTemplate, Retrofit, gRPC, 비동기 메시징)
⚬ 비동기 메시징 기반 서비스를 구축할 때 검토할 것들 (aws sqs, kafka, 메시지 표준 정의)
⚬ 운영 환경에서 테스트 하기
⚬ 대규모 MSA 운영 시 검토할 것들 (cqrs)

그리고 한 걸음 더

강의에 대해 궁금하셨나요?
한 걸음 더 들어가봅니다.

수강료.

  • The RED : 비즈니스 성공을 위한 Java/Spring 기반 서비스 개발과 MSA 구축 by 이희창

    현재 정가 대비 62% 할인 중!
    12월 31일 금요일 자정 까지

    정가 630,000원
    현재 판매가 239,000원

    12개월 무이자 할부 시 월 19,916원

국내 9개 카드사 12개월 무이자 할부 지원! (간편 결제 제외)

  • 삼성카드
  • 신한카드
  • 롯데카드
  • 현대카드
  • 하나카드
  • BC카드
  • KB국민은행
  • 씨티카드
  • NH농협카드