미리보기
기본 정보

안녕하세요. 밥 사주고 싶은 개발자 남은찬입니다. * 현재에 안주하지 않고, 주도적으로 문제를 찾아 해결해 나갑니다. * 팀 전체의 협업 분위기를 형성에 기여하는 긍정적이고 열려있는 태도로 함께합니다. * 새로운 기술 탐구와 트러블 슈팅에 대해서 기록하며 공유하려고 노력합니다. 감사합니다.
기술 스택
Java, Kotlin, Spring, JPA, querydsl, MySQL, Redis, GitHub, github-actions, Docker, AWS, Slack, Spring Batch, Elasticsearch, Notion
경력
에스테이트클라우드주식회사(EstateCloudInc.)
서버 개발자 | 개발팀 | 재직 중
2024.10. ~ 재직 중 (5개월)
수행 업무 🗓
ElasticSearch 기반 로그 모니터링 시스템 구축
각 모듈에 유연하게 적용할 수 있는 템플릿 메소드 패턴의 로깅 모듈 개발
OpenSearch 기반의 로그 저장소와 대시보드 구축하고 편리한 로그 추적을 제공할 수 있는 ElasticSearch 인덱스 및 정책 구성
경량 파이프라인 기술인 Vector와 로그 수집 기술인 FileBeat를 활용하여 로그 파이프라인 구축
AWS 기반 서버 구축 및 관리
EC2, ECS, RDS 기반 서버 구축 및 관리
CloudWatch를 활용한 서버 모니터링
Spring 기반 우대빵 앱 및 ERP API 서버 및 Spring Batch 기반 배치 프로그램 개발
우대빵 앱 및 ERP 시스템에 필요한 API 개발
우대빵 앱에서 제공하는 부동산 매물 변동 및 가격 변동 정보를 수집하는 배치 구축
코드 품질 및 협업 문화 정착
GitHub PR/코드리뷰 기반의 개발 프로세스를 통해 코드 품질 향상 및 지속적인 피드백 문화 정착
Clean Code 원칙을 준수하며 가독성과 유지보수성이 높은 코드베이스 구축에 기여
개선 업무 🛠
[배치 환경에서 발생하는 Master DB의 부하 개선] (Blog 링크)
기존 배치 프로그램에서 발생하는 모든 부하가 Master DB로 향하는 문제점 발견
대부분의 작업의 Read 작업에서는 Master DB를 바라볼 필요가 없다는 것을 파악
데이터베이스 이중화 설정 추가와 생성 방식에 따라 Master DB, Reader DB를 바라볼 수 있도록 커스텀 ItemReader 재구현
Master DB로 몰리는 부하를 Reader DB로 분산에 성공하며 피크타임 Master DB CPU 사용량을 약
70% => 45%
로 약25%
개선 및 놀고있던 Reader DB의 CPU 사용량을 약25%
끌어올리는데 성공
[실거래 수집 배치 수행시간 개선]
기존 실거래 수집 배치가 약 6시간 정도 걸리는 것과 특정 스탭이 3시간 30분 정도를 소요하는 문제점을 확인
해당 스탭의 Step Execution 데이터를 분석하여 Commit Count가 29449정도 되는 것을 확인
코드를 분석하여 해당 스탭에서 Writer로 전달될 수 있는 최대 Item의 개수가 40개인 것을 확인 후 Writer로 전달될 수 있는 최대 Item의 개수가 1000개가 되도록 ChunkSize 조절
개선 후 Commit Count를 1179로 줄이며 해당 스탭의 수행시간을
3h 30m => 1h 30m
으로 줄이는데 성공하며 배치 수행시간2h
개선
[배포 파이프라인 개선을 통한 배포 안정성과 생산성 강화]
기존의 Jenkins에 의존하던 수동 배포 파이프라인에서 배포시 변경사항을 확인하기 여렵다는 문제점과 배포의 Jenkins서버에 의존된다는 문제점을 발견
Github Actions를 활용해 PR 기반의 CI 트리거로 더블 체크환경과 자동 머지 및 CD 트리거 세팅을 통해 배포 안정성 및 생산성 강화
프로젝트
Inter Ticket
프로그래머스 / (주)그랩
2023.12. ~ 2024.01.
[프로젝트 소개]
인터파크 티켓 서비스를 클론 타겟으로 삼고 백엔드 구성과 API 를 분석하고 구현하며 티켓팅 서비스에서 겪을 수 있는 기술적 문제를 경험하고 해결하는 과정을 경험하는 프로젝트
[수행 업무]
Redis를 활용한 캐시 기반의 공연 랭킹 기능 구현
랭킹 조회 쿼리를 MySQL Straint Join과 Covering Index로 튜닝하여 캐시 갱신 부하 감소
쿼리 수행시간 : 5.64sec => 1.02sec
분산락으로 구현된 티켓 예매 기능을 Redis를 활용해 락 없이 동시성 문제를 해결하며 성능 최적화
평균 TPS : 644TPS=> 4,259TPS
스케줄러와 비동기 이벤트를 활용하여 예매대기 기능 개발
ShedLock 을 통해 failover 를 갖춘 스케줄러 서버 설계
We Share Wish Hair
경기대학교
2023.01. ~ 2023.06.
[프로젝트 소개]
AI 기반 얼굴형 분석을 통한 맞춤형 헤어스타일 추천 앱
[수행 업무]
Redis 를 도입해 좋아요 기능과 관련 조회기능 성능 개선
리뷰 조회 성능 : 7 TPS => 159 TPS
좋아요 성능 : 70 TPS => 177 TPS
새로운 테스트 환경을 구성하고 테스트 코드를 재작성하여 테스트 성능 개선
불필요한 통합테스트 환경을 제거하고 단위테스트에 집중 및 컨텍스트 캐싱을 활용한 통합 테스트 환경 구축
불필요한 해싱 시간을 잡아먹는 Bcrypt구현체를 Fake객체로 대체
테스트 총 실행시간 : 19초 => 5초
메일 인증 시스템 구축과 비동기 이벤트를 적용해 응답 속도 개선
aws 기반의 인프라 구축과 배포 자동화 환경 구축
헤어스타일, 리뷰, 회원 도메인 API 개발
AI 서버와 연동을 통한 헤어스타일 추천 기능 개발
포트폴리오
교육
경기대학교
대학교(학사) | 컴퓨터공학부
2018.03. ~ 2024.02. | 졸업
대외활동
프로그래머스 : 클라우드 기반 백엔드 엔지니어링 5기
프로그래머스 / (주)그랩
Spring 백엔드 개발자 역량 - Spring, JPA, DB 등
클라우드 서비스 역량 - AWS, Docker, CI/CD 등
멘토 및 동료 개발자와 교류 - 코드리뷰와 프로젝트 협업 경험
자격증
정보처리기사
합격 | 한국산업인력공단
2023.10.