노드 생태계의 활력을 증명하는 13가지 유용한 Node.js용 프레임워크
2014년 05월 22일 (금)
ⓒ ITWorld, Peter Wayner | InfoWorld
Node.js는 전체 수명 관점에서 보면 한창 약동하는 봄의 시기를 보내고 있다. 많은 사람들이 Node.js 플랫폼에서 웹 사이트와 애플리케이션을 구축하는 더 새롭고 효율적인 방법을 연구하는 덕분에 선택할 수 있는 옵션들도 빠르게 늘어나고 있다.
이번에 소개할 내용은 그 중에서도 가장 눈에 띄는 몇 가지 프레임워크들이다. 이 프레임워크의 도움을 받으면 복잡한 웹 사이트, 데이터 지향적인 웹 앱, 실시간 애플리케이션 또는 API를 더 간편하게 구축할 수 있다. 새 프로젝트를 시작할 때 이러한 프레임워크를 기반으로 작업하면 노드 생태계에 축적된 최선의 연구 결과와 경험을 빠르게 활용할 수 있다.
![](http://files.itworld.co.kr/slide_20SS-node-frameworks-express.jpg)
미니멀리즘에 입각한 접근 방법으로 웹 요청을 처리하는, 1,000라인도 채 되지 않은 아주 가벼운 셸이다. URL을 템플릿에 매핑한 다음 일반 데이터 저장소의 데이터로 값을 채운다. 표준 템플릿 엔진은 콘솔리데이트(Consolidate)지만 패턴이 단순하므로 대부분의 경우 문제 없이 작동한다.
익스프레스 팀에 따르면 마이스페이스가 참신한 인상을 주기 위해 다음 버전을 익스프레스로 구축 중이라고 한다. 마이스페이스가 무엇인지 모르겠다면 할아버지께 여쭈어 보기 바란다. 아마 아직도 계정을 갖고 계실 것이다. 익스프레스는 깃허브(GitHub)에서 MIT 라이선스로 배포된다.
![](http://files.itworld.co.kr/slide_20SS-node-frameworks-locomotive.jpg)
익스프레스에 더 많은 "표준 구성"을 추가하기 위해 고안된 로코모티브는 익스프레스의 길을 따르긴 하지만 표준 구성 방식을 사용하는 기능을 통해 익스프레스의 범위를 확장한다. 따라서 모든 로코모티브 사이트는 익스프레스를 기반으로 실행되며 모든 MVC 및 REST 후크는 동일한 방식으로 작동한다. 로코모티브는 표준 아키텍처와 디렉터리 구조를 추가해준다. 익스프레스 프레임워크를 위한 프레임워크라고 할 수 있다.
이미지는 디렉터리 구조의 표준 방식을 보여준다. 로코모티브는 깃허브에서 MIT 라이선스로 배포된다.
![](http://files.itworld.co.kr/slide_20SS-node-frameworks-koa.jpg)
코아(Koa)
익스프레스를 만든 사람들이 그 다음 단계로 넘어가 만든 결과물이 코아다. 코아는 호출과 응답 핸드셰이크에 새 기능을 추가할 수 있게 해주는 텔레스코핑 호출 스택이다. 처음에 소량의 코드를 써서 요청을 처리하고 이후 진행하면서 무엇이든 커스터마이즈할 수 있다. 모든 텔레메트리를 처리하는 미들웨어는 공개되어 있으므로 변경이 가능하다. 수십 가지 플러그인 패키지가 압축, 캐싱, JSON 인코딩 등의 기능을 손쉽게 스택에 추가할 수 있게 해준다.
화면은 코아에 번들로 제공되는 템플릿팅 라이브러리 중 하나에 사용되는 Jade 마크업을 보여준다. 코아는 깃허브에서 MIT 라이선스로 배포된다.
![](http://files.itworld.co.kr/slide_20SS-node-frameworks-total.jpg)
Total.js 스택은 최대한 많은 요소를 자동화한다. HTML 및 CSS용 마크업 템플릿으로 작업을 시작하면 Total.js가 이를 원시 코드로 컴파일한 다음 압축한다. 프레임워크로 위장한 대규모 웹 사이트 컴파일러다.
화면은 주문을 지원하는 초밥식당 웹사이트의 예이다. Total.js는 깃허브에서 MIT 라이선스로 배포된다.
![](http://files.itworld.co.kr/slide_20SS-node-frameworks-derby.jpg)
Node.js를 사용하는 이유 중 하나는 클라이언트와 서버에 동일한 언어를 사용하는 것이다. 더비는 클라이언트와 서버에서 동일한 코드를 실행하고 결과를 동기화함으로써 이 원칙을 극한까지 확대해준다. 그런 다음 템플릿 렌더링, 패키징, 그리고 일부MVC까지 완료해서 과정을 간소화한다. CSS를 컴파일하는 등의 일에 대해 걱정할 필요가 없다. 더비에 다 통합되어 있다.
화면은 코드와 함께 배포되는 기본 ToDo의 예다. 더비는 깃허브에서 MIT 라이선스로 배포된다.
![](http://files.itworld.co.kr/slide_20SS-node-frameworks-meteor.jpg)
메테오의 용도는 서버와 지속적으로 동기화되는 웹 앱을 구축하는 것이다. 템플릿을 변경하면 그 데이터가 자동으로 서버에서 브라우저로 흐르고, 기반 프레임워크에서 다시 그리기와 업데이트 작업이 직접 처리된다. 한편 이 작업은 양방향으로 작동한다. 브라우저 코드는 데이터베이스를 사용하듯 데이터를 변경하거나 쓸 수 있다. 동기화는 백그라운드에서 이루어진다.
화면은 응급 처치 요원의 작업을 동기화하기 위한 앱 예다. 메테오는 Meteor.com과 깃허브에서 아파치 라이선스로 배포된다.
![](http://files.itworld.co.kr/slide_20SS-node-frameworks-mojito.jpg)
브라우저 및 서버를 위한 야후의 HTML5 프레임워크로, 로컬 루틴을 통해 서버 데이터베이스에 대한 직접 MVC 액세스를 제공한다. 코드를 마이그레이션하는 유용한 기능이 있다. 클라이언트가 어떤 이유로 자바스크립트를 실행할 수 없는 경우 모지토가 서버에서 실행해준다. 씬 클라이언트를 편리하게 다룰 수 있는 방법이다.
화면은 크리켓 커뮤니티의 뉴스와 점수를 보여주는 야후의 크리켓 사이트다. 모지토는 깃허브에서 새로운 BSD 라이선스로 배포된다.
![](http://files.itworld.co.kr/slide_20SS-node-frameworks-nombo.jpg)
실시간 앱은 일반적인 웹 사이트에 비해 제작하기가 까다롭다. 놈보는 Node.js를 기반으로 구축된 프레임워크로, 단일 페이지 애플리케이션으로 실시간으로 정보를 전송한다. 제작자는 노드의 기본 비차단 프레임워크를 바탕으로 이를 조심스럽게 확장했다. 선형적으로 확장 가능한 서버를 RIA 스타일의 클라이언트와 결합하는 놈보는 온라인 게임, 라이브 통신 및 거래 시스템에 적합하다.
화면은 이 패러다임에 잘 맞는 단일 페이지 채팅 애플리케이션을 보여준다. 놈보는 깃허브에서 MIT 라이선스로 배포된다.
![](http://files.itworld.co.kr/slide_20SS-node-frameworks-restify.jpg)
모든 애플리케이션에 브라우저에 대한 완전한 지원이 필요한 것은 아니다. 레스티파이는 API를 통해 데이터만 서비스하는 서버 측 프레임워크 중 하나다. 실행하면 방문하는 모든 사람을 대상으로 JSON이 작동한다. 레스티파이는 디버깅과 프로파일링을 강조하므로 세부적으로 들어가서 서버의 성능을 최적화할 수 있다. DTrace 통합으로 어떤 일이 발생하는지 지켜보고, 잘못될 경우 확인이 가능하다.
화면은 디버깅 세션에서 저장된 감사 패킷을 보여준다. 레스티파이는 깃허브에서 저작권 고지 외에는 거의 아무것도 요구하지 않는 기초적인 라이선스로 배포된다.
![](http://files.itworld.co.kr/slide_20SS-node-frameworks-loopback.jpg)
API를 만드는 작업의 대부분은 자동화할 수 있다. 일단 데이터 모델을 알면, 데이터를 편집하기 위한 툴을 만드는 것이 가장 큰 골치거리이다. 루프백은 이 작업의 대부분을 자동화해주며, 오라클이이나 MySQL, 몽고DB 등 인기 데이터베이스용 커넥터도 추가해 준다. 시간에 따라 진화하는 동적 데이터 모델이나 고정된 구조를 가진 정적 데이터 모델 모두 지원한다. 또한 ACL을 갖춘 보안 계층이 미리 만들어져 있으며, 일부 쓸만한 모바일 서비스도 제공한다. 이 모든 것이 익스프레스 상에 구현된다.
화면은 루프백의 API 탐색기이다. 루프백은 깃허브에서 이용할 수 있으며, 테스트용으로는 오픈소스 라이선스가 적용되며, 오라클과 같은 고성능 데이터베이스용 커넥터와 지원을 제공하는 구독 방식도 제공한다.
![](http://files.itworld.co.kr/slide_20SS-node-frameworks-actionhero.jpg)
많은 프레임워크가 브라우저와 JSON 클라이언트 간의 인터랙션을 위한 전기능 지원을 제공하는 것을 목표로 하고 있다. 액션히어로 역시 이런 프레임워크 중 하나이지만, 더 낮은 레벨에서도 동작하는 것이 특징이다. 즉 TCP와 직접 커뮤니케이션하고 프로토콜들과 연결된다. JSON보다 좀 더 단순한 뭔가를 원한다면 매우 유용하다. 또한 원시 파일을 전송하고자 한다면, 액션히어로는 아파치나 Ngnix를 구동할 필요없이 CDN처럼 이를 전달해 준다.
화면은 액션히어로 스택을 나타낸 것이다. 액션히어로는 깃허브에서 아파치 라이선스로 배포된다.
![](http://files.itworld.co.kr/slide_20SS-node-frameworks-frisby.jpg)
“신뢰하되 검증하라”는 말은 냉정시대 미국 로널드 레이건 대통령의 슬로건이었다. 이는 서버 팜을 구동하는 사람이라면 누구에도 좋은 모토가 된다. 프리스비는 API 테스트를 위한 프레임워크로, 요청을 보내고 응답을 검증한다. 또한 프리스비는 Node.js 상에 구축되어 여기서 소개한 다른 프레임워크에 대한 좋은 보완재 역할을 할 수 있다.
화면은 JSON 응답이 정확한지를 점검하는 데 사용되는 코드의 일부이다. 프리스비는 불특정 라이선스가 적용되며, NPM 패키지로 설치된다.
![](http://files.itworld.co.kr/slide_20SS-node-frameworks-loopback.jpg)
“다다익선”이란 말은 오픈소스 개발에도 적용되는 말이며, 특히 개발이 튼튼한 플러그인 생태계를 통해 배포될 때 적합한 말이다. 독패드 프레임워크를 확장하기 위한 수십 가지 플러그인이 개발되어 있으며, 이들 중 많은 수는 커피스크립트나 HAML 같은 속기 코드를 HTML과 자바스크립트로 변화해 주는 선처리기이다. 이외에도 검색엔진용으로 sitemap.xml 파일을 생성해주는 등의 플러그인이 있다. 이들 모두는 복잡한 독패드 앱을 더 빨리 구축하고 배치할 수 있도록 해준다.
화면은 독패드 상에 구축된 쿼리 엔진의 예이다. 독패드는 깃허브에서 MIT 라이선스로 이용할 수 있다.
※ 본 내용은 한국IDG(주)(http://www.itworld.co.kr)의 저작권 동의에 의해 공유되고 있습니다.
Copyright ⓒITWORLD. 무단전재 및 재배포 금지
번호 | 제목 | 조회수 | 작성 |
---|---|---|---|
공지 | [Open UP 활용가이드] 공개SW 활용 및 개발, 창업, 교육 "Open UP을 활용하세요" | 316088 | 2020-10-27 |
공지 | [Open UP 소개] 공개SW 개발·공유·활용 원스톱 지원 Open UP이 함께합니다 | 305685 | 2020-10-27 |
3081 | 욕 덜먹는 SW정책? 오픈프론티어 사업 보라 | 4018 | 2014-05-27 |
3080 | 코어OS, 구글 클라우드 입성 | 3588 | 2014-05-27 |
3079 | 정부정책에도 빅데이터 도입한다 | 3942 | 2014-05-27 |
3078 | 공개SW협회, 청소년 코딩교육 강사 양성 세미나 | 3577 | 2014-05-27 |
3077 | 국민은행 'IBM 메인프레임·유닉스' 갑론을박, 다른 은행은 어떻게 | 3406 | 2014-05-27 |
3076 | SkySQL, 마리아DB 엔터프라이즈 제품 발표 | 3956 | 2014-05-23 |
3075 | 대상에 ‘한식조리법 오픈 소스…’ | 3406 | 2014-05-23 |
3074 | 모르고 지나치기 쉬운 안드로이드 4.4의 멋진 기능 8가지 | 3633 | 2014-05-23 |
3073 | 노드 생태계의 활력을 증명하는 13가지 유용한 Node.js용 프레임워크 | 4120 | 2014-05-23 |
3072 | “점검시간 80% 단축” KTDS, 오픈소스 기반 DBA 구축 | 3821 | 2014-05-23 |
0개 댓글