본문으로 건너뛰기

Architectures

APIM 배포 in DEV/STG/PRD 환경

이 아키텍처에서 APIM 플랫폼은 Kubernetes 클러스터에 배포되며, 네임스페이스와 역할에 따라 분리됩니다. 이 시스템은 개발, 스테이징 및 프로덕션과 같은 여러 환경에서 독립적으로 실행되도록 설계되었습니다.

인그레스 레이어 및 외부/내부 라우팅

최상위 레이어에서 시스템은 두 개의 로드 밸런서(LB)를 사용합니다:

내부 LB (관리자 접근) - 다음에 대한 접근을 제공합니다:

  • APIM 콘솔 (apim-admin.company.com)
  • IAM 콘솔 (tenant-admin.company.com)
  • 관리자용 개발자 포털 (developers-admin.company.com)
  • 인증 콘솔 (auth-admin.company.com)

인터넷-facing LB (사용자 접근) - 외부 접근을 제공합니다:

  • 오픈 API 서비스 (api.company.com)
  • 공개 개발자 포털 (developers.company.com)

트래픽은 중앙 집중식 인그레스 컨트롤러를 통해 라우팅되며, 여기서 TLS 종료가 발생하고, 트래픽은 도메인 경로에 따라 내부 서비스로 HTTP를 통해 전달됩니다.

노드 그룹: 관리

이 그룹은 테넌트, 프로젝트, 게이트웨이, API 및 정책을 관리하는 데 필요한 모든 핵심 구성 요소를 호스팅합니다.

주요 네임스페이스:

namespace: apim

핵심 구성 요소:

구성 요소설명
테넌트 관리자 (IAM)시스템 사용자 및 테넌트 조직에 대한 신원 및 접근 관리 처리
테넌트 관리자 콘솔테넌트 관리자를 위한 UI 프론트엔드 (Vue.js로 구축)
API 관리 콘솔 BFFUI와 서비스 상호작용을 조정하는 백엔드-프론트엔드 (Vue.js & Node.js)
게이트웨이 관리자게이트웨이 프로비저닝 및 프로젝트와의 연관 제어
정책 관리자IP 필터링, 인증, 로깅과 같은 인바운드/아웃바운드 정책 정의 관리
개발자 포털 (프론트엔드 & 백엔드)API 사용자가 게시된 API를 탐색하고 테스트할 수 있는 인터페이스
분석 관리자실시간 API 사용 분석 및 보고 처리 (FluentBit와 연결)

지속적인 데이터베이스:

  • 테넌트 관리자 DB (PostgreSQL)
  • APIM DB 마스터/슬레이브 (MariaDB)
  • 데이터 내구성과 중복성을 위한 PVC 구성.

노드 그룹: 사용자-노드-그룹

이 그룹은 런타임 API 트래픽을 실행하고 사용자 API 호출을 백엔드 마이크로서비스로 라우팅합니다.

네임스페이스:

namespace: user-namespace

구성 요소:

구성 요소설명
API 게이트웨이인그레스 API 요청을 처리하는 Kong 기반 게이트웨이
API 게이트웨이 DB런타임 게이트웨이 구성 및 상태를 위한 PostgreSQL 저장소
인메모리 DB (마스터/슬레이브)토큰/세션 저장소에 사용 (아마도 Redis 또는 유사한 것)
마이크로서비스라우팅된 API 트래픽을 수신하는 실제 백엔드 서비스

API 게이트웨이는 외부 사용자로부터 요청을 수신하고 다음을 수행합니다:

  • 정책 실행 (인증, IP 필터링 등)
  • 적절한 마이크로서비스로 라우팅
  • 인그레스를 통해 응답 반환

노드 그룹: 모니터링

구성 요소설명
로깅 시스템Elasticsearch 기반으로, 구조화된 API 로그 수집에 사용
모니터링 시스템Prometheus 기반으로, 시스템 건강 및 경고를 위한 메트릭 수집

로깅 및 모니터링 구성 요소는 FluentBit 및 API 게이트웨이 로그와 통합되어 다음을 가능하게 합니다:

  • 실시간 API 트래픽 통찰
  • 사용자 정의 메트릭 시각화
  • Slack/이메일 채널을 통한 경고

시스템 통신 흐름

  1. 관리자는 인그레스 컨트롤러를 통해 내부 도메인으로 시스템에 접근합니다.
  2. 사용자는 외부 도메인을 통해 오픈 API 및 개발자 포털을 호출하며, 이는 Kong 게이트웨이로 라우팅됩니다.
  3. Kong은 API 정책(인바운드/아웃바운드)을 시행하고 해당 마이크로서비스로 라우팅합니다.
  4. 모든 구성 요소의 로그 및 메트릭은 모니터링 및 로깅 스택으로 스트리밍됩니다.

클라우드 및 제3자 서비스와 통합된 APIM 배포

이 아키텍처는 APIM 시스템이 AWS와 같은 외부 인프라 및 CloudWatch, Datadog 또는 Firehose와 같은 로깅/모니터링 서비스와 통합되는 방법을 보여줍니다.

How It Works:
  • 외부 사용자는 공용 도메인을 통해 시스템에 접근하며, 이는 AWS API Gateway를 통해 VPC 링크를 통해 내부 APIM 게이트웨이로 라우팅됩니다.
  • 개인 도메인과 Route53은 요청을 내부적으로 APIM 서비스가 위치한 Kubernetes 클러스터로 라우팅하는 데 사용됩니다.
  • 요청이 Kong 게이트웨이에 도달하면 인바운드 정책이 시행되고(인증, 헤더 주입 등), 이후 트래픽이 백엔드 서비스로 라우팅됩니다.
  • 응답은 아웃바운드 정책(예: 데이터 마스킹, 로깅)을 통과하여 클라이언트에게 반환됩니다.
  • 모든 요청/응답 로그 및 메트릭은 통합된 익스포터를 통해 CloudWatch, Datadog 또는 Firehose로 전달됩니다.
  • Swagger 기반의 사양 등록은 Dev Portal을 통해 API를 동적으로 노출하거나 업데이트하는 데 사용됩니다.

