Skip to content

sopt-makers/sopt-backend

Repository files navigation

SOPT APP PROJECT

🚀 SOPT 공식 앱으로, 출석/공지/네트워킹 미션 등 다양한 기능을 제공합니다.

image

PRODUCT

[1기] 솝탬프 : 네트워킹 미션

솝트 네트워킹을 활성화시키기 위해 스탬프 미션 및 인증 플랫폼 제공

스크린샷 2023-03-03 오전 12 34 02

[2기] 공식앱 : 출석/공지/메이커스

활동 기수를 위한 출석/공지 기능과 메이커스 프로덕트 링크 제공

스크린샷 2023-03-03 오전 12 34 02

PROJECT

  • java version: 17
  • springboot: 2.7.4

DEPLOY

  • [local] deploy
  • [dev] deploy
    • dev 서버 접속
    • git pull origin dev
    • ./gradlew clean build
    • java -jar -Dspring.profiles.active=local build/libs/app-server-0.0.1-SNAPSHOT.jar
    • https://app.dev.sopt.org
  • [main] github actions
    • 배포 조건: main branch에 merge 되거나, makers-app-develop 태그 빌드하는 경우
    • gradle build -> s3 에 jar 업로드 -> codedeploy 배포
    • https://app.sopt.org

FOLDERING

app-server
  .gitignore
  appspec.yml
  build.gradle
  gradlew
  gradlew.bat
  README.md
  settings.gradle

└─src/main
     
   ├─java/org/sopt/app
       AppApplication
     ├─application
     ├─common
     ├─domain
     ├─interfaces.postgres
     └─presentation
   
   └─resources
         application.yml
         application-local.yml
         application-prod.yml
       └─database

SECRETS

  • 인수인계 담당자에게 아래 항목들을 요청해주세요! (2기 ozzing)
    • application-prod.yml
    • application-local.yml
    • prod database info
    • dev database info
    • prod pem key
    • dev pem key
  • AWS 관련 권한은 현 기수 AWS 담당자에게 적절한 권한을 요청해주세요!
    • ex) s3 access key, secret key
  • 이 외에도 필요한 항목이 있으면 요청해주세요!

ETC

Architecture

Layered Architecture방식을 채택. presentation layer, domain layer, interface layer, application layer, facade layer로 구성되어있다.

Presentation Layer

presentation layer는 사용자의 요청을 받아서 응답을 해주는 역할을 한다. 해당 layer에서는 facade layer 혹은 application layer를 호출하여 사용자의 요청에 대한 응답을 해준다. 해당 layer에서는 response를 위한 dto를 정의하고, request를 위한 dto를 정의한다. 또한 response를 만드는 역할을 한다.

Domain Layer

domain layer는 entity와 entity의 관계를 정의한다.

Interface Layer

interface layer는 외부와의 통신을 위한 interface를 정의한다. repository interface가 해당된다.

Application Layer

application layer는 비즈니스 로직을 정의한다. 해당 layer에서는 service를 정의한다. 해당 layer에서는 entity를 dto로 변환하는 역할을 한다.

Facade Layer

facade layer는 application layer를 호출하는 역할을 한다. 해당 layer에서는 service의 orchestrator 역할을 한다.