이 포스팅은 Alarm bot 프로젝트를 진행하면서 내가 얻은 것들에대하여 간략하게 소개하는 글이다.
목차는 다음과 같다.
- 온라인 강의
- Node.js
- npm (Node Package Modules)
- mocha (Node.js Test Framework)
온라인 강의(디지털 노마드 입성)
새로운 언어와 프레임워크를 사용하는 동안 단 한권의 책도 사지 않았다.
물론 깊게 본격적으로 공부를 하기 위해서는 책을 읽을 필요도 있겠지만, 초심자 혹은 대략적인 분위기 탐색을 위해서는 동영상 강의 만한것이 없다는 것을 알았다.
내가 활용한 동영상 강의는 다음과 같다.
Inflearn
유료 및 뮤료 강의가 있으며 진도 파악이 가능하여 내가 본 강의 다음강의를 바로 찾아 볼 수 있다. 별점과 댓글을 통해서 좋은 강의를 쉽게 골라 볼 수 있다.
- 내가본 강의
- Node.js를 이용해 웹애플리케이션 만들기
- Node.js로 Database 다루기 소개와 웹애플리케이션 만들기
다양한 언어 및 IDE부터 버전 관리 프로그램까지, 프로그래밍에서 필요한 전반적인 모든 기술을 배울 수 있다. 강의에 대상이 프로그래밍을 처음 접하는 초보자에게 맞추어져 있어서 매우 쉽고 친절하게 배울 수 있다. 반대로 프로그래밍을 많이 접해본 사람에게는 필요없는 부분도 있다.(이런 부분은 적당히 건너뛰면 됨) Inflean에 있는 강의중 많은 수가 생활코딩에 있는 강의를 사용하고 있다.
- 내가본 강의
- JavaScript
- 지옥에서 온 Git
동영상 강의에 장점은 무거운 개발 서적을 들고다닐 필요가 없다는 것이다. 그리고 강연자와 같이 코딩을 하다보면 마치 1:1교육을 받는 느낌이 든다.
동영상 강의를 통해 디지털 노마드의 시류에 본격 합류한 값진 경험이었다.
동영상 강의를 통해 디지털 노마드의 시류에 본격 합류한 값진 경험이었다.
Node.js
이번 프로젝트의 목적은 사실 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를 사용하여 서버를 띄우는 가장 간단한 코드이다.
아래는 실재 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를 배워보기 바란다.


작성자가 댓글을 삭제했습니다.
답글삭제좋은 글이네요 잘 읽고 갑니다 :)
답글삭제네 감사합니다.
삭제자주 놀러오세요 :)