Kong

1. 적절한 태그 (영어, 대시로 구분)

API-Gateway, Cloud-Native, Microservices, Traffic-Management

2. 분류 구조 타당성 검토 및 분석

3. 200 자 내외 한줄 요약

Kong 은 마이크로서비스 (Microservices) 아키텍처와 클라우드 환경에서 트래픽 관리, 인증, 로깅, 보안 기능을 제공하는 오픈 소스 API 게이트웨이 (API Gateway) 솔루션으로, 다양한 플러그인과 고가용성, 확장성을 지원하여 복잡한 시스템을 효율적으로 운영할 수 있게 한다.

4. 250 자 내외 개요

Kong 은 엔터프라이즈용 오픈소스 API 게이트웨이로, 네트워크 요청 트래픽을 제어, 인증, 정책 적용, 로깅 등 다양한 미들웨어 역할을 수행한다. 플러그인 기반 구조로 인증, 보안, 트래픽 제한, 관측성 (Observability) 등을 확장할 수 있고, 컨테이너 및 클라우드 네이티브 환경에서 고가용성과 운영 효율성을 제공한다. 복잡한 마이크로서비스 환경에서 핵심 인프라로 활용되고 있다.

5. 핵심 개념

5.1 실무 구현 연관성

6. 필수 조사 내용 정리

등장 배경 및 발전 과정

목적 및 필요성

주요 기능 및 역할

구분기능역할
인증/인가요청 검증, 사용자 권한 확인API 접근 보안성 제공
라우팅경로 및 서비스로 트래픽 분배백엔드 서비스와 연결 담당
상한/트래픽관리속도 제한, 부하 분산자원 소모 및 DDoS 방어
로깅/모니터링트랜잭션 기록, 성능 모니터링운영 및 문제 진단 지원

특징

핵심 원칙

주요 원리/작동 방식 (다이어그램 아래 참고)

주요 원리/작동 원리 다이어그램 (Mermaid)

sequenceDiagram
    participant Client
    participant Kong
    participant Backend
    Client->>Kong: API 요청
    Kong->>Kong: 인증/인가 플러그인 실행
    Kong->>Kong: 트래픽 정책 플러그인 실행
    Kong->>Backend: 라우팅 후 요청 전달
    Backend-->>Kong: 응답
    Kong-->>Client: 결과 전달

구조 및 아키텍처

구조 다이어그램 (Mermaid)

graph TD
  Client --> Proxy
  Proxy --API 요청/응답--> Plugins
  Plugins --> DB[(Configuration DB)]
  Proxy --> Backend_Services
  Admin_GUI --> Proxy

구성 요소 구분 (필수/선택)

구분구성요소기능역할특징
필수프록시 (Proxy)클라이언트 트래픽 수신정책 처리, 백엔드 연동고성능 경량 처리
필수플러그인 (Plugin)정책 적용기능 확장 (인증, 로깅 등)모듈성
필수DB(Cassandra/PostgreSQL)구성 관리정책, 엔드포인트 저장확장성
선택Manager(Control Plane)관리자 UI/API운영 정책 관리GUI/API 제공
선택Analytics분석/모니터링트래픽/성능 분석통합성

구현 기법 및 방법

실제 구현 예시

장점

구분항목설명
장점확장성플러그인 기반 구조로 유연한 기능 추가/제거 가능
신속 배포경량 프록시로 빠른 배포, 롤링 업데이트 용이
다양한 인증/보안OAuth2.0, JWT 등 최신 인증 지원
분산 및 HA 지원멀티노드 확장, 장애 복구, 고가용성
트래픽 관리요청 제한, 속도 제한 등 다양한 정책 지원
통합 관리관리자 UI, RESTful API 통한 중앙 관리

단점과 문제점 그리고 해결방안

단점

구분항목설명해결책
단점학습 곡선플러그인/정책 구조와 운영 자동화에 익숙하지 않으면 진입장벽공식 문서, 커뮤니티 레퍼런스 활용
외부 DB 의존성구성 상태 관리에 반드시 DB 필요DB 장애 대비 이중화 구성
초기 설정 복잡성YAML/JSON 등 다양한 정책 선언 필요예시 템플릿, 자동화 도구 지원
플러그인 개발 난이도Lua 기반 커스텀 플러그인 작성에 러닝 커브 존재표준 플러그인/SDK 활용

문제점

구분항목원인영향탐지 및 진단예방 방법해결 방법 및 기법
문제점DB 장애외부 DB 와 네트워크 연결 문제정책 업데이트/트래픽 처리 중단모니터링 시스템, 건강 체크이중화, 자동 복구장애 시 Failover 및 Backup 이용
문제점리소스 과점트래픽 급증/부적절한 정책설정응답 지연/시스템 다운트래픽 모니터링, 경고 시스템로드 밸런싱, 트래픽 제한오토스케일링 도입
문제점플러그인 충돌다중 플러그인 비효율적 설계트래픽 라우팅 오류, 보안 취약로그 분석, 플러그인 간 의존성 검사표준화, Best Practice 준수테스트, 단계적 롤아웃

실무 사용 예시

사용 환경주요 연동 대상목적효과
마이크로서비스 인프라쿠버네티스 (Kubernetes)API 집합 라우팅, 트래픽 중앙 제어운영 효율, 장애 복구
인증 집중화OAuth2.0/JWT 인증 서버모든 API 호출에 인증 적용보안 강화
SaaS 서비스 게이트웨이외부 고객사 트래픽 관리서비스 라우팅, 요금제 적용유연한 비즈니스 구축

활용 사례

시나리오:
B2B SaaS(Software-as-a-Service) 기업에서 고객 클라이언트들이 각기 다양한 API 요청을 보낼 때, Kong 을 통해 트래픽 라우팅, 인증, 속도 제한, 모니터링을 한 번에 관리

시스템 구성:

시스템 구성 다이어그램:

graph TD
    Client1 & Client2 -->|API 요청| Kong
    Kong -- 인증 --> AuthServer
    Kong -- 로그/모니터링 --> LogServer
    Kong --> BackendService

Workflow:

역할:

유무에 따른 차이점:

구현 예시 (YAML, 쿠버네티스 Ingress Controller):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    konghq.com/plugins: rate-limiting, jwt
spec:
  rules:
  - host: "api.example.com"
    http:
      paths:
      - path: /service1
        pathType: Prefix
        backend:
          service:
            name: service1
            port:
              number: 80

도전 과제

분류 기준에 따른 종류 및 유형

기준유형설명
배포 방식OSS/Enterprise오픈소스/엔터프라이즈 버전
운영 형태싱글 노드/클러스터단일/다중 노드 분산 구성
실행 환경스탠드얼론/쿠버네티스일반 서버/쿠버네티스와 통합된 형태
연동 DBCassandra/PostgreSQL구동에 사용되는 설정 저장소

실무에서 효과적으로 적용하기 위한 고려사항 및 주의할 점

항목설명권장사항
DB 이중화장애 대비를 위한 DB 이중화 필요Replication 적용
플러그인 정책 표준화운영 중 플러그인/정책 일관성 유지베스트프랙티스 준수
모니터링성능 및 장애 즉각 감지외부 통합 모니터링 연동
장애 복구 플랜장애시 신속한 자동 복구 절차 마련DR 테스트 주기적으로 실시

최적화하기 위한 고려사항 및 주의할 점

항목설명권장사항
트래픽 분산부하 집중 방지앞단 로드밸런서 활용
캐싱정책자주 쓰는 정책/응답 캐싱으로 성능 향상캐시 TTL 주기적 확인
자동화 구축업데이트/스케일링 자동화CI/CD 파이프라인 구성
관측성 추가실시간 로깅/모니터링 강화외부 로그 분석 도구 연동

주목할 내용

카테고리주제항목설명
인프라클라우드 네이티브컨테이너 배포K8s 환경에서 통합
보안인증/인가정책OAuth2.0, JWTAPI 보안체계 통합
운영/관리중앙 관리Admin GUI, REST API정책 및 설정 일원화
확장성플러그인 시스템Lua 기반 동적 확장커스텀 기능 추가 용이
관측성로깅/모니터링실시간 트래픽 분석운영 상태 실시간 파악

반드시 학습해야할 내용