이 아키텍처는 조직 경계를 넘어 안전하고 확장 가능하며 관찰 가능한 API 관리를 지원합니다. API 거버넌스를 보장하면서 클라우드 네이티브 서비스로의 원활한 확장을 허용합니다.

개발 환경을 위한 내부 배포

이 버전은 개발 용도로 APIM 플랫폼의 내부 전용 설정을 반영합니다. API 테스트 또는 서비스 개발 중 보안 및 폐쇄 접근을 강조합니다.

How It Works:
  • 모든 트래픽은 내부적으로 흐르며, 개인 DNS 및 ALB를 통해 클러스터로 들어갑니다.
  • 내부 개발자는 미리 정의된 내부 서브도메인을 통해 APIM 콘솔, 개발자 포털 및 IAM에 접근합니다.
  • 개발 프론트엔드 애플리케이션의 API 트래픽은 Kong 게이트웨이로 전송되며, 여기서 모든 구성된 정책이 적용됩니다.
  • 백엔드 마이크로서비스(bo 네임스페이스에 호스팅됨)는 게이트웨이를 통해 라우팅된 요청에 응답합니다.
  • 전체 스택은 유지 관리 및 역할 분리를 위해 네임스페이스로 분리됩니다:
    • apim는 구성 및 제어 논리를 포함합니다.
    • microservices는 런타임 서비스 및 비즈니스 로직을 포함합니다.

이 아키텍처는 공용 네트워크에 노출되지 않고 안전한 API 개발 및 테스트를 허용합니다. 서비스 검증, 정책 적용 및 스테이징 또는 프로덕션 롤아웃 전에 접근 제어를 확인하는 데 최적입니다.

개발 전용 내부 흐름 모델

이 아키텍처는 개발 환경 내에서의 내부 트래픽 흐름을 자세히 설명하며, 네트워크 경계 및 격리에 중점을 둡니다.

How It Works:
  • 내부 애플리케이션 및 개발자는 개인 도메인 및 NLB/ALB 라우팅을 통해 APIM 콘솔 또는 개발자 포털과 상호작용합니다.
  • 프론트엔드에서의 요청은 Kong 게이트웨이로 라우팅되며, 여기서 인증, 속도 제한 및 변환과 같은 런타임 정책이 시행됩니다.
  • 게이트웨이는 동일한 클러스터에 호스팅된 백엔드 마이크로서비스로 요청을 라우팅하거나 서비스 메쉬를 통해 라우팅합니다(해당되는 경우).
  • API 사용, 로그 및 트래픽 통계는 Datadog과 같은 내부 관찰 도구로 전송되어 개발 작업 중 가시성을 보장합니다.
  • 이 환경에는 공용 접근 지점이 없으며, API 게이트웨이를 포함한 모든 구성 요소는 엄격히 내부적입니다.

이 설정은 API 개발 및 테스트를 위한 안전하고 격리된 파이프라인을 보장하며, 전체 모니터링 및 거버넌스 기능을 유지합니다. 개발 팀이 외부 노출 없이 프로덕션과 유사한 API 동작을 시뮬레이션할 수 있도록 합니다.

구성 요소 설명 및 리소스

이 표는 APIM 제어 평면의 각 구성 요소에 할당된 CPU, 메모리 및 저장소 리소스를 요약합니다. 이는 인프라 및 DevOps 팀이 Kubernetes 클러스터를 정확하고 효율적으로 계획하고 프로비저닝하는 데 도움이 됩니다.

InstanceDescriptionkindReplicasCPU (m)CPU Total (m)Memory (Mi)Memory Total (Mi)Storage (GB)Storage Total (GB)
deploy-apim-analysis-manager분석 관리자배포10.50.51024102400
deploy-apim-bffAPIM 콘솔 BFF배포10.50.551251200
deploy-apim-gateway-manager게이트웨이 관리자배포10.50.576876800
deploy-apim-tenant-manager테넌트 관리자 (IAM)배포10.50.576876800
deploy-apim-tenant-manager-console테넌트 관리자 콘솔배포10.20.251251200
deploy-apim-policy-manager정책 관리자배포10.20.251251200
deploy-apim-developer-portal-backend개발자 포털 백엔드배포10.20.25125122020
deploy-apim-developer-portal-frontend개발자 포털 프론트엔드배포10.20.2646400
deploy-apim-mariadb-masterAPIM DB (MariaDB 마스터)StatefulSet10.50.55125121010
deploy-apim-mariadb-slaveAPIM DB (MariaDB 슬레이브)StatefulSet10.20.225625600
statefulset-apim-tenant-manager-postgresqlIAM DB (PostgreSQL)StatefulSet10.50.52562561010
총합4576040
Total Control Plane Resources:
  • CPU: 4 코어
  • 메모리: 6 GiB
  • 스토리지: 40 GB

Notes:

  • CPU/메모리는 복제 스케일링 정책에 따라 증가합니다.
  • 로깅/모니터링 스토리지는 트래픽 양에 따라 스케일됩니다.
  • 하나의 공용 및 하나의 사설 APIM 배포가 지원됩니다.