공지 사항역대 가장 빠른 MongoDB, MongoDB 8.0을 소개합니다! 더 보기 >
공지 사항Voyage AI가 MongoDB와 협력하여 Atlas에서 더욱 정확하고 신뢰할 수 있는 AI 애플리케이션을 지원합니다. 자세히 알아보기 >

MERN 스택 설명

MERN은 MEAN 스택(MongoDB, Express, Angular, Node)에서 파생된 변형 중 하나로, 기존의 Angular.js 프론트엔드 프레임워크를 React.js로 대체한 것입니다. 다른 변형으로는 MEVN(MongoDB, Express, Vue, Node)이 있으며 이외에도 모든 프론트엔드 JavaScript 프레임워크가 여기에 포함됩니다.

다음 단계로 넘어갈 준비가 되셨나요? 아래를 클릭해 무료 MongoDB Atlas 계정을 만든 후 MERN Stack 튜토리얼을 토대로 빠르게 풀스택 MERN 애플리케이션을 구축하세요.

무료로 시작하기

기술 스택

MERN 스택에 대해 자세히 알아보기 전에 먼저 기술 스택이 무엇인지 빠르게 살펴보도록 하겠습니다. 기술 스택이란 웹 애플리케이션이나 모바일 애플리케이션, 이외의 유사한 애플리케이션을 구축하기 위해 선택하고 사용하는 기술의 집합을 말합니다. 좋은 기술 스택은 확장 가능하고 비용 효율적이어야 하는 동시에 원활한 사용자 경험을 제공할 수 있어야 합니다. 일반적인 기술 스택에는 프론트엔드, 백엔드, 데이터베이스가 포함되며 이를 풀스택이라고 합니다.

일반적으로 기본적인 프론트엔드나 사용자 인터페이스 기술은 HTML, CSS, JavaScript 등에서 동일하게 유지됩니다. 프로젝트 요구 사항에 따라 해당 UI 기술을 기반으로 구축된 React 또는 Angular 같은 라이브러리와 프레임워크를 사용할 수 있습니다.

백엔드는 애플리케이션 로직이 상주하는 서버로 구성됩니다. 애플리케이션 로직을 JavaScript, Java, Python과 같은 하나 이상의 프로그래밍 언어로 작성하거나 Django, Spring, Express.js 같은 프레임워크를 사용할 수 있습니다. 프로그램을 실행하려면 애플리케이션에 Node.js나 JRE(Java Runtime Environment)와 같은 런타임이 필요합니다.

데이터베이스는 모든 애플리케이션 관련 데이터가 저장되는 스토리지 허브를 말합니다. 데이터는 관계형 데이터베이스 시스템을 사용하는 테이블 구조에 저장할 수도 있고, 문서 구조, 그래프 구조 등과 같은 비관계형(NoSQL)을 사용할 수도 있습니다. 그리고 이에 따라 데이터베이스를 선택할 수 있습니다. 데이터베이스의 예로는 MongoDB, Oracle, MySQL 등이 있습니다.

MERN 스택이란 무엇인가요?

기술 스택은 맞춤형(개발자가 프로젝트 요구 사항에 따라 기술 선택)일 수도 있고 사전 구축(사용할 기술이 미리 결정된 경우)일 수도 있습니다.

MERN은 JavaScript 기술을 기반으로 사전 구축된 기술 스택입니다. MERN이라는 이름은 스택을 구성하는 4가지 핵심 기술 MongoDB, Express, React, Node의 첫 글자를 따서 붙여졌습니다.

  • MongoDB — 문서 데이터베이스
  • Express(.js) — Node.js 웹 프레임워크
  • React(.js) — 클라이언트 사이드 JavaScript 프레임워크
  • Node(.js) — 프리미어 JavaScript 웹 서버(런타임)

Express와 Node는 중간(애플리케이션) 계층을 구성합니다. Express.js는 서버 사이드 웹 프레임워크이며, Node.js는 인기 있고 강력한 JavaScript 서버 플랫폼입니다. 어떤 유형을 선택하든 ME(RVA)N은 JavaScript와 JSON 작업을 위한 이상적인 접근 방식입니다.

