강하동 — 경력 기술서

이름 강하동
직무 Backend Engineer
이메일 hdkang2007@gmail.com

주식회사 윌로그

Backend Developer · 2025.03 ~ 재직중

기술 스택: Nest.js, Spring, PostgreSQL, InfluxDB, Redis(Cache, BullMQ), Kafka, AWS(ECS, EKS, S3, Glue, Athena)

Willog Platform — 서비스 전반의 아키텍처·인프라 부채 개선

2026.02 ~ 진행 중

윌로그는 물류 전 구간의 온도·습도·충격·위치를 측정하는 IoT 로거와 관제 SaaS를 함께 제공하는 콜드체인 모니터링 서비스를 운영하고 있습니다. 화물 유형별로 먼저 구축된 레거시 3종(바이오·창고·국제운송)은 모든 측정 정보 조회를 InfluxDB에 직접 의존하고 있습니다.

백엔드 조직이 분화되면서, 기존 서비스 전반에 흩어져 있던 아키텍처·인프라 부채를 정리하고 공통 플랫폼을 구축하는 업무를 맡았습니다.

문제

해결 1 — Telemetry API 신설 및 대체

측정 정보 조회를 전담하는 Telemetry API를 별도로 설계·구축하여, 각 서비스의 InfluxDB 직접 의존성을 제거했습니다. 조회 정책을 단일 지점에서 일괄 반영할 수 있는 구조로 전환하여, 정책 변경이 전 서비스에 동일하게 적용되도록 했습니다.

해결 2 — InfluxDB → PostgreSQL 단계적 이관 (진행 중)

검토했으나 채택하지 않은 대안

주요 업무 및 상세 역할

성과 / 결과

현재 진척과 남은 범위

Willog Hub — 차세대 플랫폼 기반 설계 및 차량 모니터링 서비스 구축

2025.03 ~ 2026.02

Willog Hub는 레거시의 기술 부채를 근본적으로 해결하기 위해 구축한 차세대 플랫폼이며, 차량 모니터링은 해당 플랫폼을 기반으로 런칭한 첫 대외 서비스입니다.

문제

레거시 서비스의 기술 부채로 신규 기능 구현과 유지보수가 어려워진 상황에서, 차세대 플랫폼(Willog Hub)을 기반으로 신규 차량 모니터링 서비스를 함께 만들어야 했습니다.

접근 — 서비스보다 기반을 먼저

차량 서비스를 곧바로 구현하지 않고, 차세대 플랫폼의 공통 기반(도메인 모델·백오피스)을 먼저 구축한 뒤 그 위에 서비스를 올리는 순서로 진행했습니다.

Phase 1 — 공통 기반 설계 및 백오피스 백엔드 단독 개발

Phase 2 — 차량 모니터링 서비스 아키텍처 설계 및 MVP

해결 1 — 10분 단위 시계열 집계로 InfluxDB 의존도 축소

차량 서비스가 실제로 요구하는 조회 정밀도를 분석한 결과, 과거 시점 측정 정보를 원시 해상도로 조회할 필요는 없다고 판단했습니다. 이에 10분 단위 시계열 집계 배치 로직을 설계하여 서비스에 필요한 측정 정보를 PostgreSQL에 적재하는 방식을 채택했고, InfluxDB 의존도를 낮추면서 조회 성능의 안정성을 확보했습니다.

해결 2 — 위치 정보 암호화의 적용 지점 선정

규제 요구사항인 위치 정보 암호화를 측정 정보의 원천인 InfluxDB 계층에 적용할 경우, 같은 데이터를 사용하는 기존 레거시 3개 서비스 전체에 사이드 이펙트가 발생할 수 있다고 판단했습니다. 이에 원천을 건드리지 않고, 10분 단위 집계 결과를 PostgreSQL에 저장하는 시점에 AES 암호화를 적용하는 아키텍처를 제안했습니다.

해결 3 — 제약된 컨테이너 환경에서의 20만 row 엑셀 다운로드

