본문 바로가기
Project

[Dynamic Designer Developer DDD] 오모지

by 리노 Linho 2023. 6. 4.

본 게시글은 Dynamic Designer Developer DDD 8기 아몬드 초코볼 팀이 오모지 서비스를 개발한 과정과 소개를 담고 있습니다.

더불어 본 서비스는 현재 개발 단계에 있습니다.

Introduce

내일 결혼식가는데 이렇게 입고가면 어떨까? 다음주에 소개팅가는데 이 패션을 이상한가? 각종 이벤트마다 입어야할 옷이 고민일 때 상담할 수 있는 2030 타겟의 일상 패션 공유 앱

Role

Devops Engineer & Backend Engineer

Architecture

Google Cloud Platform

Google Cloud Run
Google Cloud Build
Google Cloud SQL
Google Secret Manager
Web Framework Spring Boot
Spring Security
JPA

Feature

  • 평가 받고 싶은 패션을 등록
  • 평가 중인 패션의 점수
  • 나의 프로필 정보 확인
  • 현재까지 등록한 나의 패션 리스트
  • 네이버 & 애플 소셜 로그인 기능

Experience for Spring

  • Spring Security
    • Spring Security는 Spring에서 인증과 관련된 로직을 쉽게 설정할 수 있도록 제공하는 프레임워크
    • OAuth 관련 로직도 제공하여 네이버 로그인과 애플로그인 또한 구현 가능
    • JWT를 사용하여 서비스의 보안성 증진

Experience for GCP

  • Google Cloud Run
    • Cloud Run은 GCP에서 제공하는 컨테이너 기반의 Severless 서비스
    • Severless 특성상 필요시 서버가 구동되어 비용적 부담을 해소
    • Cloud Build를 통해 도커 이미지를 Build하고 Cloud Run에 컨테이너 실행
  • Google Cloud Build
    • GCP에서 제공하는 Deployment Pipeline 서비스
    • Github Repository에 Cloud Build 트리거를 설정하면 특정 이벤트 발생시 자동 배포
    • 배포 방법 ( https://linho.kr/10 )
  • Google Secret Manager
    • Google Secret Manager는 서비스 내에서 사용하는 보안관련 정보를 담고 있는 서비스
    • Secret Manager에 등록한 정보는 버저닝을 통해 관리되며 필요시 환경변수나 JSON 파일 형태로 주입 가능
    • Spring Boot의 경우 application.yml 파일에서 각종 보안 정보를 필요로하는데 이를 환경변수로 설정하여 Google Secret Manager에서 환경변수로 값을 주입하고 불러올 수 있도록 구현 
    • Spring Boot에서 사용하는 각종 환경변수를 Google Secret Manager에 담아서 사용
  • Google Cloud SQL
    • GCP Cloud SQL는 GCP에서 Fully Managed로 제공하는 데이터베이스 서비스
    • MariaDB Database로 생성하여 Spring Boot의 JPA와 연결하여 사용
    • ERD를 그려서 JPA에 엔티티를 생성하고 관련해서 Data Transfer Object를 만들어 Swagger에 연동하거나 Validation을 수행하고 모듈간의 결합도를 낮추기 위한 용도로 사용
    • JPA만으로 부족했던 정보는 QueryDSL을 반영하여 쿼리로 요청

Improvement

  • Spring Security Logout
    • 계정 로그아웃시 Redis를 사용하여 특정 토큰의 로그인을 제한하는 로직을 만들어야하지만, Redis의 비용적 문제로 인해 Expire시간을 조정하고 중단하였습니다.
    • 해당 서비스가 실제로 배포된다면 구성하여 제공할 예정입니다.

Github

https://github.com/DDD-Community/omoji-server