Search

개념

Kong Gateway란?

Kong Gateway는 현대의 마이크로서비스 아키텍처에서 API관리를 쉽게 해주는 오픈소스 API Gateway입니다. 이는 API호출의 라우팅, 인증, 속도 제한, 로깅, 변환 등의 기능을 제공하여 API 관리를 단순화하고 서능을 최적화합니다.
Kong Gateway는 Kong Inc.에서 개발한 오픈소스 API 관리 솔루션입니다. 이 게이트웨이는 현대의 마이크로서비스 아키텍처에서 API를 효과적으로 관리하고 최적화하는 데 중점을 둡니다. 기본적으로 Kong Gateway는 API 요청을 적절한 서비스로 라우팅하고, 보안 인증을 수행하며, 트래픽을 조절하고, 요청과 응답을 변환하는 등의 다양한 기능을 제공합니다.
결론적으로, Kong Gateway는 API 관리의 복잡성을 줄이고 성능을 최적화하는 데 필요한 모든 도구를 제공하는 강력한 솔루션입니다. 이를 통해 개발팀은 핵심 비즈니스 로직에 더욱 집중할 수 있으며, 안정적이고 효율적인 API 서비스를 제공할 수 있습니다.

Kong Gateway의 주요 기능

라우팅

Kong Gateway의 라우팅 기능은 API 요청을 적절한 서비스로 전달하는 역할을 합니다.
이는 클라이언트로부터 들어오는 다양한 요청을 특정 마이크로서비스로 정확히 전달하여, 분산된 서비스 간의 통신을 원활하게 만듭니다. Kong Gateway는 URL 경로, 요청 메서드, 헤더, 쿼리 매개변수 등을 기반으로 요청을 라우팅할 수 있어 매우 유연한 라우팅 정책을 수립할 수 있습니다.
또한 Kong API Gateway는 로드밸런싱을 통해 여러 서비스 인스턴스 간의 트래픽을 효율적으로 분산시킬 수 있습니다. Kong Gateway의 라우팅 기능은 API 관리의 기본적인 요소로, 다양한 조건과 규칙을 설정하여 API 요청을 효율적으로 처리하고 분산된 서비스 간의 통신을 최적화하는 데 중요한 역할을 합니다.
이를 통해 API 서비스의 안정성과 성능을 크게 향상시킬 수 있습니다.

인증 및 권한 부여

Kong Gateway의 인증 및 권한 부여 기능은 API 호출의 보안을 강화하는 중요한 역할을 합니다.
이 기능을 통해 클라이언트가 API에 접근하기 전에 인증 절차를 거치도록 하고 적절한 권한을 가진 사용자만 특정 API에 접근할 수 있도록 제어합니다. Kong Gateway는
OAtuh2
OAuth2는 Kong Gateway에서 널리 사용되는 인증 프로토콜 중 하나입니다. OAtuh2를 사용하면 클라이언트 애플리케이션이 리소스 소유자의 자원에 접근하기 위해 액세스 토큰을 발급받을 수 있습니다. 이 과정에서 리소스 소유자는 자신의 자격증명을 클라이언트 애플리케이션과 공유하지 않고도 권한을 부여할 수 있습니다. Kong Gateway는 OAuth2 플러그인을 통해 클라이언트 인증, 토큰 발급 및 검증을 처리합니다.
JWT
JWT는 가볍고 독립적인 인증 토큰을 사용하여 API 요청을 검증하는 방식입니다. JWT 토큰은 클라이언트와 서버 간에 안전하게 정보를 전달하기 위해 사용되며, 클라이언트는 JWT 토큰을 헤더에 포함하여 API 요청을 보냅니다. Kong Gateway는 JWT 플러그인을 통해 이러한 토큰을 검증하고, 유효한 토큰을 가진 요청만을 처리합니다.
이는 서버의 상태를 유지하지 않기 때문에 확장성과 성능 측면에서 매우 유리합니다.
기본 인증
기본 인증은 가장 간단한 형태의 HTTP 인증 방식으로, 클라이언트는 사용자 이름과 비밀번호를 Base64 인코딩하여 서버에 전달합니다. Kong Gateway는 기본 인증 플러그인을 통해 이러한 자격 증명을 검증하고, 유효한 자격 증명을 가진 요청만을 허용합니다. 이 방식은 간단하지만, 사용자 이름과 비밀번호가 노출될 위험이 있기 때문에 HTTPS와 함께 사용해야 합니다.

