|
먼저 풀스택 개발자란 정확히 무엇인가? 한마디로 '서비스와 관련된 모든 분야에서 역량을 펼칠 수 있는 개발자'라고 정의할 수 있지 않을까? 구글에서 Full stack developer를 검색해서 만나는 제일 첫 글은 2012년 8월 1일에 작성된 글이고, 여기서 말하는 Full stack은 다음의 7개의 레이어를 가지고 있다. 1. Server, Network, and Hosting Environment. 2. Data Modeling 3. Business Logic 4. API layer / Action Layer / MVC 5. User Interface 6. User Experience 7. Understanding what the customer and the business need. 물론 뛰어난 사람들은 여러분야에 다양한 능력을 나타낼 수 있겠지만, 사실 저 한 레이어에서도 정통하기 쉽지 않은 분야들이다. 그런데 어떻게 이 모든 분야를 엮어서 풀스택이라고 말하며 한 명의 개발자가 저 분야를 커버해주길 바라고 있을까? 이는 아마존 AWS와 같은 클라우드 서비스, 각 서비스사의 OPEN API, 그리고 Google app engine같은 PaaS등이 나오고, 발전하게 되면서 기본적인 개념지식을 갖고 제공되는 서비스를 이용하면 많은 시간을 절약할 수 있는 환경이 되었기 때문이라고 생각한다. 거기에 스타트업 열풍이 풀고, 최소한의 개발 리소스로 최소한의 서비스(MVP)를 구현하여 시장에 출시, 검증하며 발전하는 린스타트업 개념이 널리 퍼지고 있기 때문에 기존의 한 레이어의 전문가를 우대하던 대기업과 달리 풀스택 개발자를 찾는 수요가 많이 생긴 상황이 맞아 떨어진 것이 아닐까? 그럼 MEAN 스택이란 무엇인가? 먼저 기존의 개발 환경은 UI에서 Javascript를 사용하고, Server 쪽에서는 Java나 Python, PHP등의 개발언어를 이용하고, DB에서는 SQL을 주로 이용하는 환경이기에, 좋은 프레임워크를 사용한다 할지라도 결국 풀스택 개발자가 알아야 하는 언어가 많아지므로, 많은 풀스택 개발자가 나오기는 어려울 것이다. 그런데 이때, 그동안 Javascript를 Server 쪽에서 이용하려고 했던 수많은 시도 중에 너무나 쓸만한 제품이 나왔다. Node.js(노드)는 Javasript를 이용했다는 점이 주요 장점이 아니라 성능 그자체로서 많은 주목을 받았다. 단일 코어의 노드 웹 서버는 다섯개의 코어를 사용한 Java 서버와 비교해서 초당 요청을 두 배 더 처리할 수 있었다. ( 2013년 페이팔 발표 ) 추가적으로 개발자들이 모듈을 새롭게 만드려고 할때 찾아보면 분명 하나는 찾을 수 있을 정도로 모듈이 많이 개발되고 있고, 노드용 웹 프레임워크도 많이 개발되고 사용되어 진다. 이 중 Express(익스프레스)는 빠르고 최소화를 추구하는 웹 프레임워크로 많이 사용되고 있다. 여기에 기존의 RDBMS와 다른 SQL을 사용하지 않는 데이터 베이스들이 유행하게 되었고, 그 중 몽고디비는 Javascript를 사용하여 기존의 DB와 다른 유연함과 강력함을 갖게 된다. UI도 많은 프레임워크가 나오면서 개발자들을 도와주고 있다. 이 중 AngularJS(앵귤러JS)는 인기있는 프레임워크로 웹 어플리케이션에 MVC를 적용하고 많은 기능을 제공한다. 앞에 언급한 Node.js, Express, AngularJS, Mongo DB를 이용하면 기존과 달리 Javascript, 단일 언어를 이용하여 웹 어플리케이션을 개발을 가능하게 된다. 이를 앞글자만 따서 MEAN 스택이라고 부르게 된다. 결국 MEAN 스택은 풀스택 개발자가 되기에 가장 빠른 도구가 되는 것이라고 생각한다. 또한 이 책이 MEAN 스택에 대한 이해가 없는 개발자에게 좋은 길라잡이가 될 것으로 생각한다. 하지만 이 책에서 다루는 내용으로는 다 알수는 없기에, 기본에 대한 이해와 내가 무엇을 모르는지에 대한 부분을 알 수 있게 도와주는 입문서로 생각하는게 적당할 것이라고 생각한다. |
|
책을 볼 때 목차부터 우서 훑어 보는데 이번에 목차를 보고 아차 싶었다. 학교를 졸업한지 1년이 되었는데 다시 학교 전공책을 보는 느낌이었다. 그런데 보면 조금 갸우뚱하게 하는 부분이 있는데 목차는 엄청 빽빽한데 책자체는 가볍고 부담스럽지 않다는 것이다. 책은 이렇게 구성되어 있다 1부 - 노드 2부 - 몽고디비 3부 - 익스프레스 웹서버 4부 - 앵귤러 5부 - MEAN외에 자바스크립트의 생태계 전반
|
들어가면서개발자는 고달픕니다. 매년 매달마다 쏟아져 나오는 기술과 개발 방법론은 항상 부담으로 다가오게 마련입니다. 그 모든 것을 배우고 익히기에는 시간과 마음의 여유가 너무나 부족하기 때문이죠. 하지만 반대로 기술의 습득은 그 여유를 만들 수 있는 돌파구가 되기도 하는데, 이번에 접하게 된 MEAN 스택이 그러한 경우라고 볼 수 있습니다.
MEAN 스택이라는 단어는 이번에 책을 읽으면서 처음 알게된 단어인데, 내용에도 기술되어 있듯이 4가지 기술을 묶어 부르는 용어 입니다. (Mongo DB, Express, AngularJS, Node.js) 저는 사실 기술 각각에 대해서는 알음알음 들어보기는 했는데, 어떤 상황에 쓰면 좋은지, 다른 기술들과 어떻게 연계 되는지에 대해서는 모르고 지나친 상태였습니다.
이번에 읽게 된 "풀스택 개발자를 위한 MEAN 스택 입문" 에서는 위 4가지 기술에 대한 기본 개념을 소개하고, 예제를 통해서 각 요소를 어떻게 접목할 수 있는지에 대해 설명합니다. 구성은 크게 4개의 파트와 23개의 챕터로 이루어져 있습니다.
Part I. Node.js가장 먼저 서버 쪽 프로그래밍의 토대가 되는 Node.js 에 대해서 다룹니다. Node.js 는 이름에서 알 수 있듯이 자바스크립트를 사용합니다. 또한 그것이 가장 큰 특징입니다. 자바스크립트는 웹 브라우저에서나 쓰는 건줄 알았는데, 이제는 이걸로 서버 프로그래밍이 가능해 졌습니다. 하지만 그렇다고 해서 단순히 생각할 문제는 아닙니다. 단일 스레드 환경에서 효과적으로 I/O 대기 문제 등을 처리해 내기 위해서 노드의 프로그래밍 모델을 익혀둘 필요가 있습니다.
Part I 에서는 이러한 노드의 프로그래밍의 대표적인 모델에 대해서 설명하고 노드의 설치, 모듈과 패키지 관리 등 기본적인 사용 방법을 다룹니다. 예제 중심으로 되어있어서 실제 작동되는 서버 로직을 구현해 보며 진행 됩니다. 예제수준이 어려운 수준은 아니지만, 자바스크립트의 기본은 다룰 줄 알아야 합니다. 책에서 자바스크립트에 대한 세세한 문법을 다루고 있지는 않으므로, 자바스크립트에 대해 전혀 모르고 있다면 약간의 시간을 투자해서 https://opentutorials.org/course/743 (생활코딩 Javascript 강좌) 와 같은 강좌를 한번 보고 오시는 것을 추천합니다.
Part II. MongoDBNoSQL 의 일종인 MongoDB 에 대하여 다루는 파트 입니다. MongoDB 에서 다루어지는 데이터 형태는 JSON 이기 때문에 당연하게도 자바스크립트 기반의 개발환경에서 아주 찰떡 궁합입니다. 역시 이번 파트에서도 책에서는 MongoDB 에 대한 아주 자세한 사항을 다루지는 않지만, MongoDB 의 간략한 컨셉과 역사, 설치법 소개와 CRUD 방법에 대해 비교적 충실하게 소개합니다. 몽고랩과 같은 무료 호스팅 공급자도 소개하고 있으므로 가벼운 마음으로 시작해 볼 수 있을 듯 합니다. 저의 경우는 로컬에 설치해서 진행해 보았는데, CRUD 예제만 따라해보아도 컨셉이 쉽게 이해될 만큼 쉽게 구성이 되어있습니다. 파트 후반부에는 실제 노드에서 MongoDB를 사용하기 위한 모듈인 몽구스에 대해서 소개하고, 사용법을 다룹니다. 몽구스를 다루는 부분도 CRU(D) 를 방법을 설명하고 있는데, D(Delete) 는 직접 설명하지 않고 독자가 스스로 작성해볼 것을 유도하고 있습니다. 어느정도 DB연동 개발경험을 가진 유저라면 이 파트를 읽었을 즈음에 MongoDB를 이용한 개발 방향을 잡을 수 있을 것이라 생각이 듭니다.
Part III. Express본격적으로 익스프레스를 이용한 웹 서버를 만들어 봅니다. 익스프레스는 경량 웹 프레임워크로서, 노드 모듈로 제공됩니다. 설치도 간편하고 사용법도 간단합니다. 너무나 간단해서 놀라울 정도.. 랄까요. 익스프레스 생성기(express-generator) 를 사용하면, 기본 골격도 거의 자동으로 만들어 지므로 더욱 쉽게 시작할 수 있습니다. Part III 에서는 이렇게 생성한 기본 앱을 기준으로 익스프레스의 구성요소와 아키텍처를 설명합니다. Node.js 의 모듈로 제공되는 웹 프레임워크는 익스프레스 외에도 여러가지가 있는데 Part III 후반부에 하피(Hapi) 라는 웹 프레임 워크에 대해서도 짤막하게 소개 합니다. 조금 아쉬운 점이 있다면, 익스프레스의 템플릿 엔진에 대해서 언급된 것이 그다지 없습니다. Jade 템플릿 엔진에 대해서 소개되어있지만 아주 작은 섹션으로 언급하는 정도입니다. 다른 템플릿 엔진과의 비교나 장단점, 짧은 사용 예제 정도만이라도 소개가 되었으면 좋았지 않았나 생각이 듭니다.
이전 파트에서 부터 쭉 만들어온 HR 앱 예제가 있는데, 이를 따라해보는것도 괜찮겠지만 Part III 까지 어느정도 이해가 가능했다면, 실제 자신이 구상한 웹 서버 로직을 익스프레스나 하피를 이용하여 구현해 나가보는 것도 좋은 방법일 듯 합니다.
Part IV. AngularJS단일 페이지 앱(SPA) 를 구성하기 위한 AugluarJS 를 소개하는 파트 입니다. 개인적으로는 프런트 앤드를 구성해본적이 없어서인지 몰라도, 굉장히 생소하지만 흥미있게 보았던 부분입니다. 복잡한 것들을 덕지덕지 붙히지 않아도 동적으로 데이터를 바인딩 해서 페이지를 구성할 수 있다는 점이 매우 신기하더군요. 책에서는 AngularJS 의 아키텍처와 그 안의 요소 들을 간단하면서도 이해하기 쉬운 예제로 설명합니다. 저 같이 Ajax 가 뭔지도 모르는 분이라면, 예제들을 넘기지 마시고 꼭 한번씩 수행해 보시길 권장합니다. 다른 파트에 비해서 비교적 글의 양이 많다고 느껴지지만, 예제를 따라서 해보다 보면, 데이터의 바인딩, 지시자, 컨트롤러등의 개념을 쉽게 이해할 수 있습니다.
Part V. 개발 환경마지막 파트에서는 MEAN 스택에 포함되는 사항은 아니지만, 알아두면 매우 유용한 몇가지를(작업 실행기, 디버깅, 테스트) 소개하고 있습니다. 먼저 걸프(Gulp)라는 작업 실행기를 다루게 되는데, 이를 이용하면 우리가 작성한 앱과 관련한 코드나 리소스들을 편리한 방법으로 관리하거나 배포가 가능해 집니다. 사실 처음 접하면 바로 와닫지 않을 수 있는데, 쉽게 말하면 우리가 원하는 어떤 일련의 작업을 수행해주는 실행기입니다. 예를 들면 걸프를 이용하면 js파일들을 합치고, JSHint 를 통한 코드 검사, 코드 최소화 작업 등을 순차적으로 쉽게 구성 하고 실행할 수 있습니다. 역시 노드 모듈로 제공되며, 책에서는 이를 사용하는 방법을 CSS, JS 파일에대한 작업을 예로 들어 차근차근 설명하고 있습니다. 소개된 수준만 활용하더라도 기존에 아주 귀찮던 빌드, 배포 작업을 간소화 할 수 있을 것으로 보여 집니다.
두번째로는 디버깅을 위한 툴과 사용 방법을 소개합니다. 먼저 크롬의 개발자 도구에 포함된 디버거를 이용한 디버깅 방법을 설명하는데, 다른 설정 없이도 간편하게 브라우저에서 요소 검사를 통해 디버깅 할수 있는 방법을 보여 줍니다. 그 후에 대화식 디버깅 방법을 제공하는 노드 내장 디버거를 소개 합니다. 다만 노드 내장 디버거는 인터페이스가 워낙 불편하다보니 사용성은 좀 떨어지는 느낌 입니다. 마지막으로 노드 내장 디버거를 크롬의 개발자 도구에 붙여 사용할 수 있는 node-inspector 에 대해 소개합니다. 3가지 디버깅 방법 모두 예제를 제공하고 있고, 쉽게 따라 해볼 수 있는 수준으로 설명되어 있습니다.
마지막으로 개발의 마지막단계인 테스트를 진행할 수 있는 방법에 대해서 다루고 있습니다. 요새는 TDD니 뭐니 해서 개발 진행 단계부터 테스트를 고려하여 로직을 작성하는 일이 꽤 많아졌습니다. 큰 프로젝트일 수록 더 중요하지만 번거롭고 어렵게 다가오는 것이 사실입니다. 책에서는 노드 앱 테스트 프레임 워크인 모카(Mocha) 를 이용하여 이러한 테스트를 정의하고, 주로 쓰이는 비동기 패턴에 대한 테스트 작성에 대해 설명하고 있습니다. 또한 모카와 함께 사용할 수 있는 차이(Chai) 모듈을 이용하여 특정 기대 조건을 충족 여부를 판단하는 방식의 테스트 방법도 소개합니다. 마지막에서는 테스트 실행기인 카르마(Karma), UI 가 없는 브라우저인 팬텀(Phantom), 앞서 다룬 Mocha와 Chai를 활용하여 AngularJS 를 테스트 하는 방법을 알아봅니다.
마치며새로운 것을 해볼 때면 항상 드는 생각이 "번거롭다" 라는 것입니다. 이곳 저곳 찾아다니며 여러가지 기술을 습득하고 통합하는 과정이 참 고달프죠.
저는 사실 서버 개발자도 아니고, 그렇다고 웹 개발자도 아닙니다. 하지만 필연적으로 크고 작은 웹 서비스를 만들어야 하는 경우가 더러 생기게 됩니다. 예를 들면 사내에서 쓰이는 모니터링 시스템(웹 UI 를 포함한) 을 구축하거나, 관리용 도구들이 대표적인데, 일단 마음을 굳게 먹고 시작해보려 한다고 해도, 많은 귀차니즘에 부딪히게 됩니다. 일단 서버 쪽 프로그래밍을 어떤 언어로 구현할 지 부터 선정해야하고, 또 공부하고 구현해야 하는데 그 방법이 참 다양합니다.. Java, PHP, Python 등등 더 큰 문제는 클라이언트 부분입니다. 제가 아는 거라고는 단지 HTML 태그 몇 줄 뿐인데, 적절하게 서버에 요청도 해야하고, 요청을 받아와서 멋지게 뿌려주는 방법도 모르고 있으니.. 참 답답할 노릇이죠.
이렇게 우리가 방향을 잡지못하고 있을 때, 얻을 수 있는 해답이 MEAN 스택입니다. 그리고 "풀스택 개발자를 위한 MEAN 스택 입문" 은 이를 더 명쾌하게 풀어내어 소개하고 있습니다. 4가지 기술을 다루고 있는 책 치고는 상당히 얇습니다. 이 책의 기술을 소개하고 방향성을 제시하는 목적 이라고 생각한다면 책이 너무 두꺼워 읽다가 지치는 것보다는 훨씬 좋아 보입니다. 그렇다고해서 내용이 소홀하지는 않습니다. MEAN 스택을 구성하는 각 기술 요소의 아키텍쳐나 기본 사용법은 충분히 설명이 되어있고, 나머지 더 세부적인 사항은 주석으로 링크가 소개되어있어 여기저기 돌아다니면서 일일히 찾아보는 수고를 하지 않아도 됩니다. 또 번역서임에도 불구하고 번역이 매끄러워서 편한한 느낌으로 술술 읽어 낼 수 있었습니다. |
|
풀스택 개발자를 위한 MEAN 스택 입문. 드디어 기다렸던 책이 출간되었습니다. MEAN 스택을 배워보고 싶었는데 자료 찾기도 어렵고 다른 도서들의 내용들은 저 같은 웹 입문자가 접근하기에는 어려웠습니다. 이 책은 정말 저에게 가뭄속의 단비와 같은 존재입니다. 이해하기 쉽고 책 그대로 따라하다보니 많은 것들을 배우게 되었습니다. 풀스택 개발자가 되기위한 첫걸음에 좋은 책이라 생각됩니다. |
|
들어는 보았는가 Full Stack!
들어는 보았는가 MEAN Stack!
풀스택(Full Stack) 개발자는 위 그림처럼 Back-End,
Front-End, Database까지 ‘모든 것을 다하는 개발자’를 뜻한다. 왜 풀스택(Full
Stack) 개발자의 생겨나고 수요가 갈수록 늘어나는지 아는가? 그 이유로 한빛 네트워크에서 3가지를 뽑고 있다. (자세한 내용은 링크참조)
1. 오픈소스 프로젝트의 성숙
A. 주요 오픈소스 프로젝트 문서들의 품질이 높아짐에 따라 프로젝트들과 함께 개발자들은 이전보다 좀 더 효율적이게 되었다. 명확한 문서들과 튜토리얼들이 오픈소스 채택을 가져왔고 높은 품질의 문를 유지하고 지속적인 생산을 할 수 있는
긍정적인 피드백의 순환을 만들었다. 예를 들어 파이썬의 Django 프로젝트는
문서 기여에 높은 가치를 두고 있다. 프로젝트는 버전화 된 릴리즈로 빌드할 때마다 그것의 문서를 지속적으로
추가되고 확장한다. (자세한 내용은 링크참조)
2. 웹 API의 확산
A. 웹 API의 확산 또한 트렌드에 기여했다. 몇
년 전까지만 해도 개발자들은 PayPal 외적의 결제 프로세스를 통합하는 데에만 몇 일에서 몇 주까지
소요되기도 했다. 오늘날 STripe나 Balanced와 같은 회사들은 여러 범위에 걸친 프로그램 언어를 통해 오픈소스 예제나 단계별로 차례차례 해볼
수 있는 튜토리얼들을 통해 API를 제공한다. (자세한 내용은 링크참조)
3. 코드로써 기반
A. 클라우드 환경 기반에 배포는 10년 전에 존재하지 않은 오늘날 특히 중요한 가능성이다. 하지만, AWS(Amazon Web Service)나 다른 비슷한
클라우드 환경들이 가능해진 이후로도 풀스택 개발에 대한 사고방식이 나타나기까지에는 시간이 좀 걸렸다.
놓친 부분들은 오늘날 개발자들이 Puppet, Chef, Ansible와 같은 우수한 설정관리 소프트웨어와 Paas를 발달시키면서 가능해졌다. 특별히 Ansible은 낮은 장애 요소와 그것의 쉬운 학습 때문에 새로운 프로그래머 청중을 위한 배포가 시작되었다. Puppet과 Chef는 코드로써 기반 프로젝트로 놀랄 만큼 우수하다. 그러나 그것들은 애플리케이션 개발자들 보다는 운영과 시스템 관리나 운영 요소를 함께 하는 기술자에게 적용되었다. 이러한 설정 관리 툴들에 대한 요구가 있었는데 그 중 단순함은 신속한 처음 통합 배포를 하는 것을 찾는 것은 소프트웨어 개발자에게 중요했다. (자세한 내용은 링크참조)
웹은 빠르게 변화하고 있고 변화하는
만큼 개발자들도 바쁘게 움직이고 있다. 하지만 아무리 바쁘게 움직여도 한계는 있기 마련이다. 이러한 한계를 무너뜨리기 위해 세상에는 많은 프레임워크들고 함께 나오고 있다.
이 모든 것이 생산성 향상을 위해서 이다.
이번에는 풀스택 개발자의 생산성
향상을 위해 MEAN 스택 서적을 소개하려고 한다.
풀스택 개발자를 위한 MEAN 스택 입문
애덤 브레츠, 콜린 J, 이릭 지음 / 박재호 옮김 /
한빛미디어
MEAN
스택이란?
M :
Mongo DB
-
몽고DB(MongoDB←HUMONGOUS)는 크로스 플랫폼 도큐먼트 지향 데이터베이스 시스템이다. NoSQL 데이터베이스로 분류되는 몽고DB는 JSON과 같은 동적 스키마형 문서들(몽고DB는 이러한 포맷을 BSON이라 부름)을 선호함에 따라 전통적인 테이블 기반 관계형 데이터베이스 구조의 사용을 삼간다. 이로써 특정한 종류의 애플리케이션을 더 쉽고 더 빠르게 데이터 통합을 가능케 한다. 아페로 GPL과 아파치 라이선스를 결합하여 공개된 몽고DB는 자유-오픈 소스 소프트웨어이다.
E :
Express
-
Express.js는 Node.js의 핵심 모듈인 http와 Connect 컴포넌트를 기반으로 하는 웹 프레임워크다. 그러한 컴포넌트를 미들웨어(middleware)라고 하며, 설정보다는 관례(convention over configuration)와 같은 프레임워크의 철학을 지탱하는 주춧돌에 해당한다. 즉, 개발자들은 특정 프로젝트에 필요한 라이브러리를 어떤 것이든
자유롭게 선택할 수 있으며, 이는 개발자들에게 유연함과 수준 높은 맞춤식 구성을 보장한다.
-
Express의 view engine으로는 총 5가지를 지원한다.
n Haml
n Jade
n EJS
n CoffeKup
n jQuery Templates
A :
Angular JS
-
Angular Js 는 단일 페이지를 지향하는(SPA) 구조적인
프레임워크다. HTML을 template으로 사용하며 HTML를 확장해서 사용할 수 있게 해준다. Javascript를
통하여 Data binding과 Dependency injection를
통해 많은 코드를 줄일 수 있게 해준다.
-
Angular Js의 특징
n 작성해야하는 자바스크립트 코드량을 줄여 준다.
u MVC 구조를 제공하므로, MVC 구조를 위한 코드를 작성할 필요가 없다.
u DOM을 선택하고 조작하는 자바스크립트 코드를 작성하지 않아도 된다.
u 모델은 단순 자바스크립트 객체이고,
setter, getter 함수를 작성할 필요가 없다.
u 화면과 모델 사이의 양방향 데이터 바인딩을 지원하여, 서로를 동기화하는 코드를 작성할 필요가 없다.
u 콜백 함수 등록으로부터 해방시켜준다.
n AngularJS의 데이터 모델은 단순 자바스크립트 객체이다.
u 대부분의 MVC 프레임워크는
기본 모델 클래스를 상속하여 모델 클래스를 만들지만, AngularJS는 그렇지 않다.
u 모델의 데이터와 뷰 데이터가 양방향 데이터 바인딩이 되어, 모델이 바뀌면 뷰 데이터도 같이 변경되고 반대도 마찬가지로 동작한다.
n 재사용이 쉬운 정적인 UI 컴포넌트를
만들 수 있다.
u 기본 HTML에서 제공하지
않는 복잡도가 높은 UI컴포넌트(지도, 그래프, 정렬가능한 테이블 등)를 <map>, <graph>, <table sortable="true">와 HTML 태그로 만들 수있게 해준다.
u 위와같이 만들어진 UI 컴포넌트를 HTML 엘리먼트나 애트리뷰트를 이용해 사용할 수 있게 해준다는 것이다.
n 의존관계 주입을 이용해 웹 애플리케이션을 개발할 수 있다.
u 기본 웹 애플리케이션은 더 좋은 UX를
위해 자바스크립트가 많아지고 엉킨 실타래 같았다.
u 단위 테스트가 가능하고, 보다
분리된 형태로의 개발이 가능하다.
n HTML&CSS 개발자와 자바스크립트 개발자를 명확하게 분리해준다.
u 기존엔 DOM 조작과 이벤트
처리를 위해 자바스크립트가 HTML을 잘 알고 있어야 했고, 자바스크립트
개발자와 HTML&CSS 개발자가 분리되기 어려웠다.
u AngularJS는 자바스크립트가 HTML 구조를
알 필요가 없고, 뷰 코드와 로직 코드가 명확히 분리된다.
N :
Node.js
-
서버사이드 자바스크립트 기술입니다. 기존의
자바스크립트들이 전부 브라우저에서 실행하는 형태였다면 node.js 는 서버사이드에서 실행되는 자바스크립트이죠. 그래서, 웹서버나 SMTP 서버
등과 같은 서버 프로그램을 작성할 수 있고, http://expressjs.com/ 와 같은 웹 프레임워크도
있습니다.
-
node.js 가 다른
개발 플랫폼에 비해 가지는 장점으로는
n V8 - 스크립트 처리하는 인터프리터 중 성능이 좋은 편입니다.
http://attractivechaos.github.com/plb/ 같은 것을 보면 (물론
실제 개발 시에는 언어 자체가 병목이 아닌 경우가 많습니다만) 일반 알고리즘 구현 시 V8 자체 퍼포먼스가 좋습니다. 성능이 어느정도 나오는 스크립트 언어라는
점은 확실히 장점이 되겠죠.
n 기본 처리가 비동기 방식이다 - 물론 twisted 등이 있지만, 기본 처리들이 다 비동기여서, I/O 나 DB 질의 수행되는 라이브러리쪽까지 비동기 처리가 되게
되죠. 자바 보다는 느려도 적은 비용으로 중간 성능을 낼 수 있다는 것은 장점이 됩니다.
n Java Script - 프론트엔드 개발자들이 직접 서버 개발을 하기 용이해졌습니다. 또한, 서버-클라이언트가
한 언어로 메인터넌스 된다는 것도 장점이 됩니다. 요새 실시간 업데이트가 필요한 웹 어플리케이션에서 node.js 이름 달고 나오는 것들의 수가 점점 늘어나고 있는 것이 느껴집니다.
이제 “풀스택 개발자를 위한 MEAN 스택 입문” 책 이야기를 해보겠습니다.
“풀스택 개발자를 위한 MEAN 스택
입문” 이 책은 기본에 충실한 책이라고 할 수 있습니다. HTML과
CSS를 다루어본 사람이라면 쉽게 MEAN 스택을 접하실
수 있습니다.
5개의 Part와 23개의 Chapter로 구성되어 있으며 개발환경 구축에서부터 테스트~ 디버깅까지 작성을 모두 할 수 있는 풀스택 서적이죠! (무엇보다
책이 두껍지 않아 휴대가 가능하다는 것!!)
각 Part별로 예제 앱 접목하기 Chapter가 있어 학습한걸 응용
할 수 있도록 하고 있습니다.
특히 Chapter 23에는 노트와 앵귤러를 테스트 방법을 설명하고 있습니다. 인터넷에서도
쉽게 찾을 수 없었던 정보를 제공 하고 있죠!( 제가 생각하기에는 개발의 70%는 디버깅과 테스트입니다. )
또한 Chapter14에서는 익스프레스에서 부족한 부분을 하피(Hapi)로
해결 할 수 있도록 대한을 제안하고 있으며 상세히 비교해놓았다. 익스프레스의 접근방식은 개발 중심이라면
하피의 접근방심은 구성중심으로 개발자로 하여금 웹 서버의 여러 부속품이나 계속 늘어만 가는 미들웨어 함수 목록 대신 비즈니스 논리에 더욱 집중하게
도와준다. 이런 내용을 책에 담은 것은 애덤 브레츠와 콜린 J, 이릭(지은이)의 친절한 서비스인 듯 하다.
결론!
최신 웹 트랜드를 따르고자 한다면, 맛보고자 한다면 MEAN 스택을 공부하라. 그리고 풀스택 개발자로 거듭나라! MEAN스택 개발자로 가기위한
첫 걸음에 “풀스택 개발자를 위한 MEAN 스택 입문” 이 책이 도움되길 바란다.
|
|
▲ 애덤 브레츠, 콜린 J. 이릭 지음 박재호 옮김 전체적으로는 입문서의 느낌보다는 자바스크립트를 잘 알고있는 독자가 MEAN에 대한 전체적인 예제를 돌려 볼 수 있는 책인듯합니다. 기본을 많이 담고 있지만, 아주 기초적인 소양보다는 어느정도의 개념을 알고 있는 사람에게 기본에서부터 차근차근 다시 알려주는 느낌이 들었습니다. 많은 내용을 다루고 있지만, 책의 두께에서부터 양은 부담되지 않을 정도로 구성되어 있으며 이는 총 5개의 파트로 이루어져 있습니다. PART 1. Node.js 자바스크립트의 간결함과 속도, 그리고 단일 스레드의 I/O로 빠른 성능을 가진 Node.js를 소개하며 간단하게 작성할 수 있는 서버에서부터 모듈에 대한 설명까지 나타내고 있습니다. npm에 대해 자세하고 간결하게 설명되어 있어서 좋았습니다. PART 2. MongoDB 빠르고 쉬운 NoSQL 데이터 베이스 중 가장 인기있는 MongoDB를 설치에서부터 따라 해볼 수 있게 구성되어 있습니다. 전용 드라이버와 몽구스라는 노드 모듈에대해서도 간략하게 설명하고 있으며, 앞서 배운 Node에 접목하여 만들어 볼 수 있다. PART 3. Express node.js 에서 웹을 개발할 때 사용하는 프레임 워크로서, 유용한 기능들을 많이 제공하고 있습니다. 하지만 제가 기존에 알고있던 Express의 개념과 사용법 보다는 조금 더 어렵게 설명해 놓은 것 같아 아쉬운점이 들었습니다. 굉장히 사용하기 편하고 쉬운 개념이었는데 조금 어려운 느낌이 든 것은 저의 착각일까요..ㅎㅎ; PART 4. AngularJS 단일 페이지 앱을 생성하며, MVC 패턴을 접목하여 양방향 데이터 바인딩을 지원하는 Angular를 보다 쉽게 알려주려고 하는 독자의 노력이 보였습니다. 단방향에서부터 양방향 데이터 바인딩과 지시자 등에 대한 개념을 설명해 놓았습니다. PART 5. 개발환경 보너스 부분이라고 생각하면 좋을 만큼 독자들에게 알아두면 도움이 될 몇가지를 알려주고 있습니다. 걸프, 디버깅, 테스트를 진행할 수 있는 방법들에 대해 알아보고 따라 할 수 있게 구성되어 있습니다. ▲ 자바스립트를 기반으로 하는 몽고디비, 익스프레스, 앵귤러, 노드의 조합은 너무나 인기가 있어서 MEAN 스택으로 불리고 있다. ▲ 자바스크립트를 웹 브라우저가 아닌 서버로 사용할 수 있게끔 한 Node.js에 대해 구동방법에서부터 npm(node package mager)를 이해하고, 사용하는 방법까지 책의 예제를 따라하다보면 금새 Node.js로 만들어진 서버를 볼 수 있습니다. 하지만 이를 이해하기 위해서는 어느 정도 자바스크립트에 대한 개념 또는 기본 문법정도는 알고 있어야 책이 수월하게 읽혀질 것 같았습니다. 저도 아주 잠깐 밖에 자바스크립트를 본 적이 없어서 초반에 이 책을 읽을때 약간의 어려움이 있어 따로 시간을 내어 자바스크립트의 개념을 다시금 복습하고 이 책으로 돌아왔습니다. ▲ 책을 나누어 두번정도 읽다보니 형광펜이 가지각색이네요ㅎㅎ.. 이 챕터를 읽다보니 몽고디비가 굉장히 사용하기 좋다는 것을 새삼 느끼게 되었습니다. 객체형 데이터를 넣었다 뺐다 할 수 있고, 자바스크립트를 사용하다보니 별도의 SQL문을 사용하지 않아도 되는 몽고디비의 강력한 장점이 매우 돋보였습니다. ▲ 사용자들이 node.js로 웹 어플리케이션을 개발시에 사용할 수 잇는 유용한 기능들을 담고있는 모듈로서 설치와 사용법이 간단하지만, 내용을 이해하기 위해서는 이 장을 유심히 잘 보아야 한다고 생각합니다. 간단하지만 잘 사용하기 위해서는 꼼꼼히 이해해야 할 익스크레스에 대한 구성요소 등에 대해 설명하고 있습니다. ▲ 사실 Angular JS 는 처음 접해보는 것이라 그런지 이해하기 힘든 구조들도 가끔 있었습니다. 하지만, 이런 처음 보는 독자들을 위해서 나름 배려한 저자의 노력이 보였습니다. 위와 같이 한장 빼곡히 소스로 채울 만큼 예제를 알기 쉽게 나타내었고, 데이터 바인딩과 지시자, 컨트롤러 등에 대한 내용도 예제를 따라해보며 이해할 수 있게끔 구성되어 있습니다. 전체적으로 책을 다 읽고드는 생각은 조금 더 자바스크립트를 충분히 이해하고 학습한 뒤에 이 책을 접했더라면 좋았을 것이란 아쉬움이 들었습니다. 하지만 독자들에게 저자는 4가지의 MEAN에 대한 기본개념과 더불어 예제 앱을 통해서 독자가 이런것이구나~라고 이해하고 따라하며 알아 가기를 바랬던 것 같습니다. 얇지만 많은 내용을 담고 있는 책이므로, 꼼꼼히 읽는 것도 중요하지만 여러번 읽어보며, 다시한번 읽을땐 처음에 읽으며 이해되지 않았던 부분까지 되짚어 보는 것을 추천합니다. |