Skip to content

여기서 구해볼래? Backend Repository (Refactoring)

Notifications You must be signed in to change notification settings

sjiwon/study-with-me-be

 
 

Repository files navigation

여기서 구해볼래? Backend (Refactoring)

Origin Project

목차

  1. 소개
  2. 서비스 화면
  3. 주요 챌린지
  4. 기술 스택
  5. CI/CD Pipeline
  6. 백엔드 요청 흐름도
  7. 모니터링 구조도
  8. 실행 방식

🌙 소개

스터디 모집에서 진행 관리까지 케어하는 웹 애플리케이션 플랫폼

1  설명


🖥 서비스 화면

스터디 찾기

2  스터디 찾기

스터디 만들기

3  스터디 생성

스터디 활동하기

4  스터디 활동 (1)

5  스터디 활동 (2)

6  스터디 활동 (3)

7  스터디 활동 (4)

스터디 졸업하기

8  스터디 졸업


🔥 주요 챌린지


🛠 기술 스택

Backend

Tech Stack - Backend

Infra

Tech Stack - Infra


🚀 CI/CD Pipeline

CI-CD Pipeline


🛒 백엔드 요청 흐름도

Frontend는 리팩토링 하지 않았기 때문에 Backend 요청 흐름만 명시

  • 아래 흐름도에서 DNS Resolving 흐름은 생략

파일 업로드/요청 흐름도

파일 업로드, 요청 흐름도

서버 API 호출 흐름도

서버 API 호출 흐름도


💻 모니터링 구조도

모니터링 구조도


🚩 실행 방식

1) Docker Persistence(MySQL, Redis) & Monitoring(Prometheus, Grafana, Promtail, Loki)

  • docker/docker-compose-persistence.yml 실행
  • docker/docker-compose-monitoring.yml 실행

2) 프로필 환경설정 (resources/application.yml)

  • GOOGLE_EMAIL = 구글 계정 이메일

  • GOOGLE_APP_PASSWORD = 구글 앱 비밀번호

  • S3_BUCKET = AWS S3 Bucket

  • CLOUD_FRONT_URL = AWS CloudFront Domain URL

    • S3 Credentials 관련 {localUser}/.aws에 AccessKey & SecretKey 정보 필수

  • OAUTH_GOOGLE_CLIENT_ID = Google OAuth Application Client ID

  • OAUTH_GOOGLE_CLIENT_SECRET = Google OAuth Application Client Secret

  • OAUTH_GOOGLE_REDIRECT_URI = Google OAuth Application Redirect Uri

  • OAUTH_NAVER_CLIENT_ID = Naver OAuth Application Client ID

  • OAUTH_NAVER_CLIENT_SECRET = Naver OAuth Application Client Secret

  • OAUTH_NAVER_REDIRECT_URI = Naver OAuth Application Redirect Uri

  • OAUTH_KAKAO_CLIENT_ID = Kakao OAuth Application Client ID

  • OAUTH_KAKAO_CLIENT_SECRET = Kakao OAuth Application Client Secret

  • OAUTH_KAKAO_REDIRECT_URI = Kakao OAuth Application Redirect Uri

  • SLACK_WEBHOOK_URL = Slack Webhook Url

(실행-1) 빌드된 JAR 파일 실행

java -jar \
    -Dfile.encoding=UTF-8 \
    -Dspring.mail.username="구글 계정 이메일" \
    -Dspring.mail.password="구글 앱 비밀번호" \
    -Dspring.cloud.aws.s3.bucket="AWS S3 Bucket" \
    -Dspring.cloud.aws.cloudfront.url="AWS CloudFront Domain URL" \
    -Doauth2.google.client-id="Google OAuth Application Client Id" \
    -Doauth2.google.client-secret="Google OAuth Application Client Secret" \
    -Doauth2.google.redirect-uri="Google OAuth Application Redirect Uri" \
    -Doauth2.naver.client-id="Naver OAuth Application Client Id" \
    -Doauth2.naver.client-secret="Naver OAuth Application Client Secret" \
    -Doauth2.naver.redirect-uri="Naver OAuth Application Redirect Uri" \
    -Doauth2.kakao.client-id="Kakao OAuth Application Client Id" \
    -Doauth2.kakao.client-secret="Kakao OAuth Application Client Secret" \
    -Doauth2.kakao.redirect-uri="Kakao OAuth Application Redirect Uri" \
    -Dslack.webhook.url="Slack Webhook Url" \
./build/libs/StudyWithMe.jar

(실행-2) IntelliJ 환경변수 설정 & 서버 ON


  • API 테스트 시 필요한 Tokensrc/main/resources/DummyToken.txt에서 사용

Google OAuth Authorization Code를 파싱한 후 /api/oauth/login/google 요청 시 Authorization Code에 존재하는 %2F -> /로 수정

  • %2F는 HTTP URL Encoding으로 인한 결과로써 OAuth Provider가 인코딩된 값 인식 불가능
  • 4%2F0Adeu5BXgIJvUdjU090jAGQEwm8WPb8VidZzvmS9OjNFLrfeTIW9B-jGB292k5PRf73w4XA -> 4/0Adeu5BXgIJvUdjU090jAGQEwm8WPb8VidZzvmS9OjNFLrfeTIW9B-jGB292k5PRf73w4XA > - %2F -> /

  • Gradle build Task 실행 후 접속
    • build를 진행해야 REST Docs의 빌드된 index.html이 resources/static에 존재

Releases

No releases published

Packages

No packages published

Languages

  • Java 99.4%
  • Other 0.6%