Rate Limit

Kong Gateway의 Rate Limit 기능은 API 요청의 빈도를 제어하여 서비스의 안정성과 성능을 유지하는데 중요한 역할을 합니다. Rate Limit을 통해 특정 시간 내에 허용되는 요청 수를 제한함으로써, 과도한 트래픽이 API 서버에 과부하를 주는것을 방지 할 수 있습니다. 이 기능은 API 남용을 방지하고, 자원을 공정하게 분배하며, 서비스의 품질을 유지하는데 유용합니다.

Logging & Monitoring

Kong Gateway의 로깅 및 모니터링 기능은 API 호출에 대한 상세한 정보를 수집하고 분석하여, 서비스의 성능과 상태를 지속적으로 파악할 수 있게 해줍니다. 이 기능을 통해 개발자는 API의 사용 현황을 실시간으로 모니터링하고, 잠재적인 문제를 신속하게 감지하고 해결 할 수 있습니다.

Load Balancing

Kong Gateway의 로드 밸런싱 기능은 여러 서비스 인스턴스 간에 트래픽을 효율적으로 분산시켜 서비스의 가용성과 성능을 유지하는데 중요한 역할을 합니다. 로드 밸런싱을 통해 특정 인스턴스에 과부하가 걸리는 것을 방지하고, 모든 인스턴스에 고르게 트래픽을 분배함으로써 시스템의 안정성을 높일 수 있습니다.
Kong Gateway는 다양한 로드 밸런싱 전략을 지원합니다.
대표적인 전략으로는 라운드 로빈(Round Robin), 최소 연결(Least Connections), 해시 기반(Hash-based) 로드 밸런싱 등이 있습니다.
라운드 로빈
요청을 순차적으로 각 인스턴스에 분배하는 방식입니다. 이 방식은 가장 간단하며, 모든 인스턴스가 균등하게 트래픽을 처리하도록 보장합니다.
최소 연결
현재 연결 수가 가장 적은 인스턴스에 요청을 보내는 방식입니다. 이 방식은 인스턴스 간의 부하를 동적으로 분배하여, 특정 인스턴스에 과도한 트래픽이 몰리는 것을 방지합니다.
해시 기반
특정 요청 속성(예: 클라이언트 IP, 요청 경로 등)을 기반으로 해시 값을 계산하여 인스턴스를 선택하는 방식입니다. 이 방식은 같은 클라이언트가 항상 같은 인스턴스로 라우팅되도록 하여, 세션 지속성(Session Persistence)을 보장할 수 있습니다.

Kong Gateway 의 장점

Kong Gateway는 API 관리 및 마이크로서비스 아키텍처에서 강력한 솔루션을 제공하며, 여러 가지 장점을 가지고 있습니다. 이러한 장점은 Kong Gateway를 많은 개발자와 기업이 선택하는 주요 이유입니다.
확장성
Kong Gateway는 높은 확장성을 자랑합니다. 플러그인 시스템을 통해 기본 기능을 확장할 수 있으며, 사용자 정의 플러그인을 작성하여 고유한 요구 사항을 충족할 수 있습니다.
성능
Kong Gateway는 고성능을 제공하여 대규모 트래픽을 효율적으로 처리할 수 있습니다. 이는 NGINX 기반의 강력한 프록시 엔진을 사용하기 때문입니다.
유연성
Kong Gateway는 다양한 배포 환경에서 유연하게 사용할 수 있습니다. 온프레미스, 클라우드(예: AWS, GCP, Azure), 하이브리드 환경 등 어디에서나 쉽게 배포할 수 있습니다. Docker, Kubernetes와 같은 컨테이너 오케스트레이션 도구와의 통합도 원활하여, 현대적인 클라우드 네이티브 애플리케이션 환경에 적합합니다. 또한, RESTful Admin API를 통해 관리와 설정이 매우 편리합니다.