설명
백엔드가 이정도는 해야 한대 시리즈를 통해 프로젝트 진행 간 개발환경과 목표, 구성, 설계 등을 완료 한다.
현재
- 프로젝트 환경 설정
- 요구사항 분석 완료
- 도메인과 테이블 설계
- 도메인 구성 완료
- 도메인 기능 명세 - ing
- 테이블 - ing
- 아키텍처 구성 - ing
- 핵심 비즈니스 로직
- 테스트 X
- 웹 계층 개발 X
프로젝트 공통
버전 관리 시스템
개발 프로세스 결정
- Git Branch 전략에 따른 이슈 트래킹
- 칸반 보드 방식을 이용
- 이슈 관리 도구와 Github Repo는 연동 되어있다.
- 이슈 발생 시 라벨링 후 이슈를 생성하여 'To Do'에 위치 시킨다.
- 작업자 assign 및 작업 중엔 'Check'로 이동
- 작업자는 issue/<이슈번호> 네이밍을 가진 브랜치를 master에서 나눈다.
- 작업이 완료되면 나눴던 브랜치를 master로 PR 및 리뷰
- 리뷰가 approve 되면 merge하고, 문제가 없다면 issue close 및 작업 브랜치를 제거한다. PR은 'Reviewed'로, 이슈는 'Done'으로 이동한다.
이슈 트래커와 일정 관리
서버 사이드
API 설계 원칙과 직렬화 포맷
- HTTP REST 기반 API 설계 결정
- JSON 직렬화 포맷 사용 결정
API 스펙 설계와 API 문서화
미결정
사용자 인증 방식
- 토큰 기반 인증 시스템 사용 결정
- 소셜 로그인 필요 결정
- OAuth 2.0 결정
OAuth 2.0 + JWT 사용
애플리케이션 기술 스택
언어
프레임워크
- Spring 5.0
- Spring Boot 2.0 at least
- Spring Sercurity
- Thymeleaf 3.0 at least
뷰 템플릿 엔진
의존성 관리 도구와 생산성 도구
컴퓨팅 엔진과 네트워크 기반 시스템
데이터베이스와 데이터베이스 관리 시스템
- 클라우드 플랫폼 사용
- AWS RDS
Aurora
시작은 MYSQL로 시작 후 서비스 유지 시 변경
- MySQL
무중단 배포와 배포 자동화
애플리케이션 레벨
애플리케이션 아키텍처
- 분리된 API 서버 구성
- 서버 다중화를 통한 스트레스 분산
- 인증 서버가 별도로 존재
- 인증과 API는 각 DB를 소유
두 개의 인스턴스 내 서버를 구성하고, 별도의 인스턴스에 인증 서버를 구축하는
모놀리식 아키텍처 + 서버 다중화를 선택
애플리케이션 시스템
- 채팅 시스템
- 결제 시스템
- 소셜 로그인 시스템
캐싱
성능 상 문제가 발생 시 적용
- 게시판 CRUD
SQL 쿼리 방식
DB 프레임워크
데이터 포맷팅 방식
- time data 표현
미결정
- time data 저장
미결정
- image data 저장
미결정
JSON 작성 원칙(Key Rule)
미결정
토큰 기반 인증 시스템 방식
- Breare Token을 별도 사용하지 않고 JWT를 사용
- JWT 기반 OAuth 2.0 방식 결정
미결정
라이브러리 결정
- 직렬화 포맷팅 라이브러리 결정 필요
- 애노테이션 관리 라이브러리