MEAN stack(민 스택)은 Mongo DB, Express JS, Angular, Node JS 로 구성되어 있으며, 웹사이트 개발을 위한 개발 환경 구성입니다. 이 글에서는 MEAN Stack의 특징과 개별 구성에 대해 알아보겠습니다.
** 프로그램 개발 환경 구성에서 stack이라는 것은 많은 사람들이 해당 조합으로 개발을 많이 하여 널리 퍼지게 된 것으로 이 조합을 반드시 모두 사용해야하는 것은 아닙니다. 하지만 같이 썼을 때 좋은 점이 많으니까 널리 퍼졌겠죠?
** 지금 이 글을 읽고 계신 https://A-MEAN-blog.com 도 이 MEAN stack으로 만들어졌습니다.
JavaScript는 front-end 개발을 위해 창조된 언어였으므로 back-end는 Java, C# 등의 언어를 사용했지만, 이후 MongoDB, Node.js 등 JavaScript를 기반으로 한 back-end 개발 프로그램들이 나오면서 front-end와 back-end를 모두 한가지 언어로 작업할 수 있게 되었습니다.
개발자 입장에서는 한가지 언어만 익혀도 back-end, front-end 개발을 전부 할 수 있으니 좋고(물론 언어만 안다고 개발을 할 수 있는 것은 아닙니다만, 좀 더 쉽게 익힐 수 있겠죠), 기업 입장에서는 인력을 더 효율적으로 사용할 수 있습니다. 최근에는 스마트 폰 어플리케이션까지 JavaScript/HTML로 개발할 수 있으니(정확히는 Angular로 만든 웹사이트를 app으로 변환가능) JavaScript의 사용도는 계속해서 높아지고 있습니다.
다음으로 각각의 구성요소를 살펴봅시다.
Node.js(노드 제이에스)는 JavaScript를 웹브라우저 밖에서 사용할 수 있게 해주는 프로그램입니다. JavaScript는 원래 웹브라우저용 스크립트 언어로 기획, 개발되었습니다. 보안을 위해 컴퓨터의 파일에 접근할 수 없다거나 하는 제한이 있고, 브라우저 제어를 위한 상당한 양의 기본 라이브러리가 포함되어 있죠.
node.js를 설치하면 터미널 프로그램(윈도우의 cmd, 맥OS의 terminal등)에서 JavaScript 코드를 바로 실행할 수 있습니다. 다른 언어처럼 파일을 조작할 수도 있으며, 브라우저 제어를 위한 라이브러리는 제거되었습니다.
MEAN Stack에서는 이 node.js와 JavaScript로 웹사이트용 서버를 만듭니다.
Express JS(익스프레스 제이에스)는 웹사이트 개발을 위한 node.js용 framework입니다.
C#에 .Net이 있고, Java에 Spring이 있는 것 처럼 node.js에는 Express가 많이 사용되고 있습니다.
Mongo DB(몽고 디비)는 대표적인 NoSQL, Non Relational Database 입니다.
고전적인 DB에서의 table, 행, 열의 개념이 없고, 하나의 데이터는 document라고 부르며, 이 document의 모움을 collection이라고 부릅니다. collection을 table로 볼 수 있고, document는 table상의 한 줄의 데이터로 볼 수는 있지만, document의 구조를 DB상에서 강제하지 않기 때문에 완전히 똑같지는 않습니다.
모든 document들은 JSON으로 저장이 되며 JavaScript에서의 object와 마찬가지로 고정된 형식이 없으며 항목의 추가 삭제가 자유롭고 DB에서 데이터의 조작은 JavaScript로 합니다. JavaScript Object를 DB로 아무 변환없이 저장할 수 있고, 그 모든 과정을 JavaScript로 할 수 있으니 가장 JavaScript 친화적인 DB라고 생각합니다.
Angular(앵귤러)는 SPA(Single Page Application)을 만드는 front-end용 framework입니다. 즉, MEAN Stack에서 실제 웹사이트에서 노출이 되는 부분은 Angular로 만들어진 부분이지요. 구글에서 만들고 배포하고 있습니다.
참고로 Angular는 Angular JS와는 다른 framework입니다. 둘다 구글에서 만들었으나 Angular가 Angular JS의 후속판이고 거의 새로 만든 수준이며 하위 호환이 안되기 때문에 아예 이름을 바꾸었습니다. 용법등이 완전히 다르기 때문에 검색시에 주의합시다.
** 현재 항목(MEAN Stack)의 마지막 글입니다.
댓글
이 글에 댓글을 다시려면 SNS 계정으로 로그인하세요. 자세히 알아보기