미리보기
기본 정보

대학교 시절, 객체지향의 철학을 우아하게 녹여낸 Spring의 매력에 빠져서 백엔드 개발자의 길로 들어섰습니다. Spring과 ElasticSearch를 기반으로 1000만 건이 넘는 도서 데이터를 평균 1초 이내의 속도로 검색하는 프로젝트 진행 경험이 있습니다. 이를 계기로, 데이터들을 효율적인 구조로 저장하고 검색하는 데이터베이스에 관심이 생겨 Elastic Search를 꾸준히 공부하고 있습니다. 언제나 팀원들과 함께 호흡하는 개발을 지향합니다. 팀의 생산성을 위해 Docker, 인프라 환경 구축을 통해 일관된 개발 환경을 제공하고, 팀이 필요하면 퍼블리싱, FrontEnd도 도맡아 해왔습니다. 팀과 서비스에 주도적으로 기여하면서 함께 나아가는 개발자가 되려 합니다.
기술 스택
Java, Spring Boot, Spring, Spring Security, JPA, Elasticsearch, Docker
프로젝트
대용량 도서 프로젝트 (BOOKER)
항해 99 부트캠프 과정
2023.05. ~ 진행 중
프로젝트 설명
- 대용량 데이터(1000만건)의 빠르고 정확한 검색기능 제공
- 대규모 트래픽(이벤트)의 안정적인 처리
기능 개발
Elastic Search를 통한 검색 기능 구현 및 성능 개선
목표
- 1000만건의 데이터에 대한 검색의 속도와 정확성의 보장.
SQL를 통한 검색성능의 개선, Mysql Index 도입
- MySql을 통한 검색 기능 구현시, OrderBy 쿼리에서 평균 10초 이상의 슬로우 쿼리 발생
-> 정렬 기준이 되는 컬럼별 단일 인덱스를 적용해서 평균 1초 이내로 성능 개선 - 단일 인덱스로 검색 구현 시, 전문검색이 불가능한 문제가 발생
->Full Text Index를 통한 전문검색
Elastic Search 도입
- Full Text Index의 정확도 문제와 검색엔진으로서의 확장성을 고려해서 Mysql의 index를 통한 검색에서 Elastic Search를 통한 검색으로 수정.
- 기존의 1000만건의 데이터를 Logstash를 통해서 SQL과의 데이터 상태를 동기화 시킴
- 한글 형태소 분석기 Nori를 적용하여서 검색 정확도를 올림
- 검색어 자동완성 기능 구현
성능 개선
- Elastic Search 평균 100%의 정확도 , MYSql 평균 56%의 정확도 기록 . 정확도 문제를 효과적으로 개선함. ( yes24를 통해서 동일 키워드 기준 무작위 키워드 10건을 뽑아서 상위 30건의 검색 결과를 상호 비교함 )
- Mysql 사용시에는 키워드에 따라 반환 시간의 격차가 매우 큼
→ Elastic search 사용시 에는 키워드에 상관없이 모두 1초 이내의 속도 유지 - JMETER로 1000명의 유저가 동시에 요청을 보낸다는 시나리오 테스트
→ (Mysql 평균 16초, Elastic Search는 4초로 속도 개선함)
2. Docker & Docker Compose를 이용한 개발 환경 구축 및 관리
문제 사항
- AWS와 팀원의 개발 환경을 포함하여 총 8대의 개발 환경에 일관된 환경을 제공할 필요성 존재
- Elastic Search 도입 시에, 버전 호환성이 맞는 ELK스택을 동시에 구축 해야함. 3개의 컨테이너 효율적으로 관리하는 작업이 필요함.
- 이벤트를 통한 대용량 트래픽 처리시에 kafka 3개의 인스턴스와 이를 관리하는
zookeeper 1개의 인스턴스 필요. 4개의 컨테이너를 동시에 관리할 필요가 있음
Docker 와 Docker Compose 도입을 통한 해결
- 한명의 담당자가 팀원 모두에게 필요한 기술들을 Dcoker-Compose를 사용하여서 작성하고 , 이를 깃허브를 통해서 팀원들과 공유함으로 효율적으로 8대의 개발환경에 일관적인 환경 제공
과외 중계 서비스 (Proker)
졸업작품
2022.09. ~ 2022.12.
프로젝트 설명
- 개발을 배우고 싶은 학생들에게 개발자들이 멘토가 되어서 과외를 진행.
- 멘토와 학생에게 과외를 중계해주는 서비스를 제공해준다.
- 유저는 관리자의 승인을 받아서 멘토가 될 수 있다.
기능 개발
풀스택 개발
- 페이지 퍼블리싱부터 시작, 백엔드 , 프론트엔드 기능들을 구현 .
- JSP을 사용하여서 SSR을 기반으로 작동하는 메인페이지를 구현하였으나 프로젝트 시연시에 사용자 경험이 좋지 않다는 피드백을 받음.
->사용자 경험을 개선 하기 위해서 JQUERY의 AJAX를 사용하여서 비동기 방식의 SPA 페이지로 수정.
관리자 페이지 구축
- 프로젝트의 규모가 커짐에 따라 다양한 관리 사항 발생 → 관리자 페이지 구축
- 학생 유저의 신규 멘토 등록, 불량 멘토의 멘토 권한 박탈
- 과외 종류에 따라서 손쉽게 분류해주는 사이드바의 관리
- 유저들과의 1대1 문의를 카카오톡 채팅형식으로 구현하여서 읽은 메시지와 안읽은 메시지를 따로 관리
- 서비스에서 발생하는 에러들을 로그로 저장하여서 따로 관리 , 관리자 페이지에서 확인
포트폴리오
교육
항해 99 부트캠프
사설 교육 | Spring 과정
2023.04. ~ 2023.07. | 졸업
연세대학교 미래캠퍼스
대학교(학사) | 컴퓨터공학
2016.03. ~ 2023.03. | 졸업