예꾸
개발자국
예꾸
전체 방문자
오늘
어제
  • 분류 전체보기 (111)
    • CS (6)
      • 데이터베이스 (5)
      • 운영체제 (0)
      • Computer Architecture (1)
    • 끄적끄적 (4)
    • 이론 (29)
      • 알고리즘 (18)
      • 자료구조 (4)
      • WEB (2)
      • JS (2)
      • Git (2)
      • Python (1)
    • 면접준비 (3)
      • Vue (1)
      • Design Pattern (1)
      • Frontend (1)
    • 개발기술 (20)
      • Git PUSH 자동화 (3)
      • VUE (1)
      • Linux (2)
      • MERN Stack (2)
      • React기반 Gatsby로 블로그 개발하기 (6)
      • Typescript (0)
      • 감정일기장(React) (3)
      • CI CD (3)
    • 코드트리 (6)
      • 블로그 챌린지 (3)
      • 모의시험 (3)
    • 취업준비 (3)
      • 코딩테스트 후기 (3)
    • 프로그래머스 (8)
      • SQL (7)
      • 알고리즘 (1)
    • 백준 (31)
      • 그리디(탐욕법) (6)
      • 구현 (5)
      • 그래프탐색(dfs, bfs) (5)
      • 완전탐색 (5)
      • 문자열 (5)
      • 누적합 (2)
      • DP(다이나믹 프로그래밍) (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 컴퓨터 시스템의 구조
  • 코드트리 추천
  • JS
  • 코딩테스트
  • 백준 그리디
  • 나만의공부노트
  • 백준 구현
  • 알고리즘
  • gatsby
  • 프로그래머스 SQL
  • javascript
  • React
  • 운영체제
  • 자료구조
  • 프로그래머스
  • 코딩테스트실력진단
  • 백준 그래프탐색
  • 백준 완전탐색
  • 코드트리
  • 백준 문자열

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
예꾸

개발자국

[MERN Stack] 2. MERN Stack이란? (with MSA)
개발기술/MERN Stack

[MERN Stack] 2. MERN Stack이란? (with MSA)

2022. 4. 18. 12:09

MERN Stack이란?


  • M : MongoDB
  • E : Express
  • R : React
  • N : Node.js

MERN 스택은 위 네가지 요소를 사용하여 웹사이트를 개발하는 것을 말합니다

각 구성요소에 대해 간단히 설명해 보겠습니다

 


 MongoDB


MongoDB는 NoSQL 중 가장 많이 쓰이는 비관계형 데이터베이스 관리 시스템으로 자유 오픈소스 소프트웨어입니다

몽고DB는 Document DB로써 JSON과 닮은 형태의 데이터를 문서 형태로 한번에 저장하고, MQL(MongoDB query Language)를 이용해 데이터베이스에 접근합니다.

 

*NoSQL이란, 비관계형 데이터베이스로 불리며, 관계형 데이터베이스 형태가 아닌 다른 형태로 데이터를 저장합니다. 테이블간의 분할이 없고, 데이터들을 구조 내에 모두 중첩해서 넣을 수 있는 특징이 있습니다. 비정형 데이터이기 떄문에 엄청난 양의 데이터들을 손쉽게 넣고 확인할 수 있습니다

 

MYSQL vs MongoDB | https://ckddn9496.tistory.com/96

Express


Express.js는 Node.js를 위한 빠르고 개방적인 간결한 웹 프레임워크라고 설명되어있습니다

간략히 말하면, Express란 NodeJS를 사용해 쉽게 서버를 구성할 수 있게 만든 클래스와 라이브러리의 집합체라고 볼 수 있습니다

 

React.js


React.js는 facebook에서 제공해주는 프론트엔드 라이브러리 입니다

라이브러리이므로 웹을 만드는데 꼭 필요한 도구들이 기본적으로 제공되지는 않지만 가볍다는 장점이 있습니다.

React.js는 뷰단을 조작합니다

 

Node.js


Node.js는 구글 크롬의 자바스크립트 엔진에 기반해 만들어진 서버 사이드 플랫폼입니다. 

Node.js는 JavaScript의 runtime이며, JavaScript Program을 실행할 수 있게 도와줍니다.

Node.js는 이벤트기반, 논블로킹 I/O 모델을 사용해 가볍고 효율적입니다.

 


모노리틱 아키텍쳐


모노리틱 아키텍쳐란

모노리틱 아키텍쳐란 애플리케이션이 하나로 되어있어서 보통 동일한 개발 툴을 사용해 개발되며, 배포 및 테스트도 하나의 애플리케이션만 수행하면 되기 때문에 개발 및 환경설정이 간단하다.

 

장점

  • 배포 및 테스트도 하나의 애플리케이션만 수행하면 되기 때문에 개발 및 환경설정이 간단
  • 각 컴포넌트들이 함수로 호출되기 때문에 성능에 제약이 덜하고 운영 관리가 용이
  • 작은 볼륨의 시스템을 개발할 때는 유용

단점

  • 빌드/테스트 시간이 길어진다
  • 선택적 확장이 불가능하다
  • 하나의 서비스가 모든 서비스에 영향을 준다. 

 

MSA


MSA란

MSA란 마이크로 서비스 아키텍처의 약자로 단일 프로그램을 각 컴포넌트 별로 나누어 작은 서비스의 조합으로 구축하는 방법입니다.

 

장점

  • 각 서비스는 독립된 서버로 타 컴포넌트와 의존성이 없기 때문에 독립된 배포가 가능
  • 각 컴포넌트가 독립된 서비스로 개발되어있기 때문에 부분적인 확장이 가능하다

단점

  • 모노리틱 아키텍처는 서비스간 호출이 하나의 프로세스 내에서 이루어지기 때문에 속도가 빠르지만 MSA의 경우 서비스간 호출을 API통신을 이용하기 떄문에 속도가 느리다
  • 통신에 사용하기 위해 값을 데이터 모델로 변환시켜주는 오버헤드가 발생한다

특징

  • 데이터 분리
    • 데이터 저장 시 하나의 DB에 중앙 집중화를 하지 않고 별도의 데이터 베이스를 사용한다
    • 데이터가 분산되어있기 때문에 다른 서비스 컴포넌트에 대한 의존성이 없어 서비스를 독립적으로 개발 및 배포/운영 할 수 있지만 다른 컴포넌트의 데이터를 API통신을 통해 가져와야 하기 때문에 성능상 문제가 발생할 수 있고, 트렌잭션으로 묶을 수 없는 문제가 발생하기도 한다
  • API Gateway
    • MSA문제점중 하나는 각 서비스가 다른 서버에 분리 배포되어있기 때문에 서버 URL이 각기 다를 수밖에 없다는 것이다. 이때 API Gateway는 API서버 앞 단에서 모든 API서버들의 end-point를 단일화하여 묶어주는 역할을 한다
    • API요청을 한 곳에서 받아서 해당 서비스로 라우팅 기능
    • 거미줄처럼 복잡한 서비스간의 API호출 구조도 단순화
    • 라우팅, 로드 밸런싱, 인증과 인가, 보안, 트래픽제거 역할 수행

 

몽고DB에서 설명하는 MERN

Express 및 Node는 중간(응용 프로그램) 계층을 구성합니다. Express.js는 서버 측 웹 프레임워크이며 Node.js는 인기 있고 강력한 JavaScript 서버 플랫폼입니다. 어떤 변형을 선택하든 ME(RVA)N은 JavaScript 및 JSON 작업을 위한 이상적인 접근 방식입니다.

React

  • MERN스택의 최상위 계청은 HTML로 동적 클라이언트 측 애플리케이션을 생성하기 위한 선언적 JS 프레임위크인 React.js입니다
  • React를 사용하면 간단한 구성요소를 통해 복잡한 인터페이스를 구축하고 백엔드 서버의 데이터에 연결하고 HTML로 렌더링할 수 있습니다

Express.js 및 Node.js 서버 계층

  • Node.js 서버 내부에서 실행되는 Express.js서버측 프레임워크
  • Express.js에는 URL 라우팅(서버 기능과 수신 URL 일치)과 HTTP 요청 및 응답처리를 위한 강력한 모델이 있다
  • React에서 HTTP요청, GET, POST를 작성하여 애플리케이션을 구동하는 Express.js 기능에 연결할 수 있습니다
  • 이러한 함수는 MongoDB 데이터베이스의 데이터에 액세스 하고, 업데이트 하기 위해 Promises를 사용하기 위한 콜백을 위해 MongoDB의 Node.js드라이버를 사용합니다 

MongoDB 데이터베이스 계층

  • 애플리케이션이 데이터를 저장하는 경우 React, Express 및 Node.js만큼 쉽게 작업할 수 있는 데이터베이스
  • React에서 생성된 JSON문서는 Express.js 서버로 보내진다. 여기서 문서를 처리하고 나중에 MongoDB에서 저장된 것을 검색할 수 있다.
    '개발기술/MERN Stack' 카테고리의 다른 글
    • [Docker] 1. Docker 설치
    예꾸
    예꾸
    비전공자 옒의 개발이야기💻

    티스토리툴바