- Front-end
- Vue.js
- Vuetify
- Back-end
- Spring Boot
- JPA + Quserydsl
- Spring Rest Docs
- MySql
- 배포
- Docker-Compose
- AWS EC2
- AWS RDS
-
홈 (메인 페이지)
-
메뉴
- 상단 메뉴탭을 통해 조회중인 시리즈를 변경할 수 있습니다.
-
게시글 관리
- 게시글 작성
- 게시글 수정 및 이동
- 게시글 삭제
- 게시글 검색 및 정렬
- 게시글 목록 일괄 삭제
-
댓글 관리
- 댓글 작성
- 댓글 수정
- 댓글 삭제
- 댓글 작성시 password를 입력하며, password가 일치해야만 수정할 수 있습니다.
- 댓글 작성시 작성자명을 입력하지 않으면 익명으로 입력됩니다.
관리자 페이지
- 시리즈 관리
- 시리즈는 카테고리와 유사한 개념입니다. 시리즈가 없는 미분류 게시물도 존재할 수 있습니다.
- 시리즈 추가
- 시리즈 수정
- 시리즈 삭제
- 시리즈는 카테고리와 유사한 개념입니다. 시리즈가 없는 미분류 게시물도 존재할 수 있습니다.
- 사용 버전
- Docker version 20.10.10
- docker-compose version 1.27.2
- JDK 11
-
실행 쉘 스크립트 (Linux 기반)
-
git clone https://github.com/co323co/MyLog.git
-
vim run.sh
후 아래 내용을 작성합니다. (clone 후 디렉토이를 옮기지 말고 바로 작성해주세요)cd MyLog git pull origin master cd backend sudo ./gradlew build cd .. docker-compose down --rmi all docker-compose up -d
-
-
application.yml, appication_test.yml
-
/MyLog/backend/src/main/resources 으로 이동합니다.
-
아래와 같은 내용으로 resources 안에 application.yml와 application_test.yml를 생성합니다.
spring: datasource: hikari: driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: {{ your database url }} username: {{ your database username }} password: {{ your database password }} jpa: properties: hibernate: show_sql: true format_sql: true use_sql_comments: true hbm2ddl.auto: update server: servlet: context-path: "/api" port : 8081
-
-
배포
- run.sh가 있는 경로로 이동합니다.
./run.sh
- REST API 규칙을 지키도록 노력했습니다.
- Spring Rest Docs를 통해 테스트를 거쳐 만들었습니다.
- /MyLog/docs 경로에 API 명세서 pdf 및 html이 들어있습니다.
- 백앤드 지원자로서 평소 프론트앤드는 잘 사용하지 않았다. 그래서 이번 과제는 익숙한 백앤드에 비해 프론트에 시간을 너무 많이 빼았겼다.
- Docker-compose와 쉘스크립트를 사용해 aws에서 편하게 배포할 수 있도록 구축했다. 젠킨스와 같은 CI/CD는 혼자 개발하며, 시간이 부족했던 관계로 적용하지 않았다.
- 독립적인 DB를 위해 RDS를 사용했다.
- jpa/querydsl를 사용했으며 단순 작업 반복을 피하기 위해 동적쿼리를 적용하고자 했다.
- api명세서를 되도록 restful하게 작성하도록 노력했다.
- spring rest docs를 적용하여 테스트가 거쳐진 api 문서를 통해 깔끔한 명세서를 만들었다.
- 일주일 동안 열심히 몰아붙인 것 같다..! 옵션을 다 끝내지 못했다는 아쉬운 점이 있지만 프론트에 너무 신경쓰느라 시간이 부족했다..