About Me
Java & Spring / NodeJS & TypeScript, AWS 기반의 10년차 서버 백엔드 개발자로
누적 회원수 100만의 에듀테크, MAU 1,500만 & 일 주문 300만 커머스, 일 PV 2,000만 포탈 등의 서비스에서 백엔드 플랫폼 개발 및 AWS 인프라 구축 등을 해왔습니다.
개인이 하고 싶은 일 보다는 회사와 팀에 도움이 되는 개발을 해야한다는 생각에
xtrabackup, pt-online-schema-change, MHA를 활용한 MySQL 운영, Ansible을 이용한 IDC 인프라 운영을 해오기도 했습니다.
테스트 코드 작성을 당연하게 생각하여 전 직장 시스템의 경우 2500개의 테스트 케이스가 하루에도 수십번 수행되는 환경을 구성하였습니다.
현재는 CTO로 사업과 제품의 방향성을 고려하여 채용, 시스템 설계, 팀 매니징, 팀원과 팀의 성장 등을 주요 업무로 하고 있습니다.
Experience
MAU 1,500만, 일 주문 300만건의 커머스 서비스
- 대규모 트래픽, 데이터 환경에서의 API/Batch 개발
- 정산, 포인트, 주문 시스템의 레거시 개편
- 업계 최초 일정산, 광고 정산 등 비지니스 지원
- IDC / AWS 환경 모두에서 무중단 배포, 성능 테스트, 운영 시스템 구축
- 2019년 상반기 우수사원 수상
일일 PV 2000만의 포탈 서비스
- 포털 메인 페이지, 회원 서비스의 메인 개발자로 개발/운영
- EhCache를 이용한 로컬 캐시, 브라우저 전역 변수를 이용한 클라이언트 캐시등으로 API서버가 죽어도 문제가 없는 메인페이지 구성
- IDC 인프라 환경에서의 개발/운영
- 2016년 본부 추천 특진
KCC정보통신
웹 개발자
2014.02 ~ 2014.12
연매출 1000억의 중견 SI 기업
- 사내 프로젝트 개발 및 100억원의 SI 프로젝트 참여
- 전자정부 프레임워크, MyBatis, Oracle 환경에서의 개발 경험
역량
2018.04.01 ~ 현재
- 인프랩 CTO (2021.07.01 ~ 현재)
- 인프랩 신규 서비스(랠릿) 프로젝트 전체 리드 (2021.07.01 ~ 2022.01.31)
- 배달의 민족 정산 시스템팀 개발 파트 리드 (2019.07.01 ~ 2021.04.19)
- 배달의 민족 포인트 개편 TF 리드 (2018.04.01 ~ 2018.07.31)
레거시 시스템 리팩토링/리엔지니어링
- 인프런 전체 시스템 (JS & Express => TS & NestJS) 마이그레이션 (2021.06.01 ~ ing..)
- 인프런 RDS -> Aurora 마이그레이션 (2021.06.01 ~ 2021.06.20)
- 배달의 민족 정산 시스템 AWS 마이그레이션 (2020.06.01 ~ 2020.11.20)
- 배달의 민족 주문 시스템 개편 (2018.08.01 ~ 2018.10.31)
- 배달의 민족 포인트 시스템 개편 (2018.04.01 ~ 2018.07.31)
- 배달의 민족 정산 시스템 개편 (2017.01.01 ~ 2017.08.17)
대용량 데이터 처리 및 성능 개선
- 인프런 PostgreSQL SlowQuery 전체 튜닝
- 일 주문 300만건의 정산 시스템 API / Batch 개발 및 운영
- 일 주문 100만건의 포인트 시스템 메세지큐 / API / Batch 개발 및 운영
- 일 PV 2000만건의 포털 메인페이지 개발 및 관리
- Message Queue (AWS SQS) 를 이용한 비동기 포인트 처리 / 메일 발송 시스템 구현
- 대용량 Batch 시스템 구현
- Pinpoint/Ngrinder를 통한 성능 테스트 및 개선
- JPA / Querydsl / MySQL 성능 개선
견고한 데이터 구조 및 애플리케이션 설계
- 일 600억원 & 300만건 주문에서의 일일 정산
- 감사 추적(Audit Trail)을 위한 채권/미수금/보상의 Update가 없는 도메인 설계
- 감사 추적(Audit Trail)을 위한 이벤트 기반 포인트 도메인 설계
- 정산 프로젝트 TestCode 2500개 / Line Coverage 61%
IDC 및 AWS 클라우드 인프라 운영 관리
- [AWS] Jenkins / Code Deploy / Beanstalk 을 이용한 무중단 배포
- [IDC] Jenkins / L4 / Nginx를 이용한 무중단 배포
- [IDC] MHA 를 이용한 MariaDB HA 환경 구성
- [IDC] Ansible를 이용한 IDC 인프라 자동화
Skill
현재 업무에 사용중 혹은 사용했던 기술들입니다.
Backend
- Java, Groovy, NodeJS (TypeScript),
- NestJS, Spring Boot, Spring MVC, Spring Batch, Spring Security, Spring Data JPA/Redis, Spring Cloud AWS
- TypeORM, JPA, Querydsl, Hibernate
- Jest, Supertest, Junit4/5, Mockito, Spock
- Gradle, Maven
- IntelliJ, WebStorm, Visual Studio Code
DevOps
- MySQL, MariaDB, PostgreSQL
- Jenkins, TravisCI, AWS Code Deploy
- AWS Beanstalk, AWS SQS, Elastic Cache (Redis), RDS (Aurora), S3, EC2, Cloud Watch
- Nginx, Tomcat
- Pinpoint, Ngrinder
- Linux Centos
Frontend
- ES6
- Npm, Grunt, Webpack
- Handlebars, Lodash
- Backbone
Opensource
개인 블로그
https://jojoldu.tistory.com/개인 기술 블로그
- 업무에서 만난 문제, 회사에서 사용해야할 기술, 팀내 많은 분들이 실수하는 부분 등을 자세히 정리하여 공유하기 위한 블로그
- 평일 평균 PV 6,000 ~ 7000, MAU 4.9만, 월 PV 15만
- 2016년 부터 꾸준히 작성하고 있으며 현재 누적 PV 430만
spring-batch-querydsl
https://github.com/jojoldu/spring-batch-querydslQuerydsl-JPA를 사용할 수 있는 Spring Batch Item Reader
- 업무에서 사용중인 Querydsl-JPA가 Spring Batch에서 공식지원하지 않아 이를 위한 오픈소스 개발
- 해당 오픈소스 개발 과정은 사내 기술 블로그에 포스팅
Spring Batch 오픈소스 PR
- 커머스 서비스를 운영하면서 Spring Batch에 본격적으로 입문
- 업무 진행하면서 발견된 이슈에 한해서 계속 PR 요청
spring-boot-aws-mock
https://github.com/jojoldu/spring-boot-aws-mockAWS Mocking용 Spring Boot Starter
- AWS의 메세징 큐 서비스인 SQS 개발 할때마다 OTP 인증이 필요한게 귀찮아서 개발
- 여러 개발자들이 격리화된 AWS 환경에서 개발할 수 있게 지원하는 Mocking 라이브러리
- 별도로 Docker 설치 없이 프로젝트를 실행할수 있게 H2와 같은 사용성 지원
- ElasticMQ 등 사용
- 오픈 초기에는 사내 여러 팀, 서비스에서도 사용
- AWS Localstack의 발견으로 확장하지 않을 예정
translator
https://github.com/jojoldu/translatorIntelliJ IDEA 기반 IDE에서 사용할 수 있는 번역 플러그인
- 구글/네이버 사전을 검색하기 위해 개발 중간 중간 화면 이동하는게 귀찮아서 개발
- JavaDoc 번역, 변수명 짓기 등 영문 <-> 한글 번역 지원
- PC 애플리케이션의 Freezing을 막기 위해 모든 이벤트를 논블로킹으로
- Java8 CompletableFuture 기반 구현 및 테스트 코드 작성
Education
AWS 운영에 필요한 기본 개념들과 배포 환경 구성 교육
- 신규 개편할 포인트 시스템의 AWS 인프라 구축이 필요해 참여
- Code Deploy를 통한 무중단 배포, Cloud Watch 모니터링 등
오라클을 기반의 쿼리 튜닝 교육
- 정산 시스템을 개발/운영 하면서 복잡한 쿼리 + 쿼리 성능 튜닝의 필요성을 느껴 참여
- 기본적인 인덱스, 실행 계획, RDBMS의 구조
- 실제 업무에 적용 후 쿼리 성능 향상 (5초 -> 1.2초)
자바지기 박재성님의 교육
- 테스트 코드와 클린 코드 교육
외부 활동
여러 주제로 발표와 기고, 출판을 해왔습니다.
- 인프콘 2022 - 인프런 아키텍처의 과거, 현재 그리고 미래
- MongoDB Day Seoul 2022 - 초기 스타트업과 MongoDB Search
- 우아콘 2020 - 수십억건에서 Querydsl 사용하기
- 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
- EO 인터뷰
- 2019 우아한 스프링 배치
- 인프런 - IntelliJ IDEA 가이드
- 2018 KCD - IntelliJ IDEA만으로 개발하기
- 2018 JetBrains Day - Upsource를 이용한 코드리뷰
- 마소 394호 - AWS EC2와 TravisCI를 활용한 무중단 배포 서비스