Cloud & Platform
Cloud Native Application(CNA) 개요 및 MSA(Microservices Architecture)와 REST API 이해
Cloud Native Application(CNA) 개요 및 MSA(Microservices Architecture)와 REST API 이해 학습 내용을 정리한 백필 노트입니다.
이 글은 2025년 학습 기록을 블로그 형식으로 정리한 백필 노트입니다.
1. Cloud Native Application 개요
- 애플리케이션 현대화(Application Modernization): Public Cloud 도입 확산으로 앱 현대화가 필수.
- 주요 과제:
- MSA, 컨테이너화, SaaS 전환
- Object Storage, Managed Service 도입
- DevOps/GitOps, Low & No Code 개발.
- CNA 핵심:
- 마이크로서비스: 작은 단위로 독립적 개발·배포·운영
- 컨테이너: 경량화·이식성·자동 스케일링
- DevOps/CI-CD: 개발·배포 자동화와 협업 강화.
2. Microservices Architecture (MSA)
정의 및 특징
- 모놀리식(단일 구조)에서 벗어나 서비스 단위로 세분화.
- 각 서비스가 독립적으로 개발·배포·운영되며 Stateless, Loosely Coupled 구조 지향.
- 서비스 세분화 단계: Monolith → Mini → Business Capability → Bounded Context → Aggregate.
Modernization Map
- 인프라·아키텍처·방법론 성숙도:
- Physical Machine → VM → Container → Serverless
- Monolith → Microservice
- Waterfall → Agile/DevOps.
적용 필요성
- 업무 확장·실시간 데이터 분석·고객 만족·자동화된 빌드·배포·장애 대응·보안 등에서 MSA는 유연성·확장성·고가용성을 제공.
실무 설계 유의사항
- 도메인 분리: 운영 용이성 고려
- 데이터베이스 전략: 서비스별 독립 DB, Saga 패턴, CQRS, Event Sourcing 활용
- Spring Cloud 프레임워크: API Gateway, Service Discovery, Config 관리, Circuit Breaker, Logging/Monitoring 등 통합.
3. API와 REST API
API 개요
- 소프트웨어 간 표준화된 통신 방식.
- Open API를 통해 외부 서비스와 연동 가능.
API Gateway
- 모든 API 엔드포인트를 단일화하고 인증·인가·라우팅·로깅·QoS 관리 등 수행.
- ESB에서 발전, 경량화된 JSON/REST 기반 구조.
REST API
- 리소스를 HTTP URI로 정의하고, 행위를 HTTP Method(GET, POST, PUT, DELETE 등)로 표현.
- CRUD를 구조적으로 처리하여 확장성·표준성을 확보.
4. CNA 개발 및 구성
아키텍처
- Inner Architecture: Spring Gateway, KeyCloak, Redis, Kafka, RabbitMQ, EFK Stack(로그/모니터링), Zipkin(분산 추적) 등.
- Outer Architecture: API Gateway, Load Balancer, Config 관리, Token Store 등.
- GitOps 기반 운영: ArgoCD 적용, All-Active Clustering, Auto Healing, Rolling Upgrade 지원.
개발 프레임워크
- Spring Boot/Cloud:
- Spring Boot: 컴포넌트 레벨 MSA 개발 지원.
- Spring Cloud: 시스템 레벨 MSA, Service Discovery, Config, Load Balancing, Security 제공.
- 공통 서비스: 인증/권한(SSO), 트랜잭션 관리, 로깅·모니터링, 메시징(RabbitMQ/Kafka), 다국어 처리 등.
- Frontend: SPA 기반 글로벌 API·Validation·이벤트 처리 등 공통 기능 포함.
데이터 연계 및 복제
- 통신/처리 패턴: Sync/Async, 1:1/1:N, Publish/Subscribe 등.
- 연계/복제 방식: API Composition, Shared Database, CQRS, Event Sourcing, Saga 패턴 등 활용.
5. MSA 개발 안티 패턴
다음과 같은 설계는 금지해야 함:
- 연속된 동기식 API 호출(Chained API)
- Point-to-Point Blocking 모델로 다중 서비스 호출
- 강결합으로 인한 장애 전체 전파
- 복잡한 Spaghetti Network
- 단일 서비스의 다중 서비스 실시간 Pull
- 장기 배치 작업의 동기식 API 호출
- DB 분리 없이 동일 데이터소스 공유
- 데이터 주권이 정해진 스키마 간 참조
- 단일 서비스의 다중 DBMS Pull
- 배치 작업으로 다중 DBMS Aggregate Pull