ECS 컨테이너당 vCPU 0.5 / memory 0.5GB인 제약 환경에서 20만 row 규모의 엑셀 다운로드 기능을 구현했습니다. 기존 레거시는 화면에 표시되는 페이지 단위로만 엑셀이 생성되어 대량 데이터 다운로드가 사실상 불가능한 상태였습니다.

주요 업무 및 상세 역할

성과 / 결과


(주)펄핏

Backend Engineer · 2024.03 ~ 2025.01

기술 스택: Nest.js, MongoDB, Qdrant, Python, FastAPI, AWS(Lambda, Bedrock)

PerfittSize — 백엔드 아키텍처 개선 및 이미지 기반 신발 검색

2024.03 ~ 2025.01

PerfittSize는 단 한 번의 발 촬영으로 신발 사이즈를 모델별로 추천하는 B2B 서비스입니다. 고객사가 신발 모델을 등록하면 실측 정보를 기반으로 사이즈 추천 데이터를 산출해 제공하며, 모델 1건당 산출 비용이 발생합니다.

문제 1 — 서버리스 아키텍처의 유지보수 생산성 저하

Nest.js + AWS Lambda 기반 서버리스 아키텍처로 인해 디버깅의 AWS 콘솔 의존도가 높고 코드 복잡도가 증가하여, 장애 대응 및 신규 개발 생산성이 저하되었습니다.

해결 1 — Feature Flag 기반 무중단 점진 이관

메인 비즈니스 로직을 Layered Architecture Nest.js로 이관하는 프로젝트를 주도했습니다. 서비스 중단 없는 전환을 위해 Feature Flag를 도입하여 기능 단위로 트래픽을 점진 전환하는 방식을 택했고, 문제 발생 시 즉시 롤백 가능한 구조를 확보했습니다.

잔여 범위와 그 이유

재직 기간 중 핵심 로직 60%의 이관을 무중단으로 완료했습니다. 잔여 40%는 신규 기능 개발을 병행해야 했고 고객사별 스펙 협의가 선행되어야 하는 영역이어서 후순위로 판단했습니다.

문제 2 — 동일 신발의 중복 산출로 인한 불필요 비용

고객사로부터 사이즈 추천 요청이 지속적으로 인입되는 상황에서, 이미 산출이 완료된 신발과 구조적으로 동일한 신발이 다시 요청되어 재계산이 발생하고 있었습니다.

해결 2 — 이미지 벡터 검색 도입

오매칭 방지 설계

그 외 담당 업무

주요 업무 및 상세 역할

성과 / 결과


주식회사 인에디트 (inedit Corp.)

Senior Backend Developer · 2023.03 ~ 2024.02

기술 스택: Nest.js, PostgreSQL, BullMQ, Jest, DBT, Trino, AWS(Glue)

Brandazine — 레거시 마이그레이션 및 '협업' 도메인 재설계

2023.03 ~ 2024.02

Brandazine은 크리에이터와 패션 브랜드를 연결하는 프라이빗 네트워크로, 의류 대여·브랜드 행사 초청 등 브랜드-크리에이터 간 상호작용을 중개합니다.

문제 1 — 레거시의 조회 복잡도

Django REST Framework 기반 레거시를 Nest.js로 이관하는 전사 프로젝트에 참여했습니다. 조회 기능 하나에 테이블 간 7~9개의 nested join이 발생하는 고복잡도 시스템인 데다 초기 개발자들이 모두 퇴사한 상태여서, 당시 개발 조직의 판단으로 Nest.js 이관을 결정했습니다.

해결 1 — 점진적 이관과 조회 성능 개선

문제 2 — 유사 성격 기능의 분산 운영

의류 대여, 브랜드 행사 초청 등 브랜드-크리에이터 간 상호작용이 각각 별도 기능으로 존재해, 성격이 같은 활동이 서로 다른 Flow로 관리되고 있었습니다.

해결 2 — '협업' 도메인으로 재구성

