미리보기
기본 정보

자기소개
문제를 해결하기 위해 커뮤니케이션이 가장 중요하다고 생각합니다.
기획자, 디자이너, 프론트엔드 개발자와 협업하며 요구사항을 구체화하고, 원활한 커뮤니케이션을 통해 서비스를 개선한 경험이 있습니다.
프로젝트 진행 중 Notion을 활용하여 API 명세, ERD, 개발 문서를 정리하며, 팀원들이 필요한 정보를 쉽게 찾을 수 있도록 문서화를 체계적으로 관리했습니다.
시스템을 개선하고 효율성을 높이는 것에 관심이 많습니다.
서비스 내에서 발생하는 Slow Query를 분석하고 실행 계획을 확인한 후, 적절한 인덱스를 적용하여 응답 속도를 개선한 경험이 있습니다.
부하 테스트를 진행하며 CPU, 메모리 사용량을 측정하고, 동일한 RPS에서 더 낮은 리소스를 사용하도록 시스템을 최적화한 경험이 있습니다.
이러한 경험을 바탕으로, 확장성과 유지보수성이 뛰어난 서비스를 개발하는 백엔드 개발자로 성장하고 있습니다.
기술 스택
Java, Spring Boot, DBMS/RDBMS, NoSQL, JPA, aws-ec2, aws-rds
프로젝트
URLShortener
whatever
2025.01. ~ 2025.02.
단축 URL 서비스 (Link)
Java 21
Spring Boot 3.x
MySQL
Spring Data JPA
주요 역할
MySQL 인덱스 적용을 통한 평균 조회 1.09s -> 189.92ms 5.74배 성능 향상
k6 부하 테스트 수행, 리소스 사용량 및 응답 속도 측정
Prometheus, Grafana를 사용하여 서버 모니터링 시스템 구축
Sping Cloud Config를 사용하여 별도의 설정 없이 블랙리스트 URL을 관리하도록 구성
트러블 슈팅 및 고민
부하 테스트에서 CPU 사용률 과다 및 응답 속도 저하 문제 해결
문제 : 1 Core CPU / 1 GB Memory / 1 Pod 환경에서 RPS 10 부하 테스트 진행 시 CPU 사용률이 최대 99.7%까지 상승하고 응답 속도 저하 발생
해결 : 인덱스를 적용하여 조회 성능 향상 및 메모리 사용량 안정화, CPU Usage 안정화를 위한 스케일 아웃 테스트를 진행하고 적정 인프라 스펙 결정
부하 테스트 중 OutOfMemoryError 발생
문제 : Docker 컨테이너의 메모리 제한을 1GB로 설정했음에도 max heap size가 256MB로 설정되어 OutOfMemory 발생
해결 : JVM 옵션을 수정하여 컨테이너 메모리의 100%를 할당하도록 -XX:MaxRAMPercentage=100.0 옵션을 추가하여 문제를 해결
Spring Cloud Config를 활용한 블랙리스트 URL 자동 관리
문제 : 기존의 yml 파일을 사용하여 블랙리스트 URL을 관리하는 방식에서는 설정 변경 시 매번 파일을 수정하고 배포해야 하는 번거로움이 있음.
해결 : Spring Cloud Config를 사용하여 별도의 설정 파일 수정 없이 실시간으로 설정 내용을 수정하고 적용할 수 있도록 구성하여, 설정 변경을 더 효율적으로 관리하도록 해결.
Hey
기획 2, 디자인 1, 프론트엔드 2, 백엔드 2
2024.02. ~ 2024.12.
각 플랫폼에 흩어져있는 공연 정보를 제공하는 서비스 (Link)
Java 21
Spring Boot 3.x
PostgreSQL
Spring Security
Spring Data JPA
QueryDSL
주요 역할
JWT 로그인 구현, Redis를 활용한 RefreshToken 저장
불필요한 연관 관계 제거 및 리팩토링을 통한 코드 재사용성 및 가독성 증가
Querydsl 도입으로 검색 및 필터 기능을 효율적으로 구현
비동기 적용을 통해 외부 API 연동의 지연 시간을 7.9s -> 3.7s로 단축
AOP 활용으로 회원/비회원 처리 로직을 효율적으로 관리
트러블 슈팅 및 고민
소셜 로그인 비즈니스 로직 개선
문제 : 단일 API에서 모든 로그인 로직을 처리하면서 플로우가 과도하게 복잡해졌으며, 신규 사용자의 경우 별도의 동의 절차 없이 자동으로 가입되는 문제가 발생
해결 : 회원 가입과 소셜 로그인 프로세스를 분리하여 책임을 명확히 구분하고, Redis를 활용해 임시 데이터를 저장함으로써 인증 흐름을 단순화하고 유연성을 확보
KOPIS API 연동 성능 개선
문제 : 매일 1회 스케줄러를 실행하여 공연 목록을 최신화하는데, 일주일 기준 약 100개의 데이터를 처리함. 다수의 API 호출로 인해 응답 속도가 느려지고, 공연 시설 정보 저장 시 중복 데이터가 발생할 가능성이 있음.
해결 : CompletableFuture를 활용한 병렬 처리로 공연 상세 정보 조회 응답 속도 개선, synchronized 적용을 통해 중복 저장을 방지하고 데이터 정합성 유지
DrawMyCharacter
개인
2024.11. ~ 2024.12.
OpenAI의 ChatGTP를 활용하여 이미지 기반 캐릭터 생성 및 변형을 제공하는 서비스 (Link)
Java 21
Spring Boot 3.x
MySQL 8.0
Spring AI
Spring Security
Spring Data JPA
QueryDSL
주요 역할
ChatGPT 기반 이미지 분석 및 생성 API 구현
멀티 이미지 생성 및 비동기 처리 적용으로 응답 시간 최적화
쿼리 튜닝을 통한 이미지 목록 조회 성능 개선
트러블 슈팅 및 고민
이미지 생성 최적화
문제 : ChatGPT API는 직접적인 이미지 변형 기능을 제공하지 않으며, 텍스트 프롬프트를 기반으로 이미지를 요청해야 함. 단일 이미지 생성 방식에서는 사용자가 원하는 결과가 아닐 경우 여러 번 요청해야 하므로, 비효율적인 리소스 사용과 응답 지연이 발생함.
해결 : 한 번의 요청으로 다수의 이미지를 생성할 수 있도록 개선하여 반복 요청을 최소화하고, 비동기 처리를 적용해 응답 속도를 향상
쿼리 최적화로 이미지 목록 조회 성능 개선
문제: 좋아요 순으로 캐릭터 이미지 목록을 조회하는 기능에서, likes
테이블과 character
테이블을 조인한 후 좋아요 수를 집계하는 방식으로 인해 응답 속도가 느림. 10만 건의 데이터를 모두 조인한 후 집계 연산을 수행하면서 불필요한 연산 부담이 발생하여 조회 성능이 저하됨
해결: likes
테이블에서 먼저 좋아요 수를 집계한 후 character
테이블과 조인하는 방식으로 변경하여 연산량을 줄이고, 쿼리 성능을 최적화
대외활동
전남대학교 캡스톤디자인
전남대학교
2022
라즈베리파이 기반 환자 체온 관리 시스템
python
Python의 PulseSensor 라이브러리를 이용해 심박수를 측정하고 확인
DHT11 온도 센서와 Pulse 센서를 활용해 데이터를 수집하고 Buzzer와 LED로 환자 상태를 알리는 시스템
교육
원티드 프리온보딩 백엔드 코스
사설 교육
2023.11. ~ 2023.12.
쌍용교육센터
사설 교육
2023.03. ~ 2023.09. | 졸업
전남대학교
대학교(학사) | 전자컴퓨터공학부 전자정보통신공학과
2017.03. ~ 2023.02. | 졸업
자격증
토익
860 | 한국 TOEIC 위원회
2021.05.