About Me
- 전시 도메인 서비스 개발과 플랫폼 엔지니어링에 경험이 있는 8년차 백엔드 개발자입니다. 주로 Java와 Spring을 사용해서 백엔드 개발을 해왔고, Kubernetes 환경에서 플랫폼 엔지니어링 경험이 있습니다. 성능 병목이나 시스템의 비효율적인 구조를 찾아내서 개선하는 일에 진심인 편입니다. 최근에는 LangChain 등을 활용해서 LLM 기반 애플리케이션 개발에 관심이 있습니다.
- 함께 일한 동료로부터 평가받았던 저의 강점은 다음과 같습니다.
- 몰입, 집중력, 끈기
- 정보를 빠르게 습득하는 능력
- 문제점을 인식하고 다양한 방법으로 시도해서 문제를 해결하는 능력
Projects
주요 내용
- 11번가 Open API 시스템에 API Gateway를 도입하여 기존의 Monolithic 구조에서 벗어나 MSA로 나아갈 수 있는 환경 구성
- 자세한 내용은 11번가 TechTalk 2023 발표 내용 참고
본인이 기여한 점
- 기존 시스템 현황 파악 및 신규 시스템 설계
- 기존 시스템에서 인증, 인가 서버 분리
- API Gateway (Apache APISIX) 구축
- APISIX Java Custom Plugin 개발
- 신규 시스템으로 트래픽 마이그레이션
- 로깅, 모니터링 구축 (Prometheus, Grafana)
- 문서화, 사내 발표, 11번가 TechTalk 발표
사용한 기술스택 및 지식
- API Gateway : Apache APISIX with Helm Chart, Java Plugin Runner
- 인프라 환경 : Kubernetes, AWS EKS
- 인증, 인가 서버 : Java 17, Spring Boot 3 + MVC
결과 및 성과
- 최신 기술 스택을 사용할 수 있는 환경 조성
- 인증, 인가 로직과 비즈니스 로직의 강결합이 제거되어서 각 개발팀이 비즈니스 로직에만 집중할 수 있도록함
- 일관된 방식의 로깅과 모니터링을 제공
- GitOps, Hot-reload, Custom Plugin을 제공하여 개발, 유지보수 편의성을 높임
주요 내용
- 11번가에서 각 개발팀이 MSA, Cloud 환경(AWS EKS)에서 서비스를 운영할 수 있도록 플랫폼 개발
본인이 기여한 점
- 모니터링 환경 구성 (Prometheus, Grafana, Thanos)
- Kubernetes 오브젝트 생성 및 수정을 제어하는 Admission Controller 개발
- IDC와 AWS EKS Service Discovery 통합을 위한 Operator 개발
- Argo CD, Argo Rollouts 등 솔루션 운영
- line/ameria 기반 사내용 gRPC Client/Server 라이브러리 구성
- 11번가 IDP(Internal Developer Platform) Wheelhouse 개발 (Argo Workflows 프로비저닝 기능)
- Kubernetes 오브젝트 정보를 애플리케이션에서 활용할 수 있도록 CQRS 패턴 적용
사용한 기술스택 및 지식
- 인프라 환경 : Kubernetes, AWS EKS
- CI/CD : Bitbucket Pipelines, Argo CD (with Helm Chart), Argo Rollouts
- 모니터링 : Prometheus + Grafana(kube-prometheus-stack), Thanos
- 백엔드 앱 : Java 17, Spring Webflux, Spring Data MongoDB
- 프론트엔드 앱 : Svelte, Tailwind CSS
결과 및 성과
- 스케일아웃 가능하고 데이터를 오래 보관할 수 있는 모니터링 환경 구성
- Admission Control, Operator를 통해 안전하고 안정적으로 클러스터 운영
- 사내 개발자들이 쉽게 AWS EKS 환경에 Onboarding 할 수 있는 환경 제공
주요 내용
- 11번가 전시 상품 데이터는 Oracle DB의 Stored Procedure가 일정 주기로 실행되며 반정규화 테이블에 추가/수정/삭제되는 구조였음. 이 구조에서는 Oracle DB와의 의존성을 끊을 수 없는 상태이고, 일정 주기로 갱신이 이루어지기 때문에 실시간성이 떨어짐
- 이를 개선하기 위해 이벤트 기반으로 상품 데이터의 실시간 갱신이 가능하고 Oracle DB에 종속되지 않고 어느 DBMS로도 변경할 수 있는 시스템을 구축하였음
본인이 기여한 점
- 팀원들과 함께 논의하여 전체 프로세스 설계
- Spring Kafka 기반 Consumer Application 개발
- Kafka JDBC Connector를 구축하여 RDBMS 데이터 변경 분을 Kafka 메세지로 생성
- Kafka Broker/Consumer/Producer의 다양한 옵션에 대한 research 및 performance test
- ELK, Grafana, Metricbeat를 활용한 모니터링 환경 구축
- 기존 데이터와 신규 데이터의 비교 및 검증을 위한 Validator 구현 및 Grafana를 통한 시각화
- Spring Batch 기반 전시 상품 데일리 갱신을 위한 Batch Application 개발
- 대용량 데이터 처리 시 성능 병목 파악 및 성능 최적화
사용한 기술스택 및 지식
- Java 11, Spring Kafka, Spring Data MongoDB, Spring Batch
- Kafka Broker/Producer/Consumer/JDBC Connector
- MongoDB
- Elasticsearch, Logstash, Kibana, Metricbeat, Grafana
결과 및 성과
- 이벤트 기반 갱신으로 기존 대비 빠른 데이터 갱신
- 고비용의 Oracle DB에서 MongoDB를 사용함으로 인한 비용 절감
- 이벤트 기반 아키텍처의 이점인 느슨한 결합, 내구성, 확장성, 유연성 제공
주요 내용
- 11번가 모바일 메인탭의 External Web API 개발 (프론트엔드에 제공)
- 사내 서버 간 데이터 연동을 위한 Internal Web API 개발
- 레거시 코드의 리팩토링, 성능 개선, 신규 프로젝트로 이관
- 전시 플랫폼의 코어 로직 신규 개발 (영역 간 데이터 공유 기능, 페이징 기능 등)
- 애플리케이션 오류 모니터링, 운영 이슈 대응
본인이 기여한 점
- 다양한 주체와 원만하고 명료한 커뮤니케이션 (기획자, 디자이너, 다른 팀 서버 개발자, 프론트엔드 개발자, QA 담당자)
- 단위 테스트를 작성하여 변경에도 안전하도록 신뢰성 보장
- 응답 시간이 높은 API에 대한 병목 원인을 분석하고 다양한 방법으로 성능 개선 (캐싱, Thread Pool을 통한 병렬 처리 등)
- DDD에서 설명하는 Layer의 역할별로 코드를 리팩토링, 의존성 주입이 가능한 형태로 코드를 리팩토링
사용한 기술스택 및 지식
- Java 8, Spring Boot, JPA(Spring Data JPA, Querydsl), MyBatis, JUnit 5, RxJava, Caffeine (in-memory cache), Oracle DB SQL
- async-profiler를 활용한 성능 프로파일링, Apache JMeter를 활용한 서버 부하 생성
결과 및 성과
- 완성도 있는 서비스를 일정을 준수하여 개발 및 배포하여 회사 매출에 기여
- API 응답 시간 개선으로 사용자 경험 향상, 서버 리소스를 효율적으로 운영
- 리팩토링을 통해 코드의 가독성, 재사용성, 테스트가능성을 높임
- 전시 플랫폼의 코어 로직 개선으로 다양한 기획 요구사항을 수용 가능하게 되었음
- 영역 간 데이터 공유가 가능하게 되어 복잡한 UI로 디자인된 영역을 개발할 수 있게 되었음
- 페이징 기능을 베스트탭, 꾹꾹탭에 적용하여 서버 응답시간을 단축하면서도 화면에 더 많은 상품을 보여줄 수 있게 되었음
Experience
11번가 MSA, Cloud 플랫폼 개발
2018.9 SK플래닛에서 분사
11번가 전시 서비스 및 플랫폼 개발
11번가 전시 서비스 개발
Education
KOREATECH
한국기술교육대학교 컴퓨터공학부
2011.3 - 2017.2
- 학사 졸업
- 평점 평균 4.39/4.5
Coursera
Udemy
- Apache Kafka Series - Learn Apache Kafka for Beginners v2
- MongoDB - The Complete Developer’s Guide 2020
- Domain Driven Design: Complete Software Architecture Course
- Kubernetes for the Absolute Beginners - Hands-on
- Java Application Performance Tuning and Memory Management
- The Complete Cloud Computing Software Architecture Patterns