소개
DDD를 통한 도메인 정의와 빠른 문제 해결에 관심이 있는 서버 개발자입니다.
팀 간 도메인 분리&정제 가 빠른 문제 해결과 적은 기술 부채의 핵심이라고 생각합니다.
비즈니스 목표와 기술 부채 해결의 타협점을 찾기 위해서 빠르게 움직일 수 없도록 만드는 시스템을 찾고 개선하는 것을 즐깁니다.
좋은 개발자란 빠르고 기술적으로 올바르게 문제를 해결하는 사람이라 생각하기 때문에
팀의 목표에 따라서 기술 부채를 의도하기도, 변경에 유연한 시스템을 디자인하기도 합니다.
현재 커리어 관심사는 팀 토폴로지의 Enabling team 역할입니다.
업무 이외에도 Linux와 오픈 소스에 관심이 있어서 AUR에 패키지 관리를 하거나, 만든 프로젝트를 github에 공유하기도 합니다.
경력
초당 트래킹 22,800+의 광고 성과 분석 솔루션
- 트래킹 서버 운영 & 유지보수
- 배포, 개발 환경, 성능 최적화 등 팀 범위의 기술 도입 및 지식 공유
MAU 2,000만+, 초당 광고 할당 3,000+의 리워드 광고 회사
- Golang으로 DSP (광고 할당 서버) 구축 및 Ad Exchange 연동
- DSP 운영 & 유지보수
- 광고 상품 서버 운영 & 유지보수
- 사내 Python Expert로써 전사 범위의 기술 도입 및 지식 공유
- 레거시 모노리스 포팅 TF 리딩
역량
도메인 분리 & 정제
기술 부채 해결 / 레거시 개편
인프라
- [Buzzvil] Istio 트래픽 미러링으로 마이그레이션 검증
- 7k+ RPS 광고 서버 포팅
- 3k+ RPS 광고 할당 서버 분리
- [Buzzvil] DevOps Edge program 멤버로 지속적인 인프라 역량 학습
- [Buzzvil] 모노리스 프로젝트의 CI 소요시간 4배 단축
- 개인 프로젝트로 HA로 구성된 Kubernetes 클러스터 2개를 바닥부터 구축 및 운영 중
- 아래 Projects의 homelab 참조
팀을 넘어선 기술 공유 및 도입
- [Buzzvil] 테크 블로그를 활용한 사내외 지식 공유
- [Buzzvil] 유관 프로덕트팀과의 도메인 분리를 선제적으로 제안 및 DDD 이주 가이드 & 리뷰
- [Buzzvil] Python expert group 리딩하며 Python 프로젝트 코드 퀄리티 개선
- [Buzzvil] Python type checker (mypy) & code formatter (black) 전사 도입
- 제안서를 통한 전사 합의
- 지속적인 typing 가이드 & 리뷰
- Python 버전 업그레이드마다 신규 typing 기술 공유
- [Buzzvil] 프로젝트간 lint 설정을 버전으로 관리하며 동일하게 유지하는 툴 도입
- [Buzzvil] Python package manager로 pip-tools 대신 poetry 도입
학력
- 학위 논문 주제: 데이터센터 워크로드를 위한 적응형 성능격리 스케줄러
- 재사용 가능한 실시간 워크로드 모니터링 프레임워크를 개발해서 연구원들과 공유
- M1522.000600 Teaching Assistant 하는 동안 실습 & 교육을 위한 자동 코드 채점 웹 서비스를 개발 후 학기 동안 운영
- 게재 논문
한국 항공대학교
Bachelor of Science in Computer Science
2013.03 ~ 2016.08
- 총 7학기 조기 & 차석 졸업
- 알고리즘 문제 풀이 경연대회
- 2014 ACM-ICPC 대전 본선 22위
- 2015 LG CodeChallenge 본선 37위
Projects
Linux 머신에 Kubernetes 설치 이후부터 GitOps 기반 클러스터 구축하고 운영하는 프로젝트
- 프로덕션급의 스택을 가진 Kubernetes cluster를 바닥부터 구축 & 운영하는 경험을 위해 작업
- 인프라를 구성하고 자동 운영 상태를 만드는 것이 주목적
- 현재도 해당 repository 기반 GitOps로 클러스터 운영중
- 아래의 서버가 실제로 동작 중 (FYI. 웹 UI가 있는 서버들은 아닙니다)
- blocky라는 DNS proxy ⇨ dnsb.bhyoo.com (DNS, DNS over TLS, DNS over HTTPS)
- Python Formatter black의 서버 ⇨ black.bhyoo.com
- 관련 기술: Kubernetes, Terraform, Helm, GitOps, ArgoCD, Traefik, Rook, Prometheus, Grafana, Docker, Cloudflare, Github Actions
8k+ star의 시간 관련 Python 라이브러리에 기여
- 전체 코드에 Type annotation 추가하는 기여
- diff 총 합 1200+ 줄 정도의 PR
- 1.0.0 릴리즈에 포함됨
Python linter인 flake8의 플러그인 개발
- 기존 플러그인이 false alarm 문제가 있어서 개발
- 정적 분석으로 파라미터가 여러개일 때 가독성을 위해 positional argument 대신 keyword argument를 사용하도록 가이드
외부 활동
Skills
업무에서 경험한 기술들입니다.
백엔드
- Python, asyncio, Django, FastAPI, gunicorn, sqlalchemy
- Golang, fiber
- gRPC, Protobuf
- Elasticsearch, Kafka, MemoryDB, Athena, DynamoDB
- Pact, pytest
- mypy, flake8, nitpick, poetry
- IntelliJ
인프라
- Kubernetes, Docker, Helm, ECK
- Istio, Traefik
- Terraform
- Drone CI, Github Actions, Jenkins, Spinnaker
- Datadog, Prometheus, Grafana, Loki, Sentry
- Linux