플리보따리 란 ?
도메인 : www.plypockets.com
Git hub : 플리보따리 (github.com)
안녕하세요 구독자 여러분 !!
제가 역대 한 프로젝트중 가장 애정을 가지고 진행했던 서비스에 대해서 소개해 드리겠습니다 !! ☺️
플리보따리 서비스는 선물과 함께 노래를 전송하는 익명 편지 서비스 입니다 ! 💌
이화여대 디자인 동아리 “UXO” 와 협업하여 만들었어요 !!
저도 전문 디자이너분들과 첫 협업 경험이어서 정말 많이 배웠고, 저랑 전혀 상관없는 직군들과 소통하는 법을 배운거 같았습니다!!🤭
제가 이 프로젝트를 진행하며 많이 배웠고 신경쓰고자 했던 부분은 바로
테스트코드 와 클린코드
였어요 !! 😜
이번 프로젝트에서 반복문 대신 람다와 스트림을 활용한 자바8 부터 추가된 함수형 언어의 특징들을 적극적으로 이용해서 가독성 을 높이고 서로의 코드를 알기 쉽게 만든거 같습니당 !! 🍁
또 이번 프로젝트에서 예외처리의 중요성을 다시금 느끼며, 커스텀 예외처리와 handler 기능을 각 Api 마다 모두 적용해보며, 예외 상황에 맞는 status code 반환으로 프론트엔드 분들과 원할하게 협업을 이루어지게 하였습니당 ..! 😊
또 Enum 타입으로 관리해서 실 사용시 전혀 무결성을 최대한 지키도록 구현 하였습니다 !! ㅎㅎ
@Getter
@AllArgsConstructor
public enum HttpExceptionCode {
UNEXPECTED_EXCEPTION(HttpStatus.INTERNAL_SERVER_ERROR, "예상치 못한 오류가 발생했습니다."),
INVALID_ARGUMENT(HttpStatus.BAD_REQUEST, "올바르지 않은 값이 전달되었습니다."),
REQUEST_NOT_FOUND(HttpStatus.NOT_FOUND, "요청을 찾을 수 없습니다."),
INTERNAL_SERVER_EXCEPTION(
HttpStatus.INTERNAL_SERVER_ERROR, "서버 내부에서 오류가 발생했습니다."),
PLAYLISTPACK_NOT_FOUND(HttpStatus.NOT_FOUND, "유저의 플리보따리를 찾을 수 없습니다."),
CONTENT_NOT_FOUND(HttpStatus.NOT_FOUND, "요청한 컨텐츠를 찾을 수 없습니다."),
USER_NOT_FOUND(HttpStatus.NOT_FOUND, "요청한 사용자를 찾을 수 없습니다."),
USER_ALREADY_VOTED(HttpStatus.BAD_REQUEST, "요청한 사용자는 이미 투표에 참여하였습니다."),
SPOTIFYSONG_NOT_FOUND(HttpStatus.NOT_FOUND, "해당 ID의 노래가 존재하지 않습니다.");
private final HttpStatus httpStatus;
private final String message;
}
현재도 운영중이라 실제 유저가 있으니, 고객들이 주는 피드백을 바탕으로 성능개선 경험도 쌓게 되었어요 !! ㅎㅎ
우선 제가 맡은 부분을 소개해 드리자면 ,
맡은 부분
회원 도메인
- 회원가입과 로그인
음악 도메인
- 노래검색, 노래 미리듣기, 노래 실시간 차트
인프라
- GithubAction, AWS CodeDeploy, AWS S3 를 이용한 CI/CD
- 배포관련 이슈
였어요 !! ㅎㅎ
특히 제가 프로젝트를 진행할 당시 처음으로 CI/CD 를 구축해 보았어요 !!🗨️
그런데 원래는 ㅠ
젠킨스와 도커 조합으로 하고 있었지만, AWS 프리티어 에서 젠킨스가 너무 느리게 작동해서 도저히 쓸수 없는 지경이 되더라구요 ㅠㅠㅠ 😢
그래서 결국 깃허브 액션을 이용했습니다 ㅠㅠㅠ
도커와 도커컴포즈 쿠버네티스는 이후 진행한 직짱건강 프로젝트에서 구축 해 보았어요 !! ㅎㅎㅎ 다음의 Episode 를 기대해 주세요 !! ☺️
또한 유저 데이터를 보고 음악 검색 페이지 에서 가장 많은 시간을 소비한다는 데이터를 보고
음악 검색 api 속도를 1.1초에서 0.4초로 70.44% 개선하였어요 !! 🫣
제 코드로 인해 여러 사용자들의 시간이 단축되었다는 사실이 너무 뿌듯했답니다 😝 !!
과정 : ♻️ [refactor] : spotify API 성능 개선
특히 중간에 크게 기획의도를 변경해야 할 일이 생겼는데, 저번 2023 인프콘에서 들었던, “계획에 대응하기 보단 변화에 대응하길” 이라는 애자일방법론이 떠올랐던 순간이였습니다 ㅎㅎ
성과
무려 월간활성유저수 MAU 764 규모의 서비스로 성장하였어요!! 🤩
제가 만든 코드가 수백명이 사용하다니.. 진짜 테스트코드와 QA의 중요성을 느꼈습니다 ㅠㅠ
- 성과 MAU764명 MPV 42000달성
GoogleAnalatics4 MAU 분석
DAU 분석
특히 뷰저블 이라는 유저 데이터 분석 툴을 처음 활용해 보았는데, 뭔가 GA4보다도 사용자 친화적 ? 으로 만들어진거 같아서 사용자의 데이터를 수집하기 좋았어요 ㅎㅎ
또 실제 유저가 있으니, 고객들이 주는 피드백을 바탕으로 성능개선 경험도 쌓게 되었어요 !! ㅎㅎ
회고
개발이 모두 완료되고, 함께 개발하였던 백엔드 개발자 ‘안나’ 님과 주 2회씩 계속 저희 코드에 대한 코드 리뷰를 하는 시간을 가졌어요. 정말 뜻깊었던 순간이였고, 서로 “왜? “ 를 질문하며 코드를 외울 정도로 서로의 코드에 대한 질문을 하고 답을 구하는 과정을 거쳤던거 같아요 !! ㅎㅎ
이때 경험이 서로 개발자로 성장하는데 큰 성장을 할수 있었던거 같아서 안나님께 커피를 선물해 드렸답니다!! 🤗
마무리
이번 프로젝트로 쌓은 실력이 제가 혼자 2년간 스프링을 공부하며 쌓았던 실력보다 훨씬 더 성장한거 같아요..! 이번 프로젝트를 계기로, 타 프로젝트에서 테크리드도 해보았어요!! 이건 추후에 다시 포스팅 할게요 ㅎㅎㅎ
저의 플리보따리 랍니다 !! ㅎㅎ
또 저에게 노래와 편지를 보내고 싶다면, www.plypockets.com/최동훈 으로 선물을 보내주세요 ! ㅎㅎ 익명(닉네임 설정이 가능하지만) 이라서 평소에 못했던 말들도 해주셔도 됩니당 ㅎㅎ
'개발 프로젝트' 카테고리의 다른 글
☄️쿠석쿠석🌷서비스를 출시하며, feat. 성능 개선 (0) | 2024.04.25 |
---|---|
AWS S3/code deploy로 CI/CD 구축기(플리보따리) 2023-12-16 (0) | 2023.12.15 |
Spring JPA으로 서버 프로젝트 ERD만드는 법 2023-09-13 (0) | 2023.09.13 |
함플리 서비스 로그인 성공 cors 오류 해결 (0) | 2023.07.12 |
잇타 프로젝트 배포일기 (0) | 2023.07.07 |