안녕하세요, 김명재입니다.
|
![]() |
저는
- 담당하는 시스템이 최소한의 복잡도를 갖도록 일합니다: https://myeongjae.kim/blog/2020/02/05/single-principle-of-a-developer
- 엔지니어링의 고통은 복잡함에서 발생하기 때문입니다.
- 고통의 총량을 줄이는 것이 평생의 목표입니다.
이력
디어코퍼레이션
기간
2022.05.02 ~ 현재
업무
- 모빌리티서비스팀 풀스택 개발자 (2023.05.01 ~ 현재)
- 물류팀 테크리드 (2022.06.01 ~ 2023.04.30)
- 화물 주선사 대상 SaaS 개발 (배차 & 정산)
- 모빌리티서비스팀 프론트엔드 리드 (2022.05.02 ~ 2022.05.31)
- Spring Boot, Terraform, Next.js, React Native, TypeScript
기여한 기술력
모빌리티서비스팀 풀스택 개발자 (2023.05.01 ~ 현재)
- 디어 앱 CI/CD 파이프라인 구축
- 디어 앱 개발 과정에 TDD(Test Driven Development) 도입
- 동종업계 S사 API의 종단간 암호화 알고리즘과 암호키 추출
- 전사 VPN 셋업 및 구글 로그인 연동
- 쿼리를 공유할 수 있는 도구인 Apache Zeppelin을 도입해서 디어 데이터 분석 인프라를 마련함
- Next.js v13의 App Router로 웹 애플리케이션을 작성하면서 필요한 라이브러리를 직접 구현
- React Native로 디어 앱, Next.js로 웹뷰 기능 구현
물류팀 테크리드 (2022.06.01 ~ 2023.04.30)
화물 주선사 대상 SaaS 개발 (배차 & 정산)
- AWS 인프라를 VPC부터 Terraform으로 설계 및 구축
- AWS ECS, AWS Fargate를 사용하는 배포환경 구축
- Kotlin Spring으로 백엔드 API 구현
- 백엔드 API의 모든 기능에 대한 테스트 작성
- 배치 성격의 프로그램을 serverless framework로 작성
- serverless, AWS Lambda, EventBridge
- 화물 플랫폼들의 API를 분석하고 종단간 암호화 알고리즘과 암호키 추출
- OLAP(Online Analytical Process) 워크로드를 감당할 수 있는 시스템 도입
- AWS Athena, Apache Zeppelin
- pnpm workspace를 활용해서 전사 프론트엔드 모노레포 도입 (10개 이상의 웹앱을 모노레포에서 관리)
- Jira의 Release기능을 활용한 버전관리 프로세스 제안 및 도입
- Jira Automation을 활용해서 릴리즈노트 자동 생성, 슬랙 알림 전송, GitHub에 Release draft 자동생성함
모빌리티서비스팀 프론트엔드 리드 (2022.05.02 ~ 2022.05.31)
- 리액트 네이티브 모노레포 템플릿 작성 (yarn workspace를 활용해서)
- Bitrise를 도입해서 앱 CI/CD를 구성
- Trunk Based Development 문화
우아한형제들
기간
2018.10.15 ~ 2022.04.30
업무
- 만화경 백엔드/프론트엔드/추천시스템 개발
- 만화경 팀의 두 번째 개발자로 입사
- Spring Boot, Spring Data JPA, Spring Web MVC, Spring WebFlux, Spring Data R2DBC, Spring OAuth2, TypeScript, React, Next.js, Redux, Redux Saga, lerna
기여한 기술력
- 백엔드 애플리케이션 아키텍처 설계 및 구현 (적극적인 TDD 활용)
- 도메인 영역에 세부사항이 침투하지 않도록 Gradle 멀티모듈 구조 적용
- 도메인 모듈을 API와 배치 애플리케이션에서 공용으로 쓸 수 있도록 개선
- 백오피스 CMS 프론트엔드 설계 및 구현 (Next.js, Redux, Redux Saga)
- 내부용, 작가용 어드민을 하나의 저장소에서 관리하기 위해 lerna로 모노레포 구조 적용
- 추천시스템 구현 (AWS Personalize, AWS StepFunctions, Apache Airflow)
- gif resize가 가능한 image-api 설계 및 구현 (sharp)
- 백엔드 API의 언어를 자바에서 코틀린으로 전환하는 프로젝트를 제안하고 수행
- 코틀린 스터디그룹을 운영해서 구성원들과 함께 기술을 학습함. 책 Atomic Kotlin 학습
- 테스트 코드부터 먼저 코틀린으로 변환하고, 변환하는 과정에서 kotest, mockk등을 적용함
- 테스트 코드의 변환이 완료된 이후부터 새로 작성하는 main코드들도 코틀린으로 작성함
- 자바로 작성한 부분에 요구사항이 발생하면 코틀린으로 변환 후 요구사항을 반영함
- 개인별 추천 데이터에 기반한 푸시알림 자동화 (Apache Airflow, Braze)
성과
- 3년만에 T1에서 T3직급까지 두 번 승진
- 만화경 웹툰 플랫폼의 비즈니스 요구사항을 만족하는 백엔드 API와 백오피스 CMS 프론트엔드 구현
개인 홈페이지 운영
기간
2018.08.13 ~ 현재
목적
학습용 프로젝트. 기술적으로 관심이 가는 기술을 현업에 적용해보기 전에 실험해보는 테스트베드가 주요 용도이며, 평소에 드는 생각이나 회사 기술블로그에 기고한 글을 아카이빙하는 목적으로도 운영중.
학습했던 기술
AWS VPC, AWS EC2, AWS ECS, Vuejs, Go, React, Next.js, TypeORM, InversifyJS, Spring Boot, Docker, Strapi, Heroku
The University of Austin at Texas (미국 텍사스)
기간
2018.04 ~ 2018.05
업무
- curl library를 활용한 데이터 전송 프로그램 구현
- C++, libcurl, sftp, expect (linux cli), crontab
기여한 기술력
UT Austin 간호대학에서 사용하던 프로그램이 유지보수가 되고있지 않던 상황에서, 기존의 소스코드를 받아 프로그램이 제대로 작동하도록 구현을 마무리 했다.
프로그램은 A서버에서 환자의 기록을 받아와 B,C 서버로 보낸다. A서버에서 받은 문자열 데이터를 B,C서버가 요구하는 포맷에 맞게 처리하고 전송한다.
프로젝트를 넘겨받았을 때는 전임자가 프로그램을 설계하고 curl library를 활용하는 클래스까지만 구현한 상태였다. 설계 문서를 보고 A서버에 request를 보내서 데이터를 받아오는 부분, 받아온 문자열 데이터를 처리하는 부분, 받은 데이터를 B,C서버로 전송하는 부분을 구현했다.
C++로 작성한 프로그램에서는 A서버의 데이터를 받아와 B,C 서버가 요구하는 포맷의 csv데이터를 생성한다. 데이터 생성이 완료되면 expect용 스크립트를 생성하고 실행한다. expect 스크립트에서는 sftp로 csv파일을 B,C 서버에 전송한다.
성과
- 목표했던 프로그램을 완성.
- libcurl 라이브러리의 활용법 학습.
- expect를 통해 CLI 상호작용을 자동화하는 방법 학습.
- crontab을 활용해서 프로세스를 정해진 시간에 자동으로 실행하는 방법 학습.
Sandman Media Inc. (캐나다 벤쿠버)
기간
2017.01 ~ 2017.02
업무
- Joomla(CMS) 기반 웹페이지 개발
- HTML, CSS, PHP
성과
CEO에게 추천서를 받고 Fast learner라고 인정을 받음.
https://cdn.myeongjae.kim/blog/2023/05/김명재_추천서_Sandeep_Reference_Letter.pdf
기고
- (2023.08.09) Next.js App Router로 제품 만들기: 이제 더 이상 Axios를 쓰지 않기로 했습니다 - 디어코퍼레이션 기술블로그
- (2023.04.17) 모든 IT 스타트업에서 꼭 작성해야 하는 프론트엔드 단위 테스트가 있다? (로깅, 단위 테스트, 그리고 의존성 주입) - 디어코퍼레이션 기술블로그
- (2022.11.15) 스타트업 개발 생산성 높이기: (2) 숨어있는 비용을 찾아 없애자 - 디어코퍼레이션 기술블로그
- (2022.11.15) 스타트업 개발 생산성 높이기 (1): Shape Up - 디어코퍼레이션 기술블로그
- (2022.05.18) 개발자의 일이관지一以貫之 - 디어코퍼레이션 기술블로그
- (2022.04.30) git branch 이름과 hook으로 commit message 컨벤션 강제하기 - 디어코퍼레이션 기술블로그
- (2022.04.05) ‘우아한형제들 구성원들의 책 추천!’ 영상 제작에 참여 - 우아한형제들 유튜브
- (2020.11.04) AWS DNA 1기 수상 및 인터뷰 진행
- (2019.06.12) Spring Boot에서 Repository로 DynamoDB 조작하기 (2) – Gradle을 활용해 실행 & 테스팅 환경 구축 - 우아한형제들 기술블로그
- (2019.06.05) Spring Boot에서 Repository로 DynamoDB 조작하기 (1) – 설정부터 실행까지 - 우아한형제들 기술블로그
자격증
- (2021.06.02) 정보처리기사
- (2020.09.14) AWS Certified Solutions Architect – Associate
학력
- 한양대학교 컴퓨터전공 (2012.02 ~ 2020.08)