2024/03 ~ 주니어 백엔드 개발자
About MeMain Project
2025/03 ~
https://github.com/team-incube/GSMC-server-V2
https://github.com/team-incube/GSMC-server-V3
GSM 인증제 관리 서비스
현재 재학중인 학교만의 특별한 학생 평가 시스템인 GSM 인증제의 공식 관리 서비스입니다.
수기로 40여가지 항목을 직접 기록하고 증빙자료를 작성하던 기존의 불편한 방법에서 벗어나 학생들과 선생님들이 편리하도록 도왔습니다.
Skill
v2
Server
Java, SpringBoot, Spring Data JPA, QueryDSL, Spring Security, MySQL, Redis, Java Caffeine
Cloud
Nginx, Docker, Github Action, MinIO
v3
Server
Kotlin, SpringBoot, Exposed, Spring Security, SQLite, Redis, Kotest, Mockk
Contribute.<aside> 💡 헥사고날 아키택쳐 구축
프로젝트 특성상 주기적으로 요구 사항이 변경되며 초기 개발 기간이 충분하고 수정이 잦기 때문에 견고하고 코드 변경 시에도 변경이 크게 전파되지 않는 헥사고날 아키텍처가 적절하다 판단하여 해당 아키텍처를 채택하였습니다.
MVC 패턴의 기초적인 구조에 따라 크게 3개의 계층으로 Presentation, Application, Persistence로 구분하고 각 계층 간 Port/Adapter 패턴으로 진입점을 구현하여 책임을 완전히 분리하였습니다. AWS S3와 같은 외부 API와 연결되는 부분도 Port/Adapter 패턴으로 분리하여 예외 전파와 책임을 분리하였습니다.
https://github.com/team-incube/GSMC-server-V2/pull/1
</aside>
<aside> 💡 캐싱을 활용한 성능 개선
GSM 인증제는 40여 가지의 항목들로 구성되는데 운영 기간에는 해당 항목들의 쓰기 요청이 거의 없으며 읽기 요청은 압도적으로 많다는 점을 인지하여 이를 캐싱해 두고 사용하면 I/O를 줄여 RDB의 부하를 줄임과 동시에 처리 속도 역시 높일 수 있어 효율적이라 판단해 해당 방안을 채택하였습니다.
항목 이름을 이용해 항목을 조회하는 메서드에 @Cacheable 어노테이션을 사용하여 캐싱을 적용하였고 성능 측정을 시도하였습니다.
https://gist.github.com/snowykte0426/141be94179959673a6053039483f7bf1
자격증을 등록하는 API를 기준으로 삼아 JMeter로 성능을 측정하였고 5000쿼리 기준으로 평균 응답 시간이 640ms → 510ms로 20.31% 향상되었으며 실제 환경에서 응답 시간 역시 476ms → 269ms로 43.49% 향상되었습니다.
https://github.com/team-incube/GSMC-server-V2/pull/51
</aside>
Contribute.<aside> 💡 엑셀 시트 출력 API 성능 개선
</aside>
<aside> 💡 OAuth 인증/인가 Flow 개선
</aside>
<aside> 💡
</aside>