API Gateway - 콩(Kong)이란?
Kong 공식 홈페이지를 보면, Kong은 하이브리드(hybrid) 및 멀티 클라우드(multi-cloud) 용으로 구축되었으며, 마이크로서비스 및 분산 아키텍처에 최적화된 API Gateway라고 한다.
그리고 가장 많이 사용되는 API Gateway 이다.
API Gatewau 에 대한 내용은 아래 참고 포스팅 참고 바란다.
Kong 의 공식 사이트는 아래이다.
https://konghq.com/products/kong-gateway
- Kong은 Nginx + Cassandra + Lua Script 기반임
- Kong은 밀리 초 미만의 처리 대기 시간 지원 및 높은 처리량, 고성능을 자랑함
- Kong은 플러그인 SDK를 사용하여 Lua 또는 GoLang에서 확장성을 자랑함
- Kong은 플러그인을 통해 로드밸런싱, 로깅, 인증, 속도 제한, 변환 등을 제공함
- Kong은 모든 플랫폼, 모든 클라우드에서 실행이 가능하고 Kubernetes를 기본적으로 지원함
- Kong은 스타트업과 Global 5,000개의 회사 및 정부 기관의 제품에 널리 사용됨
이외에도 가장 큰 특징은, 모든 기능을 Restful Interface로 제공하고 있으며, API Gateway를 구성하는 필수 기능들, 예를 들면 OAuth 인증, Logging, 유량제어 등을 플러그인 기반으로 손쉽게 추가하여 사용할 수 있으며, 특정 플랫폼에 종속되지 않고 어디서든지 Kong을 구축할 수 있다.
Kong의 특징 및 주요 개념
▶ 클라우드 네이티브
플랫폼에 구애받지 않는 Kong은 베어 메탈에서 컨테이너에 이르기까지 모든 플랫폼에서 실행할 수 있으며 모든 클라우드에서 기본적으로 실행할 수 있습니다.
▶ Kubernetes-Native
공식 Ingress Controller를 사용하여 모든 L4 + L7 트래픽을 라우팅하고 연결하는 네이티브 Kubernetes CRD로 Kong을 선언적으로 구성합니다.
▶ 동적 부하 분산
여러 업스트림 서비스에서 트래픽 부하를 분산합니다.
▶ 해시 기반 부하 분산
일관된 해싱 / 고정 세션으로 부하 분산.
▶ Circuit-Breaker
비정상 업스트림 서비스를 지능적으로 추적합니다.
▶ 상태 확인
업스트림 서비스의 능동 및 수동 모니터링.
▶ 서비스 검색
Consul과 같은 타사 DNS 확인자에서 SRV 레코드를 확인합니다.
▶ 서버리스
Kong에서 직접 AWS Lambda 또는 OpenWhisk 함수를 호출하고 보호합니다.
▶ WebSockets
WebSocket을 통해 업스트림 서비스와 통신합니다.
▶ gRPC
gRPC 서비스와 통신하고 로깅 및 관찰 플러그인으로 트래픽을 관찰합니다.
▶ 로깅
HTTP, TCP, UDP 또는 디스크를 통해 시스템에 대한 요청 및 응답을 기록합니다. 그리고 시스템 로그도 기록합니다.
▶ 보안
ACL, 봇 감지, IP 허용 / 거부 등 ...
▶ SSL
기본 서비스 또는 API에 대한 특정 SSL 인증서를 설정합니다.
▶ 모니터링
실시간 모니터링은 주요로드 및 성능 서버 메트릭을 제공합니다.
▶ 전달 프록시
Kong이 중간 투명 HTTP 프록시에 연결되도록합니다.
▶ 인증
HMAC, JWT, Basic 등... API에 OAuth2.0 인증을 쉽게 추가합니다.
▶ 속도 제한
많은 변수를 기반으로 요청을 차단하고 제한합니다.
▶ 변환
HTTP 요청 및 응답을 추가, 제거 또는 조작합니다.
▶ 캐싱
프록시 계층에서 응답을 캐시하고 제공합니다.
▶ CLI
명령 줄에서 Kong 클러스터를 제어합니다.
▶ REST API
Kong은 최대한의 유연성을 위해 RESTful API로 작동 할 수 있습니다.
▶ 지역 복제
구성은 항상 여러 지역에서 최신 상태로 유지됩니다.
▶ 실패 감지 및 복구
Cassandra 노드 중 하나가 다운 되더라도 Kong은 영향을받지 않습니다.
▶ 클러스터링
모든 Kong 노드는 클러스터에 자동 가입하여 노드 전체에서 구성을 업데이트합니다.
▶ 확장성
본질적으로 분산 된 Kong은 단순히 노드를 추가하여 수평 적으로 확장됩니다.
▶ 성능
Kong은 핵심에서 NGINX를 확장하고 사용하여로드를 쉽게 처리합니다.
▶ 플러그인
Kong 및 API에 기능을 추가하기위한 확장 가능한 아키텍처입니다.
참고 포스팅
https://thenicesj.tistory.com/266
'IT > Knowledge' 카테고리의 다른 글
Bastion Host(배스천 호스트) (14) | 2024.03.09 |
---|---|
'Service Mesh' VS 'API Gateway' (20) | 2024.03.08 |
ESB란?(Enterprise Service Bus) (19) | 2024.03.06 |
[K8S] namespace, pod 설명 (25) | 2024.03.02 |
컨테이너 런타임 이란?(kubernetes 등장 배경) (15) | 2024.03.01 |
댓글