카테고리주제항목설명
API 게이트웨이KongAPI 관리/실무적용시스템 트래픽 통합 제어, 정책 운영
플러그인인증/트래픽/로깅표준/커스텀 플러그인플러그인 설계와 운영
클라우드 인프라쿠버네티스 연동Ingress Controller클라우드 네이티브 연동
보안JWT, OAuth2.0인증/인가/토큰 관리현대 API 의 인증 체계 활용

용어 정리

카테고리용어설명
API 관련API 게이트웨이클라이언트와 백엔드 서비스 중계/정책 적용 서버
아키텍처마이크로서비스각각의 독립적인 서비스 집합 시스템 구조형태
클라우드쿠버네티스 (Kubernetes)컨테이너 오케스트레이션 시스템
보안OAuth2.0, JWTAPI 인증/인가 표준, 토큰 기반 인증 체계
플러그인플러그인 (Plugin)기능 확장을 위한 모듈 구조

참고 및 출처

Introduction to API Gateway in Microservices Architecture

다음은 “Kong API Gateway” 에 대한 정밀 조사 요약입니다.


1. 태그 (Tags)


2. 현재 분류 구조의 적절성 검토

“Computer Science and Engineering > Systems Design > System Components > Traffic Control and Routing > API Gateway > Implementations”
→ Kong 은 API Gateway 구현체로 정확히 해당 분류에 적합하며, 구조가 적절합니다. 다만 “Cloud‑Native” 기반인 점 고려하면 “System Design > Distributed Systems” 하위에도 관련됨을 참고해두면 좋습니다.


3. 요약 문장 (≈200 자)

Kong 은 NGINX 기반의 오픈소스 API 게이트웨이로, REST/gRPC/GraphQL 등 다양한 프로토콜을 지원하며 인증, 라우팅, 로드밸런싱, 레이트 리미팅, 로깅 등의 기능을 플러그인 방식으로 제공하는 고성능 클라우드 네이티브 솔루션입니다 (Kong Inc., api7.ai).


4. 개요 (≈250 자)

Kong 은 마샤페 (Mashape) 기술에서 출발해 2015 년에 오픈소스로 공개된 API Gateway 입니다. PostgreSQL 혹은 Cassandra 기반 데이터스토어를 사용하거나 DB‑less 선언형 모드로도 운영 가능하며, 플러그인 기반 확장성, Kubernetes Ingress Controller 지원, Kong Konnect 클라우드 콘트롤플레인, 서비스 메쉬 (Kuma 기반) 등을 통해 멀티클라우드 및 마이크로서비스 환경에서 통합 API 관리 플랫폼 역할을 수행합니다 (위키백과).


5. 핵심 개념

실무 관련 연관성


