- 프로젝트명: All LIVE YOUNG 😊
- 진행 기간:
- 1차 개발: 2025.06.23 ~ 2025.07.13 (프론트엔드 & 백엔드 기능 구현)
- 2차 배포: 2025.07.15 ~ 2025.07.17 (DevOps 환경 구축 및 클라우드 배포)
- 설명:
올리브영 주요 서비스(상품, 장바구니, 리뷰, 관리자 등)를 MSA 아키텍처 기반으로 구현하고,
이후 CI/CD 및 클라우드 배포 환경까지 실제 서비스 운영 경험을 목표로 한 클론 프로젝트
| 이나영 | 유지은 | 박준서 | 박창준 | 정승원 |
|---|---|---|---|---|
| GitHub | GitHub | GitHub | GitHub | GitHub |
- 본 프로젝트는 MSA 아키텍처 기반의 올리브영 클론코딩 프로젝트이다. 올리브영 서비스의 대표적인 기능인 상품 페이지, 장바구니, 리뷰 작성 기능을 중심으로 구현했으며, JWT 기반의 로그인 및 인증을 적용해 실제 서비스와 유사한 사용자 경험을 제공한다. 관리자는 관리자 전용 페이지에서 쿠폰 관리, 상품 등록, 관리자 계정 관리 등 다양한 기능을 사용할 수 있다. 개발이 완료된 후에는 Jenkins, ArgoCD, AWS 등의 DevOps 도구를 활용하여 자동화된 배포 환경을 구축했다.
-
본 프로젝트의 목표는 올리브영의 주요 서비스 흐름과 핵심 기능을 MSA 구조에서 직접 구현하며, 실무에서 요구하는 인증/인가, 상품 및 리뷰 관리, 관리자 기능 개발을 직접 경험하는 데 있다.
또한 CI/CD, 클라우드(AWS) 환경에서의 자동화된 배포 파이프라인 구축 등 개발부터 배포까지 전 과정을 경험하고, 실제 서비스와 유사한 환경을 구축하는 것을 목표로 한다.
-
일반 사용자 : 상품을 탐색하고 장바구니, 리뷰 작성 등 쇼핑 서비스를 이용하는 고객
-
관리자 : 상품, 쿠폰, 회원, 리뷰 등 서비스 데이터와 프로모션을 관리하는 관리자 계정
- 회원가입 및 로그인 : 이메일 기반 회원가입/로그인, JWT 인증 적용
- 상품 목록 및 상세 정보 제공 : 전체 상품 조회, 개별 상품의 상세 정보 제공
- 장바구니 기능 : 상품을 장바구니에 담기, 삭제, 수량 변경 등 장바구니 관리
- 리뷰 작성 및 조회 : 상품별 리뷰 및 평점 작성, 수정, 삭제, 조회 기능
- 상품 검색 및 필터링 : 키워드, 카테고리, 브랜드 등 다양한 조건으로 상품 검색/필터링
- 관리자 페이지 : 상품 등록/수정/삭제, 쿠폰 발급 및 관리, 통계 데이터 확인
| 담당자 | 서비스명 (영문-service) |
주요 역할/설명 |
|---|---|---|
| 박창준 | 상품 서비스 (search-service) |
상품 목록 및 상세 정보 조회, 상품 검색/필터링 기능 제공 |
| 정승원 | 리뷰 서비스 (movie-service) |
상품별 리뷰 작성, 수정, 삭제, 조회 등 리뷰 관련 기능 구현 |
| 유지은 | 관리자 서비스 (review-service) |
관리자 페이지: 통계 데이터, 상품 등록/수정/삭제, 쿠폰 등록/관리, 관리자 계정 관리 |
| 박준서 | 회원 서비스 (recommend-service) |
회원가입, 로그인, JWT 토큰 관리 등 회원 인증/인가 및 정보 관리 |
| 이나영 | 주문 서비스 (user-service) |
장바구니 관리, 주문 생성, 배송지 관리 등 주문 관련 전반 기능 |
| 박준서 | Config 서버 (config-service) |
각 마이크로서비스 공통 설정 관리 및 분산 환경 구성 지원 |
| 모듈명 | 기능 역할 |
|---|---|
admin-service |
관리자 페이지: 상품 등록/수정/삭제, 쿠폰 발급 및 관리, 통계 데이터 확인 |
product-service |
상품 목록 및 상세 정보 제공, 상품 검색/필터링, 상품 정보 관리 |
review-service |
상품별 리뷰 및 평점 작성, 수정, 삭제, 조회 기능 제공 |
recommend-service |
사용자/리뷰/별점 기반 맞춤형 상품 추천 기능 |
user-service |
회원가입 및 로그인(이메일 기반), JWT 인증, 사용자 계정 관리 |
config-service |
공통 환경설정, JWT 토큰 및 마이크로서비스 중앙 설정 관리 |
- 목표: 사용자가 다양한 상품 정보(목록, 상세, 리뷰 등)를 쉽고 편리하게 조회·구매할 수 있는 온라인 헬스&뷰티 쇼핑몰 서비스 구현
- 구성: MSA 기반
- 주요 기능: 회원 관리, 상품 조회/검색/필터링, 장바구니, 리뷰, 관리자(상품/쿠폰/통계) 기능 등
| TC ID | 기능 명 | 목적/설명 |
|---|---|---|
| US-01 | 회원 중복 체크 | 중복 회원(이름&전화번호) 가입 차단 |
| US-02 | 회원 아이디 중복 체크 | 회원가입 전 아이디(전화번호) 중복 체크 |
| US-03 | 회원가입 성공 | 신규 회원 정상 가입 |
| US-04 | 회원탈퇴 성공 | 회원 탈퇴 요청 정상 처리 |
| US-05 | 마이페이지 정보 조회 | 로그인한 사용자 정보 조회 |
| US-06 | 회원 정보 수정 | 사용자가 자신의 정보 수정 가능 |
| US-07 | 회원정보 수정 전 비밀번호 확인 | 정보 수정 전 비밀번호 확인 |
| US-08 | 비밀번호 변경 | 비밀번호 수정 정상 동작 |
| US-09 | 로그인 성공 | 정상 로그인 |
| US-10 | 토큰 재발급 | accessToken 만료 시 재발급 |
| US-11 | 로그아웃 | 정상 로그아웃 처리 |
| TC ID | 기능 명 | 목적/설명 |
|---|---|---|
| US-12 | 배송지 등록 | 배송지 정보 등록 가능 |
| US-13 | 배송지 조회 | 등록한 배송지 정보 조회 가능 |
| US-14 | 배송지 수정 | 등록된 배송지 정보 수정 |
| US-15 | 배송지 삭제 | 등록된 배송지 삭제 |
| US-16 | 기본 배송지 설정 | 기본 배송지로 설정 |
| US-17 | 배송지 기본 설정 상태 확인 | 기본 배송지 정보 조회 |
| TC ID | 기능 명 | 목적/설명 |
|---|---|---|
| PS-01 | 상품 전체 목록 조회 | 모든 상품 정상 조회 |
| PS-02 | 특정 상품 상세 조회 | 단일 상품 상세 정보 조회 |
| PS-03 | 상품 검색/필터링 | 조건 검색된 상품만 반환 |
| PS-04 | 카테고리별 상품 조회 | 카테고리별 상품만 조회 |
| PS-05 | 상태별 상품 조회 | 상태별 상품만 조회 |
| PS-06 | 브랜드 전체 조회 | 모든 브랜드 조회 |
| PS-07 | 상품 목록 조회 (판매순 정렬) | 판매량 기준 내림차순 정렬 |
| PS-08 | 상품 목록 조회 (신상품순 정렬) | 최신 상품 기준 내림차순 정렬 |
| PS-09 | 상품 목록 조회 (가격순 정렬) | 가격 오름차순 정렬 |
| PS-10 | 상품 목록 조회 (할인율순 정렬) | 할인율 기준 내림차순 정렬 |
| TC ID | 기능 명 | 목적/설명 |
|---|---|---|
| OS-01 | 주문 정보 생성 | 주문 생성 |
| OS-02 | 주문 정보 조회 | 주문 정보 정상 조회 |
| OS-03 | 장바구니 상품 추가 | 장바구니에 상품/수량 추가 |
| OS-04 | 장바구니 상품 조회 | 장바구니 상품/수량 조회 |
| OS-05 | 장바구니 수량 수정 | 장바구니 내 수량 변경 |
| OS-06 | 장바구니 상품 삭제 | 장바구니 상품 삭제 |
| OS-07 | 쿠폰 등록 | 쿠폰 정상 등록 |
| OS-08 | 쿠폰 조회 | 쿠폰 정보 조회 |
| OS-09 | 쿠폰 수정 | 쿠폰 정보 수정 |
| OS-10 | 쿠폰 삭제 | 쿠폰 정보 삭제 |
| TC ID | 기능 명 | 목적/설명 |
|---|---|---|
| RV-01 | 제품 리뷰 등록 성공 | 결제 제품에 대한 리뷰 등록 |
| RV-02 | 리뷰 수정 성공 | 기존 리뷰 내용 수정 |
| RV-03 | 리뷰 삭제 성공 | 기존 리뷰 삭제 |
| RV-04 | 상품별 리뷰 전체 조회 성공 | 상품별 모든 리뷰 조회 |
| RV-05 | 유저별 리뷰 목록 조회 성공 | 유저가 작성한 모든 리뷰 조회 |
| RV-06 | 상품 리뷰 평균 평점 조회 | 상품별 리뷰 평균 평점 계산 |
| TC ID | 기능 명 | 목적/설명 |
|---|---|---|
| AD-01 | 관리자 로그인 | 관리자 계정 로그인 |
| AD-02 | 관리자 대시보드 조회 | 대시보드에 집계 정보 정상 조회 |
| AD-03 | 상품 관리/등록 | 관리자 상품 목록 조회 및 등록 |
| AD-04 | 주문 관리 | 관리자 주문 리스트 정상 조회 |
| AD-05 | 쿠폰 관리 | 쿠폰 생성/조회/삭제 정상 동작 |
| AD-06 | 관리자 회원 관리 | 관리자 회원 목록 조회 |
| AD-07 | 관리자 정보 조회 | 관리자의 정보를 조회할 수 있다 |
| 항목 | 사용 기술 |
|---|---|
| 프론트엔드 언어 | |
| 프론트엔드 라이브러리 | |
| 스타일링 도구 | |
| 백엔드 언어 | |
| 백엔드 프레임워크 | |
| 데이터베이스 | |
| 협업/버전관리 | |
| 배포/운영 |
- 주요 역할 : 장바구니
- 느낀 점 :
-
주요 역할 : 리뷰 서비스, 파일 서버
-
느낀 점 :
이번에 리뷰 서비스를 맡으면서, 다른 서비스 기능들과 연결되는 부분을 직접 구현해보니 지난번 관리자단 프로젝트와는 또 다른 협업의 재미를 느꼈다.
특히 다른 팀원들의 작업 내용을 살펴보면서 상호작용할 기회가 많았고, 그 과정이 무척 흥미로웠다.프론트엔드와 백엔드를 연결하는 경험도 매우 새로웠다. 처음엔 연결 구조가 잘 감이 안 잡혀 고민이 많았지만, 하나씩 해결해가면서 자연스럽게 성장할 수 있었고, 비슷한 구조의 기능은 반복적으로 구현하다 보니 점점 더 수월해졌다. 실제로 API 통신, JWT 인증, 파일 업로드 등 처음 다뤄보는 기술도 있었지만, 구글링과 팀원과의 논의를 통해 문제를 해결해나가면서 자신감이 붙었다.
무엇보다 내 작업물이 다른 분들의 코드와 조화를 이루는 걸 보면서, 협업의 즐거움을 크게 느꼈다. 이번 프로젝트를 통해 팀워크의 중요성과 개발의 재미를 다시 한번 체감할 수 있었다. 리뷰 기능이 전체 서비스 흐름에서 어떤 위치를 차지하는지, 실무적으로 서비스가 어떻게 엮이는지 알게 되어 시야가 넓어진 것 같다.
다만 프로젝트 초반에는 의사소통이나 작업 분담이 조금 더 명확했으면 좋았겠다는 아쉬움도 있다. 앞으로는 미리 명확한 API 명세를 공유하거나, PR 리뷰 과정을 좀 더 체계적으로 가져가면 더 효율적인 협업이 가능할 것 같다는 생각도 들었다.
이번 경험을 바탕으로, Fianl-project에서는 테스트 코드 작성이나 예외 처리, 보안적인 부분까지 더 신경써서 실전 서비스에 가깝게 구현해보고 싶다.
-
주요 역할 : 관리자서비스
-
느낀 점 : 이번 'All LIVE YOUNG' 프로젝트는 저에게 정말 뜻깊은 경험이었습니다. 오랜만에 프론트엔드와 백엔드를 직접 연동하면서, 이전에 미처 깨닫지 못했던 부분이나, 잘못 이해하고 있던 부분을 되짚어보는 소중한 시간이었습니다. 개 발을 하면서 과거의 시행착오를 자연스럽게 떠올릴 수 있었고, 그 과정에서 새로운 기술과 개념도 배우며 한층 성장할 수 있었습니다.
특히 관리자 서비스 개발은 저에게 완전히 새로운 도전이었습니다. 혼자서 처음부터 끝까지 설계하고 구현하다 보니 때로는 막막하고 외로운 싸움을 하는 것처럼 느껴지기도 했습니다. 하지만 그만큼 주도적으로 모든 과정을 이끌어 나가면서, 책임감을 갖고 주어진 업무를 끝까지 해내려는 자세를 배울 수 있었습니다. 덕분에 스스로 성장할 수 있는 기회가 되었고, 주체적으로 문제를 해결하며 업무를 추진하는 자신감을 얻게 되었습니다.
작업 중간중간 예상치 못한 이슈나 오류도 많이 만났지만, 그럴 때마다 구글링과 공식 문서, 그리고 다양한 커뮤니티의 도움을 받아가며 문제를 하나씩 해결해 나갔습니다. 어려움을 겪으면서도 끝까지 포기하지 않고, 마지막까지 완성도를 높이기 위해 노력했던 시간이 지금 돌이켜보면 매우 값졌다고 생각합니다.
또한, 이번 프로젝트를 통해 프론트엔드와 백엔드가 어떻게 유기적으로 연결되는지, 그리고 실제 서비스가 동작하기 위해 어떤 준비와 고민이 필요한지 몸소 체감할 수 있었습니다. 그 과정에서 개발자로서의 시야도 한층 넓어졌고, 기술적인 성장뿐 아니라 문제 해결력과 주도적인 업무 태도 등 다양한 역량을 키울 수 있었습니다.
앞으로도 이 경험을 바탕으로 더욱 적극적으로 도전하며, 스스로 성장하는 개발자가 되고 싶다는 다짐을 다시 한번 하게 되었습니다.
-
주요 역할 : 상품서비스
-
느낀 점 :
이번 'All LIVE YOUNG' 프로젝트는 나에게 정말 많은 '처음'을 경험하게 해준 값진 시간이었다. 특히 프론트엔드와 백엔드를 연동하는 작업과 CI/CD 및 클라우드(AWS) 환경에서의 배포 과정은 프로젝트의 핵심이자 가장 큰 도전이었다.먼저, 프론트엔드와 백엔드를 연결하는 경험은 이론으로만 알던 API 통신이 실제 서비스에서 어떻게 동작하는지 체감하는 계기가 되었다. 특히 다양한 조건을 조합하여 상품을 검색하고 필터링하는 기능을 구현하는 과정은 쉽지 않았다. 백엔드에서 효율적인 쿼리를 작성하는 것부터, 프론트엔드에서 사용자 입력을 바탕으로 동적으로 API 요청을 구성하고 응답 데이터를 UI에 효과적으로 렌더링하는 것까지 여러 고려사항이 있었다. 때로는 예상치 못한 데이터 포맷 문제나 API 응답 지연 등의 벽에 부딪히기도 했지만, 팀원들과의 적극적인 소통과 끊임없는 디버깅을 통해 문제들을 해결해나갔다. 이 과정에서 API 명세의 중요성을 다시 한번 깨달았으며, 개발 전 단계에서 상세한 명세가 협업의 효율성을 얼마나 높이는지 직접 경험할 수 있었다.
다른 팀원의 작업물(예: 장바구니, 리뷰)과 내 상품 서비스가 어떻게 연동되는지 확인하면서, MSA 아키텍처 내에서 각 서비스가 유기적으로 연결되는 방식을 이해할 수 있었다. 비록 예상보다 시간이 오래 걸리거나 복잡하게 느껴지는 부분도 있었지만, 완성된 기능이 실제 웹 페이지에서 정상적으로 작동하는 것을 보며 큰 성취감을 느꼈다. 이번 경험을 통해 백엔드 개발 역량을 한층 더 강화할 수 있었고, 복잡한 비즈니스 로직을 효율적으로 처리하는 방법에 대해 고민해보는 계기가 되었다.
가장 기억에 남고 어려웠던 부분은 단연 배포 과정이었다. Docker, Kubernetes, Jenkins, ArgoCD, AWS까지, 생소한 DevOps 도구들을 실제로 구축하고 연동하는 것은 나에게는 정말 어려웠던 과정이었다. 각각의 도구들이 어떤 역할을 하고 어떻게 상호작용하는지 이해하는 것부터 시작해, 설정 파일을 하나하나 작성하고 오류를 디버깅하는 데 많은 시간을 할애했다. 특히 Spring Boot 애플리케이션을 Docker 이미지로 빌드하고, Kubernetes 클러스터에 배포하며, Jenkins와 ArgoCD를 통해 자동화 파이프라인을 구축하는 과정은 수많은 시행착오의 연속이었다. 예상치 못한 빌드 실패, 컨테이너 실행 오류, 네트워크 설정 문제 등 다양한 난관에 부딪혔지만, 공식 문서를 찾아보고, 온라인 자료를 참고하며, 무엇보다 팀원들과 적극적으로 논의하고 함께 해결책을 모색한 덕분에 결국 성공적으로 배포 환경을 구축할 수 있었다. 이 과정에서 Jenkins의 파이프라인 스크립트 작성, Kubernetes YAML 설정, AWS VPC 및 EC2 인스턴스 구성 등 DevOps의 핵심 요소들에 대한 실질적인 이해를 높일 수 있었고 고생해준 팀원분들에게 너무 감사했다.
이번 프로젝트를 통해 개발뿐만 아니라, 개발된 서비스를 실제로 운영 환경에 배포하는 전 과정에 대한 이해를 깊이 있게 다질 수 있었다. 비록 처음 접하는 기술들이 많아 어려움이 있었지만, 하나씩 문제를 해결해나가면서 얻는 성취감과 배움의 즐거움을 크게 느꼈다. 앞으로는 이번에 경험한 DevOps 기술들을 더욱 깊이 있게 학습하여, 안정적이고 효율적인 배포 파이프라인을 구축할 수 있는 개발자로 성장하고 싶다.
-
주요 역할 : 배포작업, 회원서비스, config서버
-
느낀 점 : 프론트엔드와 백엔드를 어떻게 연결할지 걱정이 많았는데, 그런 걱정을 할 시간에 빨리 직접 해보는 것이 빠른 길이라는 걸 다시 깨닫게 해준 시간이었다. 문제가 생길 때마다 퀘스트 해결하듯이 하나하나 풀어나가는 과정이 재미있었다. 각자 서비스를 만들고 합칠 때는 좀 긴장도 했는데, 최종프로젝트에서 서로를 충분히 믿어도 되겠다는 생각이 들 정도로 모두 정말 잘하셨다. 이래서 개발을 협업으로 진행해야하는구나 하고 느낄 수 있었다. 그리고 백엔드와 프론트엔드를 연결한 작업물을 보고 나서야 왜 '백'엔드라고 하고, '프론트'엔드라고 하는지 깨달을 수 있었다.
CI/CD 연동을 진행하면서 입으로 거친 말이 나오는 걸 간신히 틀어막은(?)것 같다. 역시 실전은 이론과 달랐다. 예상치 못한 이유로 안되는 것도 많았고, 처음 경험하는 것도 많았다. 특히 Jenkins에서 credentials, plugin 등 설치할 것을 다 해놓고 실수로 EC2 인스턴스를 삭제했을 때는 많이 화나기도 햇지만, 그런 과정 없이 어떻게 통합과 배포의 자동화를 이뤄내겠는가.
최종 프로젝트 때는 시간상의 이유로 하지 못했던 것들까지 다 해내고 싶다. 모든 기능부터,,,프로메테우스와 그라파나를 이용한 모니터링 시스템까지 말이다.