기본 콘텐츠로 건너뛰기

Alarm Manager Back-End 개발 이야기


이 포스팅은 Alarm bot 프로젝트를 진행하면서 내가 얻은 것들에대하여 간략하게 소개하는 글이다.
목차는 다음과 같다.
  1. 온라인 강의
  2. Node.js
  3. npm (Node Package Modules)
  4. mocha (Node.js Test Framework)



온라인 강의(디지털 노마드 입성)

새로운 언어와 프레임워크를 사용하는 동안 단 한권의 책도 사지 않았다.
물론 깊게 본격적으로 공부를 하기 위해서는 책을 읽을 필요도 있겠지만, 초심자 혹은 대략적인 분위기 탐색을 위해서는 동영상 강의 만한것이 없다는 것을 알았다.
내가 활용한 동영상 강의는 다음과 같다.

Inflearn

유료 및 뮤료 강의가 있으며 진도 파악이 가능하여 내가 본 강의 다음강의를 바로 찾아 볼 수 있다. 별점과 댓글을 통해서 좋은 강의를 쉽게 골라 볼 수 있다.

- 내가본 강의
  1. Node.js를 이용해 웹애플리케이션 만들기
  2. Node.js로 Database 다루기 소개와 웹애플리케이션 만들기



생활코딩

다양한 언어 및 IDE부터 버전 관리 프로그램까지, 프로그래밍에서 필요한 전반적인 모든 기술을 배울 수 있다. 강의에 대상이 프로그래밍을 처음 접하는 초보자에게 맞추어져 있어서 매우 쉽고 친절하게 배울 수 있다. 반대로 프로그래밍을 많이 접해본 사람에게는 필요없는 부분도 있다.(이런 부분은 적당히 건너뛰면 됨) Inflean에 있는 강의중 많은 수가 생활코딩에 있는 강의를 사용하고 있다.

- 내가본 강의
  1. JavaScript
  2. 지옥에서 온 Git




동영상 강의에 장점은 무거운 개발 서적을 들고다닐 필요가 없다는 것이다. 그리고 강연자와 같이 코딩을 하다보면 마치 1:1교육을 받는 느낌이 든다.
동영상 강의를 통해 디지털 노마드의 시류에 본격 합류한 값진 경험이었다.


Node.js

이번 프로젝트의 목적은 사실 Node.js를 배워보기 위한 막연한 호기심에서 시작되었다. 이 블로그에서는 Node.js의 대략적인 개념만 소개할 예정이다. 더 자새한 것이 알고 싶다면 앞서 소개한 동영상 강의 싸이트 혹은 아래 링크를 참고하기 바란다.
Node.js 기본 사용법


Node.js 홈페이지 대문에 있는 소개를 한번 살펴보자
Node.js®는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다. Node.js는 이벤트 기반, 논 블로킹 I/O 모델을 사용해 가볍고 효율적입니다. Node.js의 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리 생태계이기도 합니다.
소개에도 나와있듯이 Node.js의 기본은 JavaScrpit이다. 기존 JavaScript가 웹의 프론트엔드에서 작동했다면 Node.js는 Chrome V8 JavaScript엔진을 사용하여 그 범위를 백엔드까지 확장하는 역할을 했다. Node.js를 사용하면서 가장 놀랐던 점은 웹 서버의 구축 과정이였다. 기존 Tomcat등을 사용해서 서버를 구축해본 경험에 비추어보면 코드 단 몇줄만을 사용해서 동작하는 서버를 만들어내는 Node.js는 나에게 신세계나 다름 없었다.
아래는 실재 Node.js를 사용하여 서버를 띄우는 가장 간단한 코드이다.







var http = require('http');
var server = http.createServer(function(request, response) {
    // 여기서 작업이 진행됩니다!
});
server.listen(8000);
cs

npm(Node Package Modules)

Node.js의 가장 큰 지원군은 npm이다. npm은 Node.js로 작성된 수많은 패키지 모듈들을 설치하고 관리해주는 패키지 메니저이다.

현재 홈페이지에 들어가면 약 475000개의 모듈이 등록되어 있고 weekly package downloads가 2249210632를 기록하고 있는 것을 볼 수있다.
실제 이번 프로젝트에서 사용한 cron 스케줄러도 npm에 있는 모듈을 사용하여 구축 하였다. 내가 생각하는 거의 모든 기능들을 npm에서 찾을 수 있다고 해도 과언이 아니다. 거기다 버전관리와 의존성 관리까지 npm이 알아서 해주기때문에 개발자는 개발 환경 구축의 스트레스를 거의 받을 일이 없고 인터넷이 되는 환경이라면 os와 상관없이 쉽게 개발 시작이 가능하다.



Git에서 프로젝트를 내려받고 npm update만 콘솔에 입력하면 node엔진 업데이트부터 모듈 다운로드까지 npm이 알아서 실행해준다.
Node.js와 npm의 조합으로 서버 개발의 생산성 향상을 직접 채험해 보길 바란다.


Mocha

본격적인 개발에 들어가기 전에 테스트 프레임워크가 필요했다. Node.js 개발자들이 가장 선호하는 Mocha 테스트 프레임워크를 사용하기로 결정 하였다. Mocha 역시 기본적인 소개정도의 글만 작성하려고 한다. 자새한 내용은 아래 링크 참고하기 바란다.
Mocha

