미리보기
기본 정보
기술 스택
Java, Spring Boot, JPA, querydsl, MySQL, PostgreSQL, Redis, MongoDB, Docker, docker-compose, ubuntu, nginx, Jenkins, Ansible
경력
주식회사라이너스
매니저 | 교육사업본부 | 재직 중
2023.07. ~ 재직 중 (1년 7개월)
기술스택:
- Java, Kotlin
- Spring Framework, Spring Security, Spring Batch
- MySQL, PostgreSQL, MongoDB, Redis
- Naver Cloud Platform, AWS, 스마일 서브(클라우드)
- JPA, Querydsl, OpenFeign, Git병렬 처리, Batch Job 이용 API 성능 개선
[문제]
- 외부 API 3개 Response 통합하는 API 속도 42초 소요
[원인 파악]
- 비효율적인 반복문 사용으로 인한 API 과다 호출
- 독립적인 API 동기 처리로 인한 지연
[개선 방안 및 결과]
- 1차: 반복문 구조 수정으로 호출 횟수 학생 수만큼 줄임 -> 42초에서 10초로 단축
- 2차: 과목 호출, 과제 호출 등 독립적인 API coroutine async로 병렬, 비동기 호출 -> 10초에서 3초로 단축
- 3차: 과목 전체 정보의 경우 배치 서버에서 30분 단위로 적재하는 방법으로 변경 -> 3초에서 20ms로 단축테스트 코드, 주석 도입으로 멤버스 효율 높이기
[문제]
- 사내 솔루션 프로젝트 테스트 코드 부재로 코드 수정 시 사이드 이펙트 가늠 불가
- 간단한 수정 사항, 요구 사항 개발에도 코드 작성자만 수정 가능
[원인 파악]
- 코드에 대한 힌트 없고, 테스트 코드 없어서 코드 분석 어려움
- 솔루션 제공 기능이 늘어갈수록 코드 수정이 점점 어려워짐
[개선 방안]
- 테스트 코드 도입
- 팀 규칙에 기능 개발, 테스트 코드 작성 후 PR 요청 -> 코드 리뷰 1 Approve 이상 RuleSet 설정
- PR 생성 시 Github Actions 워크플로우 이용 테스트 코드 실행
- 메소드 작성 시 주석 템플릿에 코드 요약 추가
[결과]
- 담당 로직 아니더라도 테스트 코드, 주석 내용으로 파악 가능
- 간단한 수정 사항, 요구 사항 구현에 1 멤버스만 투입 가능
- 동시에 4개 요구사항 처리 가능모듈 분리로 서비스 안정성 높이기
[문제]
- 수정 사항 적용 및 요구사항 적용 시 백엔드 프로젝트 재시동
- 재시동 중 동영상 출석, 줌 미팅 웹훅 데이터 분실
[개선 방안]
- 안정성, 지속성이 우선인 모듈, 서버로 분리
- 줌 서버, 파놉토(동영상 출석) 서버, 과제 제출 집계 서버 분리
[결과]
- 수정 사항, 요구 사항 적용 시 부담감 감소
- 데이터 신뢰도 상승
(주)레인보우8
백엔드 개발자 | 개발팀
2021.12. ~ 2022.11. (1년)
기술스택:
- Java
- Spring Boot
- MySQL
- JPA, QueryDSL, Git
- AWS사내 프로젝트 개발로 배포 줄이기
[문제]
- 월 1회 단축 근무 시 공지 사항 배너 변경을 위한 배포 진행
- 운영 중인 서비스 배포에 대한 부담
[개선 방안]
- 공지 사항 배너 API 개발
- 배너가 N개일 경우 시간순 정렬
- 관리자가 배너 순서 드래그 앤 드롭으로 변경 가능
- 업로드로 배너 추가 가능, 배너 삭제 가능
[결과]
- 단축 근무 공지 시 배포 필요없이 업로드로 해결구글 reCAPTCHA 적용으로 스팸 100개 막기
[문제]
- 회사 고객사 페이지 이메일 전송 기능으로 크롤러를 이용한 스팸 메일 전송
- 매일 회사 고객 문의 이메일함 스팸 메일 100여개 -> 업무 방해
[원인 파악]
- 러시아 IP 대역으로 크롤러를 이용한 스팸 메일 전송 확인
[개선 방안]
- 1차: 해당 IP 대역을 블락 처리 -> 우회한 IP 대역으로 공격
- 2차: 구글 reCAPTCHA 적용
[결과]
- 스팸 메일 100여개 차단 성공 및 업무 효율 증가그 밖의 업무내용:
- 고객사 홈페이지 광고 스크립트 삽입
- 고객사 홈페이지 상품 정보 크롤링 및 DB 적재
- 기존 php 어플리케이션 -> Java, Spring으로 마이그레이션(홈페이지 3개)
주식회사쿠돈
백엔드 개발자 | 개발팀
2021.07. ~ 2021.10. (4개월)
구매 확정 알림 메시지 전송하기
[문제]
- 배송 완료 후 구매 확정이 일어나지 않아 정산이 되지 않음
- CS 팀에서 고객들마다 대응하는 업무 비효율 발생
[개선 방안]
- 매일 Schedule에 따라서 20:00 상품 배송 상태 확인 Job 실행
- 당일 배송 상태 완료인 경우 알림톡으로 전송
[결과]
- 알림톡을 받고 구매확정 누르지 않는 고객만 대응하도록 업무 효율 증가쿠폰으로 할인해주기
[요구 사항]
- 한 달간 사용할 수 있는 쿠폰을 유저 당 1회 발급
[문제]
- 쿠폰 발행 페이지 없음
- 일괄적으로 쿠폰 1회 사용 가능해야 함
[방안]
- 쿠폰 테이블에 유저 PK 유무로 사용 여부 판단
- 쿠폰 미사용 유저일 경우 할인 가격 적용 -> 쿠폰 테이블에 적재
- 쿠폰 사용 유저일 경우 -> 이미 쿠폰 사용한 유저 Message 반환
빅스텝에듀
팀원 | 개발팀
2021.05. ~ 2021.06. (2개월)
기술스택:
- Python
- Django, Django Rest Framework
- MySQL, SQLite
- AWS인턴 팀으로 한 달안에 서비스 출시하기
[요구 사항]
- 기간 한달
- 인턴 팀(프론트 2명, 백엔드 3명)
- 멘토링 플랫폼 개발
[맡은 부분]
1. 유저 권한 체크
- JWT 이용해서 멘토, 멘티, 관리자 구분
- AccessToken, RefreshToken 시간 설정
- RefreshToken DB 저장으로 로그아웃 처리
2. Django ORM aggregate 이용해서 평점 구하기
- aggregate 이용 멘토 평점 총합 구하기
- count로 평균 평점 구한 후 반올림 처리
3. S3 이용해서 멘토 자료 보여주기
- 멘토 파일 업로드 시 S3 버킷에 멘토명_강의명_files로 업로드
- 주소 DB 저장
- API 호출 시 주소 반환S3로 연 300만원 절약하기
[문제]
- 멘토 PDF 파일 공유하기 위한 솔루션비 연 구독 300만원
- 복사, 마우스 우클릭 등 문서 보안 처리
[방안]
- S3에 PDF 파일 업로드 후 API로 호출해서 보여주기
- 프론트에서 복사, 마우스 우클릭 이벤트 블락
[결과]
- MVP 모델에서 솔루션 비용 절감