이러한 “표준화된 구성 요소“의 가장 일반적인 예 중 하나를 MEAN 스택이라고 합니다. MEAN 스택이란 무엇인지, 어떻게 작동하는지, MEAN 스택의 장점과 단점, 일반적으로 사용되는 방식을 알아보세요.
MEAN 스택은 확장 가능한 웹 애플리케이션을 개발하기 위한 JavaScript 기반 프레임워크입니다. MEAN이라는 용어는 기술 스택의 계층을 구성하는 네 가지 핵심 기술인 MongoDB, Express, Angular, Node의 약자입니다.
목차
MEAN 스택은 웹 애플리케이션을 구축하는 데 가장 널리 사용되는 기술 개념 중 하나이지만, 다음과 같은 대안이 있습니다.
MEAN, MERN, MEVN의 주요 차이점은 프론트엔드(예: 클라이언트 사이드) 개발에는 각각 다른 옵션을 제공하는 반면 백엔드(예: 서버 사이드) 개발에는 MongoDB, Express.js, Node.js를 계속 활용한다는 것입니다. 개발자가 어떤 기술 스택을 사용할지 결정하는 데 도움이 되는 요인은 다음과 같습니다.
MEAN 아키텍처는 JavaScript로 웹 애플리케이션을 구축하고 JSON을 매우 쉽게 처리할 수 있도록 설계되었습니다.
MEAN 스택의 맨 위에는 자칭 “JavaScript MVW 프레임워크“(MVW는 “Model View and Whatever“의 약자)인 Angular.js가 있습니다.
Angular.js를 사용하면 메타데이터로 HTML 태그를 확장하여 정적 HTML과 JavaScript(또는 jQuery)로 직접 구축하는 것보다 훨씬 효율적으로 동적인 대화형 웹 경험을 만들 수 있습니다.
Angular는 양식 유효성 검사, 현지화, 백엔드 서비스와의 통신 등 프런트엔드 JavaScript 프레임워크에 기대하는 모든 기능을 갖추고 있습니다.
그 다음 단계는 Node.js 서버에서 실행되는 Express.js입니다. Express.js는 자신을 “Node.js를 위한 빠르고 개방적인 간결한 웹 프레임워크“라고 소개하며, 실제로도 그렇습니다.
Express.js는 URL 라우팅(들어오는 URL을 서버 함수와 매칭)과 HTTP 요청 및 응답 처리에 강력한 모델을 제공합니다. Angular.js 프론트엔드에서 XML HTTP 요청(XHR), GET 또는 POST를 수행하면 애플리케이션을 구동하는 Express.js 함수에 연결할 수 있습니다.
그러면 해당 함수가 콜백 또는 프로미스를 통해 MongoDB의 Node.js 드라이버를 사용하여 MongoDB 데이터베이스의 데이터에 액세스하고 업데이트합니다.
애플리케이션이 데이터(사용자 프로필, 콘텐츠, 댓글, 업로드, 이벤트 등)를 저장하는 경우 Angular, Express, Node만큼 사용하기 쉬운 데이터베이스가 필요할 것입니다.
바로 여기에서 MongoDB의 존재감이 빛을 발합니다. Angular.js 프론트엔드에서 생성된 JSON 문서를 Express.js 서버로 전송하여 처리할 수 있고, (유효한 경우) 나중에 검색할 수 있도록 MongoDB에 바로 저장할 수 있기 때문입니다.
MongoDB를 쉽게 활용하고 싶다면 MongoDB Atlas를 살펴보세요. 버튼 클릭 한 번으로 내장된 완전한 데이터베이스 보안과 클라우드 간 확장성을 제공합니다. 자세한 내용은 이 페이지 뒷부분에서 설명합니다.
MEAN 애플리케이션은 크로스 플랫폼, 한 번 쓰기 방식을 통해 다양한 방식으로 사용할 수 있습니다. MEAN은 실시간 애플리케이션, 특히 클라우드에서 기본적으로 실행되는 애플리케이션과 Angular.js로 구축된 단일 페이지(동적) 웹 애플리케이션에 적합하지만 다음과 같은 다른 사용 사례에도 사용할 수 있습니다:
이외에도 MEAN 스택에는 더 많은 용도가 있습니다.
모든 구성 요소는 JavaScript와 JSON을 기반으로 하므로 스택 구성 요소 간의 통합이 직관적이고 간단합니다.
또한 MEAN의 E와 A(Express와 Angular)는 각각 백엔드 및 프론트엔드 개발에서 가장 인기 있고 잘 지원되는 두 가지 JavaScript 프레임워크입니다. Express를 사용하면 라우팅과 HTTP 요청 및 응답 관리가 매우 쉬워지며 JSON 엔드포인트와 양식 게시를 처리하는 미들웨어에 대한 뛰어난 지원이 포함되어 있습니다. Angular는 백엔드 서버와 통신하는 동적 HTML 페이지를 구축하기 위한 강력한 도구입니다.
처리량이 많은 API, 간단한 웹 애플리케이션, 마이크로서비스 등 어떤 것을 구축하든 MEAN은 Node.js 애플리케이션을 구축하는 데 이상적인 스택입니다.
모든 MEAN 스택 구성 요소는 본질적으로 오픈 소스이므로 개발자에게 넉넉한 무료 사용 기회를 제공합니다.
JavaScript는 훌륭한 최신 언어이지만 처음부터 백엔드 서버를 구축하기 위해 설계된 것은 아니었습니다. 백엔드 서버를 포함한 MEAN 스택의 기반은 JavaScript이므로 JavaScript의 특성상 동시성 및 성능 문제가 대규모로 발생할 수 있습니다.
또한 개발 기회가 매우 빠르기 때문에 비즈니스 및 서버 로직이 제대로 격리되지 않아 스파게티 코드와 잘못된 관행이 발생할 수 있습니다.
마지막으로, 많은 가이드와 튜토리얼이 있지만 일반적으로 이 스택에 적합한 구체적인 JS 코딩 가이드라인은 포함되어 있지 않습니다. 따라서 한 애플리케이션에서 매우 잘 작동했던 것이 다른 애플리케이션에서는 문제가 발생할 수도 있습니다.
MEAN은 디스플레이 계층(Angular.js), 애플리케이션 계층(Express.js 및 Node.js), 데이터베이스 계층(MongoDB)을 포함한 기존의 세 계층 스택 패턴을 따릅니다.
특히 Node.js로 JavaScript 애플리케이션을 개발 중이라면 MEAN을 진지하게 살펴봐야 합니다.
MongoDB는 데이터를 JSON과 유사한 형식(BSON, 바이너리 JSON 확장자)으로 저장하고, MongoDB Query API는 JSON으로 정의되며, 명령줄 인터페이스(CLI)는 JavaScript 인터프리터입니다. MongoDB는 기본적으로 JavaScript/JSON 데이터 저장소일 뿐만 아니라, JSON 문서에 대한 인덱싱 및 쿼리와 같은 고급 기능으로 가득하고, 강력한 네이티브 Node.js 드라이버를 제공하며, 수평적 확장을 위해 설계되었습니다. MongoDB 개발자들이 만든 클라우드 네이티브 서비스형 데이터베이스인 MongoDB Atlas를 사용하면 클라우드에서 앱을 더욱 쉽게 개발할 수 있습니다.
처리량이 많은 API, 간단한 웹 애플리케이션, 마이크로서비스 등 어떤 것을 구축하든 MEAN은 Node.js 애플리케이션을 구축하는 데 이상적인 스택입니다.
MongoDB Node.js 드라이버를 사용하면 개발자가 Node.js 스크립트 내에서 간단하고 직관적으로 MongoDB를 사용할 수 있으므로 시간을 절약하고 생산성을 높일 수 있습니다.
다음으로, MongoDB 데이터베이스가 필요합니다. MongoDB를 시작하는 가장 쉬운 방법은 MongoDB의 완전 관리형 개발자 데이터 플랫폼인 MongoDB Atlas에서 무료 클러스터를 생성하는 것입니다.
Atlas 데이터베이스는 쉽게 배포하고 확장할 수 있으며, 연결할 수 있는 일관된 URI를 제공합니다. 클러스터 연결에 대한 공식 MongoDB 문서를 참조하세요.
Atlas 연결에는 기본적으로 내장 사용자 이름/비밀번호 및 TLS 엔드 투 엔드 암호화가 제공됩니다. 또한 이러한 연결을 통해 버튼 클릭 한 번으로 인증서/IAM 인증, LDAP, 미사용 데이터 암호화, 감사 등의 고급 MongoDB 보안 기능을 활용할 수 있습니다.
또한 Atlas 프로젝트는 Atlas App Services 애플리케이션 플랫폼을 활용하여 Google, Facebook, JWT 및 사용자 지정 인증과 같은 많은 인증 제공자를 쉽게 통합할 수 있습니다.
Atlas는 확장 및 관리가 매우 쉬우며, 가장 큰 장점은 MEAN 스택의 가장 중요한 계층인 데이터 계층을 지원하고 보호한다는 것입니다.
MongoDB Atlas에는 자격 증명, 방화벽, 엔드 투 엔드 암호화가 내장되어 MongoDB 보안을 위한 최고의 기반이 되므로 MongoDB Atlas와 함께 MEAN 스택을 사용할 것을 권장합니다.
또한 MEAN 스택은 권장사항 및 올바른 네트워크 격리와 함께 사용할 경우 최종 사용자가 비즈니스 로직과 데이터베이스 계층에 액세스하는 것을 방지하는 구체적인 세 계층 분리를 갖추고 있습니다. 따라서 애플리케이션은 기본적으로 악의적인 사용자 상호 작용(쿼리 삽입, 코드 조작, 포트 스푸핑 등)으로 인해 애플리케이션이 위험에 처하는 것을 방지하도록 설계되어 있습니다.
MEAN 스택 기반은 직관적인 JavaScript 개발을 기반으로 구축되었으며 MongoDB와 같은 JSON 구조에 적합한 데이터베이스이므로 이 솔루션을 쉽게 적용하고 유지 관리할 수 있습니다. 많은 개발자가 MEAN 스택이 다른 옵션보다 배우기 쉽다고 생각합니다.
MEAN 스택 학습의 용이성과 속도는 몇 가지 요인에 따라 달라집니다:
하지만 MEAN 스택을 배우기 위해 이러한 모든 지식이 반드시 필요한 것은 아닙니다. MEAN 스택 개발에 필요한 지식과 스킬을 습득하는 데 도움이 되는 수많은 튜토리얼, 강좌, 커뮤니티가 온라인에 있습니다.
예. MEAN은 디스플레이 계층(Angular.js), 애플리케이션 계층(Express.js 및 Node.js), 데이터베이스 계층(MongoDB)을 포함한 기존의 세 계층 스택 패턴을 따릅니다.
풀스택과 MEAN 스택의 차이점은 무엇인가요? MEAN 스택과 풀스택 모두 프론트엔드(예: 클라이언트 사이드), 백엔드(서버 사이드), 데이터베이스 개발을 포함합니다. 그러나 풀스택 개발자의 지식에는 MEAN 스택 구성 요소보다 더 광범위하고 깊이 있는 스킬과 기술이 포함되는 경우가 많습니다. 추가적인 풀스택 개발자 지식의 몇 가지 예는 다음과 같습니다.