AWS 기술 블로그
Amazon Q Developer와 함께한 놀유니버스 EventScaler 구축 여정
개요
놀유니버스는 여행을 위한 항공·숙소·패키지·교통은 물론 공연·전시·스포츠까지 삶의 모든 즐거움을 혁신하고 있습니다. NOL, NOL 인터파크투어, NOL 티켓을 중심으로 고객의 일상 가까이에서 여행·여가·문화의 경계 없이 다채로운 경험을 선사합니다. 또한 초개인화 여행 플랫폼 ‘트리플’, 외국인 관광객을 위한 ‘interpark global’을 통해 다양한 고객에게 맞는 서비스를 제공하고 있습니다. 놀유니버스는 개인화 AI 기술과 방대한 데이터를 바탕으로 플랫폼 간 시너지를 더해 고객 경험을 확장하며 놀라운 혁신을 이어가고 있습니다.
놀유니버스는 야놀자플랫폼과 인터파크트리플의 법인 통합 이후, 서비스 운영 환경에 커다란 변화를 맞이했습니다. 두 플랫폼에서 운영되던 다양한 이벤트 기반 프로모션이 통합되면서, 특히 트래픽 패턴이 비교적 안정적이었던 개발팀은 새로운 과제에 직면하게 되었습니다.
다수의 이벤트가 숙박, 항공, 티켓 등 여러 서비스 영역에서 연속적으로 발생했고, 특히 주말이나 심야 시간대에는 갑작스러운 부하가 있기도 했습니다. 운영팀은 캘린더와 슬랙을 통해 전달된 이벤트 정보를 바탕으로, Scale-In/Out과 AWS ELB LCU 예약 설정을 반복적으로 수작업으로 대응해야 했습니다.더 이상 수동 대응은 한계에 도달했으며, 보다 자동화되고 신속한 인프라 대응 체계가 절실한 시점이었습니다.
운영 복잡성의 핵심 원인
야놀자, 인터파크, 트리플 앱에서 발생하는 이벤트들은 다음과 같은 특성을 가지고 있었습니다:
- 이벤트 규모 다양성: S급 대형 이벤트부터 소규모 프로모션까지 다양한 부하 수준
- 도메인별 트래픽 차이: 항공 특가, 티켓 오픈, 숙박 예약 급증 등 서비스마다 부하 발생 양상이 다름
- 시간대 다양성: 오전 티켓 오픈, 주말 특가, 심야 프로모션 등 시점마다 부하 패턴이 다름
- 인프라 이질성: Kubernetes HPA, AWS Elastic Beanstalk, ELB LCU 예약 등 제어 대상이 상이함
이러한 복잡성으로 인해 특히 야간/주말 긴급 이벤트 시 운영 리스크가 매우 커졌고, 대응 속도와 안정성을 확보할 수 있는 체계가 필요했습니다.
목표: 이벤트 중심 자동 스케일링 체계 구축
놀유니버스는 다음과 같은 자동화 목표를 설정했습니다:
- Google Calendar 기반으로 이벤트 정보를 수집하고, 이벤트 종류 및 등급(S/A/B/C)에 따라 사전 정의된 스케일링 정책 자동 적용
- 사람의 개입 없이 이벤트 발생 시간에 맞춰 자동 확장/복구
- AWS, Kubernetes, 다중 계정 환경 등 이기종 리소스를 통합 제어하는 시스템 구현
기술적 접근: Kubernetes Operator 패턴 도입
기존 오픈소스 솔루션인 KEDA(Kubernetes-based Event Driven Autoscaler) 등도 검토했습니다. 하지만 KEDA는 메트릭 기반 실시간 반응에 최적화되어 있어 캘린더 기반 사전 스케일링에는 적합하지 않았고, 대부분의 솔루션이 Kubernetes 내부 리소스만을 대상으로 하기 때문에 AWS와 같은 외부 리소스 연동에 한계가 있었습니다.
또한, 이벤트 등급에 따른 차등 스케일링, Slack 알림 등의 고유 요구사항을 유연하게 지원하기 어려웠습니다. 이에 따라, Custom Resource Definition(CRD)와 Kubernetes Controller로 구성된 Operator 패턴을 채택했습니다. 이벤트를 하나의 Kubernetes 리소스로 선언하고, Controller가 이를 감지하여 다양한 리소스를 자동으로 제어하는 구조입니다.
솔루션 개요 – Go 기반 Controller 개발 및 Amazon Q Developer의 기여
Kubernetes Controller 개발은 Go 언어 기반으로 진행했습니다. client-go, controller-runtime 등 공식 라이브러리와의 강력한 호환성과 컴파일 타임 안정성은 안정적인 운영을 위한 최적의 선택이었습니다.하지만 Go 경험이 제한적이었던 팀에게 Amazon Q Developer는 단순한 코드 작성 보조를 넘어 진정한 개발 파트너로서 역할을 수행했습니다.
1. CRD 스키마 설계 및 구현
EventScaler라는 CRD를 정의하여, 스케일링 대상, 트리거, 최소/최대 리플리카 수, 외부 리소스 설정(AWS, GCP)을 선언적으로 구성했습니다.
type EventScalerSpec struct {
Type ScalerType `json:"type,omitempty"`
ScaleTargetRef autoscalingv2.CrossVersionObjectReference `json:"scaleTargetRef,omitempty"`
MinReplicaCount *int32 `json:"minReplicaCount,omitempty"`
MaxReplicaCount *int32 `json:"maxReplicaCount,omitempty"`
Triggers []EventTrigger `json:"triggers"`
AWS awsResourceSpec `json:"awsResourceSpec,omitempty"`
GCP gcpResourceSpec `json:"gcpResourceSpec,omitempty"`
}
Amazon Q Developer는 다음 영역에서 파트너로써 도움을 주었습니다.:
- JSON 태그 자동 구성
- 이벤트 등급별 정책 구조 설계 제안
- OpenAPI 기반 스키마 자동 생성
2. AWS SDK 통합 및 멀티 계정 제어
Elastic Beanstalk 환경 제어를 위해 AWS SDK와 멀티 프로파일 인증을 연동했습니다.
sess, err := session.NewSessionWithOptions(session.Options{
Profile: es.Spec.AWS.Account,
SharedConfigState: session.SharedConfigEnable,
})
svc := elasticbeanstalk.New(sess)
ebName, err := getEBNameFromDomain(ctx, svc, es.Spec.AWS.EBDomain)
Amazon Q Developer는 다음 영역에서 파트너로써 도움을 주었습니다.:
- AWS SDK 세션/클라이언트 생성 패턴 제시
- 멀티 계정 프로파일 구조 설계
- EB 환경 자동 탐색 및 Auto Scaling 조정 로직 구현
3. 고급 Controller 패턴 구현
WithEventFilter(predicate.Funcs{
UpdateFunc: func(e event.UpdateEvent) bool {
oldObj := e.ObjectOld.DeepCopyObject().(*v1alpha1.EventScaler)
newObj := e.ObjectNew.DeepCopyObject().(*v1alpha1.EventScaler)
if !equality.Semantic.DeepEqual(oldObj.Spec, newObj.Spec) {
return true
}
if !equality.Semantic.DeepEqual(oldObj.Status.CurrentEvents, newObj.Status.CurrentEvents) {
return true
}
return false
},
})
불필요한 Reconcile을 줄이기 위한 Event Filter, 리소스 삭제 시 Finalizer 기반 정리, 상태 추적을 위한 Status Subresource 등을 통해 Controller의 안정성과 성능을 모두 확보할 수 있었습니다.
운영 성과: 자동화와 안정성 동시 확보
EventScaler 도입 후, 운영 지표는 다음과 같은 개선을 보였습니다:
- 이벤트 대응 시간: 평균 30분 → 3분 이내
- 이벤트 자동 처리량: 월 150건 이상
- 운영 인력 투입: 24시간 상시 대응 → 예외 상황만 Slack 알림 대응
또한 기술적 안정성 측면에서도:
- 99.9% 이상 서비스 가용성 (3개월 기준)
- 메모리 누수 0건 (Goroutine, Context 철저 관리)
- 에러율 0.1% 이하 (강타입 언어의 컴파일 검증 효과)
확장성 측면에서는:
- 플러그인 기반 구조로 새로운 리소스 손쉬운 추가
- 멀티 클러스터 운영 지원
- Google Calendar 외 CMS, DB 연동 가능성 확보
Amazon Q Developer 도입 후의 조직 변화
EventScaler 개발 경험은 단순한 자동화 프로젝트를 넘어, DevOps 문화 자체를 AI 중심으로 전환하는 계기가 되었습니다.
- Terraform, GitHub Actions, Jenkins 작성 시 빠른 레퍼런스와 자동 제안
- IAM, RBAC 보안 정책 검토 시 최소 권한 원칙 가이드
- Prometheus 쿼리, Grafana 대시보드 구성 자동화
- 기술 문서, 운영 가이드, 장애 대응 매뉴얼 작성 시 구조 설계 지원
이제는 개발자들이 막히는 순간마다 “일단 AI에게 물어보자”는 문화가 자리 잡았습니다. Amazon Q Developer는 단순한 코드 생성 도구가 아니라, 개발자의 사고와 구조 설계를 함께 도와주는 에이전틱 AI 파트너로 자리매김했습니다.
결론
Amazon Q Developer는 단순한 AI 코드 생성 도구를 넘어, 놀유니버스의 DevOps 환경에 실질적인 변화를 가져온 Agentic AI 기반 개발 파트너였습니다. EventScaler 구축 과정에서 Amazon Q Developer는 초기 설계부터 구현, 검증, 운영 최적화까지 전 단계에 걸쳐 개발자와 함께 사고하며 문제를 해결해 나갔습니다. 이 경험을 통해 DevOps 자동화가 더 이상 일부 전문가의 역량에만 의존하지 않아도 되는 시대가 도래했음을 체감할 수 있었습니다. 코드 품질과 개발 속도는 물론, 보안, 확장성, 운영 안정성까지 AI 기반 도구와 함께 비약적으로 향상되었습니다.
앞으로도 놀유니버스는 Amazon Q Developer와 함께, EventScaler를 포함한 모든 인프라 구성과 운영 자동화를 더욱 고도화할 계획입니다. 나아가 AI와 개발자가 협업하는 새로운 개발 문화를 팀 전체로 확산시켜, 조직의 기술 경쟁력을 더욱 높여갈 것입니다.
참고 링크