프로젝트 결정 사항

dropKick·2020년 7월 17일
0
post-thumbnail

설명

백엔드가 이정도는 해야 한대 시리즈를 통해 프로젝트 진행 간 개발환경과 목표, 구성, 설계 등을 완료 한다.


현재

  • 프로젝트 환경 설정
    • 서버 인스턴스 X
    • 클라이언트 X
  • 요구사항 분석 완료
  • 도메인과 테이블 설계
    • 도메인 구성 완료
    • 도메인 기능 명세 - ing
    • 테이블 - ing
  • 아키텍처 구성 - ing
    • 도메인 분리 - ing
  • 핵심 비즈니스 로직
    • X
  • 테스트 X
  • 웹 계층 개발 X

프로젝트 공통

버전 관리 시스템

  • Git / GitHub
  • Git Kraken

개발 프로세스 결정

  • Git Branch 전략에 따른 이슈 트래킹
  • 칸반 보드 방식을 이용
  1. 이슈 관리 도구와 Github Repo는 연동 되어있다.
  2. 이슈 발생 시 라벨링 후 이슈를 생성하여 'To Do'에 위치 시킨다.
  3. 작업자 assign 및 작업 중엔 'Check'로 이동
  4. 작업자는 issue/<이슈번호> 네이밍을 가진 브랜치를 master에서 나눈다.
  5. 작업이 완료되면 나눴던 브랜치를 master로 PR 및 리뷰
  6. 리뷰가 approve 되면 merge하고, 문제가 없다면 issue close 및 작업 브랜치를 제거한다. PR은 'Reviewed'로, 이슈는 'Done'으로 이동한다.

이슈 트래커와 일정 관리

  • 일정 관리
    • Notion
  • 이슈 트래킹
    • Trello & Github Issue
  • 연동 메신저
    • Slack

서버 사이드

API 설계 원칙과 직렬화 포맷

  • HTTP REST 기반 API 설계 결정
  • JSON 직렬화 포맷 사용 결정

API 스펙 설계와 API 문서화

미결정

사용자 인증 방식

  • 토큰 기반 인증 시스템 사용 결정
  • 소셜 로그인 필요 결정
  • OAuth 2.0 결정

OAuth 2.0 + JWT 사용

애플리케이션 기술 스택

언어

  • Java
    • JDK 8

프레임워크

  • Spring 5.0
    • Spring Boot 2.0 at least
    • Spring Sercurity
  • Thymeleaf 3.0 at least
    뷰 템플릿 엔진

의존성 관리 도구와 생산성 도구

  • Java
    • Gradle
  • IDE
    • IntelliJ

컴퓨팅 엔진과 네트워크 기반 시스템

  • 클라우드 플랫폼 사용

    • AWS
      • EC2 Instance
      • Elastic Load Balancer
      • Route53 DNS
      • Lambda API Gateway --> 시스템에 대한 고민을 해볼 것
        현재 수준의 시스템에서는 오히려 복잡성을 가중 시키고 관리의 어려움이 존재

    VPC를 만드는 것에 대해서도 고민을 해볼 것

  • Proxy

    • nginX

데이터베이스와 데이터베이스 관리 시스템

  • 클라우드 플랫폼 사용
    • AWS RDS
      • Aurora
        시작은 MYSQL로 시작 후 서비스 유지 시 변경
      • MySQL

무중단 배포와 배포 자동화

애플리케이션 레벨

애플리케이션 아키텍처

  • 분리된 API 서버 구성
  • 서버 다중화를 통한 스트레스 분산
  • 인증 서버가 별도로 존재
  • 인증과 API는 각 DB를 소유

두 개의 인스턴스 내 서버를 구성하고, 별도의 인스턴스에 인증 서버를 구축하는
모놀리식 아키텍처 + 서버 다중화를 선택

애플리케이션 시스템

  • 채팅 시스템
  • 결제 시스템
  • 소셜 로그인 시스템
    • OAuth 2.0 기반 설계
  • 캐싱
    성능 상 문제가 발생 시 적용
  • 게시판 CRUD
    • REST API 방식 설계

SQL 쿼리 방식

  • ORM
    • JPA
  • DBCP
    • hikariCP

DB 프레임워크

  • Hibernate 5.0

데이터 포맷팅 방식

  • time data 표현
    미결정
  • time data 저장
    미결정
  • image data 저장
    미결정

JSON 작성 원칙(Key Rule)

미결정

토큰 기반 인증 시스템 방식

  • Breare Token을 별도 사용하지 않고 JWT를 사용
  • JWT 기반 OAuth 2.0 방식 결정

민감한 데이터 및 metadata 관리 방식

미결정

라이브러리 결정

  • 직렬화 포맷팅 라이브러리 결정 필요
    • Gson
    • Jackson
  • 애노테이션 관리 라이브러리
    • Lombok

0개의 댓글