MEAN 스택이란 무엇입니까? JavaScript 웹 애플리케이션

정의 된 MEAN 스택

MEAN 스택은 전적으로 JavaScript로 구축 된 소프트웨어 스택, 즉 최신 애플리케이션을 구성하는 일련의 기술 계층입니다. MEAN은 프론트 엔드에서 백 엔드까지 애플리케이션에서 모든 것을 실행하는 "풀 스택 개발"언어로서 JavaScript의 도래를 나타냅니다. MEAN의 각 이니셜은 스택의 구성 요소를 나타냅니다.

  • MongoDB : JSON (JavaScript Object Notation)을 사용하여 쿼리되고 데이터 구조를 이진 JSON 형식으로 저장하는 데이터베이스 서버
  • Express : 서버 측 JavaScript 프레임 워크
  • Angular : 클라이언트 측 JavaScript 프레임 워크
  • Node.js : 자바 스크립트 런타임

MEAN의 매력 중 큰 부분은 JavaScript라는 사실에서 비롯되는 일관성입니다. 데이터베이스의 개체에서 클라이언트 측 코드에 이르기까지 응용 프로그램의 모든 구성 요소가 동일한 언어로 작성되기 때문에 개발자의 삶은 더 간단합니다. 

이러한 일관성은 웹 애플리케이션 개발자의 오랜 필수 요소 인 LAMP의 뒤죽박죽과는 대조적입니다. MEAN과 마찬가지로 LAMP는 스택에서 사용되는 구성 요소 (Linux, Apache HTTP Server, MySQL 및 PHP, Perl 또는 Python)의 약어입니다. 스택의 각 조각은 다른 조각과 거의 공통점이 없습니다. 

이것은 LAMP 스택이 열등하다고 말하는 것이 아닙니다. 여전히 널리 사용되고 있으며 스택의 각 요소는 여전히 활발한 개발 커뮤니티의 혜택을받습니다. 그러나 MEAN이 제공하는 개념적 일관성은 이점입니다. 스택의 모든 레벨에서 동일한 언어와 많은 동일한 언어 개념을 사용하면 개발자가 전체 스택을 한 번에 마스터하기가 더 쉬워집니다.

대부분의 MEAN 스택에는 데이터베이스, 프런트 엔드, 백 엔드 및 실행 엔진의 네 가지 구성 요소가 모두 있습니다. 이것은 스택 이 이러한 요소 로만 구성된다는 의미가 아니라 코어를 형성합니다.

MongoDB

다른 NoSQL 데이터베이스 시스템과 마찬가지로 MongoDB는 스키마가없는 디자인을 사용합니다. 데이터는 JSON 형식의 문서로 저장 및 검색되며 중첩 된 필드 수에 제한이 없습니다. 이러한 유연성 덕분에 MongoDB는 빠르게 변화하는 요구 사항을 처리 할 때 신속한 애플리케이션 개발에 적합합니다.

MongoDB를 사용하면 여러 가지주의 사항이 있습니다. 우선 MongoDB는 기본적으로 안전하지 않다는 평판을 받고 있습니다. 프로덕션 환경에 배포하는 경우 보안 조치를 취해야합니다. 그리고 관계형 데이터베이스 또는 다른 NoSQL 시스템에서 온 개발자의 경우 MongoDB와 작동 방식을 이해하는 데 약간의 시간을 할애해야합니다. 의 Martin Heller는 MongoDB 내부, 쿼리 및 단점에 대해 이야기하는의 리뷰에서 MongoDB 4에 대해 자세히 설명했습니다.

다른 데이터베이스 솔루션과 마찬가지로 MongoDB와 JavaScript 구성 요소간에 통신하려면 일종의 미들웨어가 필요합니다. MEAN 스택의 일반적인 선택 중 하나는 Mongoose입니다. Mongoose는 연결성뿐만 아니라 객체 모델링, 앱 측 유효성 검사 및 각각의 새로운 프로젝트에 대해 재창조하는 데 신경 쓰지 않는 여러 기능을 제공합니다.

Express.js 

Express는 틀림없이 Node.js 용으로 가장 널리 사용되는 웹 애플리케이션 프레임 워크입니다. Express는 기본적으로 최소한의 프로그래밍 가능한 웹 서버 인 몇 가지 필수 기능 만 제공하지만 플러그인을 통해 확장 할 수 있습니다. 이 노 프릴 디자인은 Express를 가볍고 성능있게 유지하는 데 도움이됩니다.

