MEAN Stack 이란? 

MEAN Stack 이란 다음 같은 독립적인 기술 이름의 각 앞글자의 철자를 따 온 것이다. 

M: MongoDB  E: ExpressJS  A: AngularJS  N: NodeJS

한 번쯤 이름을 들어본 사람은 알겠지만 각각의 언어는 모두 JavaScript에 그 기반을 둔다. 과거에는 웹 서비스를 개발하기 위해서는 프론트엔드를 위한 HTML/CSS/JavaScript와 서버를 위한 PHP/JSP/ASP, 또한 데이터베이스를 위해 MySQL/Oracle등을 배웠어야 했다. 이를 위해 각가의 언어를 배워야했고, 유지/보수 차원에서도 힘이들었다. 하지만 MEAN Stack을 사용하여 JavaScript 하나의 언어로 웹 애플리케이션을 만든다면 큰 장점을 가지게 된다. 


MongoDB

MongoDB는 NoSQL 진영의 대표적인 데이터베이스 기술이다. NoSQL은 기존의 RDB (Relational Database) 형식과 달리 Column과 Row를 가진 Table 형식을 가지지 않는다. Row는 있지만 Column은 가지지 않으며, key/value로 이루어져 있다. 

이로인해 엄격한 구조적 지배에서 벗어나 확장성이 매우 높아졌다. 또한 RDB형식에는 하나의 Table이 다른 것을 종속하지 못하였지만, NoSQL형식에서는 가능하다. 

MongoDB는 JSON을 바이너리화시킨 BSON이라는 형태로 값을 저장한다. 아래는 MongoDB의 예제이다. (_id는 Document를 MongoDB가 관리하기 위해 자동으로 부여하는 일종의 키값이다.)


Express

서버를 제작하다 보면, 귀찮고 시간이 많이 소요되는 작업이 많다. Express는 Node.js로 웹 애플리케이션 제작시 서버의 반복적 잡업을 간편화 시켜주는 프레임워크이다. 

- 서버 설치의 간편화
Node.js는 유연한 구조를 가지고 있는 대신, 웹사이트를 제작하여 구동하기까지 힘든 작업을 동반한다. Express는 다음의 방법들을 통해 이를 추상화하여 간편하 하였다. 
    • 웹 서버로의 요청
    • 요청에 대한 웹 서버의 응답
    • 웹 애플리케이션 구성하기 위한 체계화된 디렉토리 구조
- URL Routing 응답 및 매핑

- View: HTML 응답

- 세션관리

AngularJS

AngularJS는 HTML과 HTML에 삽입되어 나타나는 데이터를 함께 묶어서 표현해 주기 위해 사용된다. 웹페이지의 데이터 값에 변화가 생길 때, AngularJS는 변화를 곧바로 적용하여 업데이트를 가능하게 해준다. 이러한 방식을 Two-way Binding이라 부른다. (새로고침을 하지 않아도 웹창이 업데이트 되는 것)\


최근에는 Google Angular 팀에서 AngularJS 2를 내놓았다. 이는 AngularJS 1을 migration하지 않는 완전 새로운 프레임 워크를 내놓았기에 개발자들 사이에서 많은 의견이 오고갔다. 가장 큰 특징은 기존에 있던 Controller 기능은 사라지고, 웹을 Component화 시켰다. 기능을 모두 Component화 시켜 레고블록과 같이 조립시키기 위한 것이다. 


이를 위해 AngularJS1의 주요 기능인 Contorller, $cope, modeule, jqlite같은 요소들이 삭제되고, AtScript가 추가되었다. 


NodeJS

[Node.js 공식 홈페이지]
"Node.js®는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다. Node.js는 이벤트 기반, 논 블로킹 I/O 모델을 사용해 가볍고 효율
적입니다. Node.js의 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리 생태계이기도 합니다."

NodeJS는 서버를 구축하기 위해 사용되는 프레임워크이다. 웹 서버와 웹 서버에서 구동되는 애플리케이션 구축을 도와준다. NodeJs는 HTTP 서버 라이브러리를 포함하고 있는데, 이는 웹 서버를 실행시키기 위한 Apache 같은 서버 프로그램이 필요하지 않다는 것이다. 이에 Apache와 같은 서버 운용정책에 종속 적이지 않고, 다양하게 개발하는 것이 가능하다. 정책이 없는 만큼 복잡하기에 위에 적은 Express가 존재한다. 


NodeJS의 특징 중의 하나는 단일 쓰레드 환경을 도입한 것이다. 이에 동시접속자가 많아도 느려지지 않게 서비스를 구성할 수 있다. 이를 위한 것은 앞선 키워드 중 'Non-blocking I/O'와 'Event Loop'를 참고 바란다. 


참고

http://dog-paw.tistory.com/entry/MEAN-%EC%8A%A4%ED%83%9D-%EA%B5%AC%EC%84%B1-%EC%9A%94%EC%86%8C-MongoDB-Express-AngularJS-Nodejs


+ Recent posts