미리보기
기본 정보

직감이 아닌 데이터를 기반으로 접근하고 협업하는 백엔드 개발자 이홍섭입니다.
기술 스택
Java, Spring Boot, MySQL, spring-jpa, JUnit, querydsl, Mockito, AWS
경력
위밋 모빌리티
Manager | 플랫폼팀 | 재직 중
2024.04. ~ 재직 중 (11개월)
인하우스 서비스
제주오늘
모놀리식 아키텍처의 Node.js → MSA 기반의 Kotlin + Spring 마이그레이션 및 리팩토링 업무 참여HLB테라퓨틱스 3PL 통합 시스템 구축 SI프로젝트 전 과정 참여
주어진 상황에서 할 수 있는 최선의 선택을 하고자 하였습니다. 특히 테스트코드 작성을 통해 잦은 기획 내용 변경에 수월하게 대응하거나, 품질 좋은 코드를 작성하도록 노력하였습니다.
또한 Node.js 진영에 있던 동료 개발자들을 위한 JPA, 트랜잭션 관리 및 DDD원칙에 대한 관점과 해당 이슈들을 따로 정리하여 공유 및 전파하였습니다. (자세히)
프로젝트
HLB 테라퓨틱스 3PL 통합 운영 프로젝트
위밋 모빌리티
2024.05. ~ 2024.10.
신규 프로젝트 개발을 위한 요구 조건 기획, 설계에 참여 및 개발 진행, 문서화
Kotlin + Spring Boot + JPA 기반 API 시스템 구축
재사용 가능하고 변경에 유연한 API 작성을 위해 여러 디자인 패턴 도입
재고 관리 시스템 동시성 문제 해결: 바코드 스캔 기반 입/출고 프로세스에서 생긴 동시성 문제를 Redis 분산락 구현으로 해소, 데이터 정합성 확보
분산 환경 스케줄러 동기화: 다중 서버 환경에서 스케줄러 락 메커니즘 도입으로 작업 중복 실행 방지 및 데이터 일관성 확보
메일 발송 시스템 최적화: 코루틴을 활용한 병렬 비동기 처리 구현으로 다수 사용자 대상 발송 시 처리 시간을 5초/인에서 일괄 4-5초로 단축 (약 60% 이상 성능 향상)
모띠클 (Motticle)
개인
2023.12. ~ 진행 중
[ 소개 ]
모두의 영감이 담긴 아티클(링크,이미지,글귀)들을 한 곳에서 관리하는 서비스
[ 기술 스택 ]
Java 17
Spring Boot
MySQL
Redis
JPA
QueryDSL
AWS
Nginx
Docker
Github Actions
[ 경험과 성과 ]
- 전체 API 설계 및 문서화 : 노션을 이용한 API 설계(명세)와 Spring RestDocs를 활용하여 테스트 기반의 API 문서화
- 테스트 기반의 견고한 코딩 : 가성비 있는 단위 테스트를 진행하여 견고한 서비스 형성 및 코드 품질 향상
- Frontend 구현을 통한 프로젝트 서비스화 : 단순 API 설계를 넘어 HTML, CSS, JS를 활용한 화면 구현을 통해 완성도 높은 프로젝트 서비스화 달성
- JWT + OAuth2 소셜 로그인 구현 : 카카오톡 소셜 로그인 구현으로 간편한 서비스 이용 환경 제공
- 비동기적 데이터 처리 경험 : 동기적으로 진행되었던 HTML 메타 데이터 크롤링 과정에 Stream, parallelStream, CompletableFuture등을 단계적으로 활용한 비동기적 데이터 처리로 지연 시간 개선
(8.06s → 1.25s, 85% 개선)
(자세히) - 로컬 캐시 Caffein Cache 도입 : 위 비동기적 데이터 처리에 Caffein Cache를 도입하여 지연 시간 최소화
(최종 8.06s → 397ms로 95.08% 개선)
(자세히) - 인덱스를 통한 성능 개선 : 대부분의 API 호출 전 사용되는 '회원 인증' 과정에서 email 컬럼에 인덱스 적용으로 Index Only Scan 유도하여 성능 향상
(평균 80ms → 20~30ms, 70% 개선)
- Bucket4j를 활용한 서버 부하 방지 : 단시간 많은 요청을 보낼 수 있는 공개 여부 수정/스크랩 기능에 Bucket4j를 통한 처리율 제한을 걸어 서버 부하를 방지 (자세히)
- Redis Pub/Sub 기반 SSE 실시간 알림 구현 : 현재 모놀리스 서버이지만, 서버 Scale Out 상황을 고려한 알림 구현
- 이벤트/트랜잭션 전파 레벨/비동기를 통한 알림 서비스 개선 :
이벤트 퍼블리싱과 비동기를 통해 결합도를 낮추고, 트랜잭션 전파 레벨 설정을 이용하여 알림 전송 실패 시 메인 서비스 로직 롤백 방지로 시스템 안정성과 확장성 극대화 - CI/CD 파이프라인 구축 및 배포 자동화 : AWS, Docker, Github Actions, Nginx 활용한 Blue/Green 무중단 배포 자동화 구축
나를 위한 네이버 예약 취소 알리미
개인
2023.08. ~ 2023.08.
[ 소개 ]
이용하던 미용실의 네이버 예약 시스템에 피로함을 느껴 만든 예약 취켓팅 알리미 서비스
[ 기술 스택 ]
Java 17
Spring Boot
OpenFeign
TelegramBots
[ 경험과 성과 ]
- 단기간 서비스 개발 경험 : 24시간의 Due Date를 가진 자체 해커톤을 통해 단기간에 서비스를 개발
- Feign Client를 활용한 외부 API 연동 : 네이버 예약 API의 응답 데이터를 개발자 도구와 FeignClient를 이용하여 분석하고, 이를 통해 예약 가능 여부를 판단
- 텔레그램 봇 API 연동 : 기존 CLI가 아닌 텔레그램 통해 사용자가 간편하게 정보 입력 및 예약 여부 확인을 할 수 있도록 구현
- 스케줄러를 이용한 자동화 시스템 구축 : 사용자가 수동으로 예약 여부를 확인할 필요 없이, 주기적으로 예약 여부를 판단하여 자동으로 처리
딜라이트 (Dealight)
프로그래머스 데브코스 백엔드 4기
2023.10. ~ 2023.11.
[ 소개 ]
소상공인들의 당일 폐기 예정인 음식을 효율적으로 판매/구매 하는 서비스
FE : 4명 / BE : 5명
[ 기술 스택 ]
Java 17
Spring Boot
MySQL
Redis
JPA
QueryDSL
AWS
NginX
Docker
Github Actions
ElasticSearch
[ 기여 내용 ]
- O2O 도메인 경험
- 백엔드 팀장으로서 일간/주간 스크럼 리드 및 전반적인 일정 조율
- 노션을 이용한 API 설계(명세)와 Spring RestDocs를 활용하여 테스트 기반의 API 문서화로 프론트 팀원과 소통
- 업체 도메인 및 메인 검색 파트 구현
- Spring RestDocs를 활용하여 테스트 기반의 API 문서화
- 코드 리뷰를 통해 클린 코드, 컨벤션 준수
[ 경험과 성과 ]
- 팀내 테스트 코드 문화 확립 : 부담감 없는 가성비 좋은 테스트 코드를 통해 동작 방식 문서화의 중요성과 견고한 서비스, 코드 품질 향상을 위해 테스트 코드 문화 전파
- 거리 기반 업체 노출/검색 기능 구현 : 업체와 소비자 x,y 좌표를 이용하여 두 지점 간의 대원거리(또는 최단 거리)를 구하는 수학적 공식인 SQL 하버사인 공식을 접목시켜 거리 기반 베이스의 검색 기능 구현
- 검색 성능 최적화 :
검색시, 검색어가 포함되는 LIKE ‘%검색어%’를 사용할 때 인덱스가 타지 않아 응답시간이 느려지는 문제가 발생
MySQL Like문 → Full Text → QueryDSL/NoOffset 순차 적용으로지연 시간 82% 개선 (290ms → 52ms)
(자세히)
ElasticSearch 도입 및 형태소 분석기 활용으로 검색 고도화 경험
고수 캐쳐 (Gosu Catcher)
프로그래머스 데브코스 백엔드 4기
2023.08. ~ 2023.09.
[ 소개 ]
전문가 매칭 서비스 숨고 클론 코딩
BE : 5명
[ 기술 스택 ]
Java 17
Spring Boot
MySQL
Redis
JPA
QueryDSL
AWS
[ 기여 내용 ]
- O2O 도메인 경험
- 프로젝트 리더로서 전반적인 일정 조율 및 스크럼 리드
- Jira/Github Issue, Pull Request/코드 컨벤션등의 룰을 주도적인 회의를 통해 팀원들과 결정
- 정해진 팀 룰을 노션에 문서화 하여 팀원들에게 지속적인 공유
- 검색 및 채팅 기능 담당
- 메인/세부 서비스, 견적서 도메인 담당
- 서비스 핵심 기능인 견적서 매칭 담당 및 이를 페어 프로그래밍으로 구현
- 코드 리뷰를 통해 클린 코드, 컨벤션 준수
[ 경험과 성과 ]
- 서비스 UI 및 API 개발 경험 : 서버, DB뿐만 아니라 전체 서비스 UI를 구성하고 사용자의 서비스 이용 형태를 이해하여 적절한 API를 개발한 경험
- Redis를 활용한 인기/최근 검색어 구현 : NoSQL DBMS Redis를 사용하여 서비스의 최근 및 인기 검색어를 구현 (자세히)
- 성능 최적화를 위한 FETCH JOIN 사용 : 유저와 고수 간 매칭시 발생한 N+1 문제를 해결하기 위해 FETCH JOIN을 사용하여 성능 최적화를 수행한 경험 (자세히)
- 실시간 채팅 구현 : 유저 ↔ 고수 양방향 채팅을 위해 웹소켓과 Stomp 프로토콜 도입
- 복잡한 비즈니스 로직의 개선 지점 발굴 :
견적서 매칭 로직의 높은 결합도 및 의존성 부분을 서비스 간 결합도를 낮추고 느슨하게 연결하는 이벤트 기반 리팩토링 가능성 발견
처음으로 복잡한 비즈니스 로직을 해석하고 다뤄보며 페어 프로그래밍을 통해 문제 해결 및 도전적인 경험 축적
포트폴리오
자기소개
대학에서는 영상을 전공했고, 전 직장을 포함하여 약 7년 정도 영상 브랜딩(편집, 2D, 3D) 업무를 경험했습니다.
객관적인 지표없이, 감각에 의존 해야하는 해당 업무에 피로를 느꼈습니다.
어떤 직업이 '나의 의견을 객관적인 지표를 통하여 잘 전달할 수 있고, 잘 설득시킬 수 있을까' 하는 고민이 많이 생겼습니다.
그러다 영상을 제작하는 프로그램 내용을 튜닝하고 주위 사람들이 그것을 편리하게 사용하는 것에 희열을 느꼈고, 주로 데이터를 기반으로 업무를 진행하고 협업하는 백엔드 개발자에 매력을 알았습니다.
이후 피벗을 결심하고 현재까지 열심히 정진중입니다.
누구나 편리하고, 단 한명에게라도 이로울 수 있는 서비스를 만들기위해 노력하고 있습니다.
또 항상 낮은 Latency를 유지하기 위해 노력하고 연구하는 것을 즐깁니다. 시스템에서 발생하는 지연을 최소화함으로써 사용자 경험을 향상시키고자 끊임없이 노력하고 그 노력을 즐기고 있습니다.
자기주도적 학습을 통해 새로운 기술과 도구에 대한 지식을 쌓고 탐구하는 것을 즐깁니다. 변화하는 IT 환경에 적응하기 위해 끊임없이 자기계발에 힘쓰고 있습니다.
그 과정에서 꾸준함의 힘을 깨닫고, 학습한 내용을 블로그에 정리하며 공유하고 있습니다. 지식을 나누는 것은 더 나은 개발자로 성장하기 위한 한 방법으로 생각하고 있습니다.
사교적인 성격을 바탕으로 원활한 커뮤니케이션 능력을 가지고 있습니다. 팀 내에서 소통과 협업을 통해 일의 효율성을 높이고, 다양한 아이디어를 주고받을 수 있는 환경을 즐깁니다.
교육
프로그래머스 데브코스
사설 교육 | 백엔드 4기
2023.06. ~ 2023.11. | 졸업
동의대학교
대학교(학사) | 디지털 콘텐츠학과
2015.03. ~ 2021.02. | 졸업