MEAN 앱이 Express를 통해 사용자에게 직접 제공되어야한다는 말은 없지만 확실히 일반적인 시나리오입니다. 대체 아키텍처는 Nginx 또는 Apache와 같은 다른 웹 서버를 Express 앞에 역방향 프록시로 배포하는 것입니다. 이를 통해로드 균형 조정과 같은 기능을 별도의 리소스로 오프로드 할 수 있습니다.

Express는 의도적으로 최소이기 때문에 관련된 개념적 오버 헤드가 많지 않습니다. Expressjs.com의 자습서는 기본 사항에 대한 빠른 개요부터 데이터베이스 연결 및 그 이상에 이르기까지 여러분을 안내 할 수 있습니다.

모난

Angular (이전 AngularJS)는 MEAN 애플리케이션의 프런트 엔드를 구축하는 데 사용됩니다. Angular는 브라우저의 JavaScript를 사용하여 HTML 템플릿에서 서버 제공 데이터의 형식을 지정하므로 웹 페이지 렌더링 작업의 대부분을 클라이언트로 오프로드 할 수 있습니다. 많은 단일 페이지 웹 앱은 프런트 엔드에서 Angular를 사용하여 빌드됩니다.

한 가지 중요한주의 사항 : 개발자는 JavaScript로 컴파일되는 JavaScript와 유사한 유형 언어 인 TypeScript로 작성하여 Angular를 사용합니다. 어떤 사람들에게 이것은 JavaScript가 모든 곳에서 독점적으로 사용된다는 MEAN 스택의 기본 개념 중 하나를 위반하는 것입니다. 그러나 TypeScript는 JavaScript와 가까운 사촌이므로 둘 사이의 전환은 다른 언어 에서처럼 혼란스럽지 않습니다.

Angular에 대해 자세히 알아 보려면 Martin Heller의 도움을 받았습니다. Angular 튜토리얼에서 그는 최신 Angular 웹 앱을 만드는 과정을 안내합니다.

Node.js 

마지막으로 MEAN 웹 애플리케이션의 서버 측을 지원하는 JavaScript 런타임 인 ​​Node.js가 있습니다. Node는 Chrome 웹 브라우저에서 실행되는 것과 동일한 JavaScript 엔진 인 Google의 V8 JavaScript 엔진을 기반으로합니다. 노드는 크로스 플랫폼이며 서버와 클라이언트 모두에서 실행되며 Apache와 같은 기존 웹 서버에 비해 특정 성능 이점이 있습니다. 

Node.js는 기존 웹 서버와는 다른 방식으로 웹 요청을 처리합니다. 전통적인 접근 방식에서 서버는 새로운 실행 스레드를 생성하거나 요청을 처리하기 위해 새로운 프로세스를 포크합니다. 스레드 생성은 포크 프로세스보다 더 효율적이지만 둘 다 상당한 오버 헤드를 수반합니다. 스레드 수가 많으면로드가 많은 시스템이 스레드 스케줄링 및 컨텍스트 전환에 귀중한주기를 소비하여 지연 시간을 추가하고 확장 성 및 처리량에 제한을 부과 할 수 있습니다. 

Node.js가 훨씬 더 효율적입니다. Node는 연결을 처리하기 위해 시스템에 등록 된 단일 스레드 이벤트 루프를 실행하며, 각각의 새 연결은 JavaScript 콜백 함수를 실행합니다. 콜백 함수는 비 차단 I / O 호출로 요청을 처리 할 수 ​​있으며, 필요한 경우 풀에서 스레드를 생성하여 차단 또는 CPU 집약적 작업을 실행하고 CPU 코어에서 부하를 분산 할 수 있습니다.

Node.js는 Apache HTTP Server, ASP.NET, Ruby on Rails 및 Java 애플리케이션 서버를 포함하여 스레드와 함께 확장되는 대부분의 경쟁 아키텍처보다 더 많은 연결을 처리하는 데 더 적은 메모리를 필요로합니다. 따라서 Node는 웹 서버, REST API 및 채팅 앱 및 게임과 같은 실시간 애플리케이션을 구축하는 데 매우 인기있는 선택이되었습니다. MEAN 스택을 정의하는 구성 요소가 하나 있으면 Node.js입니다. 

Node.js에 대한 소개는 Martin Heller의 설명을 참조하십시오. Node로 개발을 시작하려면 Node.js 튜토리얼을 참조하세요. 

