$ whoami

장다윗_

Backend Engineer

지속적인 개발을 지향하는 백엔드 개발자입니다. 설계의 트레이드오프를 항상 고민하며, 현실적으로 더 생산성 있고 유지보수하기 좋은 코드를 지향합니다.

물리 전화 ↔ VoIP 연동 프로젝트에 초기 멤버로 참여해 설계·개발했고, 하루 약 1억 9천만 건의 이벤트가 발생하는 알림 서버의 구조를 개선한 경험이 있습니다.

01

Skills

  • Kotlin / Java
  • Go
  • JavaScript
  • PostgreSQL
  • Redis
  • DynamoDB
02

Career

토스뱅크

24.12 — 현재

상담플랫폼 팀 · Server Developer KotlinSpring

  • 토스뱅크의 상담 문서 시스템 개발
  • 완전한 AICC로의 전환을 위한 Agent Desk 개발

채널코퍼레이션

22.02 — 24.12

Meet 셀 · 백엔드 엔지니어 JavaGo

  • 전화 연동 주요 API 설계 및 개발 / 유지보수
  • STT / TTS 연동 및 호 보류, IVR 등 부가 기능 개발

Core 셀 · 백엔드 엔지니어 TypeScriptGo

  • 알림(socket.IO) 서버 개발 및 Redis cluster 유지보수
  • 이미지 / 동영상 처리를 위한 media 서버 개발 및 최적화
03

Projects

전화연동 프로젝트 개발 / 유지보수

22.03 — 24.12
  • 전화로 인입되는 상담을 채널톡에서 통합 응대·관리하려는 니즈가 꾸준했고, 이를 위한 전화 연동 서비스 개발이 필요했습니다.
  • 음질·지연 등 전화 품질을 직접 컨트롤하기 위해 로우 레벨부터 개발해야 하는 상황이었습니다.
  • 초기 멤버로 합류해 메인 API 및 도메인 모델 설계·개발을 진행했습니다.
  • SIP 프로토콜 리시빙/서빙 및 미디어 스트리밍을 위해 서버를 분리하고, 메인 API 서버와의 통신 규약을 protobuf로 정의했습니다.
  • 핵심 기능 출시 후 유지보수·모니터링 시스템을 구축했고, 이후 STT·TTS·호 보류 등 부가 기능을 개발, IVR을 채널톡의 다이어그램 기반 상담 자동화 도구인 워크플로우와 연동해 개발했습니다.

메시지 전송 트래픽 최적화

23.02 — 23.04
  • 채널톡 트래픽의 대부분은 메시지 전달입니다. 이를 중개하는 Redis pub/sub과 알림 서버를 모니터링하던 중, 실제 전달 용량보다 훨씬 많은 트래픽이 발생함을 인지했습니다.
  • 디깅 결과 socket.io Redis adapter의 Pattern subscription에서 비효율적 비용이 발생함을 발견했습니다 — 모든 소켓 서버가 모든 chat의 publish를 수신하고 있었습니다.
  • 채널톡 특성에 맞게 어댑터를 직접 재구현해 Pattern subscription을 제거하고, 클라이언트가 Room에 join할 때만 subscribe하도록 했습니다. (그룹챗·유저챗의 참여 특성 등 추가 최적화)
−98%Data transfer 감소
−10%pRedis CPU 점유율

소켓 서버 부하 분산 · Redis Partitioning → Clustering

23.02 — 23.07
  • 채널톡 소켓(알림) 서버는 하루 평균 1억 9천만 건, 분당 13만 건의 이벤트를 처리합니다.
  • 기존에는 채널 단위로 수동 파티셔닝하여 각 파티션에 별개의 Redis·알림 서버를 두었으나, 채널별 사용량 편차와 특정 고객사의 집중으로 핫 파티션 문제가 발생했고 리밸런싱도 수동으로 복잡했습니다.
  • Redis Clustering과 Redis 7의 Sharded Pub/Sub을 리서치해 구조를 개선했습니다. 당시 node-redis에 필요한 커맨드 구현이 없어 직접 컨트리뷰트하기도 했습니다.
  • Cluster의 해시태그 기능으로 부하를 고루 분산하고, 메인 API 서버의 직접 Publish 구조를 제거해 무작위 알림 서버로 Broadcast하도록 결합도를 낮췄습니다.
−30%Redis 인스턴스 비용
Scale In/Out 유연성 · 안정성 확보
04

Experience

오픈소스 기여

Redis 구조 개선 중 PUBSUB SHARDNUMSUB 커맨드가 node-redis에 없어 직접 기여했습니다. (PR #2541)

05

Education

인하대학교

20.03 —

컴퓨터공학과