이를 '협업'이라는 새로운 개념으로 재구성하는 전사 프로젝트에서 DB 설계와 백엔드 개발을 주도했습니다.

문제 3 — 데이터 파이프라인의 처리 요건 미충족

기존 AWS Glue 기반 파이프라인이 늘어나는 데이터 처리 요건을 충족하지 못해 개선이 필요한 상황이었습니다.

해결 3 — MWAA 대신 DBT + Trino 채택

주요 업무 및 상세 역할

성과 / 결과


(주)더블유클럽

Tech Lead · 2021.11 ~ 2023.03

기술 스택: Node.js, MongoDB, Redis, Jest, Firebase, AWS(SNS, SQS, S3, CloudFront, ECS)

WClub — Tech Lead 및 조직 운영

2021.11 ~ 2023.03

WClub은 결혼정보회사와 소개팅 앱이 각각 가진 문제를 해결하는 프리미엄·프라이빗 매칭 서비스입니다. 만남이 무산되었을 때 어느 쪽 사유인지를 판정하는 '귀책 판별'이 페널티·환불 정책과 직결되어, 정확성과 일관성이 요구됩니다.

조직 — Tech Lead 역할

최대 10인의 주니어 개발자를 리딩하며 개발 조직의 성장과 운영을 주도했습니다.

문제 — 성장에 따른 스케줄러 부하 집중

재직 기간 중 서비스 매출이 2배 성장함에 따라 매일 실행되는 '시간 만료 취소' 스케줄러의 처리 대상이 비례해 증가하면서, 단일 인스턴스에서 매칭 취소와 귀책 판별 로직을 함께 처리하기에 부하가 가중되는 문제가 발생했습니다.

해결 — SNS + SQS Fan-Out

성과 / 결과


쿠팡 주식회사

Software Developer → Senior Software Developer · 2016.06 ~ 2021.11

기술 스택: Spring, JPA, MySQL, Kafka, React.js, D3.js, AngularJS, AWS

RMS — 반품 검수 프로세스 설계 및 구현

2018.01 ~ 2021.11 · Senior Software Developer

RMS는 여러 경로로 인입되는 반품 상품을 검수해 재판매·리퍼비시·폐기를 결정하고 후속 처리를 지원하는 반품 관리 시스템입니다. 반품 검수는 상품 상태·구성품 누락 여부·상품 정책을 확인해 등급을 부여하는 공정이며, 그 '검수 기준'은 상품 카테고리·재질 등 조건에 따라 달라지는 검수 문항과 분기 규칙의 집합입니다.

문제

반품 검수 기준이 통일되어 있지 않아 검수 결과가 작업자 개인의 판단에 의존하고 있었고, 이로 인해 다음 문제가 발생했습니다.

기능 요구사항

해결 1 — 문답(Q&A) 기반 Decision Tree

검수 흐름을 Root Node(질문) → Branch(답변) → … → Leaf Node(최종 등급)로 구성되는 문답 기반 Decision Tree 구조로 설계하여, 검수의 일관성과 신뢰성을 확보했습니다. 작업자는 시스템이 제시하는 문항에 순차적으로 답하고, 그 경로에 따라 최종 등급이 결정됩니다.

해결 2 — D3.js 기반 트리 UI 어드민

주요 업무 및 상세 역할

성과 / 결과

RMS 민감정보 분리보관 — 상장 대비 보안 감사 대응

2020.03 ~ 2020.10 · Senior Software Developer

탈퇴자·장기 휴면자의 개인정보를 운영 DB에서 분리해 보관하고, 보관 기간이 지나면 파기하는 개인정보 보호 요건을 처리한 내용입니다.

문제

해결

주요 업무 및 상세 역할

성과 / 결과

TMS — 라스트마일 배송 시스템

2016.06 ~ 2017.12 · Software Developer

TMS는 전국 각지의 쿠팡 배송 캠프에서 배송 물품과 배송 대상을 확인·관리하는 라스트마일 시스템입니다.

문제 및 해결

성과 / 결과