Skip to content

고객에게 최적의 탐색을 제안하는 메뉴 서비스

Notifications You must be signed in to change notification settings

iju1633/shop-server

Repository files navigation

👕 2023, Shop-server

API Documentation
고객에게 최적의 탐색을 제안하는 메뉴 서비스를 제공합니다.

💪 Skill Stack

Java Spring-Boot MySQL RDS EC2 S3 Docker Swagger Linux GitHub_Actions Nginx

🛠️ Tool

Git GitHub IntelliJ IDEA Notion MySQL Workbench FileZilla Draw.io Let's Encrypt

📖 Explanation

  • 목적에 맞는 타이틀과 링크를 제공합니다.
  • 상위 메뉴를 이용하여 모든 하위 메뉴를 조회합니다.
  • 최상위 메뉴에는 배너를 추가 노출할 수 있습니다.
  • App 과 Front-end 개발자가 사용할 수 있는 REST API를 제공합니다.
    • 인증이 필요한 요청과 인증이 필요하지 않은 요청을 적절하게 처리하며, 허용된 메서드와 헤더에 대한 접근을 제공합니다.

🔙 Requirements / Solution

  • 메뉴를 등록/수정/삭제 할 수 있어야 합니다.
    • 상위 메뉴와 하위 메뉴에 대해 등록/수정/삭제할 수 있는 REST API를 제공합니다. 스크린샷 2023-07-06 오후 7 36 15
  • 상위 메뉴를 이용해, 해당 메뉴의 모든 하위 메뉴를 조회 가능해야 합니다.
    • (방법 1) 상위 메뉴의 고유값을 통해 해당 메뉴의 모든 하위 메뉴 리스트를 조회할 수 있습니다. 스크린샷 2023-07-06 오후 7 38 59
    • (방법 2) 상위 메뉴를 조회하면 해당 메뉴와 연결된 하위 메뉴의 정보를 포함한 상위 메뉴 정보를 확인할 수 있습니다. 스크린샷 2023-07-06 오후 7 38 50
      스크린샷 2023-07-06 오후 7 38 42
  • 최상위 메뉴에는 배너를 등록하여 추가 노출할 수 있습니다.
    • 배너 등록 시 필요한 배너 이미지, 배너 설명, 연결될 링크를 활용하여 추가 노출이 가능합니다. 스크린샷 2023-07-06 오후 7 43 31

💎 Main Features

  • Spring Boot 애플리케이션으로 구성된 HTTP REST API 서버
  • Amazon EC2Docker를 사용한 배포
  • Amazon RDS를 이용한 DB 관리
  • Amazon S3를 이용한 이미지 리소스 관리
  • Docker image 빌드 시 테스트 자동화 구현
  • GitHub Actions를 이용한 CI/CD 파이프라인 구성 및 백그라운드 배포 자동화 구현
  • Docker를 활용한 배포 및 이에 따른 환경 설정 코드 관리 용이
    • [시스템 아키텍처 설계 개선] ec2 인스턴스에서 바로 jar 파일 배포 → ec2 내의 docker를 통해 배포
  • 서비스 플로우 설명 및 Issue에 문서화한 내용을 기반으로한 피드백을 수용하여 UX 개선
  • Nginx, Let's Encrypt를 활용한 https 적용

📐 Service Architecture

  • Gradle로 빌드합니다.
  • Spring Boot 프로젝트 내에 Dockerfile을 만들고 Amazon EC2 인스턴스 내의 Docker를 사용하여 배포합니다.

🖥️ Build Method

  • 해당 링크는 운영체제별(Mac, Windows) 웹서버를 로컬에서 실행시키는 방법을 설명하고 있습니다.
    or
  • 예시 데이터가 포함된 웹서버를 배포해놨으니 API Documentation Link로 구현된 기능을 프로젝트 빌드 과정 없이 바로 테스트해보실 수 있습니다.

📝 Documentation (#Issue)

🗄️ ERD

스크린샷 2023-07-04 오후 2 59 06

📃 API Documentation

API Documentation Link
스크린샷 2023-07-06 오후 7 28 53

이 프로젝트는 클라이언트와의 통신을 위해 swagger Specification 2.0 및 Swagger UI를 활용합니다.

🏛️ Depedency Used

  • implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
  • implementation 'org.springframework.boot:spring-boot-starter-log4j2'
  • implementation 'org.springframework.boot:spring-boot-starter-jdbc'
  • implementation 'org.springframework.boot:spring-boot-starter-security'
  • implementation 'org.springframework.boot:spring-boot-starter-validation'
  • implementation 'org.springframework.boot:spring-boot-starter-web'
  • implementation 'io.springfox:springfox-boot-starter:3.0.0'
  • implementation 'com.amazonaws:aws-java-sdk-s3:1.12.470'
  • compileOnly 'org.projectlombok:lombok'
  • runtimeOnly 'com.mysql:mysql-connector-j'
  • annotationProcessor 'org.projectlombok:lombok'
  • testImplementation 'org.springframework.boot:spring-boot-starter-test'
  • testImplementation 'org.springframework.security:spring-security-test'

Contributor

Jaeuk Im
BACKEND

About

고객에게 최적의 탐색을 제안하는 메뉴 서비스

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published