CNAP을 활용하여 인증, API 게이트웨이, 서비스 메쉬, 워크플로우 등 핵심 마이크로서비스 요소들을 통합하고, 클라우드 자원 생성을 자동화하는 Cloud Orchestration Platform을 데모로 구축하였습니다. 이 플랫폼은 여러 클라우드 서비스에서 가상 자원을 일괄적으로 자동 생성할 수 있도록 설계되었으며, 여기서는 AWS의 VPC 자원 생성 자동화 기능을 제공합니다.
AWS VPC 네트워크 구성 자동화
VPC CIDR과 Project(Region, Access Key/Secret Key)를 가지고 VPC 생성 요청을 하면 워크플로우 기반으로 VPC 네트워크가 자동으로 생성됩니다. 전체 VPC 자원 생성은 VPC → Subnet → Internet gateway → Nat gateway → Routing Table 순서로 진행된다.

CNAP 기반 MSA Architecture
사용자는 Keycloak을 통한 인증을 거쳐 React 기반의 콘솔에서 자원 생성을 요청하며, 이 요청은 Kong Gateway와 Istio Service Mesh를 거쳐 다양한 마이크로서비스로 전달됩니다.

- Orchestrator: 클라우드 자원 생성 요청을 중앙에서 조율
- Project 서비스: 프로젝트, 리전, Access Key / Secret Key 등 계정 및 환경 정보 관리
- VPC 서비스: VPC, Subnet, Gateway, Route 등의 네트워크 자원을 생성
- VPC Worker: 정의된 Workflow를 기반으로 VPC 자원을 자동화하여 생성
- Notification 서비스: 자원 생성 결과를 사용자에게 통보
프론트엔드 구성
React 콘솔, Keycloak 인증, API Gateway, 마이크로서비스 기반 자원 생성 워크플로우가 통합된 데모 환경으로, CNAP 위에서 MSA 구성 요소들이 실제 업무 시나리오 속에서 결합되어 동작하는지를 직관적으로 보여줍니다.
클라우드 자원 생성 Console UI
자원 생성 콘솔은 로그인부터 자원 생성 요청, 결과 조회까지 한 화면에서 처리할 수 있는 통합 UI를 제공합니다. 사용자는 직관적인 인터페이스를 통해 자원을 손쉽게 관리할 수 있으며, 실시간으로 워크플로우 상태를 추적하여 진행 상황을 한눈에 파악할 수 있습니다.

React 기반의 UI 아키텍처 구성
Console UI는 Keycloak과 연계하여 인증 및 권한을 처리하며, Nginx를 통해 다양한 백엔드 API 호출 시 발생할 수 있는 CORS 문제를 해결합니다. 모든 Backend API 호출은 Kong API Gateway를 경유하여, 보안성과 안정성을 함께 확보합니다.

백엔드 구성
마이크로서비스 백엔드는 Spring Boot와 Python Flask를 사용하여 개발되었습니다. 서로 다른 언어를 사용하는 프레임워크 위에서 Layered Architecture와 애플리케이션을 개발에 요구되는 공통 영역을 동일한 구조로 제공하여 일관성 있게 신속한 마이크로서비스 개발을 지원합니다.
Spring Boot 기반 엔터프라이즈급 백엔드 구조
Spring Boot 위에서 계층형 아키텍처 적용을 통해 명확한 책임 분리와 구조적 일관성을 유지하며, 복잡한 서비스 요구사항에 유연하게 대응합니다. Project, Orchestrator, Notification 서비스는 RabbitMQ, Conductor, MailHog, Jaeger 등 클라우드 네이티브 컴포넌트와 연동되어, 확장성과 안정성이 뛰어난 마이크로서비스로 구현되었습니다.

Python Flask 기반 경량 백엔드 구조
Flask 기반 구조에 공통 기능 처리를 위한 Middleware와 Singleton Service를 결합하고, 계층형 아키텍처를 적용하여 빠르고 유연한 서비스 구성이 가능합니다. VPC 서비스는 SQLAlchemy, Jaeger, RabbitMQ, AWX Proxy 등 클라우드 네이티브 컴포넌트와 연동되어, 경량이면서도 견고한 마이크로서비스로 구현되었습니다.

API Gateway 구성
Kong Gateway는 마이크로서비스 API 호출에 OpenTelemetry, OIDC, CORS, Key Authentication 등의 플러그인을 적용하여 관찰성 확보, 인증 처리, 보안 정책 등의 기능을 일관되게 적용합니다.