MERN 스택의 작동 원리

MERN 아키텍처를 사용하면 JavaScript와 JSON을 사용해 3계층 아키텍처(프론트엔드, 백엔드, 데이터베이스)를 간편하게 구축할 수 있습니다.

React.js 프론트엔드

MERN 스택의 최상위 계층에는 HTML로 동적 클라이언트 사이드 애플리케이션 개발을 지원하는 선언형 JavaScript 프레임워크인 React.js가 있습니다. React를 사용하면 간단한 구성 요소를 통해 복잡한 인터페이스를 구축하고, 이를 백엔드 서버의 데이터에 연결해 HTML로 렌더링할 수 있습니다.

React의 강점은 최소한의 코드 작성과 노력으로 상태성 데이터 기반 인터페이스를 처리한다는 것입니다. 또한, 양식, 오류 처리, 이벤트, 목록 등 다양한 영역에서 우수한 지원이 제공되는 등 최신 웹 프레임워크에서 기대할 수 있는 모든 기능을 갖추고 있습니다.

Express.js 및 Node.js 서버 계층

그 다음 단계는 Node.js 서버 내에서 실행되는 Express.js 서버 측 프레임워크입니다. Express.js는 '빠르고 제약이 없는 간결한 웹 프레임워크'로 알려져 있으며 실제로도 그러한 특징을 갖추고 있습니다. Express.js는 URL 라우팅(들어오는 URL을 서버 함수와 매칭)과 HTTP 요청 및 응답 처리에 강력한 모델을 제공합니다.

React.js 프론트엔드에서 XML HTTP 요청(XHR), GET 또는 POST를 생성해 애플리케이션을 구동하는 Express.js 함수에 연결할 수 있습니다. 그러면 이러한 기능이 MongoDB의 Node.js 드라이버를 사용해 MongoDB 데이터베이스의 데이터에 액세스하고 업데이트합니다.

MongoDB 데이터베이스 계층

애플리케이션이 데이터(사용자 프로필, 콘텐츠, 댓글, 업로드, 이벤트 등)를 저장하는 경우 React, Express, Node.js처럼 작업하기 쉬운 데이터베이스를 사용하는 것이 좋습니다.

바로 여기에서 MongoDB의 존재감이 빛을 발합니다. React.js 프론트엔드에서 생성된 JSON 문서를 Express.js 서버로 전송해 처리할 수 있고, (유효한 경우) 나중에 찾아볼 수 있도록 MongoDB에 바로 저장할 수 있기 때문입니다. 클라우드에서 개발 중이라면 MongoDB Atlas 사용을 고려하는 것이 좋습니다. MERN 스택을 맞춤형으로 설정하고 싶다면 계속해서 읽어보세요!

MERN 스택을 사용한 간단한 요청/응답의 예시

일반적인 HTTP 요청(클라이언트에서)은 4가지 작업(POST, GET, PUT, DELETE) 중 하나를 수행합니다. 각각의 작업은 4가지 데이터베이스 작업(각각 생성, 읽기, 업데이트, 삭제 - CRUD)에 상응합니다. 이러한 요청을 처리하기 위해 Express.js는 필요한 매개 변수를 저장하는 요청과 응답 객체를 제공합니다. HTTPrequest는 최종 사용자가 제공한 데이터를 저장하고 HTTP 응답은 데이터베이스에서 조회된 데이터를 저장합니다.

MongoDB Node.js 드라이버를 사용하면 몇 가지 간단한 단계를 통해 MongoDB 배포를 애플리케이션에 쉽게 연결할 수 있습니다.

MERN 스택의 가장 중요한 특징 중 하나는 모든 기술이 동일한 형식으로 데이터를 저장한다는 것입니다.

