다디와 괴발개발

[Project 1 - WAS] 기능 정의서, ERD, Swagger API 문서 제작 본문

DevOps/Project

[Project 1 - WAS] 기능 정의서, ERD, Swagger API 문서 제작

아임다디 2022. 6. 2. 17:41

조오오금이 아니라 아주 많이 늦게 업로드하지만 드디어 올리는 Codestates DevOps 부트캠프 첫 번째 프로젝트 정리 글!
이번 문서에서는 첫 번째 프로젝트의 목표와 프로젝트 제작을 위해 제작하였던 기능정의서, DB 제작을 위한 ERD, API 통신을 위한 API 문서를 정리해보았다!

목표

  • CRUD 기능을 가진 API 서버를 완성합니다.
  • 클라우드 서비스 데이터베이스를 사용하여 데이터를 영속적으로 저장합니다.
  • 데이터를 모델링하고, API 문서화를 진행합니다.
  • Git을 이용한 협업을 진행합니다.

첫 번째 프로젝트인 만큼 목표는 간단하게 로컬에서 돌아가는 WAS 서버를 제작하는 것이다.

DevOps 부트캠프에서는 프론트는 다루지 않기 때문에 프로젝트 목표에 프론트엔드 구현은 포함되지 않는다

기술 스택

  • 백엔드 : Node.js (version >= 16), fastify
  • 데이터베이스 : MongoDB
  • API : Swagger

주제

2022 대선 시즌을 맞아 대선 공약을 랜덤으로 출력하여 사용자가 공약에 대한 찬반을 선택해 나와 가장 잘 맞는 / 잘 맞지 않는 추천 후보 보여주는 서비스

기능 정의

  1. 사용자는 후보별로 모든 공약을 조회할 수 있다.
  2. 사용자는 화면에 제시된 공약에 대해 찬, 반으로 투표할 수 있다.
  3. 사용자는 랜덤한 순서로 각 후보 마다 7개의 공약을 투표할 수 있다. (총 28 문항)
  4. 사용자는 마지막 화면에서 자신과 가장 잘 맞는 후보와 잘 맞지 않는 후보를 볼 수 있다.
  5. 사용자의 투표 별 선택 결과와 최종 결과는 데이터베이스에 저장된다.

ERD

ERD는 dbdiagram 사이트를 이용하여 그렸다.

크게 User(유저), Promise(공약), President(대통령 후보)로 구성되어 있다.

User Table에는 유저의 이름과 가장 잘 맞는 후보(best_pres), 잘 맞지 않는 후보(worst_pres)에 대한 정보가 저장된다

President Table에는 대통령 후보의 이름(name)과 당 정보(party)가 들어간다.

Promise Table을 말하기 앞서, 2022 대선 공약의 7가지 카테고리를 구분하기 위해 Promise_category Table을 만들었다.

대선 후보 및 공약 관련 내용은 파이낸셜 뉴스 사이트에서 보고 정리하였다.

대선 공약 7가지 카테고리 항목
- 외교∙안보∙국방
- 경제∙복지
- 경제∙노동
- 사회∙복지
- 교육
- 환경
- IT

Promise Table에는 대통령의 id값, category의 id값과 공약 내용(contents)가 들어간다.

마지막으로 User_Promise 테이블에는 유저가 선택한 항목들을 저장하기 위해서 제작되었으며, 유저 uuid 정보와 선택한 공약에 해당하는 공약 id, 후보 id, 찬/반 여부를 저장하는 choice를 저장한다.

API

API 문서는 Swagger를 통해 정리하였다.

StreetDaeFight API

 

Build, Collaborate & Integrate APIs | SwaggerHub

 

app.swaggerhub.com

프로젝트 도중 API를 여러번 바꿔서 프로젝트 끝나고나서 다시 만든건 비밀

다시 만들어보면서 Swagger Hub 사용법을 많이 익혔다. Swagger Hub 사용법은 따로 포스팅해보겠다.

'DevOps > Project' 카테고리의 다른 글

[Project 1 - WAS] Fastify-cli 프로젝트 생성  (2) 2022.06.02