사부작사부작해요

Node.js로 캠퍼스 플로깅 서버 개발 후기 본문

프로젝트/캠퍼스 플로깅

Node.js로 캠퍼스 플로깅 서버 개발 후기

sabujaky 2022. 4. 25. 22:03

2021년 9월부터 그 해 11월까지 공모전 수상을 목표로 캠퍼스 플로깅 프로젝트를 진행했습니다. 대학생의 플로깅을 장려하기 위한 모바일 앱을 개발하기 위해 기획+디자인 1명, 안드로이드 앱 개발 1명, 서버 개발 1명으로 역할을 나누어 클라이언트-서버 구조로 소프트웨어 개발을 진행했습니다.

https://github.com/yuna1212/glging-server

 

GitHub - yuna1212/glging-server: 글깅 서버

글깅 서버. Contribute to yuna1212/glging-server development by creating an account on GitHub.

github.com

저는 Node.js+Express와 MySQL을 사용해 서버개발을 담당했습니다. 서버 개발 경험도 없고, 학기중에 다른 과제들도 겹쳐서 온전히 집중하지는 못했습니다. 그래서 아쉬웠던 점도 있고, 그럼에도 대견한 점도 있습니다.

 

캠퍼스 플로깅 주제로 혼자 프로젝트를 2차로 진행하기 전, 아쉬웠던 점과 잘한 점을 정리해보려고 합니다.

아쉬운 점

1) 부족한 아키텍처

비즈니스 로직이 컨트롤러에 포함된 부분이 아쉽습니다. 저는 DB 관련 작업은 models 모듈에서, 그 외 클라이언트에게 줄 정보를 가공해서 넘기는 작업은 routes 모듈에서 진행했습니다. 사실 프로젝트는 'Node.js 교과서' 도서의 뼈대를 참고해서 개발했습니다. 도서에서 MVC 패턴으로 프로젝트를 설계했는데, 일부만 가져와서 이해 없이 구조를 잡다보니 컨트롤러부분이 비대해졌습니다.

너무 바쁜 내 로그인 컨트롤러의 일부 코드,, 책임질게 너무 많다!

 

도서에 실린 프로젝트는 클론코딩해보고, 왜 이렇게 설계했는지 더 고민했다면 관심사를 더 잘 분리할 수 있었을 것입니다. 아래 링크처럼 다른 오픈소스 프로젝트를 둘러보는 것도 도움이 많이 되었을 텐데, 조급하게 개발부터 했던 점이 아쉽습니다.

https://softwareontheroad.com/ideal-nodejs-project-structure/

 

Bulletproof node.js project architecture 🛡️

A simple yet powerful project architecture for node.js REST APIs 💎

softwareontheroad.com

 

2) 미숙한 javascript 사용

javascript를 처음 배웠습니다. 이전에 팀플에서 api 호출하기 위해 ajax를 쓴적은 있지만, 당시에 자바스크립트 공부를 하진 않았습니다. 자바스크립트 문법, 비동기 처리, 객체, 표현식, 호이스팅, 실행 컨텍스트 등 큼직큼직한 개념들을 훑으면서 개발을 했습니다.

 

개발과 공부가 병행되다보니 문제가 터져서야 공부를하고, 그러다보니 개발이 지연되는 경우가 왕왕 있었습니다. 특히 동기/비동기 처리 부분은 프로젝트가 끝나갈 때 까지 이해하지 못하고 그저 실행되는 코드만 작성했습니다.

 

프로젝트를 진행하기 전 토이 프로젝트로 무엇을 공부해야할지 정리하고, 프로젝트를 진행하면서 핵심적인 개념을 반복적으로 공부했다면 더 만족스러운 결과가 나왔을 것 같습니다.

 

3) 테스트 코드의 부재

모든 기능은 직접 실행해서 확인했습니다. 테스트코드를 미리 작성해두었다면 기능 변경이 유연하고, 디버깅도 더 쉬웠을 것 같습니다.

잘한 점

1) Rest API

Rest하게 API 설계하려고 노력했습니다. 원칙을 이해하고, 다른 프로젝트들은 어떻게 만들었는지 조사했습니다.

 

2) Sequence Diagram

서버와 클라이언트 사이에 어떤 상호작용이 있는지 시퀀스 다이어그램으로 표현했습니다. 결과적으로 기능을 어떤 단계로 구현해야 할지, 팀원과 인터페이스를 이야기할 때 많은 도움이 되었습니다.

 

3) Github 관리

git으로 프로젝트를 관리했습니다. 덕분에 나중에 EC2에 서버 올리고 변경사항 수정할 때 편했습니다. 커밋 메시지는 수정/삭제/추가 등을 표시해놓고 어떤 기능이 수정/삭제/추가 되었는지 작성했습니다. 추가적으로 이슈도 깃으로 함께 관리했다면 더 좋았을 것 같습니다.

끝으로

아쉬웠던 점은 보완하고, 잘한 점은 더 발전시켜서 캠퍼스 플로깅을 주제로 프로젝트를 다시 해보려고 합니다. 다음 글에서는 프로젝트를 어떻게 진행할지 정리하겠습니다.

Comments