About Me
안녕하세요. 백엔드 개발자 최운식입니다.
- kotlin + Spring Boot 기반 백엔드 개발을 담당하고 있습니다.
- 카카오스타일에 재직 중이며 2주 단위 스프린트를 통한 애자일 방식의 개발을 진행하고 있습니다.
- 개발 / 코드 리뷰를 병행하며 읽기 좋으며 수정하기 좋은 코드를 작성하는 데 많은 관심이 있습니다.
- 지속적인 기술 학습을 위해 도서 스터디 및 강의를 통해 학습하고 기술 블로그에 기록을 병행하고 있습니다.
Work Experience
[역할]
- 기존 Node 기반 멤버십 ➡️ Spring 전환 및 개편
- Spring Batch ItemStream에 비동기 멀티 스레드를 적용하여 1시간 이내에 처리되도록 성능 개선
- Athena Query 최적화
- 기존 Node 기반 크롤링 ➡️ Spring 전환
- Spring Batch, Selenium, Skrape.it을 이용하여 타 사이트 크롤링 Batch 개발
- IteamStream을 통해 중도 중단될 경우에도 Execution Context에 저장된 인덱스를 기준으로 재시작 가능하도록 적용
- Github Actions를 사용하여 안정적인 Versioning 배포가 가능하도록 개선 및 롤백 체계 구현
- GraphQL, QueryDSL을 이용하여 지그재그 내부 중복 상품에 대한 수동/자동 매칭 API 및 Batch 구현
[사용기술]
- 언어: Kotlin
- 프레임워크: Spring Boot, Spring Batch, QueryDsl
- AWS: Athena, S3, Lambda, EC2
- DB: MySql, Redis
- API: DGS + GraphQL
- 라이브러리: Jenkins, Kafka, Selenium, Github Actions
- 테스트: JUnit5, Kotest, MockK
- 툴: Slack, Jira, DataDog, Github Actions, ArgoCD
Projects
코디네이터 1:1 매칭 패션 플랫폼 [팀] - 스타일멘토
담당 - Spring Boot 백엔드
2021.12 ~ 2022.06
https://github.com/Sigma-i-2022/backend
교육부 주관 학생 창업유망팀 300 성장트랙을 목표로 진행
[목적]
- 서비스 이용자에게 개인 코디네이터를 1:1 매칭하여 스타일 피드백 및 고객 맞춤형 코디 서비스를 제공해주는 패션 플랫폼 제작
[인원]
- 7명 - 백엔드 2명, 안드로이드 2명, 디자이너 1명, 기획 2명
[역할]
- 토스페이먼츠 PG 시스템 API를 이용한 결제 시스템 구현
- 금융결제원 오픈뱅킹 OpenAPI를 이용한 계좌실명조회 기능 구현
- 기능 단위 패키지 개발 & Git Branch 전략을 통한 협업
- Junit 5 및 BDD Mockito 를 사용하여 API, DB (JPA), Service 로직 테스트 코드 작성
- 전체 목록 조회 시 페이징 기법을 적용하여 DB 쿼리 최적화
- Fetch Join Query문을 통해 Lazy Loading 관계를 포함하는 객체 조회 시 발생하는 N + 1 문제 해결
[문제 해결 경험]
- 토스페이먼츠 서브몰 등록 API 개발 중 공식문서 오류 정정기
[사용 기술]
- 언어 : Java
- 프레임워크 : Spring Boot, Spring Data JPA
- 서버 : AWS EC2, RDS, S3
- DB : MySql
- API: REST API, Swagger
- 모니터링 : AWS Cloud Watch
- 외부 API : 토스페이먼츠 PG, 금융결제원 오픈뱅킹 오픈 API
- 테스트: JUnit5, BDD Mockito
[성과]
- 교육부 주관 학생 창업유망팀 300 경진대회 성장트랙 최종 선정
리그오브레전드 스펠/궁극기 체크 도우미 [팀] - 스우미
담당 - Spring Boot 백엔드
2021.07 ~ 2021.10
https://github.com/choiwoonsik/swoomi-backend
해커톤 우승 후 약 3개월의 실제 운영기간 동안 평균 DAU 20 이상 유지
[목적]
- Riot Games API를 활용하여 리그오브레전드 게임 유저들이 쉽고 편리하게 스펠/궁극기 시간을 체크할 수 있는 서비스 제작
[인원]
- 5명 - 백엔드 2명, 프론트 2명, 디자이너 1명
[역할]
- Redis 기반 캐시메모리 적용으로 쿼리 최적화 및 50% 응답속도 개선
- nGrinder를 이용해 가상 트래픽 발생을 통한 서버 내구성 테스트
- HiKariCP를 이용해 DB 커넥션 풀 관리
- Junit4를 이용해 통합 테스트 진행
- Web Socket을 이용해 실시간 팀원 간 정보 동기화 구현
- Git web hook + Jenkins를 이용한 CI/CD 구현 및 Slack 연동
- 도메인 구매 후 TLS를 이용해 HTTPS 적용
- Spring boot mail을 이용해 예외 발생 시 지정된 이메일로 에러 내용 발송
[문제 해결 경험]
- 트랜잭션 Uncheck 예외 발생 시 Rollback only 활성화 이슈
- SYN Flooding Attack(DDos) 대응 정리
- 서버 트래픽 급증으로 인한 DB 커넥션 부족 이슈
[사용 기술]
- 언어 : Java
- 프레임워크 : Spring Boot, Spring Data JPA
- 서버 : AWS EC2, RDS, Route 53
- DB : MySql
- API: REST API, Swagger
- DevOps : Jenkins + Github WebHook
- 외부 API : Orianna
[성과]
- 제 1회 OPGG 정보통신 경진대회 우승
- 약 3달간 실제 서비스 운영 및 평균 DAU 20 이상 달성
[참고 자료]
[목적]
- 스프링 부트 기반 백엔드를 제작하여 MVC 구조, REST API, OAuth 2.0 관련 학습 목표
[역할]
- RestControllerAdvice + ExceptionHandler를 이용한 통합 에러 처리 구현
- 제네릭스를 이용한 응답 모델 구조화를 통해 일정한 형식을 갖는 응답 구현
- Spring Security + JWT을 이용해 Access Token, Refresh Token을 사용하는 토큰 기반 인증 구현
- OAuth2.0을 이용하여 카카오 간편 로그인 구현
- JUnit을 이용하여 MockUser 테스트 등 단위/통합 테스트 진행
[사용 기술]
- 언어 : Java
- 프레임워크 : Spring Boot, Spring Data Jpa, Spring Security
- 서버 : AWS EC2
- DB : H2
- API: REST API, Swagger
Blog
일일 300명 이상 방문
- 학습 중 맞닥뜨렸던 문제점들에 대한 해결 경험과 학교 및 인터넷 강의, 알고리즘 등 공부한 내용들을 꾸준하게 정리하기 위한 블로그
- CS - 전공 수업 정리
- 알고리즘 문제풀이 정리
Skill
백엔드 기술 스택
- 언어: Java, Kotlin
- 프레임워크: Spring(Boot, Batch, MVC, Security, Data JPA)
- AWS: EC2, RDS, S3, Lambda, Cloud Watch
- DB: MySql, Redis, QueryDsl
- API: GraphQL, REST API
- 테스트: JUnit4/5, Kotest, BDD Mockito, MockK, nGrinder
- 외부 툴: Linux, Git/Github, Github Actions, Jenkins, Gradle
Education
상명대학교
SW융합학부 컴퓨터과학전공
2016.03 - 2023.02 (졸업)
- Linux manual과 C언어 책을 참고해 구현 목적과 입력, 반환 값 등 내부 구조를 바탕으로 printf() 등 C 라이브러리 함수 구현 과제 수행
알고리즘
2020 ~ 현재