엔터프라이즈 컴퓨팅 환경은 켜켜이 쌓인 나무의 나이테와 같습니다. 모놀리식 아키텍처 기반 레거시부터 클라우드 네이티브 기술로 구현한 최신 환경까지 함께 있습니다. 빅뱅 방식의 차세대 프로젝트를 주기적으로 할 수 있는 곳이 아니라면 필요할 때마다 점진적인 방식으로 현대화를 진행합니다. 이렇게 하는 이유는 현대화에 이래저래 손이 많이 가고 위험 부담도 있기 때문인데요.
다행히 클라우드 네이티브 기술이 발전하면서 현대화의 문턱은 빠르게 낮아지고 있습니다. 관련해 이번 포스팅에서는 구글 클라우드가 오픈소스로 공개한 GKE(Google Kubernetes Engine) 기반 온라인 쇼핑몰 레퍼런스인 Online Boutique를 살펴보겠습니다. Online Boutique는 샘플이지만 실제 이커머스 플랫폼처럼 상품 탐색, 장바구니 담기, 주문·결제 기능을 마이크로서비스로 나눠 GKE 환경에서 어떻게 구성하고 연동하는지 한눈에 보여 주는 좋은 실습 예제입니다.
GKE는 현대화 부담을 어떻게 줄여 줄까?
GKE는 구글 클라우드의 관리형 쿠버네티스 서비스입니다. GKE로 애플리케이션을 현대화하면 크게 세 가지 부담이 줄어듭니다. 첫 번째는 배포와 확장의 부담입니다. 마이크로서비스로 나눈 애플리케이션은 기능마다 따로 배포하고, 트래픽이 몰리는 서비스만 골라 늘릴 수 있습니다. 기능 하나를 고치려고 애플리케이션 전체를 다시 배포할 필요가 없습니다.
두 번째는 기술 선택의 부담입니다. 서비스 사이의 약속만 지키면 서비스마다 다른 언어로 만들어도 됩니다. 기존 자산을 살리면서 새 기능은 팀에 맞는 언어로 만드는 점진적 현대화가 가능합니다. 세번 째는 운영 부담입니다. GKE 오토파일럿(Autopilot) 모드를 쓰면 노드 관리와 보안 패치, 용량 계획 같은 클러스터 운영을 구글이 맡습니다. 클라우드 모니터링(Cloud Monitoring)과 클라우드 서비스 메시(Cloud Service Mesh)로 관측성과 서비스 간 트래픽 제어도 플랫폼 차원에서 갖출 수 있습니다.
위와 같은 이점은 직접 해보지 않으면 잘 와닿지 않습니다. 직접 만들어 보는 것이 가장 빠른 학습입니다. Online Boutique를 출발점으로 구글 클라우드가 준비해 공개한 이유가 이해가 되네요.
Online Boutique 소개
Online Boutique는 GKE에 배포할 수 있는 마이크로서비스 기반 온라인 쇼핑몰 샘플 애플리케이션입니다. 구글은 개발자가 GKE, 클라우드 서비스 메시, 클라우드 모니터링 같은 구글 클라우드 제품으로 엔터프라이즈 애플리케이션을 어떻게 현대화할 수 있는지 보여 주려고 이 예제를 만들었습니다.
참고로 Online Boutique 소스는 구글이 깃허브(GitHub)에 오픈소스로 공개했습니다. 깃허브 페이지에서는 빠른 시작 가이드와 자세한 문서, 다양한 활용 사례를 시험해 볼 수 있는 선택형 구성 요소를 함께 제공합니다. Online Boutique는 11개의 마이크로서비스로 이뤄져 있습니다. 서비스는 파이썬, 자바, C#, Go, Node.js까지 다섯 가지 언어로 작성했습니다. 각 서비스의 역할은 다음과 같이 정리할 수 있습니다.
| 서비스 | 언어 | 역할 |
| frontend | Go | 웹사이트를 제공하고 사용자 세션을 만듭니다 |
| cartservice | C# | 장바구니 상품을 Redis에 저장하고 조회합니다 |
| productcatalogservice | Go | 상품 목록과 검색, 개별 상품 조회를 제공합니다 |
| currencyservice | Node.js | 통화를 환산합니다. 호출이 가장 많은 서비스입니다 |
| paymentservice | Node.js | 모의 결제를 처리하고 거래 ID를 돌려줍니다 |
| shippingservice | Go | 배송비를 계산하고 모의 배송을 처리합니다 |
| emailservice | Python | 모의 주문 확인 메일을 보냅니다 |
| checkoutservice | Go | 장바구니 조회, 결제, 배송, 메일 발송을 조율합니다 |
| recommendationservice | Python | 장바구니 상품을 바탕으로 상품을 추천합니다 |
| adservice | Java | 문맥에 맞는 텍스트 광고를 보여 줍니다 |
| loadgenerator | Python(Locust) | 실제 사용자처럼 쇼핑 흐름을 반복해 트래픽을 만듭니다 |
Online Boutique의 구조에서 눈여겨볼 부분은 다음과 같습니다.
- 서비스 간 통신: 사용자는 HTTP로 frontend에 접속하고, frontend 뒤의 서비스들은 프로토콜 버퍼(Protocol Buffers)로 정의한 gRPC 인터페이스로 서로를 부릅니다. 서비스 사이의 약속을 명확한 스키마로 관리하는 방식입니다. 언어가 달라도 서비스끼리 문제없이 통신하는 이유입니다.
- 주문 흐름 조율: 사용자가 주문하면 checkoutservice가 장바구니를 가져오고, 통화를 환산하고, 결제와 배송을 처리하고, 확인 메일을 보내도록 각 서비스를 차례로 부릅니다. 실무의 주문 처리 시스템과 닮은 구조라 서비스 분리와 조율 방식을 이해하기 좋습니다.
- 상태: 장바구니 데이터는 Redis에 저장하고 나머지 서비스는 상태를 갖지 않습니다. 상태 없는 서비스는 파드를 자유롭게 늘리고 줄일 수 있어 쿠버네티스의 확장성을 살리기 좋습니다.
- 트래픽: loadgenerator가 실제 사용자 트래픽을 흉내 냅니다. 배포만 하면 바로 트래픽이 흐르므로 모니터링 지표를 확인하거나 오토스케일링을 시험하기에 알맞습니다.
Online Boutique는 어떤 단계로 배포할까?
Online Boutique는 몇 분이면 배포를 시작할 수 있습니다. 클라우드 셸(Cloud Shell)을 쓰면 gcloud, git, kubectl이 미리 깔려 있어 별도 준비가 거의 필요 없습니다. 깃허브 저장소의 빠른 시작 가이드를 기준으로 단계를 정리하면 다음과 같습니다. 단계별 명령어는 깃허브에 올라온 문서를 참조하시기 바랍니다.
- Step 1: 구글 클라우드 프로젝트를 준비하고, 클라우드 셸에서 프로젝트 ID와 리전을 변수로 지정합니다. 이어 GKE API를 활성화합니다.
- Step 2: GKE 오토파일럿 클러스터를 만듭니다. 오토파일럿 클러스터는 노드 구성을 GKE가 알아서 맡습니다. 국내에서 실습한다면 리전을 서울(asia-northeast3)로 바꿔도 됩니다.
- Step 3:: 클러스터 생성이 끝나면 Online Boutique 저장소를 클론합니다.
- Step 4:: 저장소에 들어 있는 매니페스트 하나로 11개 서비스를 모두 배포합니다. 몇 분 정도 걸립니다. 모든 파드가 Running 상태가 될 때까지 확인합니다.
- Step 5:: frontend 서비스의 외부 IP를 확인하고 브라우저로 접속합니다. 상품 목록이 보이면 배포에 성공한 것입니다. 상품을 둘러보고, 장바구니에 담고, 주문까지 해 보며 각 서비스가 어떻게 맞물리는지 확인합니다.
- Step 6: 기본 배포를 마쳤다면 저장소의 선택형 구성 요소로 범위를 넓혀 볼 수 있습니다. 커스터마이즈(Kustomize) 구성으로 이스티오 기반 서비스 메시를 더하거나, 테라폼으로 인프라를 코드로 배포하거나, 이미지를 보고 상품을 추천하는 Gemini 쇼핑 어시스턴트를 붙일 수 있습니다.
- Step 7: 실습을 마친 뒤에는 클러스터를 삭제해 불필요한 비용을 막습니다.
마음 편히 시작하는 애플리케이션 현대화
Online Boutique는 현대화를 마쳤을 때 갖추게 될 GKE 기반 마이크로서비스 아키텍처를 미리 보여 주는 축소판이라 할 수 있습니다. 레거시 현대화를 고려 중이라면 먼저 Online Boutique로 팀이 배포와 모니터링, 확장 방식을 실습해 보세요. 그다음 변경이 잦거나 트래픽 변동이 큰 기능 하나를 골라 서비스로 분리해 GKE에 올려 보세요. 성과를 확인하며 범위를 넓혀 가는 단계적 접근을 하면 현대화의 위험도 줄이고 부담도 낮출 수 있습니다. GKE 기반 애플리케이션 현대화 전략이나 마이그레이션 방안을 안내받고 싶다면 메가존소프트 문의 포털을 통해 상담을 남겨 주세요.





