
이낙헌
ㅤ
소개
- 시행착오를 겪더라도 끈질기게 문제를 해결하고, 그 과정에서 오는 성취감을 좋아합니다.
- 대학교에서 56명 중 유일하게 라운드 로빈 스케줄링 구현 과제를 성공적으로 수행하였습니다.
- 동시성 문제에서 만난 데드락의 원인을 파악하기 위해 MySQL의 락 메커니즘을 깊이 학습하고, 비즈니스 상황에 적합한 해결책을 제시하였습니다.
- 반정규화 및 쿼리 튜닝을 통해 데이터 조회 성능을 최대 722배 개선하였습니다.
- 협업의 중요성을 깊이 이해하고, 팀원들과 원활한 소통과 협력을 하기 위해 노력합니다.
- 주변 동료로부터 “항상 밝고 유쾌한 모습을 통해 팀에 긍정적인 영향을 끼친다” 라는 피드백을 가장 많이 받았습니다.
- 백엔드 팀의 빠른 속도로 인해 프론트엔드 팀이 테스트 코드 작성과 리팩토링을 제대로 수행하지 못하는 상황이 발생했습니다. 이때 애자일의 '지속 가능한 속도'를 제안하여 프로젝트의 장기적인 품질을 향상시켰습니다.
- 머지된 PR 리뷰, 테크 로그 공유, 페어 프로그래밍 등을 통해 팀 내 업무 동기화를 강화하였습니다.
프로젝트
투룻
2024.07 ~
우아한테크코스 6기에서 진행한 프로젝트입니다.
투룻은 여행 계획과 여행기를 간편하게 관리할 수 있는 플랫폼입니다. 사용자는 마음에 드는 여행기를 클릭 한 번으로 나만의 여행 계획으로 변환할 수 있습니다.
미리 준비된 템플릿을 통해 쉽게 여행기를 작성하고, 작성한 계획은 링크를 통해 친구들과 공유할 수 있습니다.
프로젝트 정보
- 링크 : 서비스 링크 | 깃허브 링크 | 포트폴리오 링크
- Java, Spring boot, JPA, MySQL, Flyway, Docker, Github Actions, Ngnix, AWS
- 팀 구성 : 백엔드 5명, 프론트엔드 3명
- 담당 업무
- 슬로우 쿼리 개선을 위해 GROUP BY와 JOIN의 순서를 바꿔 드라이빙 테이블의 크기를 줄이고, 커버링 인덱스를 적용했으며, 최종적으로 GROUP BY + HAVING 을 다중 JOIN으로 변환해 임시 테이블 없이 인덱스를 활용하도록 개선하여 쿼리 성능을 최대 722배(1445ms → 2ms) 향상
- 여행기 장소가 중복 저장되는 동시성 문제를 해결하기 위해 다양한 해결책(S/X 락, 트랜잭션 격리수준 조정) 검토, 비즈니스 특성을 고려하여 역정규화로 문제 해결
- 가장 많이 조회되는 좋아요 순 정렬 API에서 MySQL의 인덱스를 활용하지 못하는 문제 발생, 반정규화를 통해 쿼리 성능 659배(1557ms → 2.36ms) 향상
- 서버 장애로 EC2 재부팅 시 외부에서 SSH 접속을 못하는 상황 발생, 스프링 애플리케이션이 자동으로 실행되도록 systemd 서비스 구축
- 서버 장애 발생 시 수동 복구로 인한 느린 대응 발생, CloudWatch와 Lambda로 자동 복구 시스템을 구축하여 장애 대응 시간 단축
- 다운 타임 최소화를 위해 GitHub Actions, Nginx를 이용한 블루 그린 방식의 graceful shutdown 무중단 배포 구축
- SPOF 문제 해결을 위해 서버 다중화 및 DB Replication 작업 수행
- 팀 내 컨텍스트 공유 부족 문제를 테크 로그 작성, 코드 리뷰 규칙, 페어 프로그래밍으로 해결
발표 및 아티클