미리보기
기본 정보
안녕하세요! 코드 한 줄을 통해 사용자에게 비즈니스 가치를 주고 싶은 개발자, 이동준입니다. - 항상 성장하기 위해 노력하고, 개인의 성장과 팀의 성장을 함께 목표합니다. - 새로운 기술을 배우는 것을 즐기고, 상황에 알맞게 적용하는 것을 선호합니다. - 불편함을 줄수있는 요인에 대해 자동화하는 것을 좋아합니다. - 현재 좋은 아키텍처를 구성하는 고민과 함께 좋은 코드를 작성하는 방법에 대해 관심을 갖고 있습니다.
프로젝트
Thiscord - 채팅 앱 토이 프로젝트
개인 프로젝트
2024.01. ~ 진행 중
주요 업무
- 풀스택으로 개발 진행
- 인증, 유저, 커뮤니티 도메인 개발
- 실시간 채팅 기능 개발
세부 내용
- 채팅 기능 구현
- 실시간 채팅이 가능하도록 WebSocket 및 STOMP 프로토콜을 사용
- 멀티 채팅 서버 구성을 위해서, Redis를 외부 메세지 브로커로 사용 - 채팅 알람 기능 구현
- FCM을 사용하여 채팅이 왔을 때, 알림을 받을 수 있도록 구현 - 로그인 기능 구현
- Spring Security를 사용하여 인증 및 권한 로직과 비지니스 로직을 분리
기술 스택
- Java 17, Spring Boot, Spring Security
- MySQL, JPA, MongoDB
- Redis, FCM
- Javascript, HTML, CSS, React
AYU-Coupon-service - 쿠폰 발급 서비스 서버 개발 토이 프로젝트
개인 프로젝트
2023.09. ~ 2023.11.
주요 내용
- 쿠폰 조회 / 사용 / 발급 API 개발
- 모니터링 및 성능 최적화 진행
- MySQL Replication을 구성하여 DB의 트래픽 분산
세부 내용
- 쿠폰 초과 발급 이슈 해결
- 서로 다른 사용자가 동시에 쿠폰 발급을 요청할 때, 재고 이상으로 쿠폰이 발급되는 이슈가 발생
- 쿠폰 초과 발급을 방지하기 위해 비관적 잠금을 사용하여 동시성 제어 - 쿠폰 발급 코드 리팩토링을 통한 성능 개선
- 잠금 경합으로 인한 성능 저하를 최소화 하기위해, 잠금 점유 시간을 최소화 하도록 코드 변경
- 코드 변경 후, 쿠폰 테이블의 외래키 제약 조건으로 인한 데드락 이슈 발생
- 데이터 무결성과 트레이드 오프하여 외래키 제약 조건 제거 후 성능 향상
- TPS : 180.7 → 220.3 - 어플리케이션 초기 응답 지연 이슈 해결
- Spring Cold start로 인해, 초기 응답 시간이 11초가 넘는 요청 발생
- Warm up 과정을 통해 초기 응답 시간을 100m 이내로 개선 - 모니터링을 통한 성능 개선
- Pinpoint 플랫폼을 사용하여 모니터링한 결과, 코드 실행 시간의 대부분을 DB Connection을 획득하는데 사용하는 것을 확인
- DBCP 튜닝과 인덱스를 추가하여, DB Connection 획득 시간을 최소화
- CPU 평균 사용량: 10% → 35%
- TPS: 61 → 179 - 다중 데이터베이스 사용을 위한 커스텀 어노테이션 개발
- Secondary DB에서 실행되는 서비스 조회 트래픽으로 인해 처리 성능이 지연되면, 복제 지연이 발생할 수 있음
- 트랜잭션 읽기/쓰기 모드에 따라 DB 라우팅할 경우 세밀한 라우팅이 어려움
- AOP 기반 DataSource 라우팅 어노테이션 개발하여 어노테이션으로 라우팅을 제어할 수 있도록 개발
기술 스택
- Java 17, Spring Boot
- MySQL, JPA
- Naver Cloud Platform
- Pinpoint, Ngrinder
[깃허브] https://github.com/f-lab-edu/AYU-Coupon-Service
[블로그 포스팅] https://cire0304.github.io/categories/ayu-coupon
Second Hand - 당근 마켓을 모티브로 만든 중고거래 플랫폼 API 서버 토이 프로젝트
팀 프로젝트
2023.05. ~ 2023.08.
팀원
- Back-End : 2명
- Front-End: 2명
- Ios : 2명
주요 내용
- 사용자 유스케이스, ERD, 인프라 주요 핵심 기능 설계
- 중고 거래 서비스에 필요한 기능 개발 / 배포를 진행
- 인증, 회원, 물품, 재고 도메인 개발
세부 내용
- N + 1 문제 해결
- 중고 물품 조회시 N + 1 쿼리가 발생하였고, 효율성 개선을 위해 Querydsl Fetch Join을 사용함 - 자동 배포 파이프라인 구성
- 새로운 기능을 개발할 때마다 수동으로 배포하여 시간이 오래 걸림
- GitAction과 AWS CLI 기반의 자동 배포 파이프라인을 구성
기술 스택
- Java 11, Spring Boot
- MySQL, JPA, QueryDSL
- AWS EC2, S3, RDS,
- CodeDeploy, Github Actions, Docker
포트폴리오
URL
기술 스택
Java, Spring, Spring Security, MySQL, JPA, AWS, Git, GitHub, Docker, JavaScript, HTML/CSS
대외활동
변화 주목 기반 차량 흠집 탐지 시스템 논문
광운대학교
AI를 활용하여 자동으로 차량의 흠집을 탐지해주는 시스템 설계 및 구현하며 연구를 진행했습니다.
학습데이터가 존재하지 않아, 직접 데이터를 촬영 및 가공하여 학습 데이터를 제작하여 AI 모델을 학습하였습니다.
- Base AI modal: CADNet
- Language: Python
[주요 성과]
카셰어링 서비스 관련 논문 KCI 등재
[논문 상세 보기]
http://koreascience.or.kr/article/JAKO202211757522210.page
창업 아이디어 경연 대회
광운대학교
인공지능을 활용한 창업 아이디어 경연대회에 참가 및 발표를 진행하였습니다.
[주요 성과]
우수상 수여
전국 인공지능 활용 아이디어 공모전
광운대학교
인공지능 활용 아이디어 공모전에 참가및 발표를 진행하였습니다.
[주요 성과]
우수상 수여
교육
F-Lab
사설 교육 | 백엔드 심화 과정
2023.08. ~ 2023.11. | 졸업
코드스쿼드
사설 교육 | 백엔드 과정
2023.01. ~ 2023.06. | 졸업
광운대학교
대학교(학사) | 전자공학과
2016.03. ~ 2022.02. | 졸업