Taeyoung Kim

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 개발 안티 패턴

다음과 같은 설계는 금지해야 함:

  1. 연속된 동기식 API 호출(Chained API)
  2. Point-to-Point Blocking 모델로 다중 서비스 호출
  3. 강결합으로 인한 장애 전체 전파
  4. 복잡한 Spaghetti Network
  5. 단일 서비스의 다중 서비스 실시간 Pull
  6. 장기 배치 작업의 동기식 API 호출
  7. DB 분리 없이 동일 데이터소스 공유
  8. 데이터 주권이 정해진 스키마 간 참조
  9. 단일 서비스의 다중 DBMS Pull
  10. 배치 작업으로 다중 DBMS Aggregate Pull