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 관리 콘솔 BFF | UI와 서비스 상호작용을 조정하는 백엔드-프론트엔드 (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/이메일 채널을 통한 경고
시스템 통신 흐름
- 관리자는 인그레스 컨트롤러를 통해 내부 도메인으로 시스템에 접근합니다.
- 사용자는 외부 도메인을 통해 오픈 API 및 개발자 포털을 호출하며, 이는 Kong 게이트웨이로 라우팅됩니다.
- Kong은 API 정책(인바운드/아웃바운드)을 시행하고 해당 마이크로서비스로 라우팅합니다.
- 모든 구성 요소의 로그 및 메트릭은 모니터링 및 로깅 스택으로 스트리밍됩니다.
클라우드 및 제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 클러스터를 정확하고 효율적으로 계획하고 프로비저닝하는 데 도움이 됩니다.
Instance | Description | kind | Replicas | CPU (m) | CPU Total (m) | Memory (Mi) | Memory Total (Mi) | Storage (GB) | Storage Total (GB) |
---|---|---|---|---|---|---|---|---|---|
deploy-apim-analysis-manager | 분석 관리자 | 배포 | 1 | 0.5 | 0.5 | 1024 | 1024 | 0 | 0 |
deploy-apim-bff | APIM 콘솔 BFF | 배포 | 1 | 0.5 | 0.5 | 512 | 512 | 0 | 0 |
deploy-apim-gateway-manager | 게이트웨이 관리자 | 배포 | 1 | 0.5 | 0.5 | 768 | 768 | 0 | 0 |
deploy-apim-tenant-manager | 테넌트 관리자 (IAM) | 배포 | 1 | 0.5 | 0.5 | 768 | 768 | 0 | 0 |
deploy-apim-tenant-manager-console | 테넌트 관리자 콘솔 | 배포 | 1 | 0.2 | 0.2 | 512 | 512 | 0 | 0 |
deploy-apim-policy-manager | 정책 관리자 | 배포 | 1 | 0.2 | 0.2 | 512 | 512 | 0 | 0 |
deploy-apim-developer-portal-backend | 개발자 포털 백엔드 | 배포 | 1 | 0.2 | 0.2 | 512 | 512 | 20 | 20 |
deploy-apim-developer-portal-frontend | 개발자 포털 프론트엔드 | 배포 | 1 | 0.2 | 0.2 | 64 | 64 | 0 | 0 |
deploy-apim-mariadb-master | APIM DB (MariaDB 마스터) | StatefulSet | 1 | 0.5 | 0.5 | 512 | 512 | 10 | 10 |
deploy-apim-mariadb-slave | APIM DB (MariaDB 슬레이브) | StatefulSet | 1 | 0.2 | 0.2 | 256 | 256 | 0 | 0 |
statefulset-apim-tenant-manager-postgresql | IAM DB (PostgreSQL) | StatefulSet | 1 | 0.5 | 0.5 | 256 | 256 | 10 | 10 |
총합 | 4 | 5760 | 40 |
- CPU: 4 코어
- 메모리: 6 GiB
- 스토리지: 40 GB
Notes:
- CPU/메모리는 복제 스케일링 정책에 따라 증가합니다.
- 로깅/모니터링 스토리지는 트래픽 양에 따라 스케일됩니다.
- 하나의 공용 및 하나의 사설 APIM 배포가 지원됩니다.