6. 조사 내용 정리 (##6 항목 기반)

필수 조사 항목 대부분 핵심 개념과 개요에서 커버되었으며, 추가해야 할 내용은 다음과 같습니다:


9. 주목할 내용 정리

카테고리주제항목설명
BackgroundHistoryMashape → Kong 오픈소스, Kong Inc. 이관 과정 등마샤페의 API 마켓플레이스에서 API 통행량 관리 솔루션으로 전환한 배경 (위키백과)
ArchitectureDeployment ModesTraditional, Hybrid, DB‑less구성 방식에 따른 장단점 존재 (Kong Docs)
SecurityAdmin API Exposure공개 설정 시 설정 변조 가능관리 API 는 내부망만 접근 허용해야 함 (Trend Micro)

10. 반드시 학습해야 할 내용

카테고리주제항목설명
SecurityHardeningAdmin API 보호, mTLS 설정, Vault 연동오픈소스와 엔터프라이즈 기능 차이 및 안전 운영 기준 이해
DevOpsConfiguration as Codedeck, Terraform, declarative configGitOps 방식으로 운영 자동화 및 일관된 구성 유지
Cloud NativeKubernetes IntegrationKIC(Kong Ingress Controller), OperatorK8s 기반 분산 환경에서 Kong 운영 및 구성 관리
ObservabilityMetrics & LoggingOpenTelemetry, Prometheus, ELK 연동API 성능, 이상 탐지, SLA 기준 모니터링 체계 구성

용어 정리

카테고리용어설명
Core ConceptsData Plane클라이언트 요청을 처리하는 Kong 노드
Core ConceptsControl Plane구성 정보를 전파하는 관리자 수준 구성 요소
DeploymentDB-less Mode외부 DB 없이 선언형 파일 기반 구성 방식
SecurityAdmin APIKong 구성 요소를 통제하기 위한 REST API

참고 및 출처

Kong API Gateway - K8s Architecture | by IntVerse.io | Medium

아래부터 Kong API Gateway 의 주요 항목들을 계속해서 정리하겠습니다.


특징 (Features)


핵심 원칙 (Principles)


주요 원리 및 작동 방식 (Operational Principles & Flow)

아래 그림은 Kong 의 동작 원리를 보여줍니다:

flowchart LR
  Client -->|요청| Kong[API Gateway\n(Data Plane)]
  Kong --> Plugins{플러그인 체인}
  Plugins -->|인증/인가| Auth
  Plugins -->|Rate Limit| Rate
  Plugins -->|Transform| Transform
  Plugins -->|Logging| Logging
  Kong --> Upstream[Backend Service]

구조 및 아키텍처

구성 요소별 정리:

구성 요소역할 및 기능필수/선택
Data Plane요청 처리, 플러그인 실행, 라우팅필수
Control Plane환경 구성, Admin API, GUI, 배포 관리필수
Datastore서비스/라우트/플러그인 설정 저장필수
Plugins인증·인가, 로그, 변환 등 기능 모듈화필수
GitOps 도구선언형 설정 자동 배포 (decK, Terraform 등)선택
Konnect/KIC/Kuma멀티클라우드 운영, Kubernetes 통합, 서비스 메시 통합선택

장점 (Advantages)

구분항목설명
장점고성능 & 저지연LuaJIT 기반 NGINX 로 초당 수백만 요청, 저지연 처리 가능
유연한 확장성multi‑cloud / hybrid 환경에서 클러스터링 및 무중단 확장 용이
강력한 보안 기능인증, 레이트 제한, Admin API RBAC, mTLS, WAF 통합 보안 제공
구성 선언 기반 운영GitOps, DB-less 선언 구성 통한 일관된 배포 및 관리 가능

단점 및 문제점과 해결방안 (Disadvantages & Issues)

단점 표

구분항목설명해결책
단점복잡한 설정 관리수많은 플러그인과 구성 요소로 초기 설정 어려움GitOps 도구 활용, 구성 모듈화 및 템플릿화
Enterprise 기능 제한커뮤니티 버전에는 Vault 통합, 암호화, Dev Portal 등 미제공필요한 경우 Enterprise 또는 Konnect 고려

문제점 표

구분항목원인영향탐지 및 진단예방 방법해결 방법 및 기법
문제점Admin API 노출방화벽 미설정 또는 외부 노출구성 변조, 구성 정보 유출공개 포트 탐지, Shodan 검색Admin API 내부망 제한, IP 화이트리스트 적용네트워크 ACL 설정, RBAC 강화
플러그인 플로우 겹침잘못된 라우트 or plugin 충돌 설정예기치 않은 트래픽 처리 흐름구성 충돌 감지 실패사전 라우트 충돌 검증, workspace 도입구성 테스트 및 컨플릭트 해결

실무 적용 사례 개요 (Use Cases)

환경목적함께 사용하는 구성 요소효과
Kubernetes클러스터 외부 API 노출KIC, GitOps, Prometheus, OpenTelemetry안정적 Ingress 관리, 자동화 구성 및 가시성 확보
멀티테넌시여러 팀/서비스 API 분리 운영Workspace, RBAC, Shared Data Plane팀 간 독립성 확보, 중앙관리 가능
보안 중심 구성민감 API 보호 및 컴플라이언스mTLS, Vault, Rate Limit, WAF공격 방어, 규정 준수, 감사 로그 확보

참고 용어 정리

카테고리용어 훈설명
핵심 개념Data PlaneAPI 요청을 직접 처리하는 Kong 노드
핵심 개념Control Plane구성 변경 및 플러그인 배포 지점
설정 운영DB‑less Mode외부 DB 없이 선언형 구성 파일 기반 운용 방식
보안Admin APIKong 구성 조작을 위한 REST API, 내부망으로 제한되어야 함

더 깊이 있는 구성 예시, 활용 사례 워크플로우, 코드 설정 예는 이후 단계에 이어 제공해드릴 수 있습니다. 필요한 부분 말씀해 주세요!

이어서 Kong에 대한 실무 활용 사례 중 하나를 깊이 있게 분석하고, 시스템 구성, 워크플로우, 역할, 구현 예시까지 정리해드리겠습니다.


## 활용 사례

Mercedes‑Benz Connectivity Services

시나리오:
Mercedes‑Benz 는 커넥티드 차량 데이터 제공 API 를 외부 파트너에 안정적이고 확장 가능하게 노출해야 했습니다. 이를 위해 Kong Gateway 를 API Gateway 로 도입하여 클라우드 네이티브 환경에서 API 라우팅, 인증, 레이트 리밋, 구성 선언 기반 자동화 등을 구현했습니다.(Kong Inc.)

시스템 구성:

시스템 구성 다이어그램:

graph LR
  subgraph GitOps
    Repo[Git repo: kong.yml]
    deck[decK / CI/CD]
  end
  GitOps --> deck
  deck --> ControlPlane[Kong Admin API / Manager]
  ControlPlane --> DataPlane[Kong Nodes / KIC]
  DataPlane --> Plugins{Plugin Chain}
  Plugins --> Auth[Authentication]
  Plugins --> RateLimiting
  Plugins --> Logging
  DataPlane --> Upstream1[Vehicle Service API]
  DataPlane --> Upstream2[Diagnostics Service API]
  Observability[Prometheus / OpenTelemetry] --> DataPlane

Workflow:

역할:

유무에 따른 차이점:

구현 예시:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# kong.yml (declarative config)
_format_version: "3.0"
_transform: true

services:
- name: vehicle-service
  url: https://vehicle.internal
  routes:
  - name: vehicle-route
    paths:
    - /api/vehicle
plugins:
- name: rate-limiting
  service: vehicle-service
  config:
    minute: 100
    policy: local
- name: key-auth
  service: vehicle-service
1
2
# decK 동기화 예시 (CI/CD 스크립트 일부)
deck sync --state kong.yml --kong-addr http://kong-admin:8001
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# Kong Ingress Controller 예시 Kubernetes 리소스
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: vehicle-ingress
  annotations:
    konghq.com/strip-path: "true"
spec:
  rules:
  - host: api.mercedes.com
    http:
      paths:
      - path: /api/vehicle
        pathType: Prefix
        backend:
          service:
            name: vehicle-service
            port:
              number: 443

추가 실무 Food‑Delivery Microservices 사례


기타 주목할 사항

☑️ Declarative Config 확장

☑️ 커스터마이징 플러그인

☑️ OpenAPI Integration


요약


다음에 원하시는 부분이 있다면 예를 들어 인증 방식 비교, 상세 플러그인 구성 예, Kubernetes Operator 설정 등 이어서 도와드릴 수 있습니다!

다음은 Kong API Gateway에 대한 추가 심화 분석입니다. 아래 내용은 앞선 단계에 이어 도전 과제, 분류 기준별 유형, 적용 시 고려사항 및 최적화 전략을 다룹니다.


🧩 도전 과제 (Challenges)

Reliability & Performance

기술 도입/커스터마이징

멀티 클라우드 확장성


분류 기준에 따른 종류 및 유형

분류 기준유형설명
배포 모드TraditionalControl + Data Plane 이 동일 서버/클러스터 내부에 위치
HybridCP 와 DP 분리, 지리적 독립성, DB 접근 최소화
DB-less (Declarative)설정 파일 기반, Admin API 를 통한 선언적 구성 관리
라이선스 에디션OSS / Free오픈소스 기반, Kong Manager 포함 (무제한 사용 가능) (Kong Docs, Medium, GitHub)
Enterprise / KonnectVault, RBAC, DevPortal, GraphQL 보안 등 고급 기능 지원

실무에서 효과적으로 적용하기 위한 고려사항 및 주의점

카테고리항목설명권장사항
SecurityAdmin API 노출외부에 노출 시 설정 조작 및 정보 노출 위험내부망 접속 제한, IP 화이트리스트 구성
Security플러그인 보안일부 커뮤니티 플러그인에서 암호화 미지원, RCE 가능성 존재엔터프라이즈 버전 사용 또는 검증된 플러그인 사용
Operations설정 복잡도 관리라우트, 플러그인 수 증가 시 관리 및 유지보수 어려움GitOps 기반 구성 관리 (decK, Terraform)
Infra리소스 사이징high QPS 환경에서 CPU 및 메모리 요구치 증가성능 테스트 기반 용량 산정, Auto-scaling 구성

최적화를 위한 고려사항 및 주의할 점

최적화 범주항목설명권장사항
Latency 최적화플러그인 최소화경량 플러그인 중심 구성 및 chain 최적화핵심 기능만 활성화, 복잡한 변환은 Upstream 에서 처리
ConfigurationDeclarative 구성 최소화큰 YAML config 는 부하 증가 가능, 빈번한 /config 호출 자제GitOps + check_hash 설정으로 변경 최소화 관리
Cache/TimeoutDNS/Timer 조정Kubernetes 내부 DNS 조회 및 Timer exhaustion 문제 대응ndots, timeout 설정 조정, DNS 캐시 활용
Horizontal ScalingData Plane 확장노드 수 증가 시 라우팅 테이블 증가로 설정 재동기화 고려Hybrid 모드 구성, 설정 동기화 지연 허용 가능한 구성 설계

용어 정리

카테고리용어설명
ReliabilityTimer ExhaustionKong 내부 타이머 소진으로 DNS 실패 또는 타임아웃 발생 현상
LicensesKong Gateway FreeOSS 기능 + Kong Manager 포함, 무제한으로 사용 가능 (Kong Docs, API7, Medium, GitHub)
DeploymentHybrid Mode컨트롤 플레인과 데이터 플레인 분리 구성, 지리적 분산 지원
OptimizationP99 Latency전체 요청 중 상위 1% 지연 시간, 핵심 지표로 사용됨
Configcheck_hashKong DB-less 모드에서 선언 config 무결성 확인을 위한 해시 검증 옵션

필요하시면 특정 항목 (예: GraphQL 보안, 서비스 메시 통합, mTLS 설정, 커스텀 Lua 플러그인 작성 등) 에 대해 추가로 깊이 있는 정보도 제공해드릴 수 있습니다!

아래는 Kong API Gateway에 대한 추가 심화 분석입니다. 이번에는 추가 학습 필요 항목, 정리된 주목할 내용, 그리고 용어 정리를 보완했습니다.


📌 주목할 내용 (Additional Highlights)

카테고리주제항목설명
ReliabilityTimer ExhaustionP99 Latency, Timer System고트래픽 환경에서 Kong 타이머 리소스 고갈로 DNS 오류 및 latency 증가 발생 (Medium, Medium)
DeploymentHybrid vs DB-less구성 방식 차이Traditional, Hybrid, DB-less 모드 간 제약 및 이점 비교 (Kong Docs, softrams.com)
SecurityAdmin API Exposure외부 노출 위험설정·인증 정보 조작 가능, Shodan 표시 노출 사례 존재 (Trend Micro)
ScalabilityIncremental SyncHybrid 모드 최적화Kong 3.10+ incremental sync 기능으로 전체 config push 가 아닌 변경만 전파 (Kong Docs, Kong Docs)
CachingAPI Caching 전략응답 캐싱Kong 캐싱 플러그인 또는 외부 캐시 활용으로 backend 부하 최소화 (BytePlus)

📘 반드시 학습해야 할 내용

카테고리주제항목설명
Reliability타이머 리소스 최적화Timer Exhaustion 해결ndots, timeout 설정 및 check_hash 사용법 익히기
Deployment배포 모드별 특징Deployment ModesTraditional, Hybrid(mTLS), DB-less 선언형 구성 이해
Security운영 API 보안Admin API Protection네트워크 ACL, RBAC, mTLS 적용 방법
Performance캐시 전략Caching 플러그인 예시kong-redis-cache 혹은 internal memory cache 구성법
Sync 방식Config 동기화 방식Incremental SyncHybrid 모드 incremental synchronization 도입 방식
Observability모니터링과 추적Metrics 수집OpenTelemetry, Prometheus 와 연동하여 P99 지연 추적 관리

용어 정리

카테고리용어설명
ReliabilityTimer ExhaustionKong 내부 타이머 리소스 고갈로 DNS timeout 또는 처리 오류 발생 현상
PerformanceP99 Latency전체 요청 중 상위 1% 요청의 응답 지연 시간
DeploymentHybrid ModeCP 와 DP 를 분리한 구성으로 CP 는 설정관리, DP 는 요청 처리
DeploymentIncremental SyncHybrid 모드에서 설정 변경 시 전체가 아닌 변경된 부분만 전파
Configurationcheck_hashDB-less 구성에서 설정 변경 여부 체크를 위해 변경 내용 해시 관리
SecurityAdmin APIKong 구성 변경을 위한 API, 외부 노출 시 보안 위험 존재
PerformanceAPI Caching캐시 레이어를 통한 backend 부하 감소 및 응답 속도 개선
DeploymentDB-less Mode외부 DB 없이 선언형 YAML/JSON 기반 구성 모드

✅ 정리 요약


다음 단계로 GraphQL 보안 플러그인 비교, mTLS 설정 예시, 또는 커스텀 Lua 플러그인 코드 예제 등 특정 항목에 대해 더 깊이 있게 다루길 원하시면 말씀해 주세요!

아래는 Kong API Gateway에 대한 마지막 심화 정리입니다. GraphQL 보안 플러그인 비교, Kong 3.10 의 Incremental Sync 관련 핵심 내용, 추가 학습 항목, 그리고 최종 요약입니다.


🔐 GraphQL 보안 및 기능 플러그인 비교

Kong 은 GraphQL API 에 대해 다음과 같은 플러그인을 제공합니다:

또한 외부 벤더 플러그인인 Inigo Kong Plugin은 다음과 같은 특장점을 갖고 있습니다:


⚙️ Kong 3.10—Incremental Config Sync 주요 내용

Kong Gateway 버전 3.10 부터는 Hybrid 모드에서 Incremental Config Sync 기능이 GA(General Availability) 되었으며, 이를 통해 다음과 같은 이점이 있습니다:

구성 설정 예시: kong.conf 또는 환경변수에 incremental_sync = on (또는 KONG_INCREMENTAL_SYNC=on) 설정 필요 (Kong Docs)


📚 추가 학습 및 심화 항목

카테고리주제항목설명
GraphQL 및 보안GraphQL 플러그인 비교Native vs Inigo 플러그인 분석캐시, Rate Limiting, 스키마 검증, CI 통합 등 비교 검토
운영 및 최적화Incremental Sync 비교 및 구성법Kong 3.10 Hybrid Mode설정 방법, 제한사항, 커스텀 플러그인 호환성 이해 필요
성능 튜닝Custom Plugin Cache Invalidationcheck_hash, kong.worker_eventsincremental sync 호환 custom plugin 작성법 학습 (Inigo, Kong Inc., Kong Docs)
배포 및 관리decK Drift Detection선언 구성과 실제 구성 동기화구성 drift 탐지 및 자동 동기화 워크플로우 이해 (GitHub)

✅ 최종 요약


📌 용어 정리

카테고리용어설명
GraphQL SecurityInigo Kong PluginGraphQL 보안·관측·스키마 린팅 통합 플러그인
DeploymentIncremental Config SyncHybrid 모드에서 변경된 구성만 전파하여 효율 개선
OptimizationCache Invalidation in PluginsCustom plugin 이 incremental sync 환경에서 일관성을 유지하도록 캐시 무효화 처리
DevOpsdecK Drift DetectionGit 선언 구성과 Kong 실제 구성의 차이 감지 및 동기화 도구

다음으로 mTLS 설정 예시, 서비스 메시 통합 (Kong Mesh), 또는 GraphQL CI/CD 워크플로우 예시 등 특정 항목에 대해 더 깊이 다루길 원하시면 말씀해 주세요!

Kong API Gateway 에 대한 포괄적인 조사와 분석을 진행하겠습니다. 먼저 최신 정보를 수집하고 체계적으로 분석해보겠습니다.

Kong API Gateway 종합 분석

1. 태그

API-Gateway, Kong-Gateway, Microservices-Management, Traffic-Control

2. 분류 구조 검증

현재 분류: Computer Science and Engineering > Systems Design > System Components > Traffic Control and Routing > API Gateway > Implementations

검증 결과: 적절함
근거: Kong 은 API Gateway 의 구체적인 구현체로서, 트래픽 제어 및 라우팅 시스템의 구성 요소에 해당하며, 시스템 설계 범주 내에서 올바르게 분류됨

3. 요약 설명 (200 자)

Kong 은 클라우드 네이티브 환경에 최적화된 오픈소스 API Gateway 로, NGINX 기반의 고성능 프록시 엔진과 확장 가능한 플러그인 아키텍처를 통해 마이크로서비스 간 트래픽 관리, 인증/인가, 보안, 모니터링을 제공하는 현대적 API 관리 솔루션입니다.

4. 개요 (250 자)

Kong Gateway 는 REST, gRPC, GraphQL 등 다양한 프로토콜을 지원하는 경량 API Gateway 입니다. Control Plane 과 Data Plane 분리 아키텍처, DB-less 모드, 하이브리드 배포를 통해 확장성과 유연성을 제공하며, 풍부한 플러그인 생태계로 인증, Rate Limiting, 변환, 분석 기능을 지원합니다. 온프레미스부터 멀티클라우드까지 다양한 환경에서 배포 가능합니다.


5. 핵심 개념

5.1 기본 개념

API Gateway

Control Plane vs Data Plane

플러그인 아키텍처

5.2 실무 구현 연관성

구성 관리

배포 토폴로지

보안 및 인증


6. 상세 조사 내용

등장 및 발전 배경

Kong 은 2015 년 Mashape(현 Kong Inc.) 에서 API 관리의 복잡성을 해결하기 위해 개발되었습니다. 마이크로서비스 아키텍처의 급속한 확산과 함께 다음과 같은 문제들을 해결하고자 등장했습니다:

2017 년 Kong Enterprise 출시, 2019 년 Kong Konnect 서비스 출시, 2024 년 Kong AI Gateway 기능 추가 등으로 지속적으로 발전하고 있습니다.

목적 및 필요성

주요 목적

필요성

주요 기능 및 역할

핵심 기능

  1. 트래픽 관리

    • 로드 밸런싱 및 헬스 체크
    • Rate Limiting 및 Circuit Breaking
    • 요청/응답 변환
  2. 보안 기능

    • 다중 인증 방식 지원
    • SSL/TLS 종료
    • IP 화이트리스트/블랙리스트
  3. 모니터링 및 분석

    • 실시간 트래픽 분석
    • 로깅 및 메트릭 수집
    • OpenTelemetry 지원

주요 역할

특징

고성능

확장 가능성

클라우드 네이티브

다중 프로토콜 지원

핵심 원칙

  1. 성능 우선: 고성능 프록시 엔진 기반 설계
  2. 확장성: 모듈식 플러그인 아키텍처
  3. 운영 용이성: 선언적 구성 및 GitOps 지원
  4. 보안: 기본적으로 안전한 설계 원칙
  5. 개방성: 오픈소스 기반 투명한 개발

주요 원리 및 작동 원리

graph TB
    Client[클라이언트] --> Kong[Kong Gateway]
    Kong --> Plugin1[인증 플러그인]
    Kong --> Plugin2[Rate Limiting 플러그인]
    Kong --> Plugin3[변환 플러그인]
    Kong --> LoadBalancer[로드 밸런서]
    LoadBalancer --> Service1[서비스 1]
    LoadBalancer --> Service2[서비스 2]
    LoadBalancer --> Service3[서비스 3]
    
    subgraph "Kong 내부 처리"
        Plugin1 --> Plugin2
        Plugin2 --> Plugin3
        Plugin3 --> LoadBalancer
    end

작동 방식

  1. 요청 수신: 클라이언트로부터 HTTP 요청 수신
  2. 라우팅 결정: Route 와 Service 매칭을 통한 대상 서비스 결정
  3. 플러그인 실행: 구성된 플러그인들의 순차적 실행
  4. 업스트림 전달: 처리된 요청을 대상 서비스로 전달
  5. 응답 처리: 업스트림 응답에 대한 플러그인 처리
  6. 응답 반환: 최종 처리된 응답을 클라이언트에 반환

구조 및 아키텍처

graph TB
    subgraph "Control Plane"
        AdminAPI[Admin API]
        KongManager[Kong Manager]
        Database[(PostgreSQL)]
        AdminAPI <--> Database
        KongManager <--> Database
    end
    
    subgraph "Data Plane Cluster"
        DP1[Data Plane 1]
        DP2[Data Plane 2]
        DP3[Data Plane 3]
    end
    
    subgraph "External Components"
        Client[클라이언트]
        Services[업스트림 서비스들]
        Redis[(Redis Cache)]
    end
    
    AdminAPI -.-> DP1
    AdminAPI -.-> DP2
    AdminAPI -.-> DP3
    
    Client --> DP1
    Client --> DP2
    Client --> DP3
    
    DP1 --> Services
    DP2 --> Services
    DP3 --> Services
    
    DP1 <--> Redis
    DP2 <--> Redis
    DP3 <--> Redis

구성 요소

필수 구성요소

  1. Kong Core

    • NGINX 기반 프록시 엔진
    • 요청/응답 처리 및 라우팅
    • 플러그인 실행 환경
  2. Admin API

    • RESTful API 를 통한 구성 관리
    • 엔티티 CRUD 작업
    • 실시간 구성 업데이트
  3. Route 및 Service

    • Route: 클라이언트 요청을 매칭하는 규칙
    • Service: 업스트림 서비스 추상화

선택 구성요소

  1. Kong Manager

    • 웹 기반 관리 GUI
    • 시각적 구성 관리
  2. Database

    • PostgreSQL (권장) 또는 Cassandra
    • DB-less 모드에서는 선택사항
  3. 플러그인

    • 확장 기능 제공
    • 커뮤니티 및 엔터프라이즈 플러그인
  4. Cache (Redis)

    • 성능 향상을 위한 캐싱
    • Rate Limiting 데이터 저장

구현 기법 및 방법

1. 전통적 배포 (Traditional Mode)

1
2
3
4
5
6
7
# kong.conf 설정 예시
database = postgres
pg_host = localhost
pg_port = 5432
pg_database = kong
pg_user = kong
pg_password = kong

2. 하이브리드 모드 (Hybrid Mode)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# Control Plane 구성
role = control_plane
database = postgres
cluster_cert = /path/to/cluster.crt
cluster_cert_key = /path/to/cluster.key
cluster_listen = 0.0.0.0:8005

# Data Plane 구성
role = data_plane
database = off
cluster_control_plane = cp.example.com:8005
cluster_cert = /path/to/cluster.crt
cluster_cert_key = /path/to/cluster.key

3. DB-less 모드

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# kong.yml 선언적 구성 예시
_format_version: "3.0"
services:
- name: my-service
  url: http://backend.example.com
  routes:
  - name: my-route
    paths:
    - /api/v1
plugins:
- name: rate-limiting
  config:
    minute: 5

4. Kubernetes 배포

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kong-gateway
spec:
  replicas: 3
  selector:
    matchLabels:
      app: kong-gateway
  template:
    metadata:
      labels:
        app: kong-gateway
    spec:
      containers:
      - name: kong
        image: kong:3.8
        env:
        - name: KONG_DATABASE
          value: "off"
        - name: KONG_DECLARATIVE_CONFIG
          value: "/kong/kong.yml"
        ports:
        - containerPort: 8000
          name: proxy
        - containerPort: 8443
          name: proxy-ssl

장점

구분항목설명
장점고성능NGINX 기반 아키텍처로 초당 수만 건의 요청 처리 가능, 메모리 기반 구성 캐싱으로 지연 시간 최소화
확장성수평적 스케일링 지원, 플러그인 아키텍처를 통한 기능 확장, 다양한 배포 토폴로지 지원
유연성DB-less, Hybrid, Traditional 모드 지원으로 다양한 환경에 적응 가능
개발자 친화적선언적 구성, GitOps 지원, 다양한 프로그래밍 언어로 플러그인 개발 가능
풍부한 생태계200 개 이상의 플러그인 제공, 활발한 커뮤니티 지원
멀티 프로토콜 지원REST, gRPC, GraphQL, WebSocket 등 다양한 프로토콜 지원
보안다중 인증 방식, mTLS, 세밀한 접근 제어 기능

단점과 문제점 그리고 해결방안

단점

구분항목설명해결책
단점학습 곡선다양한 배포 모드와 구성 옵션으로 인한 초기 학습 비용단계적 도입, 문서화된 베스트 프랙티스 활용, 교육 프로그램 참여
메모리 사용량모든 구성을 메모리에 로드하여 메모리 사용량이 높음적절한 인스턴스 사이징, 메모리 최적화 구성
플러그인 호환성버전 간 플러그인 호환성 문제 발생 가능엄격한 버전 관리, 단계적 업그레이드 전략
DB-less 모드 제약일부 플러그인이 DB-less 모드에서 제한적 기능Hybrid 모드 활용, 엔터프라이즈 버전 고려

문제점

구분항목원인영향탐지 및 진단예방 방법해결 방법 및 기법
문제점구성 동기화 지연대규모 클러스터에서 구성 전파 지연일시적 서비스 불일치모니터링 대시보드, 로그 분석점진적 배포, 구성 검증Incremental Configuration Sync 기능 활용
메모리 누수장기 실행 시 메모리 누수 발생성능 저하, 서비스 중단메모리 모니터링, 프로파일링정기적 재시작, 메모리 최적화버전 업그레이드, 메모리 프로파일링
플러그인 충돌플러그인 간 실행 순서 충돌예상하지 못한 동작요청 추적, 플러그인 로그플러그인 우선순위 설정플러그인 재구성, 단계별 테스트
Certificate 만료mTLS 인증서 만료클러스터 통신 중단인증서 만료 모니터링자동 갱신 설정인증서 갱신, 롤링 업데이트

도전 과제

1. 성능 최적화

2. 보안 강화

3. 멀티클라우드 관리

분류 기준에 따른 종류 및 유형

분류 기준유형설명
배포 모드Traditional데이터베이스 기반 클러스터 배포
HybridControl Plane 과 Data Plane 분리 배포
DB-less메모리 기반 선언적 구성
라이선스Community Edition오픈소스 무료 버전
Enterprise Edition상용 라이선스, 추가 기능 제공
Kong KonnectSaaS 형태의 매니지드 서비스
플러그인 유형AuthenticationKey Auth, JWT, OAuth, LDAP 등
SecurityRate Limiting, IP Restriction, CORS 등
Traffic ControlLoad Balancing, Circuit Breaker 등
TransformationRequest/Response Transformer 등
AnalyticsPrometheus, Datadog, Logging 등
프로토콜 지원HTTP/REST표준 HTTP/HTTPS 프로토콜
gRPCGoogle 의 RPC 프로토콜
GraphQLFacebook 의 쿼리 언어
WebSocket실시간 양방향 통신

실무 사용 예시

사용 사례목적효과
마이크로서비스 API Gateway서비스 간 통신 중앙화보안 일관성, 모니터링 통합
E-commerce 플랫폼트래픽 관리 및 보안성능 향상, DDoS 방어
금융 서비스 API규제 준수 및 보안컴플라이언스 달성, 감사 추적
IoT 플랫폼대량 디바이스 연결 관리확장성, 디바이스 인증
미디어 스트리밍콘텐츠 배포 최적화글로벌 배포, 캐싱 효율성

활용 사례

시나리오: 대규모 E-commerce 플랫폼의 마이크로서비스 API 관리

시스템 구성:

시스템 구성 다이어그램:

graph TB
    subgraph "External"
        Client[모바일/웹 클라이언트]
        LB[로드 밸런서]
    end
    
    subgraph "Kong Control Plane"
        CP1[Control Plane 1]
        CP2[Control Plane 2]
        DB[(PostgreSQL 클러스터)]
        CP1 <--> DB
        CP2 <--> DB
    end
    
    subgraph "Kong Data Plane"
        DP1[Data Plane 1]
        DP2[Data Plane 2]
        DP3[Data Plane 3]
        DP4[Data Plane 4]
        DP5[Data Plane 5]
        DP6[Data Plane 6]
    end
    
    subgraph "Microservices"
        UserSvc[사용자 서비스]
        ProductSvc[상품 서비스]
        OrderSvc[주문 서비스]
        PaymentSvc[결제 서비스]
        InventorySvc[재고 서비스]
    end
    
    subgraph "Infrastructure"
        Redis[(Redis 클러스터)]
        Prometheus[Prometheus]
        Grafana[Grafana]
    end
    
    Client --> LB
    LB --> DP1
    LB --> DP2
    LB --> DP3
    
    CP1 -.-> DP1
    CP1 -.-> DP2
    CP1 -.-> DP3
    CP2 -.-> DP4
    CP2 -.-> DP5
    CP2 -.-> DP6
    
    DP1 --> UserSvc
    DP2 --> ProductSvc
    DP3 --> OrderSvc
    DP4 --> PaymentSvc
    DP5 --> InventorySvc
    DP6 --> UserSvc
    
    DP1 <--> Redis
    DP2 <--> Redis
    DP3 <--> Redis
    
    DP1 --> Prometheus
    DP2 --> Prometheus
    DP3 --> Prometheus
    Prometheus --> Grafana

Workflow:

  1. 클라이언트 요청이 로드 밸런서를 통해 Kong Data Plane 으로 전달
  2. Kong 에서 JWT 토큰 검증 및 사용자 인증 수행
  3. Rate Limiting 플러그인으로 API 호출 제한 적용
  4. 요청 변환 플러그인으로 내부 API 형식에 맞게 변환
  5. 로드 밸런싱을 통해 적절한 마이크로서비스로 라우팅
  6. 응답 변환 및 로깅 후 클라이언트에 반환

역할:

유무에 따른 차이점:

구현 예시:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# Kong 서비스 및 라우트 구성
_format_version: "3.0"

services:
- name: user-service
  url: http://user-service:8080
  routes:
  - name: user-api
    paths:
    - /api/v1/users
    methods:
    - GET
    - POST
    - PUT
    plugins:
    - name: jwt
      config:
        key_claim_name: kid
        secret_is_base64: true
    - name: rate-limiting-advanced
      config:
        limit:
        - 100
        - 1000
        window_size:
        - 60
        - 3600
        identifier: consumer
        
- name: product-service
  url: http://product-service:8080
  routes:
  - name: product-api
    paths:
    - /api/v1/products
    plugins:
    - name: prometheus
      config:
        per_consumer: true
    - name: proxy-cache
      config:
        request_method:
        - GET
        response_code:
        - 200
        content_type:
        - application/json
        cache_ttl: 300
        strategy: redis

consumers:
- username: mobile-app
  jwt_secrets:
  - key: mobile-app-key
    secret: your-jwt-secret-key
    
plugins:
- name: cors
  config:
    origins:
    - "https://www.example.com"
    - "https://mobile.example.com"
    methods:
    - GET
    - POST
    - PUT
    - DELETE
    headers:
    - Accept
    - Accept-Version
    - Content-Length
    - Content-MD5
    - Content-Type
    - Date
    - X-Auth-Token
    exposed_headers:
    - X-Auth-Token
    credentials: true
    max_age: 3600

실무에서 효과적으로 적용하기 위한 고려사항 및 주의할 점

구분고려사항권장사항
아키텍처 설계배포 모드 선택환경과 요구사항에 맞는 배포 모드 선택, 단계적 마이그레이션 계획
플러그인 설계플러그인 실행 순서 최적화, 불필요한 플러그인 제거
성능 최적화메모리 관리적절한 인스턴스 사이징, 메모리 모니터링
캐싱 전략Redis 클러스터 구성, 캐시 TTL 최적화
보안인증/인가강력한 JWT 구성, mTLS 활성화
네트워크 보안VPC 격리, 방화벽 규칙 설정
운영 관리모니터링Prometheus, Grafana 대시보드 구성
로깅구조화된 로깅, 중앙집중식 로그 관리
자동화CI/CDGitOps 기반 구성 관리, 자동화된 배포
스케일링HPA 설정, 자동 스케일링 정책

최적화하기 위한 고려사항 및 주의할 점

구분최적화 포인트권장사항
성능 최적화플러그인 최적화불필요한 플러그인 제거, 실행 순서 최적화, 경량 플러그인 사용
메모리 최적화적절한 worker 프로세스 수 설정, 메모리 풀 조정
네트워크 최적화Keep-alive 설정, 연결 풀 최적화
확장성수평 스케일링로드 밸런서 구성, 세션 무상태 설계
데이터베이스 최적화읽기 복제본 활용, 커넥션 풀 최적화
가용성고가용성 설계다중 리전 배포, 장애 복구 계획
모니터링 강화실시간 알림, 자동 복구 메커니즘
보안 강화접근 제어최소 권한 원칙, 세밀한 RBAC 설정
데이터 보호암호화 강화, 민감 데이터 마스킹

주제와 관련하여 주목할 내용

카테고리주제항목설명
최신 기술AI GatewayKong AI GatewayLLM 통합, AI 프롬프트 가드, 시맨틱 캐싱 기능
Incremental Sync점진적 구성 동기화메모리 및 CPU 사용량 최적화, 대규모 클러스터 성능 향상
클라우드 네이티브KubernetesKong Ingress ControllerKubernetes 네이티브 구성, CRD 기반 관리
Service MeshKong MeshKuma 기반 서비스 메시 솔루션
보안Zero TrustmTLS, RBAC종단간 암호화, 세밀한 접근 제어
Secrets ManagementVault 통합중앙집중식 비밀 관리
모니터링가시성OpenTelemetry분산 추적, 메트릭, 로깅 통합
분석Advanced Analytics실시간 API 분석, 사용량 대시보드

반드시 학습해야할 내용

카테고리주제항목설명
기초 개념API Gateway패턴 이해API Gateway 패턴의 필요성과 장단점
프록시리버스 프록시NGINX 기반 프록시 동작 원리
Kong 핵심엔티티Service, Route, ConsumerKong 의 핵심 구성 요소 이해
플러그인플러그인 아키텍처플러그인 개발 및 활용 방법
배포토폴로지Hybrid, DB-less, Traditional각 배포 모드의 특징과 선택 기준
KubernetesKIC, Helm ChartKubernetes 네이티브 배포 방법
운영모니터링메트릭, 로깅운영 환경에서의 모니터링 전략
보안인증, 인가, 암호화보안 베스트 프랙티스
고급성능 튜닝최적화 기법고성능 운영을 위한 튜닝 방법
확장성스케일링 전략대규모 환경 운영 방법

용어 정리

카테고리용어설명
아키텍처Control Plane (CP)구성 관리 및 Admin API 를 제공하는 Kong 노드
Data Plane (DP)실제 프록시 트래픽을 처리하는 Kong 노드
Hybrid ModeCP 와 DP 가 분리된 배포 모드
DB-less Mode데이터베이스 없이 메모리 기반으로 동작하는 모드
구성 요소Service업스트림 서비스를 추상화한 Kong 엔티티
Route클라이언트 요청을 매칭하는 규칙
ConsumerAPI 를 사용하는 클라이언트 식별자
PluginKong 의 기능을 확장하는 모듈
배포decK선언적 구성 관리 도구
Kong ManagerKong 의 웹 기반 관리 GUI
KonnectKong 의 SaaS 형태 매니지드 서비스
KICKong Ingress Controller
보안mTLS상호 TLS 인증
JWTJSON Web Token 기반 인증
RBAC역할 기반 접근 제어
성능Rate LimitingAPI 호출 빈도 제한
Load Balancing부하 분산
Circuit Breaker장애 전파 차단 메커니즘

참고 및 출처


Kong 은 마이크로서비스 아키텍처를 위한 클라우드 네이티브, 오픈 소스 API 게이트웨이 및 서비스 메시이다.
2015 년에 출시되어 현재 Kong Inc.에서 개발 및 유지보수하고 있으며, 많은 기업과 조직에서 API 트래픽 관리, 보안, 모니터링 등을 위한 핵심 인프라로 채택하고 있다.

Kong 은 기본적으로 두 가지 에디션으로 제공된다:

Kong 의 설계 철학은 ’ 모든 것이 API’ 라는 개념에 기반하며, 고성능, 확장성, 유연성을 핵심 가치로 삼고 있다.

Kong 의 핵심 아키텍처

Kong 은 다음과 같은 주요 구성 요소로 이루어져 있다:

코어 구성요소

Kong 게이트웨이: API 트래픽의 중앙 진입점으로, 요청 라우팅, 트랜스폼, 보안 등을 처리한다. OpenResty(Nginx + Lua) 위에 구축되어 높은 성능과 확장성을 제공한다.

데이터 스토어: Kong 의 설정, 라우트, 서비스, 플러그인 정보를 저장한다. PostgreSQL 과 Cassandra 를 지원하며, DB-less 모드도 제공한다.

Admin API: Kong 의 구성을 관리하기 위한 RESTful API 로, 라우트, 서비스, 플러그인 등을 동적으로 추가, 수정, 삭제할 수 있다.

플러그인 시스템: Kong 의 가장 강력한 특징 중 하나로, 다양한 기능을 모듈식으로 추가할 수 있게 해준다.

데이터 모델

Kong 의 주요 데이터 개체들은 다음과 같다:

서비스 (Services): 업스트림 API 나 마이크로서비스를 나타낸다. URL, 프로토콜, 호스트, 포트 등의 정보를 포함한다.

1
2
3
4
{
  "name": "user-service",
  "url": "http://user-api.internal:8080"
}

라우트 (Routes): 서비스로 들어오는 요청을 매칭하기 위한 규칙을 정의한다. 경로, 호스트, 메서드 등으로 구성된다.

1
2
3
4
5
6
{
  "name": "user-api-route",
  "paths": ["/users"],
  "methods": ["GET", "POST"],
  "service": { "id": "7fca61eb-2d6b-4a6d-8f9a-9318b413b709" }
}

소비자 (Consumers): API 를 사용하는 클라이언트나 개발자를 나타낸다. 인증 및 권한 부여에 사용된다.

1
2
3
4
{
  "username": "app-client",
  "custom_id": "consumer-123"
}

플러그인 (Plugins): 특정 서비스, 라우트, 소비자 또는 전역 수준에서 동작할 수 있는 확장 모듈이다.

1
2
3
4
5
6
7
8
9
{
  "name": "rate-limiting",
  "service": { "id": "7fca61eb-2d6b-4a6d-8f9a-9318b413b709" },
  "config": {
    "minute": 60,
    "hour": 1000,
    "policy": "local"
  }
}

트래픽 흐름

Kong 을 통과하는 API 요청의 일반적인 흐름은 다음과 같다:

  1. 클라이언트가 Kong 에 API 요청을 보낸다.
  2. Kong 은 요청을 라우트와 매칭한다.
  3. 요청 단계 플러그인 (인증, 레이트 리밋 등) 이 실행된다.
  4. 매칭된 라우트에 따라 요청이 업스트림 서비스로 전달된다.
  5. 업스트림 서비스가 응답을 반환한다.
  6. 응답 단계 플러그인 (로깅, 트랜스폼 등) 이 실행된다.
  7. 최종 응답이 클라이언트에게 전달된다.

Kong 의 핵심 기능

  1. 트래픽 제어 및 라우팅

    1. API 버전 관리: 다양한 버전의 API 를 동시에 지원하고 관리할 수 있다.
    2. 부하 분산: 여러 업스트림 인스턴스 간에 트래픽을 분산시켜 고가용성을 보장한다.
    1
    2
    3
    4
    5
    6
    7
    
    {
      "name": "user-service",
      "targets": [
        {"target": "user-api.internal:8080", "weight": 100},
        {"target": "user-api-backup.internal:8080", "weight": 50}
      ]
    }
    
    1. 서킷 브레이킹: 장애가 발생한 서비스로부터 트래픽을 격리하여 시스템 안정성을 유지한다.
    2. 트래픽 미러링: 실제 트래픽을 복제하여 새 버전의 API 를 테스트할 수 있다.
    3. 카나리 배포: 특정 비율의 트래픽만 새 버전의 API 로 라우팅하여 점진적인 롤아웃이 가능하다.
  2. 보안 기능

    1. 인증: API 키, JWT, OAuth2, LDAP, 상호 TLS 등 다양한 인증 방법을 지원한다.
    1
    2
    3
    4
    5
    6
    7
    8
    
    {
      "name": "jwt",
      "route": { "id": "e8fb37f1-5235-4c12-8e9c-06629a788593" },
      "config": {
        "secret_is_base64": true,
        "key_claim_name": "kid"
      }
    }
    
    1. CORS: Cross-Origin Resource Sharing 을 관리하여 웹 애플리케이션의 API 접근을 제어한다.
    2. IP 제한: 특정 IP 주소 또는 범위에서의 접근을 제한한다.
    3. 봇 방지: 봇 트래픽을 감지하고 제한한다.
    4. ACME: Let’s Encrypt 와 같은 서비스를 통해 자동 SSL/TLS 인증서 발급 및 갱신을 지원한다.
  3. 모니터링 및 분석

    1. 로깅: HTTP, TCP, UDP, 파일 등 다양한 대상으로 로그를 전송한다.
    2. 메트릭: Prometheus, StatsD, Datadog 등과 통합하여 성능 메트릭을 수집한다.
    3. 트레이싱: OpenTelemetry, Zipkin, Jaeger 등과 통합하여 분산 트레이싱을 지원한다.
    4. 알림: 이상 징후나 장애 상황을 감지하고 알림을 발송한다.
  4. 트랜스포메이션

    1. 요청/응답 변환: 요청이나 응답의 형식을 변환한다 (XML → JSON, JSON → JSON 등).
    2. 헤더 수정: 요청이나 응답 헤더를 추가, 수정, 삭제한다.
    3. 고급 라우팅: URL 재작성, 쿼리 파라미터 수정 등을 지원한다.
  5. 개발자 포털 (엔터프라이즈 에디션)

    1. Kong 엔터프라이즈 에디션에서는 다음과 같은 추가 기능을 제공한다:
      1. API 카탈로그: 제공되는 모든 API 의 목록과 문서를 제공합니다.
      2. 개발자 온보딩: API 키 발급, 사용량 확인 등 개발자 셀프 서비스 기능을 제공한다.
      3. API 분석: API 사용 현황, 성능, 오류 등을 분석할 수 있는 대시보드를 제공한다.

Kong 설치 및 구성

4.1 설치 방법

Kong 은 다양한 방식으로 설치할 수 있다:

Docker:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# Kong 데이터베이스 준비
docker run -d --name kong-database \
  -p 5432:5432 \
  -e "POSTGRES_USER=kong" \
  -e "POSTGRES_DB=kong" \
  -e "POSTGRES_PASSWORD=kong" \
  postgres:13

# Kong 마이그레이션
docker run --rm \
  --link kong-database:kong-database \
  -e "KONG_DATABASE=postgres" \
  -e "KONG_PG_HOST=kong-database" \
  -e "KONG_PG_USER=kong" \
  -e "KONG_PG_PASSWORD=kong" \
  kong:latest kong migrations bootstrap

# Kong 시작
docker run -d --name kong \
  --link kong-database:kong-database \
  -e "KONG_DATABASE=postgres" \
  -e "KONG_PG_HOST=kong-database" \
  -e "KONG_PG_USER=kong" \
  -e "KONG_PG_PASSWORD=kong" \
  -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
  -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
  -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
  -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
  -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \
  -p 8000:8000 \
  -p 8443:8443 \
  -p 8001:8001 \
  -p 8444:8444 \
  kong:latest

Kubernetes (Helm):

1
2
3
helm repo add kong https://charts.konghq.com
helm repo update
helm install kong kong/kong

패키지 관리자:

1
2
3
4
5
6
# Debian/Ubuntu
apt-get update
apt-get install -y kong

# CentOS/RHEL
yum install -y kong
기본 구성

Kong 의 기본 구성은 kong.conf 파일을 통해 이루어진다.

주요 설정 옵션은 다음과 같다:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 데이터베이스 설정
database = postgres         # postgres, cassandra, off
pg_host = 127.0.0.1
pg_port = 5432
pg_user = kong
pg_password = kong
pg_database = kong

# 서버 설정
proxy_listen = 0.0.0.0:8000, 0.0.0.0:8443 ssl
admin_listen = 127.0.0.1:8001, 127.0.0.1:8444 ssl

# 로그 설정
log_level = notice          # debug, info, notice, warn, error, crit
proxy_access_log = logs/access.log
proxy_error_log = logs/error.log

DB-less 모드 사용 시 선언적 구성은 YAML 로 정의할 수 있다:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
_format_version: "2.1"
services:
- name: user-service
  url: http://user-api.internal:8080
  routes:
  - name: user-api-route
    paths:
    - /users
    methods:
    - GET
    - POST
  plugins:
  - name: rate-limiting
    config:
      minute: 60
      hour: 1000
Admin API 사용

Kong 의 Admin API 를 사용하여 서비스, 라우트, 플러그인 등을 관리할 수 있다:

서비스 생성:

1
2
3
curl -i -X POST http://localhost:8001/services \
  --data name=example-service \
  --data url='http://mockbin.org'

라우트 생성:

1
2
3
curl -i -X POST http://localhost:8001/services/example-service/routes \
  --data 'paths[]=/example' \
  --data name=example-route

플러그인 추가:

1
2
3
4
curl -i -X POST http://localhost:8001/services/example-service/plugins \
  --data name=rate-limiting \
  --data config.minute=5 \
  --data config.policy=local

Kong 플러그인 시스템

Kong 의 플러그인 시스템은 핵심 기능을 확장하는 강력한 방법을 제공한다.

핵심 플러그인 카테고리

인증 및 보안:

트래픽 제어:

로깅 및 모니터링:

트랜스포메이션:

플러그인 구성 예제

레이트 리밋 설정:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
{
  "name": "rate-limiting",
  "service": { "id": "5fd1z584-1adb-40a5-c042-63b19db421d1" },
  "config": {
    "second": 5,
    "minute": 30,
    "hour": 100,
    "policy": "redis",
    "redis_host": "redis.internal",
    "redis_port": 6379,
    "redis_timeout": 2000
  }
}

JWT 인증 설정:

1
2
3
4
5
6
7
8
9
{
  "name": "jwt",
  "service": { "id": "5fd1z584-1adb-40a5-c042-63b19db421d1" },
  "config": {
    "claims_to_verify": ["exp", "nbf"],
    "key_claim_name": "kid",
    "secret_is_base64": false
  }
}

CORS 플러그인 설정:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
{
  "name": "cors",
  "service": { "id": "5fd1z584-1adb-40a5-c042-63b19db421d1" },
  "config": {
    "origins": ["https://example.com"],
    "methods": ["GET", "POST", "PUT", "DELETE"],
    "headers": ["Authorization", "Content-Type"],
    "exposed_headers": ["X-Auth-Token"],
    "credentials": true,
    "max_age": 3600
  }
}
커스텀 플러그인 개발

Kong 은 Lua 로 작성된 커스텀 플러그인을 지원한다.

기본 구조는 다음과 같다:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
-- myPlugin.lua
local plugin = {
  PRIORITY = 1000,
  VERSION = "1.0.0",
}

-- 플러그인 구성 스키마 정의
function plugin:schema()
  return {
    name = "my-plugin",
    fields = {
      { config = {
          type = "record",
          fields = {
            { some_field = { type = "string", required = true } },
          },
        },
      },
    },
  }
end

-- 요청 처리 단계
function plugin:access(conf)
  -- 요청이 들어올 때 수행할 로직
  kong.log.info("MyPlugin executing with conf: ", conf.some_field)
  
  -- 헤더 추가 예제
  kong.service.request.set_header("X-My-Header", "Hello World")
end

-- 플러그인 모듈 반환
return plugin

플러그인 등록을 위한 kong.conf 설정:

1
2
3
plugins = bundled,my-plugin

lua_package_path = /path/to/custom/plugins/?.lua;

Kong 고급 주제

하이브리드 모드

Kong 의 하이브리드 모드는 데이터 플레인 (DP) 과 컨트롤 플레인 (CP) 을 분리하여 대규모 분산 배포를 가능하게 한다:

컨트롤 플레인 설정:

1
2
3
role = control_plane
cluster_cert = /path/to/cluster.crt
cluster_cert_key = /path/to/cluster.key

데이터 플레인 설정:

1
2
3
4
role = data_plane
cluster_cert = /path/to/cluster.crt
cluster_cert_key = /path/to/cluster.key
cluster_control_plane = control-plane.example.com:8005
멀티 테넌시

Kong Enterprise 에서는 워크스페이스 (Workspace) 를 통해 멀티 테넌시를 지원한다:

1
2
3
4
5
6
7
8
# 워크스페이스 생성
curl -X POST http://localhost:8001/workspaces \
  --data name=team-finance

# 워크스페이스별 서비스 생성
curl -X POST http://localhost:8001/team-finance/services \
  --data name=billing-api \
  --data url=http://billing.internal:8080
서비스 메시 통합

Kong Mesh 는 Kong 과 함께 작동하는 서비스 메시 솔루션으로, 다음과 같은 기능을 제공한다:

고가용성 설정

프로덕션 환경에서 Kong 의 고가용성을 보장하기 위한 설정:

선택 시 고려 사항

API 게이트웨이 선택 시 고려해야 할 주요 요소:

  1. 성능 요구 사항:

    • 초당 처리해야 할 요청 수
    • 응답 시간 요구 사항
    • 리소스 사용량 (메모리, CPU)
  2. 배포 환경:

    • 온프레미스 vs 클라우드
    • 컨테이너 오케스트레이션 (Kubernetes 등) 과의 통합
    • 멀티 클라우드/하이브리드 클라우드 요구 사항
  3. 기능 요구 사항:

    • 인증 및 권한 부여 메커니즘
    • 트래픽 관리 기능
    • 모니터링 및 로깅 필요성
    • 개발자 포털 요구 사항
  4. 비용 및 라이선스:

    • 오픈 소스 vs 상용 솔루션
    • 지원 서비스 필요성
    • 총 소유 비용 (TCO) 분석

실제 사용 사례 및 성공 사례

기업 사례 연구
  1. 글로벌 금융 서비스 회사:

    • 과제: 레거시 시스템과 마이크로서비스 간의 통합
    • 솔루션: Kong 을 통해 통합 레이어 구축, JWT 인증, 레이트 리밋 구현
    • 결과: API 호출 지연 시간 50% 감소, 개발자 생산성 향상
  2. 전자 상거래 플랫폼:

    • 과제: 확장 가능한 API 인프라 구축, 제 3 자 통합 지원
    • 솔루션: Kong 의 플러그인 시스템을 활용한 맞춤형 인증 및 로깅 솔루션
    • 결과: API 온보딩 시간 75% 단축, 시스템 안정성 향상
  3. 의료 정보 서비스:

    • 과제: 규정 준수 (HIPAA) 및 보안 강화
    • 솔루션: Kong 의 보안 플러그인과 세분화된 접근 제어로 규정 준수 보장
    • 결과: 보안 감사 간소화, 규정 위반 위험 감소
Kong 배포 모범 사례
  1. 인프라 설계:

    • 프로덕션 환경에서는 최소 3 개의 Kong 인스턴스 배포
    • 데이터베이스 클러스터링 및 백업 전략 구현
    • 블루/그린 배포 전략으로 무중단 업데이트
  2. 보안 강화:

    • Kong Admin API 에 대한 접근 제한
    • 민감한 데이터 암호화
    • 정기적인 보안 감사 및 취약점 스캔
  3. 모니터링 및 로깅:

    • 핵심 메트릭 모니터링: 응답 시간, 오류율, 요청 볼륨
    • 중앙 집중식 로깅 솔루션 구현
    • 알림 시스템 설정
  4. 성능 최적화:

    • 적절한 캐싱 전략 구현
    • 불필요한 플러그인 비활성화
    • 하드웨어 리소스 적절히 할당

용어 정리

용어설명

참고 및 출처