Java & Spring 기반 주니어 백엔드 개발자 이준입니다

프로필 Profile
🎂 99년 5월 21일 출생
🏫 고성고등학교 (2015.03. ~ 2018.02.)
👨🎓 강릉원주대학교 컴퓨터공학과 졸업 (2018.03. ~ 2025.02.)
🪖 육군 만기 전역 (2019.09.16 ~ 2021.04.05)
📧 [email protected]
📞 +82 1071701430
🔗 GitHub marso34 - Overview
소개 Introduce
웹/앱 서비스 백엔드 개발을 주로 담당하는 주니어 개발자입니다. Java, Spring, MySQL, Gi을 활용하여 다양한 프로젝트를 통해 서버 구축, 데이터베이스 설계, 배포 및 유지 보수 등의 경험을 쌓으며 백엔드 개발자로서의 역량을 키워왔습니다.
서비스 개발에서 원활한 협업을 통해 더 나은 결과를 창출하는 것을 중요하게 생각하며, 코드 품질을 높이기 위한 지속적인 리팩토링에 힘쓰고 있습니다. 앞으로도 다양한 기술을 습득하고, 협업을 통해 더 나은 서비스를 제공하는 백엔드 개발자로 성장해 나가겠습니다.
프로젝트 Project
🕓 2025.09 ~ 진행 중
Ramble - 1:1 화상 채팅 서비스
AI Safety Filter를 통한 안전한 1:1 화상 채팅 서비스
Java Spring Boot Spring Data JPA QueryDSL MySQL
Redis Caffeine Cache WebSocket Swagger UI GitHub Actions Docker Docker Compose AWS - EC2 RDS
React Native Expo Typescript WebRTC
역할 : Full-Stack (Full-Stack 개발 2인, AI 개발 1인, 기획 1인)
- REST API 개발
- OAuth2 기반 로그인/회원가입 및 JWT 인증/인가
- WebSocket & STOMP - WebRTC 1:1 화상 채팅
- 성별, 지역 기반 매칭 기능
- Swagger를 활용한 API 문서화
- Docker, GitHub Actions를 활용한 배포
- Dependabot을 통한 의존성 관리 및 CodeQL을 통한 코드 정적 분석
Trouble Shooting
- PR 자동 리뷰
- CodeRabbit을 통한 자동 코드 리뷰 시스템 도입
- 스타일 지정, 동작 트리거 지정 등 커스터마이징 가능한 claude-code-action으로 마이그레이션
- 캐시를 통한 속도 향상
- 로그아웃, 탈퇴, 차단 등으로 인한 Access 무효화 필요
- Access 토큰의 짧은 TTL을 고려할 때 토큰 무효화 목록을 DB에 저장하는 것은 I/O 오버헤드가 너무 큼 ****
- 이에 Caffeine Cache를 도입해 토큰 무효화 목록을 관리 및 범용 캐시로 활용
- Redis 도입으로 인해 점진적 Redis 전환 및 이중 캐시 전략 도입 고려 증
- MinIO 공식 Docker 이미지 배포를 중단으로 인한 Garage 마이그레이션 진행 중
🔗 GitHub Ramble-BE
🔗 GitHub Ramble-FE
🕓 2024.09 ~ 2024.11
| 3개월
약톡톡 - 빠르고 안전한 약 공급
안드로이드 앱으로 주문하는 약 IoT 자판기
Java Spring Boot Spring Data JPA QueryDSL MySQL H2
Swagger UI GitHub Actions AWS - EC2 RDS
역할 : Back-End (BE 개발 2인, Android 개발 1인, Embedded 개발 1인)
- REST API 개발
- Open API(의약품 허가정보) 활용 약 정보 수집
- MySQL GIS를 활용한 위치 기반 자판기 조회
- 자판기 별 약 주문 기능
- Swagger를 활용한 API 문서화
- GitHub Actions를 활용한 배포
- Prometheus 및 Grafana를 통한 서버 모니터링
Trouble Shooting
- N+1 Query 문제
- Entity를 조회할 때 연관 관계의 조회 Query가 추가로 발생하는 N+1 Query 문제 발생
- JPQL, Query Annotation의 Fetch Join을 통해 해결 가능하지만 문법 오류, 로직 오류를 발견하기 어려움
- JPA의 경우 여러 조건에 맞는 조회를 위한 각 메서드가 별도로 필요
- QueryDSL을 사용해서 Fetch Join과 조건에 맞는 Filter를 적용해 해결
- 약 주문 동시성 제어
- 여러 사용자가 동시에 약을 주문할 경우 재고가 정상적으로 차감되지 않거나 재고가 없는 약을 주문하는 문제 발생
- DB Transaction Lock을 통한 동시성 제어
- 높은 충돌 가능성을 고려하여 비관적 락 적용
- 예외 처리
🔗 GitHub ytt-medicine-vending-machine
자격증 Certificate