개요
금융 기업의 VDI 인프라 관리는 가상 데스크톱 자원 할당, 마켓플레이스 서비스 승인, 조직 계층 관리, 과금 처리가 유기적으로 연결된 복잡한 엔터프라이즈 시스템이다. Clayon은 KB금융그룹 계열사를 위한 클라우드 VDI 및 마켓플레이스 관리 플랫폼으로, 2020년 상반기에 개발된 기업 SI 프로젝트다.
4개의 독립 WAR 모듈로 구성된다. 슈퍼 관리자 콘솔(admcon), 기업 포털(cmp), 사용자 포털(portal), 배포 모듈(deploy)이 각각 역할을 분리하여 운영된다. Dooray, Devops, PaaS(Cloud Foundry), Toast Cloud 4개 외부 API를 단일 게이트웨이 레이어로 추상화하여 연동 복잡도를 낮췄다.
Spring Security 폼 인증(admcon/cmp)과 JWT 토큰 인증(portal)을 혼용하는 하이브리드 인증 아키텍처를 적용했으며, Redis 세션 클러스터링으로 다중 서버 환경의 세션 일관성을 유지한다.
주요 기능
VDI 인프라 자원 신청·승인 워크플로우
기업 담당자가 VDI 자원을 신청하면 관리자 콘솔에서 승인하는 다단계 워크플로우를 구현한다. InfraVdiController(100KB+)가 VDI 라이프사이클 전 과정을 처리한다.
클라우드 마켓플레이스
서비스 공급자가 마켓플레이스에 서비스를 등재하고, 기업이 구독 신청하는 플로우를 MarketPlaceController(58KB+)가 담당한다. Apache Tika로 첨부 파일을 분석하고 Apache Velocity로 이메일 알림을 발송한다.
4개 외부 API 게이트웨이 통합
Dooray(프로젝트 관리), Devops(CI/CD), PaaS(Cloud Foundry UAA), Toast Cloud(과금) API를 com/api/gateway/ 단일 레이어로 추상화했다. 각 API 클라이언트는 독립 클래스로 구현되어 특정 외부 서비스 변경이 다른 기능에 영향을 미치지 않는다.
Quartz 스케줄러 배치
Quartz Scheduler 2.1.7으로 VDI 사용량 수집, 과금 정산 등 주기적 배치 작업을 실행한다. Apache POI로 사용량 보고서를 엑셀로 자동 생성한다.
기술적 도전
다중 DataSource 트랜잭션 관리
도전: clayon·adm·kfz 3개의 별도 DB를 하나의 애플리케이션에서 트랜잭션 안전하게 운영해야 했다.
해결: Spring의 AbstractRoutingDataSource를 활용하여 요청 컨텍스트에 따라 DataSource를 동적으로 선택하는 라우팅 레이어를 구성했다. @Transactional의 transactionManager 속성으로 DB별 트랜잭션 매니저를 명시적으로 지정했다.
4개 이기종 외부 API 통합
도전: Dooray REST, Devops REST, Cloud Foundry UAA OAuth, Toast Cloud API가 각각 다른 인증 방식과 응답 형식을 가진다.
해결: com/api/gateway/ 하위에 API별 클라이언트 클래스(RestApi, DevopsApi, DoorayApi, PasApi, ToastApi)를 분리하고, 공통 HTTP 클라이언트 레이어 위에서 각각 독립적으로 동작하도록 설계했다.
하이브리드 인증 아키텍처
도전: admcon/cmp는 Spring Security 폼 인증, portal은 JWT 토큰 인증이 필요했다.
해결: 모듈별 Spring Security 설정(SecurityConfig)을 완전히 분리하여 각 WAR이 독립적인 인증 체계를 가지도록 했다. JWT는 com/jwt/ 패키지에 별도 구현했다.
아키텍처
멀티 모듈 Spring MVC (WAR 단위 배포) + REST API Gateway 패턴이다.
clayon-source/
├── clayon-admcon/ # 슈퍼 관리자 콘솔
│ ├── com/web/controller/ # MVC 컨트롤러
│ ├── com/api/gateway/ # 외부 API 게이트웨이
│ └── com/auth/ # Spring Security 인증
├── clayon-cmp/ # 기업 포털
│ ├── com/infra/ # VDI 인프라 서비스
│ ├── com/marketplace/ # 마켓플레이스 서비스
│ └── com/billing/ # Toast Cloud 과금
├── clayon-portal/ # 사용자 포털 (JWT 인증)
├── clayon-deploy/ # 배포 전용 모듈
├── DB Changeset/ # MySQL DDL/DML 변경 이력
└── shell_script/ # SFTP 배포 스크립트