서비스 구성요소
웹 서비스는 서버 파트와 클라이언트서버 파트로 구성된다.
설치 OS
Ubuntu
써 본 리눅스 중 그나마 가장 편안했던 배포 패키지라서 선택.
IDE
Visual Studio Code
- Prettier
- ESLint
- ES7 React/Redux/GraphQL/React-Native snippets
Visual Studio Code의 Extenstion settings 에서 다음을 활성화 시킨다.
"eslint.alwaysShowStatus": true, "eslint.autoFixOnSave": true, "editor.formatOnSave": true, "prettier.eslintIntegration": true |
공통 구성
Node.js
방대하고 훌륭한 서드파티 모듈들을 지원하고 프론트엔드, 백앤드를 가리지 않고 Javascript를 기반으로 한 플랫폼이기에 선택.
Typescript
Javascript는 소스의 규모가 커질 수록 그에 따른 관리에 어려움이 있다. Typescript를 도입하여 실수로 인한 오작동 코드 작성을 줄일 수 있다.
서버 구성
Express.js
Node.js에서 가장 인기있는 라우팅용 프레임워크.
Cluster.js
한대의 서버에서 클러스트로 여러 워커를 구성해 자원효율을 높여주는 프레임워크다.
MongoDB
SQL 사용에 취약한 지금의 나로써는 문법을 별도로 배우지 않아도 되는 NoSQL류를 사용하는 것이 이득이 매우 크다.
현대의 서비스는 빠른 개발 및 빠른 출시 후 개선하는 것이 중요시 되고 있다.
그에 맞는 개발 속도를 맞추려면 설계에 비용이 큰 RDBMS 보단 NoSQL이 좋다고 판단했다.
그 중 그나마 익숙한 MongoDB를 선택했다.
Tensorflow.js
Python 기반의 기존 텐서플로우를 사용하기 보단 개발에 필요한 언어를 하나로(Javascript로) 통일 하고 싶었다.
다행히도 Tensorflow Javascript 버전이 출시하여 바로 선택했다.
Apollo Server
개발 할 서비스는 REST 방식이 아닌 GraphQL 방식으로 통신 할 것이므로 이를 보다 편리하게 관리하기 위해 사용.
클라이언트 서버 구성
React.js
사용에 익숙하고 프론트엔드 서버를 보다 빠르고 편하게 만들 수 있기 때문에 선택.
네이티브 앱 프레임워크인 React Native에도 비슷하게 사용 할 수 있으므로 Vue.js 및 Angular.js 프레임워크를 이용하기 보단 React로 통일하는 편이 더 낫다 판단했다.
Babel
자바스크립트의 하위 호환을 위해 선택.
Apollo Client
GraphQL 통신을 편리하게 관리하기 위해 사용.
운영 및 자동화 구성
PM2
웹서버가 강제종료됐을 시 알아서 재부팅 되는 등 모든 것을 자동화 하고 싶었다. PM2를 통해 서버 자동화 및 모니터링을 한다.
NginX
Node.js 자체가 웹서버 기능을 하지만 보안 향상 및 로드밸런싱 기능을 위해 사용한다.
배포의 자동화를 해 주는 도구이다. 단일 서버가 아닌 여러 서버를 확장 및 관리할 때 매우 유용하다. 자동화는 언제나 옳다.
서버 업데이트 도중에도 365일 24시간 Non-stop으로 동작하는 서비스를 원한다면 필히 적용해야 된다.
정리 해야할 것들
winstone.js (Logger)
https://blog.naver.com/couponpapa/221237495718
Agenda (작업관리자 - 여러 작업 동시 진행)
https://blog.naver.com/couponpapa/221242899397
https://blog.naver.com/catasy/221388866863
https://medium.com/@xoor/coding-a-graphql-api-with-node-js-c02d617f49f4
'Developments > Service' 카테고리의 다른 글
Webpack 을 이용한 모듈 관리 (0) | 2019.09.27 |
---|---|
유용한 Visual Studio Code Extension 들 (0) | 2019.09.25 |
ESLint 를 이용한 코드 규격화 (0) | 2019.09.18 |
Nodemon 설치 (0) | 2019.07.25 |
리눅스 설치 (0) | 2019.07.17 |