미리보기
기본 정보
다양한 도전과 경험을 기반으로 지속 가능한 서비스를 구축 및 제공하는 데 관심이 많은 7년 차 개발자입니다. 우아한형제들에서 딜리버리 프로덕트에서 배달 중계, 관제, 라이더 관리, 배차 등 다양한 도메인을 개발한 경험이 있습니다. 현재는 팀 Tech Lead로 지속 가능한 프로덕트를 구축하는데 기여하고 있습니다.
자기소개
서비스에 대한 이해를 바탕으로 적절한 해법을 도입하여 지속 성장 가능한 서비스를 구축하는걸 좋아하는 개발자입니다.
서비스 관점에서 문제를 정의하고 필요한 해법을 적용하는 개발자입니다.
기술 관점이 아닌 서비스 관점에서 문제를 정의하고 필요한 기술적 해법들을 도입합니다.문제의 원인을 끝까지 파악하고 이를 바탕으로 적절한 기술을 적용하는 개발자입니다.
발생한 문제에 대해 원인을 추정하는 것이 아닌 파악하고 이를 바탕으로 적절한 기술을 제시합니다.신뢰하고 의지할 수 있는 동료가 되려고 노력하는 사람 입니다.
주어진 역할을 책임감 있게 수행하고, 동료들의 고민도 공감하고 해결 해주기 위해 적극적으로 노력합니다.
(동료들의 추천으로 선발되는 우아한형제들의 우아한 인재상 수상)
기술 스택
Java, Spring, Spring Boot, Spring Cloud, spring-jpa, Kafka, kafka-streams, MySQL, AWS, Redis
경력
주식회사 우아한형제들
Tech Lead | 배차시스템팀 | 재직 중
2023.07. ~ 재직 중 (1년 3개월)
배민커넥트 배차시스템 시스템 구축 및 운영
Monolithic architecture를 MSA로 전환
실시간 배차를 위한 대규모 연산처리 프로세스 개선 및 고도화
배차 매칭/추천 프로세스 고도화
배차 프로덕트 데이터 설계를 통해 데이터 가시성 확보 및 유관부서에 데이터 제공
주식회사 우아한형제들
Tech Lead | 딜리버리서비스팀
2021.07. ~ 2023.06. (2년)
주문, 배달 중계 시스템 구축 및 운영
Monolithic architecture를 MSA로 전환
N개의 주문시스템, M개의 배달시스템을 중계 및 표준화하는 시스템 아키텍처 설계 및 구축
실시간 주문, 배달 데이터 처리하기 위해 Kafka를 활용한 이벤트 기반 아키텍처 구축 및 고도화
주식회사 우아한형제들
사원 | 딜리버리플랫폼팀
2018.10. ~ 2021.06. (2년 9개월)
배민커넥트(라이더) 관리 및 프로모션 시스템 구축
- 커넥트 시간제 보험 시스템 구축
- 커넥트 배달미션(프로모션) 시스템 구축
- 커넥트 앱 가입 시스템 구축
프로젝트
레거시 시스템 구조 개편을 통한 생산성 및 안정성 증대
우아한형제들
2024.01. ~ 2024.08.
<문제 상황>
레거시 시스템의 복잡도 및 구조로 인해 생산성이 낮고 비즈니스 요구사항을 제대로 반영하지 못함
개발 및 QA에 많은 시간이 소요됨
기능 배포 후 예상치 못한 사이드 이펙트로 잦은 롤백 및 핫픽스 진행
레거시 시스템은 문제 상황에 맞지 않고 팀에 익숙하지 않는 기술로 구현되어 시스템 안정성이 낮음
배포 및 트래픽이 많은 시점에 시스템 다운타임 및 간헐적 오류가 발생
팀이 사용 중인 기술에 대해 깊이 있게 알지 못해 문제 발생해도 원인을 해결하지 못함
비기능적 요구사항을 만족시키지 못해 서비스를 제대로 제공하지 못함
<문제 해결>
도메인의 경계를 구분하여 복잡도를 낮추고 독립적 개발 및 배포할 수 있는 환경 구축
도메인 및 R&R을 정리 및 분리함으로써 시스템 복잡도를 낮춤
MSA로 전환을 위한 분산 환경 아키텍처의 기반기술 도입 (
Spring Cloud Config, Spring Cloud Bus, Service Discovery
)공통 Util(Builder, Factory등) 코드 구현 및 가이드라인 제공 (
Kafka, Kafka Streams, Redis, Feign
)
문제 상황에 맞지 않고 팀에 익숙하지 않는 기술을 제거하고 적절한 기술로 대체
초 마다 수행 해야하는 작업을 Kafka Streams Punctuator에서 Cron기반의 Scheduler로 대체
WebFlux로 Blocking 기반의 병렬처리하는 로직을 Thread Pool 기반 처리로 대체
시스템의 비기능적 요구사항을 충족시키기 위한 이슈 분석 및 해결방안 제공
Transactional outbox Pattern을 적용한 안정적 메시지 발행 환경 구축
Kafka를 활용하여 파티션 기반의 작업 할당을 통한 분산처리 환경 구축
API 지연에 대해 LB, Nginx, Tomcat 로그 및 매트릭 분석을 통해 원인 파악 후 API 성능 개선
<성과>
도메인 기반의 MSA 아키텍처를 도입하여 독립적 개발 및 배포 환경 구축
시스템 다운타임 제거 및 확장성 있는 환경을 통해 안정성 증대
비즈니스 요구사항 반영 소요시간 개선(1M 이상 소요되는 작업을 1~2 Week로 감소)
적절한 기술을 도입하여 시스템 안정성 증대 및 기술적 복잡도를 감소
시스템 다운타임 감소 간헐적으로 발생하던 오류 제거
팀 개발자들이 지속적으로 유지보수 할 수 있는 기술로 시스템 구축
비기능적 요구사항(성능 요구 사항)을 만족시키는 시스템 구축
분당 30~50만건 이상 이벤트를 안정적으로 발행할 수 있는 환경 구축
분당 80만건의 API 요청을 500ms 이하의 응답속로 처리할 수 있는 환경 구축
기존에 처리시에 N분이상 처리되는 요청에 대해 M초 이내로 처리하도록 개선
<역할>
프로젝트 제안 및 설계
테크 리딩 및 개발
<참고자료>
배차 상황 인지를 위한 데이터의 가시성 확보
우아한형제들
2024.02. ~ 2024.05.
<문제 상황>
배차 최적화 및 추천 선호도 개선을 위한 분석 데이터들의 구조가 복잡하고 파편화되어 있음
서비스 개선에 필요한 추가 데이터 요구사항을 반영하지 못함
데이터의 파편화 및 구조의 복잡도로 인해 데이터 전처리에 많은 작업이 필요
데이터가 부재하여 서비스 분석이 어렵고, 분석가 및 엔지니어가 하드코딩을 통해 데이터를 처리
라이더의 추천 선호도를 분석하기 위한 데이터가 부재하여 서비스 개선의 어려움이 발생
배차 정책이 변경되었을 때 하드코딩된 데이터가 틀어지거나 쿼리를 수정해야하는 공수가 발생
<문제 해결>
배차시스템 내의 도메인별 파생되는 데이터 정의 및 설계, 데이터 표준화 진행
사용자 또는 시스템에서 일어나는 행위 및 상태 그리고 파생되는 데이터 분석 및 정의
공통된 포맷으로 데이터 레이크에 연동하여 데이터 파편화를 방지
하드코딩된 데이터를 분석하여 이를 시스템에서 제공하도록 변경 및 마이그레이션 가이드 제공
정책이 변경되도 데이터 분석가 및 엔지니어는 최종 데이터를 제공받아 안정적으로 데이터를 사용
<성과>
서비스 개선을 위한 데이터 가시성 확보 및 기반 데이터 제공
배차의 효율을 판단하기 위한 배달 데이터, 라이더의 추천 선호도를 파악하기 위한 추천 데이터 제공
분석가가 필요한 신규 데이터 추가 시 생산성 확보
신규 데이터 추가 시 요구사항을 처리하지 못하거나 시간이 오래 소요되는 문제 해결
1 Month 이상 소요시간을 1 Week로 감소
신규 데이터를 기반으로 실시간 서비스 매트릭 대시보드를 구축 및 알림을 통해 서비스 가시성 확보
실시긴 데이터 처리 및 수집을 위한 기술 도입 및 연동(
Kafka Streams, Prometheus, Grafana
)
<역할>
프로젝트 제안 및 설계, 테크 리딩
유관 부서와의 커뮤니케이션 및 데이터 설계
시스템간 이벤트 연동 방식 고도화를 통한 서비스 이슈 개선
우아한형제들
2023.02. ~ 2023.02.
<문제 상황>
시스템간 연동방식의 문제로 이벤트의 순서 변경 또는 이벤트 유실이 발생하여 비즈니스에 영향이 발생
배달 생성이 되었으나 배달 취소 이벤트가 누락되어 라이더는 취소된 배달을 수행하게 됨
기상악화로 인한 배달 반경 제한 후 거리제한 해제 이벤트가 발행되지 않아 배달 반경이 제한되어 주문이 불가
<문제 해결>
이벤트를 안정적으로 발행할 수 있는 기법에 대해 검토 및 유관부서에 PoC 진행
Transactional outbox Pattern & log tailing 기법 도입 결정 및 유관 부서와 연동(2023 우아콘 발표)
시스템에서 outbox 테이블 및 적재 로직 구현
Debezium에서 제공하는 Mysql Kafka connect를 기반으로 DB, Kafka와 연동
Debezium Mysql Kafka connect 병렬처리 한계를 Application Architecture를 설계하여 개선
비즈니스 영향도가 큰 기능부터 이벤트 발행 방식을 점진적 전환하여 배포 영향도 최소화
<성과>
이벤트 유실 및 순서 변경으로 발생하는 비즈니스 이슈 제거
분당 20~30만건의 이벤트를 안정적으로 처리할 수 있는 시스템 기반 구축
사내 유사한 구조의 시스템에 기술 전파 및 도입
<역할>
프로젝트 제안 및 설계 및 개발
유관 부서와의 커뮤니케이션 및 프로젝트 관리
배달 연동 프로세스 표준화를 통한 생산성 증대
우아한형제들
2022.10. ~ 2022.11.
<문제 상황>
우아한형제들은 음식 주문부터 시작해서 B마트, 배민스토어까지 새로운 주문 서비스가 추가되고 있음
주문 서비스를 배달플랫폼과 연동할 때마다 표준화된 스펙 없이 개별로 연동되어 서로 다른 스펙을 관리
신규 기능이 추가될 때마다 각 주문 서비스 연동 로직을 수정하고 관리해야 하여 생산성이 낮고 유지 보수에 어려움이 발생
<문제 해결>
주문 서비스와 연동이 필요한 데이터와, 행위를 정리하여 표준화하여 연동 스펙을 정의 및 관리
동일한 기능에 대해 주문 서비스별로 연동 채널이 기능별로 분리되어 있는 것을 하나의 채널로 통합(일원화) 후 데이터의 순서 및 정합성을 보장할 수 있도록 변경 (
AWS SNS & SQS를 Kafka로 전환
)신규 기능 개발시 특정 서비스타입에 국한되지 않고 전체서비스에서 사용할 수 있도록 기능을 제공하여 생산성 증대
<성과>
특정 기능을 각 서비스별로 개발 및 논의 및 개발해야하는 비용을 감소
신규 기능 추가 시 2Week 이상 소요되는 것을 1Week 이내로 감소
주문서비스와의 연동을 단일 채널로 통합하고 데이터 일관성 및 정합성 제공
<역할>
프로젝트 제안 및 설계, 테크 리딩
유관 부서와의 커뮤니케이션 및 프로젝트 관리
포트폴리오
교육
우아한테크캠프
사설 교육
2018.07. ~ 2018.08. | 졸업
광운대학교
대학교(학사) | 컴퓨터소프트웨어
2011.03. ~ 2017.02. | 졸업