프론트엔드 레이어인 React는 데이터를 JavaScript 객체로 저장하고, 백엔드(애플리케이션) 레이어는 JavaScript 코드를 사용하며, 데이터 레이어인 MongoDB는 데이터를 BSON(Binary JavaScript ON) 형식으로 저장합니다. Express는 .json() 메서드를 사용해 JS와 JSON 간의 데이터를 변환합니다.

Node.js를 사용하면 개발자가 백엔드(서버 사이드) 애플리케이션 로직을 JavaScript로 작성할 수 있습니다. Node.js도 핵심 http 모듈을 제공하지만, Express에서 동일한 모듈을 작성하면 더 깔끔한 코드 환경을 구축할 수 있습니다. 또한, Express는 강력한 라우팅 기능을 제공해 올바른 엔드포인트에서 필요한 데이터를 가져올 수 있도록 합니다. 그래서 개발자가 라우팅을 위해 명시적인 코드를 작성할 필요가 없습니다.

코드가 처음부터 끝까지 동일한 언어(JavaScript)로 작성되기 때문에 레이어를 전환하는 과정에서 소요되는 시간이 크게 절약됩니다.

예를 들어, 고객(클라이언트)이 온라인 포털을 통해 본인의 휴대폰 번호를 업데이트하려고 한다고 가정해 보겠습니다. React .js를 사용해 구축된 프론트엔드에는 사용자가 휴대폰 번호를 입력할 수 있는 양식이 있습니다. React는 'useState' 훅을 사용해 고객이 입력한 휴대폰 번호를 요청 매개 변수로 설정합니다.

Express.js 코드는 http put 요청에서 휴대폰 번호를 가져와 애플리케이션의 데이터 모델 스키마에 매핑한 후 findByIdAndUpdate() 등의 메서드를 적용해 업데이트 작업을 수행합니다. 그러면 http 응답 객체를 통해 응답이 성공/실패 메시지와 함께 전송됩니다.

MERN 스택 튜토리얼 페이지에서 전체 예시를 확인할 수 있습니다.

MERN 스택 vs 풀스택 개발

MERN 스택은 기술 계층이 사전 정의된 풀스택의 한 유형입니다. 풀스택 개발자는 여러 기술에 능숙해야 하기 때문에 기술을 배우는 데 더 많은 노력을 쏟아야 하지만, MERN 스택 개발자는 해당하는 기술만 알면 됩니다. 아래에 설명된 대표적인 차이점을 살펴보면 프로젝트 요구 사항에 따라 맞춤형 풀스택과 MERN 스택 중에서 어떤 것을 선택해야 하는지 결정하는 데 도움이 될 겁니다.

MERN 스택

  • 함께 잘 작동하도록 검증된 기술들로 사전에 구성된 기술 스택
  • JavaScript 및 JavaScript 기반 기술과 프레임워크에 중점
  • 간소화된 통합 개발 접근 방식
  • 단일 언어 구성 요소를 여러 환경에서 활용할 수 있어 코드 재사용성 촉진

풀스택

  • 개발자는 프로젝트 요구 사항에 따라 다양한 기술을 선택
  • 프로젝트에 따라 학습해야 하는 광범위한 스킬 세트 필요
  • 개발을 위한 도구와 프레임워크를 선택하는 데 있어 더 큰 유연성 제공
  • 개발자가 애플리케이션의 다양한 측면을 다룰 수 있어 유연성과 다재다능함 촉진

MERN 스택을 선택해야 하는 경우는 언제인가요?

프로젝트 일정이 엄격하거나 요구 사항이 명확하게 정의되어 있다면, MERN 스택이 시간과 비용을 절약할 수 있는 이상적인 선택입니다. 개발자는 한 가지 기술만 학습하면 되기 때문에 빠르게 적응할 수 있습니다. 또한 MERN 스택의 잘 구조화된 접근 방식과 풍부한 문서는 장기적인 프로젝트 유지보수와 데이터베이스 관리를 쉽게 만들어 줍니다.

