20년간 개발을 하다 보니 정말 여러 종류의 기술이 생겼다 사라지고 처음에 개념만 보면 “와 이건 뜨겠다.” 했는데 막상 나오면 꽝이어서 괜히 시간 들여 배웠다가 써보지도 못하고 없어지는 기술들이 많았다.
최근에는 아이폰과 함께 갑자기 주목 받던 오브젝트C 가 그러할 수도 있고 TypeScript 가 그럴 수 있고 GO 도 어찌 될 지 모르겠지만, 이제 나이가 들어가니 트렌드를 쉽게 따라가기도 어렵고 배울 시간도 부족한 나에게 마지막으로 풀스택을 배운 게 너무나 다행이라고 생각한다.
풀스택을 알게 되면서 어떠한 환경, 어떠한 기능, 어떠한 성능이든 쉽게 충족가능한 프로그램을 그것도 매우 빠르고 쉽게 개발하게 되었다. 20년간 개발하면서 자주 하는 “아 시작할 때 이 언어, 이 기술로 개발 안했으면 금방 끝날 수 있었는데…” 하는 후회는 풀스택으로 개발 시에는 해 본 적이 없으니 가장 효과적인 무기일테다.
풀스택의 강점들은 여러가지 있고 세부적으로 각 파트 별로 설명할 때 상세히 얘기하겠지만 종합적인 장점은 다음과 같다.
NodeJS의 장점
- 어떤 환경에서도 잘 돌아간다.
- 윈도우에서 돌리든 맥에서 돌리든 클라우드에서 돌리든 어디든 잘 돌아간다. 그것도 너무나 쉽게 옮겨다닐 수 있고 별도로 해 줄 작업이 거의 없다. 예를 들어 윈도우에서 개발해서 잘 돌아가면 바로 클라우드 linux 에 올려서 휴대폰으로 제어할 수 있다.
- 성능 확장이 너무나 쉽다.
- 윈도우에서 한 사람 쓰던 프로그램을 클라우드에 올려서 NodeJS 프로세스, 웹서버 여러개 띄우고 수천명을 동시에 사용할 수 있게 만드는데 필요한 프로그램 수정이 아예 없다. 그냥 올려서 EC2 인스턴스 추가 하고 load balance 잡아 주고 Nginx Reverse proxy 설정해 주면 무한 확장이 가능하다. 맨날 문제가 되던 concurrency 콘트롤도 필요가 없다.
- 서버와 클라이언트 경계가 매우 희미하다.
- 데이터를 가공하는 어떤 function이 있다고 하자. 이를 웹사이트 Js 에 탑재해 사용자 휴대폰이나 컴퓨터에서 실행하게 하든, 서버에서 실행해 결과 값만 보내든 내 마음대로 할 수 있는데 function을 고칠 필요가 거의 없다. 그냥 cut and paste로 Node JS서버에 놨다가 front end로 옮겨도 잘 돌아간다.
- 데이터 저장하고 읽는 부분이 너무나 매끄럽다.
- json object를 mongodb에서 읽어 서버에서 값을 바꾸든 클라이언트에 내려 보내 수정을 해서 다시 upload해 저장하든 그냥 load부터 다시 db에 save될 때까지 단 하나의 json object가 다이다. RDBMS 쓸 때 처럼 data object를 table에 mapping할 필요도, 온갖 불필요한 데이터가 덕지덕지 붙은 무거운 db table object를 생성할 필요도 없다.
- 환경 설정이 너무나 쉽다.
- 그냥 node js 설치하고 npm으로 알아서 세팅된다. 그 다음 아무 텍스트 에디터만 있으면 환경 설정은 끝이다. (Sublime text를 추천)
우선 가볍게 생각한 장점만 위와 같다. 이 블로그에서는 한 번 Nodejs 에서부터 React Native까지 다루면서 어떻게 모바일웹이나 앱을 개발할 수 있고 이를 이용해 여러 서비스 예를 들어
응용분야
- 자동 가상화폐 트레이딩봇
- 크롬 크롤러
- 자신만의 식당 예약 및 단골고객관리 웹
등 다양한 프로그램을 쉽게 개발할 수 있는지 한 번 알아보도록 하겠다.