미리보기
기본 정보

빈틈없이 완전하고 안정적이며, 최적화된 구조와 성능을 가진 시스템을 개발하는 데에 관심이 많은 4년 차 개발자입니다. 현재 우아한형제들의 배달의민족 자체 배달 프로덕트에서, 배달 프로세스 및 주문/배달 중계 도메인을 담당하여 개발하고 있습니다.
자기소개
책임감, 성실함, 꼼꼼함, 빠른 속도가 강점이며, 인간관계를 제일 중요시하는 일 잘하는 개발자입니다.
반드시 기한 안에 완료합니다.
주어진 일에 대해 완전한 오너쉽을 갖고, 높은 퀄리티로 빠르게 정해진 기한 안에 반드시 해냅니다.
인간관계와 그 안에서의 커뮤니케이션을 매우 중요시합니다.
많은 일은 혼자 해낼 수 없습니다. 결국 함께 해내야 하기에, 관계와 커뮤니케이션을 가장 중요시합니다.
일을 잘하는 개발자입니다.
일 들을 우선순위에 따라 높은 추진력으로, 적극적으로 빠르게 해 나갑니다.
기술 스택
Java, Spring Boot, spring-jpa, Kafka, MySQL, AWS
경력
주식회사 우아한형제들
사원 | 딜리버리프로세스개발팀 | 재직 중
2022.01. ~ 재직 중 (3년 5개월)
배달의민족 자체 배달 시스템의 배달 프로세스 및 주문/배달 중계 도메인을 구축하고 운영하고 있습니다.
이벤트 파이프라인을 AWS SNS/SQS에서 Kafka로 전환하여 단일화하고, 이벤트 페이로드를 표준화시켰습니다.
배달 상태 도메인들을 분리 및 제거하여 시스템 복잡도와 개발, 인프라 비용을 크게 감소시켰습니다.
인프라 스펙 다운을 통해 연간 46,896,084원의 비용을 절감시킨 경험이 있습니다.
배치잡 실행시간을 40분에서 1분으로 감소시키거나 API 응답 속도를 2배 향상시키는 등, 시스템의 개선 포인트를 지속적으로 찾아 개선하고 있습니다.
프로젝트
주문이벤트 연동 표준화 및 단일화
우아한형제들
2022.10. ~ 2022.11.
<문제 정의>
주문 서비스 타입이 늘어남에 따라 통신 채널이 계속 추가되고 스펙도 제각각이었습니다. 이에 따라 스펙 변경이나 필드 추가 등의 개발이 필요할 경우, 개발 및 커뮤니케이션 비용이 증가하고 있었습니다.
<문제 해결>
시스템에 연결되어있는 모든 API와 AWS SNS/SQS 를 전수 조사했습니다.
타 시스템과 직접 통신하는 부분들을 모두 제거하고, Gateway를 통하도록 수정했습니다.
주문이벤트의 페이로드를 표준화하여 재정의하고, 연동 채널을 Kafka로 일원화하였습니다.
이벤트 소비 실패 시의 AWS SQS를 사용한 재시도 처리 및 최종 실패 시의 fallback 로직을 개발했습니다.
피쳐 플래그를 통한 비율 기반 점진적 배포를 통해 안정적인 배포를 진행했습니다.
<성과>
주문시스템과 배달시스템 간의 통신 프로세스를 표준화 및 단일화함으로써 커뮤니케이션, 이슈 대응, 개발 비용을 크게 감소시켰습니다.
이벤트 연동 방식을 Kafka로 전환하면서, 이벤트의 순서를 보장할 수 있게 되었습니다.
선 배포를 통한 데이터 검증, 꼼꼼한 단위 테스트 검증, 성능 테스트, 피쳐 플래그를 사용한 비율 기반 점진적 배포를 통해 에러/버그/장애 발생 0건을 달성했습니다.
추천도메인 분리
우아한형제들
2024.01. ~ 2024.05.
<문제 정의>
배달 시스템에서 배달 상태는 배차가 추천된 상태에서도 배차 완료 상태이고, 배차가 수락되어 확정된 상태에서도 배차 완료 상태였습니다. 이 때문에 복잡도가 매우 높았고 개발 시 많은 혼란을 야기했으며 데이터 분석에 어려움을 겪고 있었습니다.
배차 추천과 배달료 계산 flow가 비동기 방식으로 이루어져 있었고, 배달료 계산 처리가 지연되면서 배차 추천 자체가 되지 않는 큰 장애가 발생했습니다.
<문제 해결>
배차 추천 상태를 독립적인 추천 도메인으로 분리해 배차시스템으로 이관했습니다.
배차 추천 시 실행되는 배달료 계산을 동기 방식으로 새로 만들어 운영환경에서 데이터를 검증한 후에 적용했습니다.
전체 개발을 피쳐 플래그를 중심으로 설계하고 개발했습니다. 추천 도메인 분리 과제 오픈 시, 소수의 계약관계 라이더 분들을 대상으로만 합의하에 오픈을 진행하고, 피드백을 통한 반복적인 버그 수정을 하여 안정적이고 점진적인 배포를 진행했습니다.
추천 도메인 분리 과제 완료 이후, 이전에 사용했던 레거시 배달료 계산 로직을 모두 삭제했습니다.
<성과>
배차 추천과 배달료 계산 flow를 한 트랜잭션으로 묶어, 비동기 방식이었을 때 발생했던 장애의 재발 가능성을 제거했습니다.
배차 추천 도메인이 독립적인 도메인으로 분리되었으며, 해당 도메인 확장과 관련 데이터 분석이 훨씬 용이해 졌습니다.
해당 과제 이후 레거시 코드들을 제거하면서 성능이 크게 개선되어 인프라 스펙 다운을 진행했습니다. 총 연간 46,896,084원의 비용을 절감시켰습니다.
배달 상태 중 조리요청 상태 분리 및 시스템라이더 개념 제거
우아한형제들
2023.07. ~ 2023.12.
<문제 정의>
배달 프로세스에 조리 요청이라는 상태가 배달 상태 중 하나로 존재했고, 비즈니스 요구사항을 위해 가상의 라이더인 시스템 라이더라는 개념이 존재했습니다. 이 조리 요청 상태와 시스템 라이더 때문에 시스템의 복잡도가 매우 높았고, 데이터 분석 시 정확하지 않은 결과가 도출되고 있었습니다.
<문제 해결>
조리 요청 상태 분리와 시스템 라이더 제거를 위한 영향범위 전수조사를 진행했습니다.
조리 요청을 픽업 준비라는 신규 도메인으로 분리했습니다.
기존 조리 요청 및 시스템 라이더 관련 코드들을 모두 삭제했습니다.
모든 API, 이벤트 및 웹 소켓 스펙의 하위호환성을 유지하여 개발했습니다.
<성과>
배달 프로세스에서 조리 요청 상태와 시스템 라이더 개념을 제거해, 시스템 복잡도를 매우 많이 낮추었습니다.
데이터 분석 시의 시스템 라이더로 인한 부정확도를 제거했습니다.
배치잡 분산처리를 통한 성능 개선
우아한형제들
2022.06. ~ 2022.06.
<문제 정의>
매일 새벽 개인정보를 삭제하는 배치잡이 하나의 UPDATE SQL 쿼리로 실행되고 있었고, 40분이 넘게 걸려 슬로우 쿼리로 잡히고 있었습니다.
<문제 해결>
원활한 쿼리 수행을 위해 적절한 컬럼에 알맞은 INDEX를 추가했습니다.
하나의 Task로 수행되던 배치잡을 여러 개의 Task들로 잘게 쪼개 분리시켜, 여러 서버에서 분산처리 되도록 개발했습니다.
<성과>
40분이 넘게 걸리던 배치잡을 1분 이내에 완료되도록 개선했습니다.
포트폴리오
교육
우아한테크코스
사설 교육 | 백엔드 과정
2021.03. ~ 2021.12. | 수료
인천대학교
대학교(학사) | 컴퓨터공학부
2014.03. ~ 2021.02. | 졸업