Kong Gateway는 마이크로서비스 아키텍처에서 API 트래픽을 효과적으로 관리하고 보호하는 고성능 API 게이트웨이입니다. 플러그인 기반 구조를 통해 인증, 로깅, 관찰성 기능을 손쉽게 확장할 수 있어 유연한 API 제어가 가능합니다. CNAP에서는 Kong 오픈소스에 OIDC 플러그인을 제공하기 위해 lua-resty-openidc 최신 버전(v1.8.0)을 적용했으며, 세션 상태 관리를 위해 Redis와 연동하여 구성하였습니다.
워크플로우 기반 자원 생성 자동화
Conductor OSS 를 사용하여 VPC 생성 과정을 단계별로 자동 실행하고, 실시간으로 추적할 수 있도 워크플로우를 설계하였습니다. 이 워크플로우 기반으로 VPC Worker는 VPC, Subnet, Gateway, Route Tabl 자원 생성 작업이 순차 혹은 병렬로 처리되며, 각 작업의 실행 상태는 다이어그램과 목록 형태로 시각화되어, 전체 진행 상황을 한눈에 파악할 수 있습니다.

Conductor OSS는 대규모의 작업을 효율적으로 처리할 수 있는 확장형 아키텍처를 채택하고 있는 오픈소스 Workflow Orchestration Engine입니다. 마이크로서비스 간의 복잡한 작업 흐름을 순차처리, 병렬처리, 루프, 분기 등을 사용하여 Workflow로 설계하고 실행할 수 있어 애플리케이션 운영 효율성과 확장성을 크게 향상시킵니다.
사용자 인증 및 권한관리
Keycloak 기반의 통합 인증 시스템을 통해 Cloud Native Application Platform 전반에 걸친 인증과 접근 제어를 안전하고 일관되게 제공합니다. 이 데모에서는 React 콘솔, API Gateway, 마이크로서비스에 대해 OpenID Connect 방식으로 연동하여 SSO 인증, 역할 기반 권한 제어(RBAC) 관리 기능을 제공합니다.

CNAP에 포함된 Keycloak은 REST 기반으로 외부 시스템과 연계하여 사용자 관리와 패스워드 관리, OTP와 Email 기반 2차 인증, 다국어지원, UI Customization 기능을 제공합니다.
서비스 간 비동기 이벤트 처리
RabbitMQ 기반 메시징 시스템을 통해 VPC 처리현황과 결과를 마이크로서비스 간에 비동기 이벤트로 전달하며, 서비스 간 강한 결합을 피하고 작업의 흐름을 유연하게 조정할 수 있습니다. 이를 통해 각 마이크로서비스는 독립적으로 처리 결과를 수신하고, 실패나 지연에 유연하게 대응할 수 있는 이벤트 중심의 아키텍처를 구현합니다.

RabbitMQ는 신뢰성 높은 메시지 전달을 보장하는 경량 메시지 브로커로, 마이크로서비스 간의 비동기 통신을 안정적으로 처리하는 데 널리 사용됩니다.
서비스 메시를 통한 마이크로서비스 연결
Istio 서비스 메쉬를 사용하여 마이크로서비스에 접근하는 Gateway와 Route를 통합적으로 관리합니다. Kiali는 이러한 서비스 메쉬 환경에서 트래픽 흐름을 시각화하며, 버전 간 라우팅, 오류 추적, 정책 검증 등의 실시간 인사이트를 제공함으로써 운영 복잡도를 줄이고 시스템의 관찰 가능성을 높여줍니다.

Istio 서비스 메쉬는 마이크로서비스 간 통신을 추상화하고 제어하여, 트래픽 관리, 보안 정책 적용, 가시성을 통합적으로 제공합니다.
통합 관측 및 상태 추적
각 마이크로서비스의 상태와 성능을 실시간으로 관찰하기 위해 Micrometer 기반의 JVM 지표, Flask 애플리케이션의 요청/응답 지표, 그리고 React NGINX 프록시의 연결 상태 등을 통합적으로 수집하고 시각화하였습니다. Grafana 대시보드를 통해 CPU, 메모리, 쓰레드, 응답 시간 등 다양한 메트릭을 한눈에 파악할 수 있어, 장애 대응과 성능 튜닝을 보다 빠르고 정밀하게 수행할 수 있습니다.

CNAP에서 제공하는 모든 도구와 이 위에서 만들어진 애플리케이션은 Observability 체계를 통해 API 요청, 서비스 상태, 자원 생성 흐름 등의 정보를 메트릭, 트레이스, 로그 형태로 기록하며, Grafana, Tracing UI, Kibana 등을 통해 실시간으로 모니터링할 수 있습니다.