final project -day1-

Lee Dong Uk·2023년 6월 12일
0

코드스테이츠 final project

프로젝트 개요


Achievment Goals

  • 실무와 가까운 클라우드 아키텍처를 구현할 수 있다(팀)
  • 실무의 커뮤니케이션과 흡사하게 롤플레잉을 통해 의뢰인으로부터 자세한 요구사항을 이끌어낼 수 있다.(팀/개인)
  • 낮선 기술스택과 요구사항에 대해서 스스로 학습하여 적용할 수 있다.(개인)
  • 클라우드 아키텍처에 대한 그림을 그리고 설명할 수 있다. (팀)
  • 구현의 디테일에 대한 질문을 받을 때 답변할 수 있다.(개인)

요구사항 구체화


우리 팀이 진행하는 시나리오는 자유주제 - 컨테이너 기반 시스템이었다.
간단한 3티어 혹은 2티어 아키텍처를 시스템이 컨테이너 환경에서 실행될 수 있게 하는 인프라를 구현해야한다.

기능 요구사항


  • 최소 1개의 CRUD 기능을 가진 자유로운 시스템 구성
  • 로직 티어와 데이터 티어는 구분되어야 한다.

인프라 요구사항


  • 사용되는 애플리케이션들은 컨테이너로 구동되어야한다.
  • 시스템 전반에 가용성, 내결함성, 확장성, 보안성이 고려된 서비스들이 포함되어야 한다.
  • 하나 이상의 컴퓨팅 유닛에 대한 CI/CD 파이프라인이 구성되어야 한다.
  • 시스템 메트릭 또는 저장된 데이터에 대한 하나 이상의 시각화된 모니터링 시스템이 구축되어야 한다.

오늘 진행한 것들


  • 진행 시나리오 설정
  • 팀 규칙 결정
  • 프로젝트 유저 스토리 작성
  • DDD 이벤트 스토밍(진행 중)

진행 시나리오 : 클라우드 펀딩 플랫폼


제품 아이디어 기획으로 크라우드 펀딩을 진행하는 예전의 와디즈와 유사하게 진행 중.

기능 요구사항


  • 사용자 등록 및 프로필 관리: 사용자는 플랫폼에 가입하고 프로필을 설정할 수 있어야 합니다.
  • 프로젝트 생성 및 관리: 사용자는 프로젝트를 생성하고 관리할 수 있어야 합니다. 프로젝트에는 제목, 설명, 목표 금액, 기간 등의 정보가 포함될 수 있어야 합니다.
  • 펀딩 및 결제: 사용자는 프로젝트에 펀딩을 할 수 있어야 합니다. 결제는 안전한 방법으로 이루어져야 하며, 다양한 결제 수단을 지원해야 합니다.
  • 프로젝트 업데이트: 프로젝트 창작자는 프로젝트 진행 상황을 업데이트하고 후원자에게 공유할 수 있어야 합니다.
  • 리워드 관리: 프로젝트 창작자는 펀딩에 대한 보답으로 리워드를 제공할 수 있어야 합니다. 사용자는 리워드를 선택하고 받을 수 있어야 합니다.
  • 커뮤니케이션 기능: 창작자와 후원자 사이의 소통을 위한 커뮤니케이션 기능이 필요합니다. 채팅, 댓글, 메시지 등의 기능을 포함할 수 있습니다.
  • 검색 및 탐색 기능: 사용자는 다양한 프로젝트를 검색하고 탐색할 수 있어야 합니다. 카테고리, 인기 프로젝트, 추천 프로젝트 등의 기준으로 프로젝트를 필터링할 수 있어야 합니다.

