레포는 대덕소프트웨어마이스터고등학교 학생들을 위한 이력서 작성 및 관리 플랫폼으로, 현재 약130명 이상의 학생이 안정적으로 사용 중인 서비스입니다.
학생들이 작성한 이력서는 PDF로 변환되어, 학교와 MOU를 체결한 기업에 배포됩니다. 이를 통해 학생들이 자신의 역량을 효과적으로 기업에 어필할 수 있도록 돕고 있습니다.
이 프로젝트에서 백엔드 리드를 맡아 전체 API 설계 및 구현을 주도했으며, 리소스 사용 최적화를 통해 더욱 효율적인 서비스 개발에 기여했습니다.
이력서 작성 및 관리
레포 서비스의 핵심 도메인인 ‘이력서 관리’에 필요한 모든 API를 설계 및 구현하였습니다.
전공 관리
기존에는 사용자가 입력한 문자열 그대로 전공이 저장되어 데이터의 일관성과 가독성이 저하되는 문제가 있었습니다. 이를 해결하기 위해 전공의 추가·삭제를 어드민(선생님)이 관리하도록 프로세스를 변경하였고, 해당 전공 관리 API를 설계 및 구현했습니다.
도서관 조회
다른 기수 선배들의 이력서를 참고 할 수 있는 ‘도서관’ 기능의 조회 API를 설계 및 구현했습니다.
이를 통해 학생들이 처음 이력서를 작성할 때 겪는 어려움을 줄이고, 다양한 사례를 참고하여 더 완성도 높은 이력서를 작성할 수 있도록 지원했습니다.
선생님 피드백 조회
레포 서비스에서는 학생들이 작성한 이력서를 제출하여 선생님께 피드백을 받을 수 있습니다.
해당 기능에서 사용되는 사용자별 피드백 조회 API를 설계 및 구현하였습니다.
어노테이션 기반 사용자 검증
횡단 관심사를 분리를 위해 @RequiresRole
의 커스텀 어노테이션과 Spring AOP를 활용해 사용자 역할을 검증 로직을 개발하여, 백엔드 팀이 더욱 생산성 높은 개발을 할 수 있도록 제공했습니다.
프로젝트 설계
DDD 관점으로 보았을 때 바운디드 컨텍스트의 경계가 모호하고, 하위 도메인 간 강결합 문제가 있었습니다. 이를 해결하기 위해 기존의 코드의 패키지를 모듈화해 바운디드 컨텍스트의 경계를 명확하게 하였습니다.
팀원과의 사용하는 도메인 용어 불일치 문제가 발생하여, 팀 내의 유비쿼터스 랭귀지를 정의하여 도메인 용어 불일치를 해결하였습니다.
리소스 사용 최적화
자바 21의 가상 스레드를 적용해 기존의 OS 레벨에서 발생하던 컨텍스트 스위칭, 스레드 관리를 JVM 수준으로 개선하여 리소스 사용을 최적화했습니다.
또한, I/O 바인딩 작업에 대한 높은 성능의 동시성 처리를 얻게 되었습니다.