카카오 면접관이 알려주는 반드시 알아야하는 분산 환경
개발 · 프로그래밍 · 백엔드
패턴 이름은 아는데
왜 쓰는지는 모릅니다
면접에서 아키텍처 질문이 나오면 이름은 댑니다. 막히는 건 그다음, "왜 그걸 골랐냐"는 질문입니다. 정답이 없는 영역이라 트레이드오프를 말할 수 있어야 하는데 그 연습을 할 자리가 없었습니다.
- 모놀리식에서 분산까지Modular Monolith · Clean · Hexagonal · DDD · MSA 패턴
- 테스트까지 이어집니다Unit · Integration · E2E · Contract(Pact)
- 현직 개발자 2인카카오 본사 12년차 면접관 · 판교 플랫폼 서버 개발
분산 환경에는 정답이 없습니다. 고를 수 있는 선택지와 그 대가를 알고 있어야 설계라고 부를 수 있습니다
이 강의가 출발하는 자리
아는 만큼만 대답하게 됩니다
지금 상태
패턴을 안다
이름과 정의는 말할 수 있습니다. 블로그에서 여러 번 봤고 프로젝트에도 써 봤습니다.
골랐나
막히는 자리
대가를 못 댄다
다른 선택지가 무엇이었는지, 이걸 고르면 무엇을 포기하는지에서 대화가 끊깁니다.
한 가지 기법만으로 풀리는 문제가 아닙니다. 여러 주제를 알고 조합해야 확장성과 회복성을 함께 가져갈 수 있습니다. 이 강의는 그 선택지를 넓히는 쪽으로 짰습니다.
이 강의가 시작된 자리
실제로 오간 대화입니다
면접에서 반복해서 느낀 아쉬움이 이 강의의 출발점이었습니다.
면접에서 반복해 보이는 아쉬움에서 출발했습니다.
면접관이 직접 밝힌 질문
면접에서 실제로 던지는 세 가지
이 강의를 함께 만든 카카오 면접관이 자기가 주로 묻는 질문이라고 밝힌 것들입니다. 강의 구성이 여기에 맞춰져 있습니다.
분산 환경에서 디버깅은 어떻게 하시나요?
이 질문이 확인하려는 것
- 요청 하나가 여러 서비스를 지나갑니다
- 로그는 서비스마다 흩어져 있습니다
- 문제가 어디서 났는지 좁혀 들어가는 방법을 아는가→ Resilience & Observability
마지막 섹션에서 회복성과 관측 가능성 패턴을 다룹니다. 장애가 났을 때 무엇을 보고 어떻게 좁히는지를 패턴 단위로 정리합니다.
알고 계시는 패턴들을 설명해 주세요
이 질문이 확인하려는 것
- 이름을 몇 개 대는지가 아니라
- 어떤 문제를 풀려고 나온 것인지 말할 수 있는가
- 서비스 경계·분해·통신·집계까지 이어서 설명할 수 있는가→ 섹션 4·5·6
SAGA와 CQRS, 서비스 분해, DDD, Aggregator, BFF, Service Discovery를 왜 나왔는지와 함께 다룹니다.
아키텍처에 따른 테스트는 어떻게 진행하시나요?
이 질문이 확인하려는 것
- 단위 테스트만 말하고 끝나는 경우가 많습니다
- 서비스가 나뉘면 테스트 경계도 달라집니다
- 서비스 사이의 계약을 어떻게 검증하는가→ Contract(Pact) 실습
Unit·Integration·E2E를 실습으로 다루고, 마지막에 서비스 간 계약 테스트까지 직접 작성해 봅니다.
한 번에 건너뛰지 않습니다
모놀리식과 마이크로서비스 사이
나누는 것이 항상 정답은 아닙니다. 가운데 단계가 있고, 많은 서비스가 실제로 거기에 머뭅니다.
섹션 2에서 모놀리식과 MSA를 비교하고 마이그레이션 패턴을 봅니다. 섹션 3에서는 모듈러 모놀리식과 Clean·Hexagonal 아키텍처를 실습으로 직접 열어 봅니다.
무엇을 배우나
구조 · 경계 · 통신 · 트레이드오프 순서로
- 모놀리식과 MSA둘을 비교하고 옮겨 가는 마이그레이션 패턴까지
- 모듈러 모놀리식Clean과 Hexagonal 아키텍처의 의존성 규칙과 테스트 용이성. 실습으로 열어 봅니다
- 서비스 경계와 분해비즈니스·데이터베이스·BFF 기준의 분리와 DDD
- 동기와 비동기메시지 브로커를 쓸 때와 직접 호출할 때
- 시스템 패턴Aggregator, BFF, Service Discovery
- 데이터 관리CAP, Database per Service, Polyglot, 샤딩
- 테스트와 배포Unit·Integration·E2E·Contract 테스트, 배포 패턴, 서버리스까지
다루는 패턴
이름만 아는 것들을 정리합니다
강의에서 실제로 다루는 것들입니다. 각각이 어떤 문제를 풀려고 나왔고 무엇을 포기하는지까지 봅니다.
- Modular Monolith
- Clean Architecture
- Hexagonal Architecture
- DDD
- SAGA
- CQRS
- BFF
- Aggregator
- Service Discovery
- CAP
- Database per Service
- Polyglot Persistence
- Sharding
- Resilience
- Observability
- Contract(Pact) Test
- Deployment Patterns
- Serverless
커리큘럼
무엇을 어떤 순서로 다루나
구조에서 시작해 경계와 통신을 지나 트레이드오프와 테스트로 끝납니다.
01
강의 소개
- 강의 소개
- 이 강의에서 다루는 개념들을 더 Deep Dive하며 구현할 수 있는 강의 추천
- 면접을 위한 강의 요약 파일
- Test Code Source
02
모놀리틱과 MSA
- Monolithic vs Microservice Architecture
- Patterns Migrate Monolithic To MSA
03
모듈화된 모놀리틱과 애플리케이션 아키텍처
- 모듈화된 Monolith 구조 (Modular Monolith)
- Clean Architecture & Hexagonal Architecture
- Clean Architecture & Hexagonal Architecture의 의존성 규칙과 테스트 용이성
- [실습] Modular Monolith 살펴보기
- [실습] Clean Architecture 살펴보기
- [실습] Hexagonal Architecture 살펴보기
- 섹션 3 퀴즈
04
서비스 경계와 분해
- 서비스 경계 설정과 다양한 MSA 아키텍처 패턴 [ SAGA, CQRS ]
- 서비스 분리 및 분해 [ Business, Database, BFF ]
- 도메인 주도 설계(DDD)와 서비스 경계
- [실습] 복잡한 비즈니스 문제를 소프트웨어로 표현하는 방법 DDD
- 섹션 4 퀴즈
05
비동기와 동기 표현
- Asynchronous Communication & Message Broker
- Synchronous Communication & Service Communication
- 섹션 5 퀴즈
06
이외에도 다양한 시스템 패턴
- 서비스 데이터 집계를 위한 Aggregator Pattern
- BFF (Backend for Frontend) Pattern
- 분산 환경에서의 Service Discovery Pattern
- 섹션 6 퀴즈
07
분산환경 관점에서는 다양한 트레이드오프
- Data Management Patterns [ CAP, Database per Service, Polyglot, Sharding ]
- 분산 아키텍처에서의 Resilience & Observability Patterns
- 분산 환경에서의 Testing Strategies
- [실습] Unit Test & Jest Setting
- [실습] Integration Test & E2E Test
- [실습] 서비스간의 계약 Contract(Pact) Test
- 분산 환경에서의 Deployment Patterns
- Serverless Microservice Architecture
- 섹션 7 퀴즈
이런 분께
이 강의는 누구를 위한 강의인가요
- 비전공자 개발자이지만 대용량 아키텍처 설계가 궁금한 분
- MSA에 대해 들어봤지만 구체적인 설계 방법을 몰랐던 분
- 서비스가 커지면서 아키텍처와 데이터베이스 확장을 고민하는 백엔드 개발자
- 단순 마이크로서비스를 넘어 복잡한 분산 아키텍처를 설계하고 싶은 개발자
지금 시장
AI가 개발자를 대체한다는 이야기
신입 채용은 줄고, 기업은 검증된 사람만 뽑으려 합니다. 최근 몇 달 사이 나온 기사들입니다.
- 사상 최대 실적을 낸 크래프톤이 인력 감원에 나섰습니다. 'AI 퍼스트' 기업으로 전환하겠다는 이유였습니다.
- SW 전문기업들이 신입 개발자 채용을 중단하고 있습니다. 초급 개발자 채용이 77% 급감할 것이라는 전망도 나왔습니다.
- 게임 디자이너의 53%가 "AI가 내 일을 대체할 것"이라고 답했습니다. 권고사직 사례도 보고됐습니다.
기업이 불안한 만큼, 뽑히는 쪽은 더 분명한 차이를 보여줘야 합니다. 공부는 결국 스스로 하는 것이지만, 무엇을 어떤 관점으로 보느냐에 따라 같은 시간을 쓰고도 설명할 수 있는 깊이가 달라집니다. 이 강의는 그 관점을 넘기려고 만들었습니다.
수강평
먼저 들은 분들의 이야기
인프런 수강평에서 그대로 옮겼습니다.
"이론적인 주제를 정립하기에 이보다 좋은 내용은 없을 것 같습니다. 코드 작성도 있기는 하지만 거기에 치중되기보다는 개인적인 지식을 정리하기에 좋고, 더 나아가 새롭게 배울 수 있는 다양한 관점들이 있네요."
이병석 · 97% 수강 후 작성
"너무 유익한 강의 잘 보았습니다. 내용을 곱씹어 볼수록 정말 유익하고 많은 관점들을 알아갈 수 있는 강의라고 생각합니다. 추가로 다양한 실습 자료와 이론 자료도 모두 정리해 주셔서 이렇게 좋은 강의를 인프런에서 볼 수 있었다는 게 행운인 것 같네요."
warna · 90% 수강 후 작성
강사
현직 개발자 둘이 함께 만들었습니다
카카오 본사에서 서버를 개발하며 면접관으로도 활동하는 12년차 개발자 Choi와, 판교 플랫폼 서버 개발자 Hong이 함께 만들었습니다.
Choi
카카오 본사에서 서버를 개발하는 12년차 백엔드 개발자이고, 면접관으로도 활동하고 있습니다. 면접에서는 프로그래밍 문법보다 설계를 할 수 있는지를 주로 봅니다. 그 관점을 강의에 그대로 옮겼어요.
"스펙은 늘어나는데 딱 자신이 아는 만큼에서 막히는 게 아쉬웠습니다."
現 카카오 본사 서버 개발자 · 면접관 · 컴퓨터공학 전공
Hong
판교에서 플랫폼 서버 개발을 담당하고 있습니다. 직접 공부한 방법과 실무에서 마주치는 문제·해결책을 나누려고 지식공유자 활동을 이어가고 있어요. 강의는 혼자가 아니라 현업의 여러 개발자와 함께 만듭니다.
"정답이 없는 영역일수록 왜 그걸 골랐는지가 실력으로 보입니다."
자주 묻는 질문
분산 환경 강의 자주 묻는 질문
Q.MSA를 운영해 본 적이 없어도 되나요?
⌄
Q.이론 강의인가요, 실습 강의인가요?
⌄
Q.어떤 패턴들을 다루나요?
⌄
Q.테스트는 어디까지 다루나요?
⌄
Q.면접 준비에 도움이 되나요?
⌄
함께 이야기 나눠요
개발자 오픈채팅 커뮤니티
혼자 막히면 오래 걸립니다. 강의를 듣다 걸리는 부분, 자기 서비스에 적용하면서 생기는 질문, 커리어와 현업 이야기까지 편하게 나누는 공간이 따로 있습니다.
무엇을 나누나요
실무에서 실제로 겪는 문제, 다른 분들이 어떤 구조를 골랐는지, 그리고 개발자 커리어에 대한 이야기를 나눕니다. 강의 관련 질문도 환영합니다.
"막히는 자리는 대체로 남들도 막힙니다. 먼저 지나간 사람에게 물어보는 게 제일 빠릅니다."