MEAN 스택의 장점 및 이점 

함께 작동하는이 네 가지 구성 요소가 모든 문제에 대한 해결책은 아니지만 현대 개발에서 틈새 시장을 확실히 찾았습니다. IBM은 MEAN 스택이 청구서에 맞는 영역을 세분화합니다. 확장 가능하고 많은 사용자를 동시에 처리 할 수 ​​있기 때문에 MEAN 스택은 특히 클라우드 네이티브 앱에 적합한 선택입니다. Angular 프런트 엔드는 단일 페이지 응용 프로그램에도 훌륭한 선택입니다. 예는 다음과 같습니다.

  • 비용 추적 앱
  • 뉴스 집계 사이트
  • 매핑 및 위치 앱

MEAN 대 MERN

약어“MERN”은 Angular 대신 React.js를 사용하는 MEAN 스택을 설명하는 데 때때로 사용됩니다. React는 Angular와 같은 본격적인 라이브러리가 아닌 프레임 워크이며 React를 JavaScript 기반 스택으로 교체하는 데는 장단점이 있습니다. 간단히 말해 React는 배우기 쉽고 대부분의 개발자는 본격적인 Angular 앱을 작성하고 테스트 할 수있는 것보다 빠르게 React 코드를 작성하고 테스트 할 수 있습니다. React는 또한 더 나은 모바일 프런트 엔드를 생성합니다. 반면 Angular 코드는 더 안정적이고 깨끗하며 성능이 뛰어납니다. 일반적으로 Angular는 엔터프라이즈 급 개발을위한 선택입니다.

그러나이 선택이 가능하다는 사실은 MEAN이 개발자에게 제한된 구속복이 아님을 보여줍니다. 표준 4 개 레이어 중 하나에 대해 서로 다른 구성 요소를 교체 할 수있을뿐만 아니라; 보완 구성 요소도 추가 할 수 있습니다. 예를 들어, Redis 또는 Memcached와 같은 캐싱 시스템을 Express 내에서 사용하여 요청에 대한 응답 속도를 높일 수 있습니다.

MEAN 스택 개발자

MEAN 스택 개발자가되는 기술을 갖추는 것은 기본적으로 여기서 논의한 특정 JavaScript 도구 세트에 초점을 맞춘 풀 스택 개발자가되는 것을 수반합니다. 그러나 MEAN 스택의 인기는 많은 직업 광고가 MEAN 관련 기술을 가진 풀 스택 개발자를 겨냥 할 것임을 의미합니다. Guru99는 이러한 작업 중 하나를 걸러 내기위한 전제 조건을 분석합니다. MEAN 스택 개발자는 기본 MEAN 스택 구성 요소에 대한 지식을 넘어서 다음 사항을 잘 이해하고 있어야합니다.

  • 프런트 엔드 및 백 엔드 프로세스
  • HTML 및 CSS
  • 프로그래밍 템플릿 및 아키텍처 디자인 지침
  • 웹 개발, 지속적 통합 및 클라우드 기술
  • 데이터베이스 아키텍처
  • 소프트웨어 개발 수명주기 (SDLC) 및 애자일 환경에서 개발하는 것과 같은 것

MEAN 스택 개발자의 급여는 무엇입니까? 항상 경험과 고용주를 기반으로 한 범위가 있지만 확실히 수익성이 좋은 분야입니다. 2019 년 12 월 현재 Neuvoo.com은 MEAN 스택 개발자가 예상 할 수있는 평균 연봉이 연간 약 $ 125,000라고 말합니다. Indeed.com은 MEAN 스택 개발자를 더 일반적으로 풀 스택 개발자와 함께 묶고 일반적인 연봉을 약 $ 112,000로 고정합니다.

MEAN 스택 튜토리얼

기술적 기본 사항에 익숙하고 MEAN 스택에 뛰어 들어 배울 준비가 되셨습니까? 시작하는 데 도움이되는 많은 무료 자습서가 있습니다. Angular Templates 사이트에는 MEAN 스택을 사용하여 간단한 웹 사이트를 구축하는 과정을 안내하는 특히 철저한 자습서가 있습니다. TutorialsPoint는 MEAN 스택을 사용하여 단일 페이지 웹 애플리케이션을 구축하는 데 유용한 가이드를 제공합니다. 손을 더럽 히고 행운을 빕니다!