⭐ [프로젝트] 프리프로젝트 일지

NtoZ·2023년 8월 8일
1

PreProject

목록 보기
1/12
post-thumbnail

🚩 프리프로젝트

🏁 개요

⭐ 문서 정리

프로젝트 목적

  • Pre-Project에서는 우리 팀만의 스택오버플로우를 제작한다.

  • 앞으로 학습할 산출물을 작성하며 프로젝트의 초안을 기획하고 Unit3 학습 이후 스택오버플로우를 구현한다.


🏁 프로젝트 단계

1. 사용 스택 작성

1-1. BE

  • IDE: IntelliJ(Ultimate)

  • JDK: OpenJDK - Zulu11

  • Framework - Spring Boot 2.7.1

  • Build Tool - Gradle

  • VCS - Git / Github

  • Packaging - Jar

  • DB - MySQL / H2(Testing)

  • AWS - EC2 / RDS

  • Dependencies

    • Spring Web
    • Lombok
    • Mysql Connector
    • H2 Connector
    • Spring Security
    • Spring Data JPA
    • Validation

1-2. FE

  • HTML
  • CSS
  • JavaScript
  • React
  • TypeScript
  • figma

2. 요구사항 정의서 작성


3. ERD 작성

Table user {
  user_id long [primary key]
  username varchar
  user_password varchar
  created_at timestamp
}

Table question {
  question_id long [primary key]
  title varchar
  body text [note: 'Content of the post']
  user_id long
  created_at timestamp
  modified_at timestamp
}

Table answer {
  answer_id long [primary key]
  body text [note: 'Content of the post']
  user_id integer
  question_id long
  created_at timestamp
  modified_at timestamp
}

Table vote {
  vote_id long [primary key]
  user_id integer
  question_id long
  answer_id long
  amount integer
}

Table comment {
  comment_id long [primary key]
  user_id integer
  question_id long
  answer_id long
  body text [note: 'Content of the post']
  created_at timestamp
  modified_at timestamp
}

Table tag {
  tag_id long [primary key]
  question_id long
  tag_name varchar
}

Ref: question.user_id > user.user_id // many-to-one

Ref: answer.user_id > user.user_id // many-to-one

Ref: answer.question_id > question.question_id // many-to-one

Ref: vote.user_id > user.user_id // many-to-one

Ref: vote.question_id > question.question_id // many-to-one

Ref: vote.answer_id > answer.answer_id // many-to-one

Ref: comment.user_id > user.user_id // many-to-one

Ref: comment.question_id > question.question_id // many-to-one

Ref: comment.answer_id > answer.answer_id // many-to-one

Ref: tag.question_id > question.question_id // many-to-one

4. API 명세서 작성(백-프론트 소통용)


5. 화면 정의서 작성


6. 배포 환경 구축

  • AWS 계정 생성 / 초기세팅
  • CI/CD 자동화

7. 라벨 & 마일스톤 & 칸반보드


🏁 트러블 & 슈팅

EC2

  • 자꾸 서버가 다운되는 문제
    • 캐시를 지우고, EC2에 설치되어있던 MYSQL을 RDS로 옮김
    • 남은 용량 보는 법 : free -h

EC2 명령어

  • sudo docker rm -f server : server라는 이름의 컨테이너 삭제

  • sudo docker run -d --name server -p 8080:8080 7eleven-cicd : 도커 실행

  • sudo vi /etc/environment

  • source /etc/environment

  • sudo vi/etc/profile

    • 우분투 내부 환경변수 편집 (docker 컨테이너 내부에서 실행할 때 소용없음!)
  • sudo source/etc/profile

  • sudo docker image prune

  • free -h


CI/CD

  • Docker 컨테이너에 환경변수가 전달되지 않는 문제
    • Github Secrets -> workflow 파일 -> Dockerfile에 전달되도록해서 구동하도록

시큐리티

  • CORS 적용되지 않는 문제
  • 프론트엔드 쪽에서 Authorization 헤더가 받아지지 않는 문제

profile
9에서 0으로, 백엔드 개발블로그

0개의 댓글