Skip to content

MicroService Architecture ‐ API Gateway Patterns

woo jin edited this page Mar 28, 2026 · 4 revisions

MicroService Architecture - API Gateway Patterns

API Gateway Pattern

image
  • 클라이언트 애플리케이션에 대한 단일 진입점이다.
  • 클라이언트와 백엔드 서비스 사이에 위치한다.
    • 여러 마이크로서비스 요청을 1개의 응답으로 처리한다.
    • 내부 마이크로서비스로 라우팅을 담당한다.
  • 객체 지향 설계의 Facade 패턴과 유사하다.

장점

  • Reverse Proxy, Routing, Aggregation 지원
  • Abstraction Backend Service
  • 불필요한 네트워크 트래픽 요청 감소
  • Cross-cutting Concerns 문제 처리

단점

  • 단일 API Gateway로 SPOF 위험성 증가
  • API Gateway 비즈니스 복잡성 증가
  • API Gateway가 네트워크 트래픽의 병목 지점이 될 수 있다.

Gateway Routing Pattern

image
  • 단일 엔드포인트로 여러 마이크로서비스에 요청을 보낸다.
    • Routing, Reverse Proxy
    • 각 서비스에 대한 요청을 라우팅하는 Gateway Endpoint가 필요하다.
  • 클라이언트에서 여러 마이크로서비스를 사용하는 경우
    • 마이크로서비스가 변경되어도 클라이언트 코드 변경이 필요하지 않다.
    • Routing만 변경하면 된다.
    • 클라이언트 코드의 단순화
  • 다양한 API 버전에 대해 Routing 기능이 지원된다.

Gateway Aggregation Pattern

image
  • 클라이언트 로직 수행에 여러 개의 다른 백엔드 마이크로서비스를 호출해야 하는 경우에 사용한다.
  • 단일 엔드포인트를 노출하고 여러 마이크로서비스로 요청을 보낸 후 집계한다.
    • 여러 백엔드 서비스에 요청을 전송한 다음 집계한 내용을 클라이언트로 전달한다.
  • 클라이언트 애플리케이션에서 복잡한 내부 백엔드 서비스 통신에 대한 추상화를 이룰 수 있다.

Gateway Offloading Pattern

image
  • Gateway Proxy에 공유 기능을 결합한 것이다.
    • 대표적인 공유 서비스 기능 - 인증, SSL 종료, 로깅, 모니터링 등
  • Cross-cutting Concerns 처리
    • 인증, 권한 부여, 서비스 검색, 응답 캐싱, 재시도 정책, 회로 차단기, 속도 제한 및 조절, SSL 인증, 로깅, 모니터링, 부하 분산 등

BFF(Backend for Frontend) 패턴

Aggregator / Discovery 패턴

📖 Java

📖 Kotlin

📖 Coroutine

📖 Spring

📖 Spring Security

📖 Spring Batch

📖 Reactive Programming

📖 Database

📖 MySQL

📖 Redis

📖 JPA

📖 QueryDsl

📖 MSA

📖 Kafka

📖 Apache Flink

  • [Apache Flink - Apache Flink Architecture]
  • [Apache Flink - Stream Processing]
  • [Apache Flink - Data Stream API & Window]
  • [Apache Flink - State Management]

📖 HTTP

📖 AWS

📖 Docker

📖 Kubernetes

📖 CI/CD

📖 Nginx

📖 Monitoring🥈

  • [Monitoring - Log Concept]
  • [Monitoring - Log Level & Filter]
  • [Monitoring - Logback]
  • [Monitoring - Log Collection with ELK Stack]
  • [Monitoring - Log Monitoring with Kibana]
  • [Monitoring - Building a Monitoring System with Spring Boot Actuator]
  • [Monitoring - Server Monitoring with Prometheus and Grafana with Discord Alerts]

📖 Test

📖 Effective Java 3/E

📖 Kotlin Academy - Effective Kotlin

📖 Kotlin Academy - 핵심편

📖 스프링으로 시작하는 리액티브 프로그래밍

📖 가상 면접 사례로 배우는 대규모 시스템 설계 기초 1

📖 가상 면접 사례로 배우는 대규모 시스템 설계 기초 2

📖 Clean Code

📖 리팩토링 2판

📖 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식

📖 GraphQL

Clone this wiki locally