미리보기
기본 정보

자기소개
저는 태권도 전공을 하고 태권도장에서 아이들을 가르치며 선수부 프로그램을 직접 운영했던 경험이 있습니다. 제가 훈련시킨 아이들이 1군 전국대회에서 다수 수상하고 국가대표 선발전에 출전하는 성과를 거두었습니다. 이후 개발에 관심이 생겨 직업을 전환하게 되었습니다.
개발의 첫 시작은 SBS 컴퓨터 아카데미 웹 개발자 과정이었습니다. 수료 후에는 단순히 CRUD만 구현할 줄 아는 개발자가 되었고 스프링과 JPA를 배웠지만 지연 로딩, N+1 문제, AOP, 스프링 컨테이너 등 제가 배운 기술의 거의 모든 부분을 제대로 이해하지 못한다는 것을 깨달았습니다.
그래서 인프런에서 김영한 강사님의 스프링, JPA 로드맵을 수강하며 지식을 심화시켰습니다.
협업 경험을 쌓고자 AllLink라는 사이드 프로젝트에 참여하여 백엔드 기술 기여를 했습니다. 이 프로젝트에서는 프론트엔드 기획, 디자이너 등 여러 분야의 현업자들과 함께 작업했으나 저를 제외한 모두가 현업자였기에 시간상의 문제로 30% 정도 진행되고 마무리되었습니다. 이 경험을 통해 협업이 개발자에게 가장 중요한 경험이라고 판단하게 되었고 프론트엔드 개발자와 함께 프로젝트를 진행할 수 있는 프로그래머스 데브코스를 수강하게 되었습니다.
데브코스에서는 총 4번의 프로젝트를 진행했습니다.
1차부터 3차까지는 개발을 처음 시작하는 인원도 많았습니다.
첫 프로젝트에서는 제가 리더 역할을 맡았고 대부분의 팀원이 백엔드를 처음 접하다 보니 프론트엔드를 자발적으로 맡으려는 인원이 없었습니다. 저는 이전에 HTML, CSS, JavaScript를 학습했지만 직접 프론트엔드 개발 경험은 없었습니다.
그러나 이를 배울 기회라고 생각하여 사비로 프론트엔드 책을 구매하며 학습했고, React, TypeScript, Next. JS를 이용해 간단한 커피 주문 홈페이지를 구현했습니다.
1차부터 3차 프로젝트에서는 백엔드 기능 구현을 어려워하는 팀원들이 있었습니다.
태권도 사범 경험으로 누군가를 도와주고 가르치는 데 익숙했던 저는 제 지식을 공유하고 학습을 도와주며 모든 팀원들이 담당 기능을 기한 내에 완료할 수 있도록 이끌었습니다.
마지막 프로젝트인 '미끼미끼'에서는 프론트엔드 개발자와 협업하여 진행했습니다.
프론트엔드 개발자와의 협업 경험과 직접 프론트엔드를 다뤄본 경험이 있어 프로젝트 리더를 맡게 되었습니다.
4주라는 짧은 기간 동안 기획부터 개발까지 완료해야 했기 때문에 효율적인 일정 관리가 중요했습니다.
Jira 스크럼을 활용해 기능을 1차, 2차 스프린트로 나누고 백엔드가 프론트엔드보다 먼저 개발을 시작하게 하여 프론트엔드 기능 연동이 원활하게 진행되도록 관리했습니다.
결과적으로 초기 기획한 기능은 물론 추가 기능까지 모두 구현할 수 있었습니다.
프로젝트 중에는 여러 문제도 경험했습니다.
개발 초기에 데이터베이스 해킹 문제가 발생했는데 이는 기본 root 계정과 쉬운 비밀번호 설정이 원인이었습니다.
문제 해결을 위해 데이터베이스를 다시 세팅하고 root 계정을 삭제한 후 예측하기 어려운 사용자명과 비밀번호로 별도 계정을 만들었습니다.
또한 보안을 강화하기 위해 cron을 통해 1시간마다 백업 스크립트가 실행되도록 하고 3일이 지난 파일은 자동 삭제되도록 스크립트를 작성했습니다.
프로젝트 후반부에는 마감 기한이 임박했음에도 프론트엔드의 진척도가 낮은 상황이 발생했습니다.
프론트엔드 팀원들은 전문 교육을 받은 상태였기에 제가 도움을 주는 것이 오히려 리팩토링 요소를 만들 수 있다는 우려가 있었습니다.
하지만 프로젝트 완성이 목표였기에 지속적인 소통과 리뷰를 받으며 일부 프론트엔드 기능을 담당하여 기한 내에 프로젝트를 완성할 수 있었습니다.
또한 백엔드 조회 로직의 성능 개선 경험도 있습니다.
멘토링에서 기존 Offset 방식 페이징의 성능 이슈를 지적받고, Cursor 방식 페이징을 추천받았습니다. 단순히 구현하기보다는 차이점을 직접 확인하고자 100만 개의 데이터로 성능 테스트를 진행했습니다. Offset 방식은 서버가 다운될 정도로 부하가 컸고, 로컬에서 측정했을 때 응답 시간이 7초나 걸렸습니다. 반면 Cursor 페이징 방식은 1,000개의 동시 요청에도 평균 2.7초가 소요되어, 약 100배의 성능 차이를 확인할 수 있었습니다.
2차 프로젝트에서는 사람인 API를 통해 채용 공고를 DB 서버에 저장하는 로직의 성능 개선을 하였습니다.
직무 스킬이라는 데이터를 DB에 넣어둔 상태로 채용 공고의 직무 스킬 값을 이용해 DB에서 조회 후 저장하는게 기존 로직이었으나
쿼리가 너무 많이 발생하고 처리 속도가 많이 늦는 문제점을 확인하였습니다.
직무 스킬은 데이터를 관리자만 관리하고 변경될 소지가 매우 적다고 판단하여 Redis에 캐싱하여 사용하였고 이전에 처리 속도는 1,200개 데이터 저장하는 로직이 87초가량 걸렸고 개선 후에는 87%의 성능 개선을 하였습니다.
저는 팀원들과 협업할 때 제가 아는 지식을 적극적으로 공유하며 팀원들의 역량을 함께 키워나가는 것을 중요시합니다.
또한 문제가 발생했을 때 근본적인 원인을 찾아 깊이 있게 해결책을 모색하는 접근 방식을 가지고 있습니다.
저의 이러한 특성과 경험이 앞으로 백엔드 개발자로서 조직에 큰 도움이 될 것이라 확신합니다.
기술 스택
Java, Spring, Spring Boot, JPA, TDD, MySQL, GitHub, Docker, JIRA, Confluence
교육
(주)그렙
사설 교육 | 프로그래머스 클라우드 기반 백엔드 엔지니어링 데브코스
2025.04. ~ 현재 | 재학 중
인프런
사설 교육 | 우아한형제들 최연소 기술이사 출신 김영한의 스프링 완전 정복
2023.10. ~ 2024.02. | 수료
인프런
사설 교육 | 김영한의 스프링 부트와 JPA 실무 완전 정복 로드맵
2023.07. ~ 2023.09. | 수료
SBS 컴퓨터 아카데미
사설 교육 | 웹개발
2022.01. ~ 2023.06. | 수료