미리보기
기본 정보
매일 1%씩 성장해 1년 3700% 차이를 만들기 위해 노력하는 개발자, 이창민입니다.
자기소개
스타트업과 창업팀에서 프로젝트 설계, 개발, 배포, 운영까지의 전 과정을 주도적으로 수행하며 확장 가능하고 유지보수가 용이한 시스템 설계에 집중해왔습니다.
개발 과정에서 느끼는 불편함을 자동화로 해결하는 데 큰 희열을 느낍니다. 개발자들이 반복적으로 수행해야 하는 비효율적인 작업을 자동화하거나 최적화해 생산성을 높이고, 업무에 집중할 수 있도록 돕는 데 관심이 많습니다.
팀 내 다양한 영역에 자동화를 적용해 개발 효율성을 높이고, 개발자 경험을 개선하는 데 기여하고 싶습니다. 또한, 사용자 관점에서 불편함을 해결할 수 있는 자동화 솔루션을 도입해 사용자 경험을 극대화하고자 합니다.
더불어, 다양한 팀과의 협업을 통해 서비스를 성장시키고, 비즈니스 임팩트를 창출하는 데 관심이 많습니다. 익숙한 기술을 기반으로 새로운 기술적 도전에 나서며, 엔지니어 관점에서 최적의 해결책을 팀원들과 함께 모색하고 탐구하며 성장해 나가겠습니다.
기술 스택
NestJS, Node.js, TypeScript, AWS, Spring Boot, Spring Cloud, Kubernetes, istio, Terraform, Java
경력
(주)더블유클럽
백엔드 개발자 | 개발팀
2024.02. ~ 2024.07. (6개월)
Tech Stack.
NestJS, Node.js, Serverless Framework, AWS Lambda, AWS ECS, Docker, MySQL
개발 팀의 손쉬운 연동을 위한 플랫폼 형태의 시스템 구현
각각의 앱들이 결제 기능 및 스크래핑 기능을 손쉽게 연동할 수 있도록, 해당 기능을 플랫폼 형태로 제공하고 중개하는 시스템을 구현
Adapter 패턴을 적용하여 인증 문서, 결제 PG 타입 변경과 추가에 확장성있는 설계가 가능
Event Driven 패턴으로 결제나 인증 정책의 잦은 변경에도 기존 로직의 수정을 최소화시킴
서드파티 책임 분리로 외부 서비스와 내부 서비스에 대한 예외 처리를 효율적으로 진행
정산 서비스 분리로 레거시 서비스 개선
기존 정산 서비스는 정책에 의존되어 각 정책에 맞는 정산 서비스가 다수 존재
정책에 의존하지 않는 형태의 정산 서비스를 모듈화하여 의존성 문제를 개선
정산 서비스를 AWS Batch로 분리하여 메인 서버의 리소스 확보와 단일 장애 지점 문제를 해결
정책에 의존하지 않는 형태로 기존 사용되던 서비스를 마이그레이션 작업 진행
NestJS 커스터마이징을 통한 개발 생산성과 효율성 향상
프로젝트 초기에 공통 기능들을 묶어 우리 서비스에 맞게 기반을 구축해 컨벤션과 개발 생산성을 확보
모듈화된 코드 구조로 코드의 재사용성을 높이고 유지보수에 용이한 환경을 구축
반복적인 코드를 줄이고 가독성을 높이기 위해 커스텀 데코레이터와 AOP를 도입
테스트코드 도입으로 서비스 안정성과 개발 생산성 향상
복잡한 비즈니스 로직과 잦은 코드 수정으로 예상치 못한 의존성 문제와 장애가 발생했고 서비스 안정성과 개발 생산성이 크게 저하되는 것을 식별, 결제 모듈 설계부터 선제적으로 테스트코드 도입
결제 관련 코드 커버리지 70% 달성
코드 수정 시 발생했던 의존성 에러 디버깅 시간 절감
테스트 CI 자동화 구축으로 배포 전 발생할 수 있는 예외상황에 대한 대처 가능
swagger 자동화 프로세스 구축을 통한 커뮤니케이션 비용 절감
API 구조나 요청, 응답에 대한 구조가 변경될 때마다 개발 팀 간의 커뮤니케이션이 지속적으로 증가함
→ 코드 기반의 API 명세를 제공할 수 있는 방법을 고민했고 generator 라이브러리를 활용하여 자동화 프로세스 구축
클라이언트 환경에서의 swagger dart code generator 프로세스를 shell script로 자동화
shell script 실행 명령만으로 API 클라이언트 코드 자동 생성
IaC 도입을 통한 인프라 관리 효율성 향상
AWS Lambda의 Node.js 버전 지원 종료로 서비스 장애 발생
→ 재발방지 대책으로 콘솔 관리 방식에서 IaC 도입으로 의존성 관리 일원화 및 가시성 확보
serverless framework 도입으로 aws의 serverless 서비스 관리 및 배포에 대한 효율성 향상
AWS CDK 사용을 적극 제안하여 기존 인프라 마이그레이션 작업 진행
pnpm과 swc 도입으로 한 주에 150분 이상 확보
pnpm과 swc 도입으로 docker image 빌드 시간을 단축 (300초 -> 100초)
배포 효율성 향상으로 더 빠른 개발 사이클을 갖게 됨
yarn classic -> pnpm 변경으로 패키지 설치 시간을 약 35% 단축
swc 도입으로 컴파일 시간을 약 60% 단축
아온스튜디오
백엔드 개발자 | 개발팀
2022.02. ~ 2022.12. (11개월)
Tech Stack.
NestJS, Serverless Framework, AWS Lambda, EC2, Docker, Postgresql
업로드 작업 최적화를 통한 사용자 경험 개선
고객 대부분 대용량 파일 및 이미지 업로드 기능이 필요했음
단일 서버 내 업로드 기능 구현 시, 업로드 병목 현상과 사용자 경험 저하 문제 발생 식별
→ Multipart 업로드, 온디맨드 이미지 리사이징, 캐싱 전략을 도입하여 사용자 경험 개선
대용량 파일 업로드의 경우, AWS Multipart로 S3 업로드를 구현해 용량 및 속도 문제 개선
AWS Lambda와 CloudFront를 통해 온디맨드 리사이징과 캐싱 전략을 활용해 S3 용량 리소스 절감과 사용자 경험을 개선
이벤트 기반 비동기 알림 처리로 비즈니스 로직 변경 최소화
기존 알림 처리는 각 도메인과 결합되어 강한 의존성을 가지고 있음. 공정 프로세스 단계마다, 알림 서비스가 추가될 때마다 알림 처리 로직이 각 도메인에 중복적으로 삽입되는 문제가 발생
→ 이벤트 기반 비동기 처리로 의존성, 중복 코드 작성과 재전송에 대한 문제 해결
AWS SNS, SQS, Lambda를 활용하여 알림 처리 서비스 설계
각 도메인 책임 분리로 도메인의 주요 로직은 알림 전송 성공 여부와 관계없이 해당 로직만 수행
알림 전송 실패 시, 재발송 및 모니터링의 효율성 향상
특정 알림 서비스의 변경 사항 반영 시, 해당 서비스만 재배포하여 효율성 향상
프로젝트
가천대학교 동아리 모집 관리 서비스
가천대학교
2024.09. ~ 진행 중
가천대학교 졸업 프로젝트에서 진행한 서비스로, 학우들을 위한 서비스를 지속적으로 운영하기 위해 기획해 서비스 중입니다.
PM, Server/Infra Engineer의 역할을 수행하고 있습니다.
Tech Stack.
SpringBoot, Java, SpringCloud, k8s, istio, Terraform, argoCD
확장가능한 서비스를 위한 MSA 설계
k8s 환경에서 MSA 기반 프로젝트를 설계함. Spring Cloud와 Istio를 활용해 API Gateway 및 Service mesh 패턴을 도입했고, Terraform과 ArgoCD로 CI/CD 자동화와 IaC를 도입해 운영 효율성을 높임
DDD 와 테스트 코드 도입으로 코드 품질 향상 기여
DDD를 도입하여 서비스 간 명확한 경계를 설정하고, JUnit 및 Spring Boot Test 기반의 테스트 코드를 도입해 테스트 커버리지를 80% 이상 달성함. 이를 통해 배포 전 장애 발생률을 40% 감소시켜 안정적인 코드 품질을 유지함
이와 같은 기여를 통해 서비스의 안정성과 확장성을 확보하고, 학우들에게 원활한 동아리 모집 및 지원 서비스를 제공하는 데 기여함
서비스 안정성을 위한 모니터링 환경 구축
서비스 안정성을 위해 Prometheus, Kiali, Elastic APM을 도입하여 Kubernetes 클러스터 내 서비스의 상태와 성능을 실시간으로 모니터링할 수 있는 환경을 구축함
애플리케이션 수준에서 성능 병목 구간을 세밀히 분석하고, 특정 API 호출에서 응답 시간이 증가하는 원인을 정확히 파악하고 해결함
서비스 성능을 모니터링해, 리소스 소모를 확인하고 각 서비스 간 호출 흐름과 트래픽 분배를 시각화하여 장애 발생 지점을 신속히 파악하도록 기여함
이러한 모니터링 환경 구축으로 장애 탐지 시간이 기존 30분에서 10분으로 단축함
분산 트랜잭션 분석을 통해 데이터베이스 쿼리 최적화와 비효율적인 서비스 간 호출을 개선함
뉴스레터 인사이트 제공 자동화 서비스
IT 연합동아리 YAPP
2024.05. ~ 2024.09.
IT 연합 동아리 YAPP 24기 활동에서 구현한 서비스입니다. 흩어져있는 메일 속 내가 보고 싶은 뉴스레터를 골라내는 것이 불편했고 이를 한번에 모아 큐레이팅해주는 서비스로 제공했습니다.
Tech Stack.
NestJS, MSA, Docker, NCP, Terraform
NestJS 기반의 MSA 환경 구축
NestJS에서 제공하는 MicroService를 활용해 도메인 별로 서비스를 분리했음
메일 파싱 자동화 로직, 구독 자동화 로직 등의 리소스를 많이 사용하는 서비스 분리로 서버의 전체적인 안정성을 향상함
메일 파싱 및 구독 자동화 구현
NodeJS의 puppeteer와 google oauth 서비스를 활용하여 사용자 경험을 향상시킬 수 있는 자동화 로직을 구현
NestJS Custom Decorator 를 통해 AOP 적용, 다양한 서비스의 객체를 관리하는 Factory Pattern을 도입함 -> 존재하지 않는 서비스 주입에 대한 에러를 방지하고 확장성있는 설계 가능
포트폴리오
교육
가천대학교
대학교(학사) | 컴퓨터공학과
2019.03. ~ 현재 | 재학 중
대외활동
Google Developers Group On Campus Gachon
Google Developer Student Club의 캠퍼스 Core Member 활동
NodeJS 스터디, 정기 세션 연사 참여 등 다양한 지식 공유 활동을 진행
GDSC 내에서 다양한 문제를 해결하기 위한 오픈소스 활동을 진행 중
IT 연합 동아리 YAPP 24기
YAPP
IT 연합 동아리 YAPP 24기에서 Server 직군에서 서비스 기획, 개발, 배포까지 경험함
커뮤니케이션의 중요성, MVP 구현을 위한 업무 분배 등 다양한 소프트 스킬을 학습함
자격증
AWS cloud practitioner
PASS | AWS
2023.11.