이동욱

Java 백엔드 엔지니어

About Me

6년차 Java 백엔드 개발자로 SI, 포털, 커머스에서 개발/배포/운영 경험이 있습니다.
일 PV 2000만에서의 컨텐츠 서빙, MAU 1000만 커머스에서의 API/Batch/AWS 인프라 구축 등을 경험했습니다.
개인이 하고 싶은 일 보다는 회사와 팀에 도움이 되는 개발을 해야한다는 생각에 xtrabackup, pt-online-schema-change 등을 이용해 MySQL 운영을 해오기도 했습니다.
반복, 수동 작업을 자동화 하는 것을 좋아합니다.
최근엔 IDC 서버 관리 스크립트를 Ansible로 만들기도 했습니다.
테스트 코드 작성을 당연하게 생각하고 업무에 사용합니다.
담당 중인 정산 시스템의 경우 현재 1200개의 테스트 케이스가 추가되었고 여전히 추가 중입니다.

Skill

현재 업무에 사용중 혹은 사용했던 기술들입니다.

Backend

  • Java, Groovy, NodeJS
  • Spring Boot, Spring MVC, Spring Batch, Spring Security, Spring Data JPA/Redis, Spring Cloud AWS
  • JPA, Querydsl, Hibernate
  • Junit4, Mockito, Spock
  • Gradle, Maven
  • IntelliJ, Visual Studio Code

DevOps

  • MySQL, MariaDB
  • Jenkins, TravisCI, AWS Code Deploy
  • 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

개인 기술 블로그

  • 업무에서 만난 문제, 회사에서 사용해야할 기술, 팀내 많은 분들이 실수하는 부분 등을 자세히 정리하여 공유하기 위한 블로그
  • 평일 평균 PV 5,000 ~ 6000, MAU 4.5만, 월 PV 12만
  • 2016년 부터 꾸준히 작성하고 있으며 현재 누적 PV 180만을 달성했습니다.
  • Java, Spring, Database, AWS, CI/CD 등 업무에서 해결한 문제들을 정리하고 있습니다.

AWS Mocking용 Spring Boot Starter

  • AWS의 메세징 큐 서비스인 SQS 개발 할때마다 OTP 인증이 필요한게 귀찮아서 개발
  • 여러 개발자들이 격리화된 AWS 환경에서 개발할 수 있게 지원하는 Mocking 라이브러리
  • 별도로 Docker 설치 없이 프로젝트를 실행할수 있게 H2와 같은 사용성 지원
  • ElasticMQ 등 사용
  • 오픈 초기에는 사내 여러 팀, 서비스에서도 사용
  • AWS Localstack의 발견으로 확장하지 않을 예정

IntelliJ IDEA 기반 IDE에서 사용할 수 있는 번역 플러그인

  • 구글/네이버 사전을 검색하기 위해 개발 중간 중간 화면 이동하는게 귀찮아서 개발
  • JavaDoc 번역, 변수명 짓기 등 영문 <-> 한글 번역 지원
  • PC 애플리케이션의 Freezing을 막기 위해 모든 이벤트를 논블로킹으로
  • Java8 CompletableFuture 기반 구현 및 테스트 코드 작성

티스토리에 마크다운 File을 등록하는 NodeJS 패키지

  • VSCode, IntelliJ IDEA의 단축키와 사용성으로 티스토리 글을 작성하기 위해 개발
  • 윈도우에서도 편하게 사용하기 위해 NodeJS 선택
  • Callback -> Promise -> async/await 로 코드 리팩토링
  • mocha 를 이용한 테스트 코드
  • 티스토리 OAuth2 API 사용

Projects

배달의 민족 정산 시스템 개발/운영

2017.08.17 ~ 현재

  • 메인 애플리케이션 개발자 ~ Tech Leader 경험 중
  • 시스템의 IDC 인프라, 데이터베이스 등 메인 담당자 (Ansible, Xtrabackup, Pt-online-schema-change 등)
  • L4 스크립트와 Jenkins를 이용한 무중단 배포
  • 조 단위의 거래 금액을 안정적으로 정산 하기 위한 지속적 개선 (현재 테스트 케이스 1200개)
  • Spring Rest Docs를 이용한 문서 자동화를 비롯해 다양한 자동화

배달의 민족 주문 시스템 개편

https://jojoldu.tistory.com/373

2018.08.01 ~ 2018.10.31

  • TF로 합류
  • 신규 시스템의 Batch 환경 전체 구성
  • 신규 도메인과 구 도메인 정합성 검증 배치 구현
  • 실시간 배치 (배달 자동완료, 자동 취소 등) 구현
  • 필요한 Batch 공통 모듈 구현 및 가이드
  • Spring Boot Batch 2.x, JPA, Querydsl, Gradle 4, Junit5 + Spock, AWS, Jenkins

