GDSC Waffle-TripleJack 중간정리 - Backend
프로젝트 소개
우리 팀은 프로젝트 주제를 무엇을 할까 고민하고 창의적인 방법을 모색하던 중,
카풀 사이트 개발이라는 신선한 아이디어에 주목하게 되었습니다.
수도권에서 대진대대학교 까지의 통학버스가 부담되고 놓칠 수 있기에,
이를 개선하는 것이 우리 프로젝트의 핵심 목표입니다.
기존의 셔틀버스는 좌석이 한정되어 있고, 택시는 비용 부담이 큰 통학 수단이기에
개인 차량을 소유한 학생들이 등,하교할때 차량을 공유할 수 있는 플랫폼을 만들고자 합니다.
저희가 개발에 사용하는것은
프론트엔드 : React
백엔드 : NodeJS, MongoDB
를 주로 사용하여 개발에 임하였습니다
NodeJS로 개발 하게 된 이유
- 제일 많이 다뤄본 언어(JavaScript) 및 프레임워크라서 자연스럽게 선택하게 되었습니다.
- NodeJS의 장점인 이벤트 기반 비동기방식이라 서버에 무리가 적게 간다는 점을 고려했습니다.
- 이벤트 기반이란? 이벤트가 발생할 때 미리 저장해둔 작업을 수행하는 방식
- I/O 작업이 많은 서버로 적합하다고 하여 게시물 올리는 웹사이트에 적합할 것 같다는 생각이 들었습니다.
- 싱글스레드 방식이라 멀티스레드 보다 쉬운 점도 분명 있을 거라 생각하여 선택하였습니다.
- 단점도 분명하지만 try catch 문으로 에러처리를 커버하도록 코드를 짰습니다.
- 스레드란? 프로세스 내에서 실행되는 흐름의 단위
NodeJS 내부 구조(신기해서 가져와봤습니다.)
출처 : https://velog.io/@yejineee
서버 및 데이터베이스 설정
- 우선적으로 프로젝트를 지원할 서버 환경을 성공적으로 구축했습니다.
이를 통해 프로젝트를 어떻게 실행할지 환경과, 구축에 조금 더 신경을 썻습니다 - MongoDB 데이터베이스를 설정하고 필요한 컬렉션을 생성했습니다.
이 과정에서 테스트 데이터를 삽입하여 DB의 작동을 확인했습니다.
백엔드 개발
백엔드 개발에서는 NodeJS와 MongoDB를 기반으로 개발했습니다. 사용된 주요 라이브러리는 다음과 같습니다:
- bcrypt: 사용자 비밀번호의 안전한 해싱을 위해 사용됩니다.
- jsonwebtoken: 기존의 쿠키 기반 인증에서 JWT(Json Web Token) 기반 인증으로 전환하는 작업을 진행 중입니다.
- mongoose: MongoDB와의 상호 작용을 용이하게 하는 ORM 라이브러리로, 데이터 스키마 설계와 관리에 중요한 역할을 합니다.
- 기타 기능으로 회원가입, 로그인 등의 기본적인 사용자 인터페이스를 구현하고 있으며, 이들 기능은 안정적으로 작동하고 있습니다.
서버 관련해서는
Ubuntu 22.04 LTS를 설치한 2개의 서버를 따로 실행중입니다
하나는 웹서버를 여는 서버 (프론트, 백 동시 가동)
하나는 DB서버 입니다
이렇게 설계한 이유는
만약 가능하다면 이 프로젝트를 한번 운영을 해보고 싶어서
보안과 성능에 중점적으로 만들었기 때문입니다
아직 백엔드 부분에서 다듬어야할 부분이 많습니다..
사실 저희 이번 인원들이 전부 프로젝트가 처음이라
처음에 갈피를 잘 못잡았습니다.
API 명세서
이후 계획
- 백엔드와 프론트엔드 연동
- 연동 시 생기는 에러 및 수정 및 개선
- 최종 테스트