인프라 요구사항


  • 컨테이너 오케스트레이션 플랫폼: 컨테이너 기반 시스템을 구축하기 위해 Kubernetes, Docker Swarm 등의 컨테이너 오케스트레이션 플랫폼을 사용할 수 있습니다.
  • 데이터베이스: 사용자 정보, 이벤트 정보, 주문 내역 등을 저장하기 위한 데이터베이스가 필요합니다. 관계형 데이터베이스(예: MySQL, PostgreSQL)나 NoSQL 데이터베이스(예: MongoDB, Cassandra)를 선택할 수 있습니다.
  • 웹 서버: 사용자 인터페이스를 제공하기 위한 웹 서버가 필요합니다. Nginx, Apache 등의 웹 서버를 사용할 수 있습니다.
  • 보안: 사용자 정보와 결제 정보를 보호하기 위해 SSL 인증서를 사용하는 HTTPS 통신과 데이터 암호화를 구현해야 합니다.
  • 결제 게이트웨이: 다양한 결제 수단을 지원하기 위해 결제 게이트웨이(예: Stripe, PayPal)를 통합해야 합니다.(보류)
  • 이메일 서비스: 티켓 구매 확인, 알림 등을 위해 이메일 서비스를 사용해야 합니다.
  • 파일 저장소: 이벤트 사진, 티켓 디자인 등의 파일을 저장하고 관리하기 위한 파일 저장소가 필요합니다. AWS S3, Google Cloud Storage 등의 클라우드 기반 파일 저장소를 사용할 수 있습니다.
  • 모니터링 및 로깅: 시스템의 상태를 모니터링하고 로그를 기록하기 위한 모니터링 및 로깅 시스템을 구축해야 합니다. Prometheus, ELK 스택(Elasticsearch, Logstash, Kibana) 등을 사용할 수 있습니다.

프로젝트 유저 스토리


유저


  • 서비스 사용자가 서비스를 이용하기 위해 회원 가입버튼을 누다.
  • 서비스 사용자가 서비스를 이용하기위해 로그인버튼을 누른다.
  • 서비스 사용자가 비밀번호를 바꾸기위해 비밀번호 리셋버튼을 누다.
  • 서비스 사용자가 아이디를 찾기위해 이메일을 검색한다(회원 가입시 이메일 작성)
  • 서비스 사용자가 더이상 서비스를 사용하지않기위해 로그아웃버튼을 누른다.
  • 서비스 사용자가 더이상 서비스를 사용하지않기위해 회원탈퇴버튼을 누른다.
  • 서비스 사용자가 회원 정보 변경을 위해 회원정보수정 버튼을 누른다.(유저 페이지)

아이디어(상품)


  • 서비스 사용자가 관심있는 아이디어상품을 기억하기위해 즐겨찾기 아이콘을 누른다.
  • 서비스 사용자가 원하는 아이디어 상품을 찾기위해 원하는 아이디어 상품 카테고리/아이디어상품 이름 등을 검색한다. (-> 아이디어 이름, 제작상태랑 후원상태 포함)
  • 서비스 사용자(판매자)가 아이디어 상품을 팔기 위한 후원 받기 위해 아이디어 상품을 생성버튼을 누른다.(등록을 할 때 기입, 카테고리로 나눈 걸 기입)
  • 서비스 사용자가(판매자)가 아이디어 상품 수정을 하기위해 아이디어 상품수정버튼을 누른다
  • 서비스 사용자가(판매자)가 아이디어 상품을 더이상 후원을받지 않기 위해 아이디어 상품삭제버튼을 누른다.
  • 서비스 사용자가(구매자)가 원하는 아이디어상품의 판매자와 커뮤니케이션 하기위해 댓글을 입력한다.

후원


  • 서비스 사용자가(구매자)가 원하는 상품을 사기위해 후원버튼을 누른다.
  • 서비스 사용자가(구매자)가 상품을 더이상 사지 않기위해 후원취소버튼을 누른다.

결제


  • 서비스 사용자(구매자)가 후원을 하기위해 결제방법을 선택한다. (결제방법 생각해보기)
  • 서비스 사용자(구매자)가 카드결제하기위해 카드정보를 입력한다.
  • 서비스 사용자(구매자)가 무통장입금을 하기위해 입금할 은행을 선택한다.
  • 관리자가 구매자의 무통장 입금을 위해 은행정보를 화면에 보여준다..?

Notification


  • 시스템 상에서 실패한 후원케이스를 구매자에게 알리기위해 후원실패 알림 보낸다.
  • 시스템 상에서 후원한 상품 출고를 알려주기 위해 알림문자를 보낸다..?
  • 시스템 상에서 결제완료확인을 위해 구매자에게 결제완료 이메일을 전송한다.
  • 시스템상에서 결제 실패를 구매자에게 알리기 위해 결제실패 알림 이메일을 전송한다.
  • 시스템상에서 구매자로부터 구매확정을 받기위해 구매확정 알림 이메일 전송한다.
  • 판매자는 상품 출고를 배송업체에게 알리기위해 출고준비 버튼을 누른다.
  • 시스템상에서 판매자가 아이디어를 수정할 시 아이디어상품 구매자에게 수정, 삭제되었다고 알림

이벤트 스토밍(진행 중)


0개의 댓글