미리보기
기본 정보

보다 나은 해결책을 제안하기 위해 고민하는 백엔드 개발자 김종준입니다.
기술 스택
Java, Spring Boot, Spring Security, Spring Batch, jooq, spring-jpa, Kotlin
프로젝트
FEW
YAPP
2024.05. ~ 진행 중
지속 가능한 학습 습관을 잡기 위한 온라인 학습지 서비스입니다.
Gradle 테스크를 활용한 완전한 Swagger 제공
com.epages.restdocs-api-spec와 org.hidetake.swagger.generator 플러그인을 활용하여 컨트롤러 테스트로 Swagger 생성하고 있습니다.
하지만 해당 플러그인은 multipart/form-data를 지원하지 않아 생성된 Swagger에 multipart/form-data 관련 요청을 생성하는 Gradle 테스크를 추가하여 완전한 Swagger를 제공할 수 있었습니다.
com.epages.restdocs-api-spec에 multipart/form-data 관련 PR 진행
편리한 쿼리 작성을 위한 jOOQ 도입(with Flyway)
타입세이프하고 복잡한 쿼리를 편리하게 작성하기 위해 jOOQ를 도입하였습니다.
jOOQ 코드 생성 및 DB 형상 관리를 위해 Flyway를 함께 도입하였습니다.
30개 이상의 쿼리 작성 및 Explain 분석, 공유하고 있습니다.
해당 결과를 기반으로 DB 설계 변경 및 인덱스 수정에 관한 논의를 진행하고 있습니다.
이벤트를 활용한 성능 개선 및 책임 분리
이벤트를 활용하여 비즈니스 로직과 함께 있었던 기타 로직 분리
API: 구독 처리 + 이메일 전송 + 웹 훅 전송 → API: 구독 처리 / EVENT: 이메일 전송, 웹 훅 전송
이벤트를 별도의 스레드로 처리하여 API 응답 속도 개선
기존 구독 API 500ms → 이벤트 도입 API 25ms
MySQL GET_LOCK/RELEASE_LOCK 함수와 AOP를 활용하여 네임드 락을 구현하였습니다.
뚜벅뚜벅
전남대학교
2024.03. ~ 2024.06.
C-ITS 기반 보행자 신호등 정보 제공 서비스입니다.
MySQL GIS를 도입
공간 인덱스 활용을 위한 위치 포함 관계 활용 쿼리 작성, 위치 정보 조회 기능을 개선할 수 있었습니다.
파티셔닝을 통한 대량의 데이터 조회 개선
매일 880 * N (신호등 수)의 신호등 정보 조회 데이터가 저장되는 상황에서 일정 기간 이후에는 DB 타임아웃이발생하는 문제를 경험하였습니다.
날짜를 기준으로 파티셔닝을 적용하여 타임아웃이 발생하지 않도록 데이터 조회를 개선할 수 있었습니다.
이전 프로젝트에서 AWS 콘솔을 활용하여 인프라 구성 시 관리와 공유에 어려움을 겪었습니다.
코드로 인프라를 관리할 수 있도록 도와줄 테라폼을 도입하여 편리하게 인프라 관리와 공유할 수 있었습니다.
포트폴리오
자격증
SQLD
합격 | 한국데이터산업진흥원
2021.10.
자기소개
[ 내 것으로 만들기 위해 고민하는 개발자 ]
단순히 구현하는 것에 만족한다면 레퍼런스를 잘 찾고 참고하는 것만으로 충분할 수 있다고 생각합니다. 하지만 내가 좋은 코드를 작성하고 있는지 판단하고 프로젝트에 적합한 선택을 하기 위해서는 내가 사용하고 있는 것을 내 것으로 만들기 위한 고민이 필요하다고 생각합니다. 저는 그러한 고민의 시작은 직접 해보는 것으로 생각합니다.
실제로 저는 '짝심삼일'이란 프로젝트에 추가 기능 구현을 위해 합류하며 스프링 멀티 모듈, Flyway, ECS, 린트, 컨벤션 등 이전에는 알지 못했던 새로운 지식을 접한 경험이 있습니다. 저는 이때 마주한 새로운 지식을 제가 수행하였던 기존 프로젝트에 빠르게 적용하고 리팩터링하는 시간을 가졌습니다. 이후 느꼈던 점을 팀원과 이야기하며 새로운 지식과 합류하게 될 프로젝트를 더 잘 이해할 수 있었고 그러한 이해를 바탕으로 추가 기능 구현 간 좋은 코드를 작성하기 위해 노력할 수 있었습니다.
그리고 해당 프로젝트에선 필요에 따라 스프링 부트가 제공하는 자동 구성이 아닌 직접 구성을 설정하여 사용하고 있었는데 이를 이해하기 위해 공부하며 스프링 부트가 제공하는 편리한 자동 구성도 좋지만 이를 제대로 사용하려면 제어할 수 있어야 한다고 생각할 수 있었습니다. 이에 지금까지도 제가 사용하는 스프링 부트에 대한 더 많은 이해와 제어를 할 수 있도록 공부와 디버깅을 이어오고 있습니다.
[ 공유의 중요성을 아는 개발자 ]
2년간 동아리 에코노베이션에서 활동하면서 주간 발표, DEV(외부 발표회), 멘토링 활동을 통해 개발자 간의 지식 공유의 중요성을 경험했습니다. 특히 멘토링을 통해 개념적 지식뿐만 아니라 암묵적 지식까지 공유하려고 노력했습니다. 그 과정에서 같은 지식이라도 각자의 경험과 배경에 따라 다르게 받아들일 수 있다는 것을 알게 되었습니다. 이를 통해 내가 전하고 싶은 지식을 효과적으로 전달하기 위한 방법을 고민하며, 서로가 성장하는 경험을 할 수 있었습니다. 이처럼 공유는 조직원들의 적응을 도울 뿐 아니라 서로에게 성장의 기회를 제공한다는 것을 동아리 활동을 통해 느낄 수 있었습니다.