• 모모 팀문화

  • 모모 서비스 목적

  • 모모팀 깃 브랜치 전략

    • develop 브랜치를 fe 와 be 두 개로 분리하여 관리 → 하나의 저장소에서 두 코드를 독립적으로 관리
    • feature 브랜치는 이슈 번호로 관리
    • 스쿼시 머지 찾아보기
  • JPA

    • JPA 를 사용한 이유?
    • 영속성 컨텍스트의 엔티티 관리
    • 1차 캐시와 쓰기 지연 SQL 저장소
    • 엔티티를 조회할 때 리플렉션 사용하여 프록시 객체 생성
    • https://ict-nroo.tistory.com/131

    Spring Data JPA

  • REST Docs

    • 기존에는 프론트엔드와 백엔드가 다같이 설계하기 위해서 노션을 사용했었음
    • 그러나 요구사항을 추가할 수록 설계가 변경되었으나 노션 문서에 적용되지 않은 문제가 빈번하게 발생함
    • Swagger 와 REST Docs 중에서 프로덕션 코드에 영향이 없는 REST Docs 를 사용함
  • CI/CD

    • 빌드와 배포 과정을 자동화하기 위해 CI/CD 를 구축함

    • GitHub Action

      • workflow 추가하여 PR 올라왔을 때 빌드하여 테스트 코드가 정상적으로 작동하는지 확인

      GitHub Action

    • SonarQube

    • Jenkins

      • 교육장 밖에서 접근하여 빌드 및 배포하기 위해 사용
      • 브랜치에서 PR 이 머지되면 젠킨스 서버로 webhook 을 보내 CI/CD 진행
    • submodule

      • 외부에 노출되면 안되는 설정값을 관리하기 위해 사용

      submodule

  • HTTPS

    • Nginx

    HTTPS(HTTP Secure)

  • 로깅

    • AOP 활용하여 로깅 구현
    • https://taes-k.github.io/2021/02/07/spring-aop-proxy/
    • 처리하지 못한 예외를 찾아 로깅하여 안전한 서비스를 유지
  • 구글 OAuth

    OAuth

  • CloudWatch 대시보드

  • CORS