[강의 후기] '비전공자도 이해할 수 있는 MSA 입문/실전 (feat. Spring Boot)'
데이터 파이프라인을 구축하고 플랫폼을 운영하다 보면, 결국 데이터의 시작점인 업스트림(Upstream) 시스템의 구조를 깊이 이해해야 하는 순간이 옵니다. 파이프라인 장애의 상당수는 소스 애플리케이션의 트랜잭션 방식이나 서비스 분리 구조를 명확히 모를 때 발생하기 때문입니다.
백엔드 아키텍처의 표준으로 자리 잡은 마이크로서비스 아키텍처(MSA)를 백엔드 개발자의 시선에서 체계적으로 정리하고자 인프런의 ‘비전공자도 이해할 수 있는 MSA 입문/실전 (feat. Spring Boot)’ 강의를 수강했습니다. 6년차 데이터 엔지니어의 관점에서 느낀 점과 실무적인 효용을 정리합니다.
왜 데이터 엔지니어가 MSA를 알아야 할까?
모놀리식(Monolithic) 환경에서는 단일 RDBMS에서 배치 쿼리를 날리거나 복제본(Read Replica)을 붙여 데이터를 적재하면 충분했습니다. 하지만 MSA 환경에서는 데이터 파이프라인의 전제 자체가 바뀝니다.
- Database-per-Service 패턴: 서비스마다 독립된 DB를 사용하므로, 더 이상 RDBMS 조인(JOIN)으로 데이터를 한 번에 가져올 수 없습니다.
- 최종 일관성(Eventual Consistency): 분산 트랜잭션 환경에서는 데이터 동기화 시점이 쪼개져 있어 파이프라인 정합성 검증 기준을 다시 세워야 합니다.
- 이벤트 기반 데이터 수집(CDC/EDA): REST API 호출 방식의 한계를 넘어 Kafka나 메시지 브로커를 통한 변경분 스트리밍(Change Data Capture)이 필수가 됩니다.
결국 데이터 레이크나 레이크하우스를 제대로 설계하려면, 업스트림 서비스가 데이터를 어떻게 격리하고 통신하는지 원리를 알아야 합니다.
강의 구성 및 특징
강의는 이론과 실습이 균형 있게 배분되어 있습니다. ‘비전공자도 이해할 수 있는’이라는 타이틀답게 추상적인 아키텍처 개념을 명확한 비유와 도해로 풀어냅니다.
| 구분 | 주요 학습 내용 |
|---|---|
| 이론 (개념/패턴) | 모놀리식의 한계, MSA의 핵심 원칙, 서비스 분리 전략, 분산 트랜잭션(Saga 패턴) |
| 인프라/게이트웨이 | API Gateway, Service Discovery(Eureka), Config Server |
| 실전 구현 (Spring Boot) | 마이크로서비스 간 통신(Feign Client, WebClient), 분산 로깅 및 메시징 기초 |
데이터 엔지니어 관점에서의 핵심 수강 포인트
1. 도메인 분리와 데이터 격리의 현실
강의에서는 주문, 회원, 결제 등 도메인별로 서비스를 쪼개고 각각의 데이터베이스를 독립시키는 과정을 실습합니다. 데이터 엔지니어로서 매일 마주하는 “왜 소스 데이터가 여러 DB에 쪼개져 있는가?”에 대한 아키텍처적 당위성을 백엔드 코드로 직접 확인하면서, DW/데이터 레이크에서의 통합 모델링 전략을 어떻게 가져가야 할지 명확해졌습니다.
2. 동기 통신(REST) vs 비동기 통신(Event)
Feign Client를 이용한 서비스 간 동기 통신의 병목 현상을 체감하고, 왜 이벤트 브로커(Kafka, RabbitMQ)가 도입될 수밖에 없는지 설명하는 흐름이 자연스럽습니다. 이는 데이터 수집 파이프라인을 배치 기반에서 실시간 스트리밍(CDC)으로 전환해야 하는 이유와 정확히 맞닿아 있습니다.
3. 분산 환경의 장애 전파와 트랜잭션
단일 DB의 ACID 트랜잭션이 분산 환경에서 깨질 때 이를 해결하기 위한 보상 트랜잭션 및 Saga 패턴의 개념을 잡는 데 큰 도움이 되었습니다. 데이터 파이프라인에서 중복 데이터 제거나 멱등성(Idempotency) 보장이 왜 중요한지 시스템 설계 레벨에서 다시 돌아보게 되었습니다.
솔직한 장단점
장점
- 진입 장벽이 낮음: 복잡한 인프라 설정에 매몰되지 않고 Spring Boot를 이용해 MSA의 핵심 컴포넌트를 빠르게 띄워볼 수 있습니다.
- 전체 흐름 조망 가능: API Gateway부터 개별 서비스, 서비스 디스커버리까지 이어지는 요청 흐름(Request Lifecycle)을 한눈에 파악할 수 있습니다.
- 백엔드 개발자와의 소통 비용 감소: 백엔드 팀이 사용하는 용어(Eureka, Feign, Config Server 등)와 고민 지점을 이해하게 되어 협업 시 요구사항 조율이 훨씬 수월해집니다.
총평
데이터 엔지니어링은 단순히 SQL 쿼리를 짜고 파이프라인을 잇는 작업이 아니라, 분산 시스템 전반의 데이터 흐름을 최적화하는 일입니다.
자바나 스프링 부트가 메인 언어가 아니더라도, 백엔드 분산 아키텍처의 뼈대를 빠르게 익히고 싶은 데이터 엔지니어에게 훌륭한 나침반이 되어줄 강의입니다. 업스트림 엔지니어링 팀과 더 깊은 수준의 기술적 대화를 나누고 싶은 분들에게 권합니다.
