Junhyeok Choi

Software Engineer

image

올바른 방법으로 문제를 해결하는 것을 좋아하는 개발자입니다. 새로운 지식을 학습하고 적용하는 것을 즐깁니다. 효율적이고 확장, 재현, 지속 가능한 시스템을 구축하는 것에 관심이 많습니다.


Work Experience

Software Engineer

Buzzvil | 2019 - Present

MAU 2000만+, 초당 광고 트래픽 3K의 리워드 광고 플랫폼을 운영하는 Ad-Tech 기업입니다. 백엔드 엔지니어링을 바탕으로 회사에서 필요로 하는 다양한 역할을 수행하고 있습니다.

  • 2023 - 아키텍트 팀에서 Architect 포지션으로 전반적인 소프트웨어 아키텍처의 상태를 진단하고 개선하는 업무를 수행하고 있습니다.
  • 2021 - 2023 광고 추천, 광고 엔진 팀에서 Engineering Manager 포지션으로 엔지니어링 팀을 리딩하며 광고 추천 엔진 개발 및 초기 MLOps 구축 업무를 수행했습니다.
  • 2019 - 2021 광고 제품 팀에서 Backend Engineer 포지션으로 신규 광고 제품 개발이나 광고 서버 운영 및 유지보수 업무를 수행했습니다.

Backend Developer

Bankware Global | 2017 - 2019

국내외 금융 기관을 대상으로 온라인 뱅킹 솔루션을 제공하는 Fin-Tech 기업입니다. 금융 솔루션 연구소 소속으로 코어 뱅킹 및 상품 팩토리 제품군 개발에 참여했습니다.

Projects

광고 할당 시스템 Go 언어 포팅

Maintenance, 2023-

Python 서버로 구축되어 오랜 기간 운영하고 있는 광고 할당 시스템을 Go 언어로 포팅하여 성능을 개선하고, 유지보수성을 향상시키는 것을 목표로 하는 과제. 전체 트래픽을 신규 시스템으로 이전하는 경우 월 $12,000의 인프라 비용을 절감하는 것으로 예측. Go, Python

광고 할당 시스템 서비스 경계 재정의

Maintenance, 2023

MSA 전환 이후 각 조직 별로 담당하는 마이크로서비스 오너십이 비교적 명확히 분배된 상황에서, 그 사이에 회색 지대로 존재하는 기존 모놀리식 광고 서버의 비즈니스 로직을 상응하는 서비스로 이전하는 구조적 개선. 작업 과정에서 기존 아키텍처 구성으로 인한 인프라 관점의 비효율을 개선하여 비용을 절감하는 부가적인 효과가 있었음. Go, Python, Elasticsearch

광고 추천 시스템 MLOps 환경 구축

Maintenance, 2021-2022

ML 제품군의 Iteration cycle을 가속하기 위해 MLOps 환경 구축. Feature store, Model Registry, Inference Server의 역할을 명확히 정의하고 모델 학습, 배포 단계의 의존성을 최소화하는 방향으로 정책 결정. 학습, 배포 워크로드 실행을 위한 파이프라인 구성. Amazon Athena, Apache Airflow, Amazon Sagemaker, MLFlow

광고 추천 서비스

Backend, 2021-2022

기존 광고 추천 로직은 ML 엔지니어가 모델을 갱신할 때마다 광고 서버에 배포하는 방식으로 동작. 광고 추천 관련 비즈니스 로직을 광고 서버에서 격리하고 별도 배포 주기를 가져가기 위한 목적으로 추천 서비스 런칭. Feature store, Inference Server와 통합되어 ML E2E 배포 프로세스를 간소화하고, 추천 정책, AB Test 레이어 등의 추가적인 기능 제공. Go, Python, DynamoDB, Redis

광고 서버 배포환경 k8s 이전 과제 참여

Maintenance, 2021

대부분의 시스템이 k8s로 이전된 상황에서, 가장 큰 규모의 서비스인 광고 서버를 k8s 환경으로 이전하는 과제 참여. 기존 서비스의 인프라 제약 요소 파악. 교차 검증을 위한 API TestSet 작성. k8s 리소스 작성은 같은 TF의 devops 멤버가 수행. AWS, Nginx, Kubernetes

광고 서버 CI 파이프라인 성능 개선 및 안정화

Maintenance, 2021

전사 CI/CD 도구 교체로 인해 해당 서비스의 파이프라인 이전 (Jenkin CI -> Drone CI). Test step을 분산 환경(pytest-xdist)으로 재구성하여 CI 수행 시간 단축(12m -> 4m). 작업 과정에서 Drone k8s runner의 resource request가 명세와 다르게 동작하여 워커 노드에 워크로드가 과중하게 스케줄링 되는 문제를 파악하고 개선. Pytest, Drone CI, Kubernetes

ElasticSearch 조회 패턴 최적화

Maintenance, 2020

단기간에 ES 사용량이 급증하여 조회 패턴을 최적화하는 과제 수행. 특정 광고 상품에서 ES 응답 이후 어플리케이션 레벨에서 추가적인 필터링을 진행하고 있는 동작을 확인하여 필터링 기능을 ES 레벨의 쿼리로 이전한 결과 ES CPU utilization을 30% 가량 줄일 수 있었음. ElasticSearch

On-the-fly 이미지 프로세싱

Backend, 2019

광고 소재 이미지를 실시간 프로세싱할 수 있는 시스템 개발. Express / Sharp 기반으로 이미지 리사이징 서버 구현. Amazon Lambda@Edge 환경에 배포하여 S3에 저장된 원본 이미지를 프로세싱 할 수 있는 CDN 환경 구성. Node, AWS Lambda, Amazon CloudFront

리타게팅 광고 제품

Backend, 2019

사용자의 참여 정보를 기반으로 광고 노출 및 광고 소재를 최적화하는 리타게팅 제품 개발. 연 매출 30억. 사용자 행동 추적을 위한 MMP(3rd-party event tracker) 연동 서버 개발. 동적 소재 생성을 위한 광고주 카탈로그 연동 서버 개발. 최적화 알고리즘 구현. Python, Django, MySQL, DynamoDB

뱅킹 솔루션 개발 및 유지 보수

Backend, 2017-2019

Java/Spring 기반의 사내 자체 프레임워크를 사용하여 코어 뱅킹 솔루션의 금융 상품 정의 서비스와 이자 계산 서비스 개발 과제 수행. Java, MySQL, Oracle RDBMS, Docker