미리보기
기본 정보
공무원에서 개발자로 전향하여 Java와 SpringBoot를 활용한 백엔드 시스템 개발에 강점을 가진 개발자입니다. 주로 성능 최적화와 안정적인 시스템 개발에 필요한 요소들을 생각하며 학습하고 성장해왔습니다. 꾸준함, 도전, 열정적인 자세를 가졌습니다. 공무원을 그만두고 국비교육을 통해 웹 서비스 개발의 전반적인 사이클을 학습하고, 수료 직후 온라인 부트캠프 학습에 참여하여 실무 역량을 키우기 위해 노력해왔습니다. 그 결과 개발/배포를 하며 최우수 팀프로젝트에 선정되는 성과를 이루었습니다. 공백기간에도 대외활동 및 스터디에 참여하여 읽기 좋은 코드를 작성하는 사고와, 실용적인 테스트 가이드를 학습하며 이를 실제 프로젝트에 적용하고 블로그에 트러블 슈팅 및 학습포인트를 문서화하여 공유해왔고, 회고록을 통해 부족한 점들을 깨닫고 개선하기 위해 노력해왔습니다. 또한 공무원으로 근무할 당시 다양한 이해관계자와 협력했던 경험을 통해, 효과적인 커뮤니케이션 능력을 키웠으며, 협업 시에도 원활한 소통과 체계적인 문서화 능력을 길러왔습니다.
기술 스택
프로젝트
개인프로젝트
커뮤니티 플랫폼
사용된 기술 : Java17, SpringBoot3.x, SpringDataJPA, MySQL, Redis, JUnit5, Mockito
참여인원 : 1인
역할 : 프로젝트 설계 및 개발, DB 설계 주도
GitHub : free-community
주요 기능 개발 및 성과
대용량 게시글 조회 시 불필요한 컬럼 접근과 정렬 연산으로 인한 쿼리 성능 저하(5.4s)를 개선하기 위해 커버링 인덱스 설계, 슬로우 쿼리 개선(353ms) 14배 성능 향상
대량의 트래픽 환경에서 INSERT 쿼리의 병목현상을 최소화 하고자 도메인별 DB를 MSA 구조로 리디자인하여 외래키 제거, 각 서비스간의 장애 전파 최소화로 인한 시스템 안정성과 확장성 및 병목현상 개선
조회수 어뷰징 문제와 조회수 동시성 이슈를 해결하고자 싱글 스레드 기반의 NoSQL Redis 도입
기능 수정 시 기존 로직 영향 범위를 빠르게 파악하기 어려운 구조 문제를 개선하기 위해 BDD 스타일의 단위 테스트 도입, 테스트 커버리지80% 유지함으로써 기능 안정성 기여
이미지 저장소를 외부 서비스로 전환하는 요구사항에 대비하여 유연하게 대처할 수 있도록 DIP 기반의 인터페이스 분리 및 전략 주입 구조로 개선
팀프로젝트
실시간 비디오 동기화 및 채팅 플랫폼
사용된 기술 : Java17, SpringBoot3.x, SpringDataJPA, MySQL, Redis
참여인원 : 5인
역할 : 실시간 비디오 동기화 및 채팅 시스템 구축
주요 기능 개발 및 성과
HTTP Polling 방식 기반의 채팅 구조에서의 빈번한 네트워크 요청으로 인한 응답 지연 문제를 해결하기 위해 WebSocket + STOMP 방식 도입, 이를 이용한 다중 채팅 시스템 설계 구축
동시성 제어 부재로 인해 비디오 순서 변경시 발생한 동시성 이슈를 해결하기 위해 비관적 락을 적용하여 동시 접근 제어, 동시 요청 시 데이터 유실 문제 0% 확인, 락 타임아웃을 최소화 하기 위해 비디오 순서 변경 메서드 호출 직전 락을 획득하도록 로직 개선
특정 API 요청 시 발생하는 N+1 문제를 해결하기 위해 DTO Projection 도입하여 불필요한 쿼리 발생 제거
대외활동
인프런
인프런 워밍업 클럽 스터디3기(실용적인 테스트 코드 가이드)
참여인원 : 30명
활동 기간 : 2025.03 ~ 2025.04
학습내용
테스트 코드 작성이 실제로 어떤 이점을 주는지에 대한 의문점을 해소하기 위해 실전 프로젝트에 적용하여 테스트 코드의 효율성을 자연스럽게 익힘
의미 있는 변수명, 메서드명과 SRP 원칙을 반영한 적절한 클래스명, 의도를 드러내는 조건 분기 학습
크고 작은 프로젝트를 진행함에 있어서 테스트 코드 작성에 대한 바탕이 됨
2025
우아한형제들
우테코 프리코스
활동 기간 : 2024.10 ~ 2024.11
학습내용
실무에서 반복되는 정책 변경과 기능 확장을 보다 유연하게 대응하기 위해 전략 패턴, 템플릿 메서드 패턴, Enum 기반 정책 설계를 도입, 중복 코드 약 65%제거(Git diff 기준 기존 50줄 → 20줄), SOLID 원칙 자연스럽게 반영
요구사항 분석을 간과했을 때 발생하는 문제를 경험하면서, 기능을 도출하고 설계를 구체화하는 과정의 중요성 학습
이 과정에서 얻은 인사이트를 바탕으로 크고 작은 프로젝트에서 코드의 가독성을 높이고 유지보수를 용이하게 하기 위해 끊임없이 고민하는 자세를 학습
OOP에 대한 개념과 SOLID 패턴 및 다양한 디자인패턴의 이해도를 향상시키고 Java라는 언어의 특성을 이해하는데 전반적으로 도움이 됨
2024