MERN 스택을 구성하는 각 요소(MERN)가 강력한 기능을 제공하므로 거의 모든 사용 사례와 프로젝트 요구 사항에 폭넓게 대응할 수 있습니다. MERN 스택을 사용할 수 없는 단 한 가지 예외는 JavaScript 이외의 언어를 사용해야 할 때입니다.

왜 MERN 스택을 선택해야 할까요?

우선 MERN 스택의 핵심인 문서형 데이터베이스인 MongoDB부터 살펴보겠습니다. MongoDB는 기본적으로 JSON 데이터를 저장하도록 설계되으며 기술적으로는 BSON이라는 JSON의 바이너리 형식을 사용합니다. 명령줄 인터페이스부터 쿼리 언어까지 모든 것이 JSON과 JavaScript를 기반으로 구축되어 있습니다.

MongoDB는 Node.js와 매우 잘 작동하며 애플리케이션의 모든 계층에서 JSON 데이터를 저장, 조작 및 표현하는 과정을 쉽게 만들어 줍니다. 클라우드 네이티브 애플리케이션에서는 몇 번의 클릭만으로 원하는 클라우드 제공업체에 자동 확장형 MongoDB 클러스터를 생성할 수 있도록 해주는 MongoDB Atlas 덕분에 구축이 더욱 쉬워집니다.

(Node.js에서 실행되는) Express.js와 React.js는 JavaScript/JSON 애플리케이션 MERN을 풀스택으로 완성해 줍니다. Express.js는 HTTP 요청과 응답을 래핑하여, URL을 서버 사이드 함수에 손쉽게 매핑할 수 있게 해주는 서버 사이드 애플리케이션 프레임워크입니다. React.js는 HTML로 대화형 사용자 인터페이스를 구축하고 원격 서버와의 통신을 가능하게 해주는 프론트엔드 JavaScript 프레임워크입니다.

이 조합 덕분에 JSON 데이터가 프론트엔드에서 백엔드로 자연스럽게 흐르며 개발이 더 간편하고 디버깅도 상대적으로 쉬워집니다. 게다가 하나의 프로그래밍 언어와 JSON 문서 구조만 이해하면 전체 시스템을 충분히 파악할 수 있습니다.

MERN 스택은 특히 React.js 경험이 있는 웹 개발자들이 빠르게 개발을 진행할 수 있도록 돕는 인기 있는 기술 스택입니다.

MERN 사용 사례

다른 웹 스택과 마찬가지로 MERN을 사용하면 원하는 어떤 애플리케이션이든 만들 수 있습니다. 다만 JSON을 많이 사용하고 클라우드 네이티브 환경에서 동적 웹 인터페이스를 구현해야 하는 경우에 특히 적합합니다. 예를 들어 워크플로우 관리, 뉴스 통합 서비스, 할 일 관리 앱과 캘린더, 그리고 인터랙티브 포럼이나 소셜 플랫폼 등이 있으며 그 외에 상상할 수 있는 모든 것을 구현할 수 있습니다.

요약

MERN Stack은 기술을 사전에 결정하여 전체 기술 스택을 간소화하는 것을 목표로 합니다. 개발자와 디자이너는 어떤 비즈니스 사례에 어떤 기술을 사용할지 고민할 필요가 없습니다. 또한 다양한 기술을 배우거나 이를 아는 여러 직원을 채용할 필요가 없으며, 한 직원에게 모든 업무를 맡길 필요도 없습니다. MERN 스택을 사용하면 몇 가지 기술만 알고도 누구나 간단한 애플리케이션부터 복잡한 애플리케이션까지 구축할 수 있습니다. 이로 인해 확장성, 성능 및 보안에 영향을 주지 않으면서도 생산 속도를 높이고 전체 비용을 절감할 수 있습니다.

자주 묻는 질문

MongoDB Atlas로 무료로 시작하세요.

MongoDB Atlas를 사용해 클라우드에서 무료로 MongoDB를 실행하세요. 신용카드는 필요하지 않습니다.
지금 무료로 시작하세요!