미리보기
기본 정보
고객 중심 문제 해결 Cloud Engineer를 꿈꾸는, 이현호입니다.
기술 스택
Kubernetes, AWS, iOS, GitHub
프로젝트
10분간 60000 트래픽을 처리할 수 있는 쿠폰발급 인프라 구축
CJ OliveNetworks Cloudwave 2기
2024.02. ~ 2024.02.
10분간 60000건의 트래픽을 대응할 수 있는 클라우드 인프라를 구축했습니다. 10분 60000건의 로그는 EKS로 관리되는 pod들과 Kafka로 대응합니다. Client, Server, DB로 이루어진 3-tier 아키텍처로 구성하였습니다.
JMeter와 Grafana를 사용하여 부하테스트를 진행하였습니다.
주요 기여 사항
- Terraform을 활용한 EKS 구축 (기여도 60%)
- 부하테스트 진행
- 팀장으로서 일정, 목표 관리 (기여도 70%)
위치 기반 음악 공유 iOS 어플리케이션 개발
UMC (앱&웹 서비스 런칭에 도전하는 대학생 IT 연합동아리)
2023.03. ~ 2023.10.
위치를 기반으로 근처 사용자의 음악을 공유하는 서비스를 개발했습니다. iOS Framework인 UIKit가 제공하는 API를 활용하여 사용자들의 위치를 파악하고 음악을 공유합니다. 높은 사용자 경험을 위한 UI를 디자인 하였고, iOS 어플을 구현하였습니다.
주요 기여 사항
- 일반적이지 않는 서비스라는 점에서, 사용자에게 친숙한 디자인을 벤치마킹한 UI 디자인
- 지도 기반 음악 장르별 사용자 클러스터링 기능 구현
운해 예측 서비스 개발
상명대학교
2023.09. ~ 2023.12.
기상청 예측 날씨를 기반으로 다음날 북한산 운해 여부를 예측하는 서비스를 개발하였습니다. 운해는 학습시킨 분류 모델을 통해 예측합니다. 데이터의 수집, 데이터 전처리, 상관관계 분석, 모델 선정 및 학습을 담당하였습니다. 운해여부와 변수의 상관관계를 분석하고 모델의 정확도를 비교하며 진행하였습니다.
주요 기여 사항
- 모델 선정 및 학습
- 크롤링을 통한 데이터 수집과 라벨링 작업 (기여도 60%)
- 변수들과 운해 여부의 상관관계 분석 (기여도 70%)
자기소개
- 지원 동기
고객의 관점에서 AWS를 활용한 인프라 설계, 구축 경험이 있습니다. 해당 경험을 바탕으로 메가존 클라우드의 EMS 그룹에 기여하고 싶습니다.
구글의 Colab을 통해 클라우드 서비스를 처음 접했습니다. 파이썬 버전 세팅, 라이브러리 설치 등의 과정을 생략하고 핵심 기능 개발에 집중하게 해주는 클라우드의 이점에서 클라우드 서비스에 관심을 갖게 되었습니다. 클라우드에 대해 더 배워보고 싶어 클라우드 교육인 CJ OliveNetworks Cloudwave2기를 수강하였습니다.
클라이언트가 핵심 비즈니스에 집중할 수 있도록 인프라를 설계 구축한 경험이 있습니다. 안정적인 올리브영 쿠폰 발급 인프라 구축을 위해 AWS EKS, Redis, RDS, MSK 등 AWS의 서비스를 사용하여 3-tier architeture를 설계하였습니다. 이를 terraform을 통해서 IaC를 작성하였습니다.
EMS 그룹은 클라이언트의 사업에 적합한 모델을 제공하고 관리하여 고객이 비즈니스에 집중할 수 있게 돕습니다.
저는 클라이언트 관점에서 인프라를 구축한 경험을 바탕으로 EMS 그룹에 합류하여 고객의 관점에서 IT 자원과 운영 전반에 대해 배우고 기여하고 싶습니다.
- 관련 경험 및 직무 역량
[10분간 60000명에 대응할 수 있는 쿠폰 발급 인프라 구축]
CloudWave 교육과정의 팀 프로젝트로 AWS 서비스인 EKS, Kafka, RDS를 활용하여 10분간 60000명을 대응할 수 있는 올리브영 쿠폰 발급 인프라를 구축하였습니다.
CloudWave의 프로젝트는 CJ 계열사 중 하나를 주제로 선택하여 진행되었습니다. 저희 팀은 올리브영 쿠폰 발급 서비스에서 급증하는 트래픽을 대응하지 못해 대기인원 37000명 대기시간 600분이 걸렸다는 사례를 확인하였습니다. 이 문제를 인프라 관점에서 해결하는 것으로 주제를 정하였습니다. 프로젝트의 목표는 크게 두 가지였습니다.
첫째, 10분간 50000명을 대응할 수 있는 인프라 구축. 대기인원이 37000명이었다는 사례를 기반으로 50000명이라는 숫자를 정하였습니다. 둘째, 올리브영의 핵심 비즈니스 사용자를 구매로 이끄는 로직에 집중할 수 있도록 IT 자원과 운영 전반을 관리하기.
3 tier architecture로 서비스를 구성하였습니다. CloudFront와 S3를 사용해 정적 콘텐츠를 배포해 서버의 크기를 줄였습니다. 배포 독립을 위해 컨테이너를 고려하였고, 트래픽을 대응하기 위한 scale-out과 편리한 컨테이너 관리를 위해 EKS를 사용하여 올리브영이 핵심 비즈니스에 더욱 집중할 수 있게 하였습니다. 높은 가용성과 편리함을 이유로 RDS를 선택하였습니다. IT 자원의 운영 관리를 위한 모니터링으로 Prometheus와 Grafana를 선택하였습니다.
10분간 50000이라는 트래픽 대응을 확인하기 위해 JMeter를 사용해 부하 테스트를 진행하였습니다. 최대 응답 시간 1분 미만으로 테스트를 구성하고 TPS로 성능을 평가하였습니다. 쿠폰 발급이라는 특성상 사용자가 조금 더 기다릴 것이라는 가정하에 1분이라는 시간을 지정하였습니다.
HPA를 통해 컨테이너 수를 늘리면 충분히 대응할 수 있을 것이라는 가정하였습니다. 결과는 예상과 달랐습니다. 컨테이너 수가 7개까지 늘어날 수록 증가하던 TPS는 8개부터 증가하지 않고 서비스 자체가 멈춰버렸습니다. 문제는 두 가지였습니다. Too Many Connection 에러와 DB의 CPU 과부하. DB의 동시 요청 처리량 증가에 제한이 존재했었습니다. 저희는 MSK Kafka를 도입하여 서버와 RDS가 직접 통신하지 않게 아키텍처를 수정하였고 컨테이너 12개로 10분간 69600 트래픽을 대응할 수 있게 하여 목표 트래픽을 달성하였습니다.
AWS 서비스를 사용한 아키텍처로 문제를 해결하고 클라이언트가 핵심 비즈니스에 집중할 수 있도록 도운 경험을 바탕으로 메가존 EMS 그룹에서 클라우드 인프라를 관리하는 서비스를 고민하고자 합니다.
- 입사 후 포부
[디테일 하게 공부하기. 끊임없이 의심하기]
고객의 기준에 부합하도록 AWS를 서비스를 활용해 최적화 하고, 변화하는 고객 비즈니스 모델을 위해 새로인 기술 도입을 연구하는 Cloud Engineer로 성장할 것입니다.
저는 새로운 기술을 공부할 때 디테일하게 공부하기. 끊임없이 의심하기 라는 두 가지 기준이 있습니다.
과거 Ingress Controller를 공부할 때 큰 맥락을 이해하기 위해 공식 문서를 빠르게 읽고 Ingress Controller가 Kubernetes 외부의 트래픽을 받는다고 이해하였습니다. 저는 그 착각을 인지하지 못하고 디테일한 Ingress Controller에 대해 공부했고 실습에 들어가서야 뭔가 맥락이 맞지 않다는 것을 깨달았습니다. 하지만 다른 아티클과 영상을 봐도 Ingress Controller는 외부의 트래픽을 받는 리소스였습니다. 몇 시간이 지나고 팀원들과 얘기하면서 제가 Ingress Controller가 외부 트래픽을 받는 리소스가 아니라 트래픽을 받는 리소스를 생성하는 컨트롤러라는 것을 깨달았습니다. 처음 잘못 이해한 개념이 몇 시간을 낭비하게 했습니다. 이 경험으로 저는 새로운 기술을 공부할 때 디테일하게 공부하기. 끊임없이 의심하기라는 공부 방법을 사용합니다. 추후 Karpenter등의 새로운 개념을 익힐 때 낭비하는 시간 없이 공부를 진행할 수 있었습니다.
메가존 클라우드는 5000여 고객사에 AWS 솔루션과 부가 서비스를 제공하고 있습니다. 이러한 저의 공부 방법을 이용하여 EMS 그룹의 클라우드 인프라 운영 방법을 학습하고 성장할 것입니다.