배달의 민족 포인트 시스템 개편

http://bit.ly/2EcIXIA

2018.04.01 ~ 2018.07.31

  • 프로젝트 리더, 신규 도메인/시스템 구조 설계, 메인 애플리케이션 개발, AWS 인프라 구축 담당
  • DB가 죽어도 문제가 없는 시스템이 되도록 AWS SQS (메세징 큐)와 Redis 위주의 시스템 구성
  • 데이터의 정합성을 위해 Update/Delete 가 없는 도메인 모델 구성
  • 젠킨스와 AWS를 통한 무중단 배포 구성
  • Pinpoint + Ngrinder를 통한 성능 테스트
  • Spring Boot 2.x, JPA, Querydsl, Gradle 4, Junit4 + Spock, AWS, Jenkins

배달의 민족 정산 시스템 개편

http://bit.ly/2ksIEQB

2017.01.01 ~ 2017.08.17

  • PHP + 수백라인의 프로시져 -> Spring + JPA + 테스트 코드 기반으로 전환
  • 복잡한 도메인에서의 JPA 엔티티 설계
  • 대용량 배치 성능 향상 (5시간 -> 6분)
  • 팀내 프론트 엔드 개발 환경 개선 (webpack, hot reload 등)
  • 팀내 API 공통 모듈 구현 및 가이드
  • Spring Boot 1.x (이후 2.x로 업데이트), JPA, Querydsl, Gradle 4, Junit4 + Spock, MariaDB, Nginx, Jenkins

Experience

우아한형제들

https://www.woowahan.com/

자바 백엔드 개발자

2016.12 ~ 현재

MAU 1,000만의 커머스 서비스

  • 대규모 트래픽, 데이터 환경에서의 API/Batch 개발
  • 정산, 포인트, 주문 시스템의 레거시 개편
  • 업계 최초 일정산, 광고 정산 등 비지니스 지원
  • IDC 환경과 AWS 환경 모두에서 무중단 배포, 성능 테스트, 운영 시스템 구축
  • 2019년 상반기 우수사원 수상

줌인터넷

http://zum.com

웹 개발자

2014.12 ~ 2016.12

일일 PV 2000만의 포탈 서비스

  • 포털 메인 페이지, 회원 서비스의 메인 개발자로 개발/운영
  • 담당팀 미정의 서비스, 프로젝트들의 버그나 신규 기능 필요시 수정/배포 진행
  • Spring Boot, Hibernate, Gradle, Freemarker, Grunt, Handlers 등 사용
  • IDC 인프라 환경에서의 개발/운영
  • 2016년 본부 추천 특진

KCC정보통신

웹 개발자

2014.02 ~ 2014.12

연매출 1000억의 중견 SI 기업

  • 사내 프로젝트 개발 및 100억원의 SI 프로젝트 참여
  • 전자정부 프레임워크, MyBatis, Oracle 환경에서의 개발 경험

Education

패스트캠퍼스 AWS 운영 서버 관리 마스터 워크샵

https://github.com/jojoldu/fastcampus-aws-workshop

2018.04 ~ 2018.05

AWS 운영에 필요한 기본 개념들과 배포 환경 구성 교육

  • 신규 개편할 포인트 시스템의 AWS 인프라 구축이 필요해 참여
  • Code Deploy를 통한 무중단 배포, Cloud Watch 모니터링 등

패스트캠퍼스 SQL 튜닝 캠프

https://jojoldu.tistory.com/162

2017.07 ~ 2017.08

오라클을 기반으로 한 8주간의 쿼리 튜닝 교육

  • 정산 시스템을 개발/운영 하면서 복잡한 쿼리 + 쿼리 성능 튜닝의 필요성을 느껴 참여
  • 기본적인 인덱스, 실행 계획, RDBMS의 구조 등을 배움
  • 실제 업무에 적용 후 쿼리 성능 향상 (5초 -> 1.2초)
  • 다만 오라클 기반이라 실행 계획에 대해선 MySQL을 위해 별도로 공부 진행

패스트캠퍼스 자바 웹 프로그래밍 CAMP

https://jojoldu.tistory.com/301

2016.07 ~ 2016.08

자바지기 박재성님의 교육

  • 줌인터넷 재직 시절 테스트 코드를 전혀 작성하지 않다가, 이 교육을 계기로 시작
  • TDD, DI 프레임워크 만들기, 자바8 등 백엔드 개발자로 한 단계 성장할 수 있었던 계기
Fork me on GitHub