역시 Mocha의 홈페이지에 있는 소개를 살펴보자.
Mocha is a feature-rich JavaScript test framework running on Node.jsand in the browser, making asynchronous testing simple and fun. Mocha tests run serially, allowing for flexible and accurate reporting, while mapping uncaught exceptions to the correct test cases. Hosted onGitHub.
소개가 참 인상적이다. "간단하고, 유연하고, 재미있다" 실제로 사용해본 결과 소개가 거짓이 아니였음을 알게 되었다.
Mocha역시 npm을 사용하여 간단하게 설치가 가능하다. 설치 후 Mocha를 실행하면 특별한 설정이 없는 경우 프로젝트 아래의 "test"폴더에 있는 .js코드들을 test runner를 사용하여 모두 실행하고 결과를 알려준다.
Mocha는 기본적으로 describe()와 it()으로 테스트 코드를 작성한다. describe는 우리가 알고있는 suite의 개념이고, it은 test의 개념이다. 두 함수를 적절히 사용하여 테스트를 기술하고 기술된 테스트를 Mocha runner가 실행해 준다.
아래는 Mocha페이지에서 사용한 예제이다.
var assert = require('assert');
describe('Array', function() {
  describe('#indexOf()', function() {
    it('should return -1 when the value is not present', function() {
      assert.equal(-1, [1,2,3].indexOf(4));
    });
  });
});



정리하며

한달 남짓 Node.js를 사용해본 결과 생산성이나 유연성은 정말 듣던데로 최고였다. 내가 만들고 싶은것을 빠른 시간안에 거의다 만들어볼 수 있겠다는 생각이들 정도였다.
다만 C++과 Java만을 사용해본 습관이 남아있어서 JavaScript로의 페러다임 이동이 약간 어려운 점이 있었다. 이 부분이야 많이 사용해보면 차차 좋아질 것이라 생각한다. 만약 이글을 읽고있는 사람중 만들고 싶은 것이 있는데 무엇부터 시작해 보아야 할지 모르겠다고 생각하시는 분은 주저없이 Node.js를 배워보기 바란다.

댓글

댓글 쓰기

이 블로그의 인기 게시물

라인을 이용한 Bot 만들기(1/2)

라인을 이용한 Bot 만들기 라인 Bot이란? Line messaging API 를 이용해서 사용자와 쌍방향 소통을 할 수 있는 소프트웨어 프로그램. Bot의 대표적인 예로는 Chatbot이 있습니다. Chatbot이란? https://en.wikipedia.org/wiki/Chatbot Chatbot은 청각 또는 텍스트를 이용해 인간과 대화가 가능한 컴퓨터 프로그램입니다.  사용자가 Chatbot에게 특정 메시지를 전달했을 때, Chatbot은 이를 보고 사용자가 원하는 답을 알려줄 수 있습니다. Chatbot의 장점은 접근성입니다. PC와 모바일에서 모두 활용 가능하고, 대부분의 사람들에게 익숙한 메신저 기반이기 때문에 접근성이 뛰어납니다. 시작하기 https로 보안 설정 된 웹 서버가 필요합니다. http://8ctci.blogspot.kr/2017/05/awsubuntu-server-https-setting.html LINE Business 계정 등록 https://business.line.me/ko/ 아이디 생성 후 비즈니스 계정 개설을 선택합니다. 계정 이름과 나머지 항목들을 입력한 후 신청하면 계정 생성 완료! LINE@ Manager 클릭! Bot 설정에서 API 켜기 과감하게 클릭! Bot 설정에서 Webhook 허용해야 봇 만들 수 있음. 저장. https://business.line.me/ko/ -> 계정 목록 -> 내 계정 LINE@ MANAGER? 소프트 유저(카페나 레스토랑 운영자)가 메시지를 보내고 통계 정보를 확인하는 페이지 입니다. LINE Developers ? 하드 유저(개발자)가 Messaging API를 이용해서 서버와 통신하기 위해 필요한 설정을 진행하는 페이지 입니다. 우리는 서버와 통신해야 하기 때문에 이 메뉴로 들어갑니다. 주요 설정할 부분은 App icon(예쁜 사진으로!)과 Webhook URL입니다. 그림과 같이 <설정된 서버 주소의 UR...

AWS(Ubuntu server)+ https setting (In progress)

AWS Setting 당신이 알아갈수 있는것!  EC2 Server란?  domain Setting ( Route53)  load balancers 를 통해 https setting  problems (삽질)  Money in Total 1. EC2 Server Amazon Elastic Compute Cloud(Amazon EC2)는 Amazon Web Services(AWS) 클라우드에서 확장식 컴퓨팅을 제공합니다. Amazon EC2를 사용하면 하드웨어에 선투자할 필요가 없어 더 빠르게 애플리케이션을 개발하고 배포할 수 있습니다. Amazon EC2를 통해 원하는 만큼 가상 서버를 구축하고 보안 및 네트워크 구성과 스토리지 관리가 가능합니다. Amazon EC2는 요건이나 갑작스러운 인기 증대 등 변동사항에 따라 확장하거나 축소할 수 있어 트래픽 예측 필요성이 줄어듭니다. 2. Route53(domain Setting) * 네임서버란? 네임서버란 호스트 명과 IP주소로 구성되며, 도메인명을 IP로 변환해 주는 역할을 담당합니다. 인터넷 브라우저의 주소창에 도메인 명을 입력하면, 네임서버를 통해 해당 도메인에 묶여진 IP주소를 가진 서버를 찾아내고 이에 연결되어 있는 사이트로 접속하겠다라는 인터넷 상의 약속입니다. * 호스트란? 호스트란 IP주소에 호스트의 이름 분석 주소를 알려주는 유닉스의 텍스트 파일입니다. 즉, 네임서버로 사용하겠다는 의미를 부여 받은 도메인 이름으로 사용하고자 하는 도메인 앞에 'ns'를 붙여서 사용합니다. 준비물 : 도메인 사용에 따라 비용이 발생합니다~ 참고 :  https://opentutorials.org/course/608/3012 NS -NameServer (필수 레코드) SOA - start of authority (필수 레코드) Create Record Set을 선택해 도메인을 입력을 하면...