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

파마 스택이란?

MERN 및 MEAN과 같은 다른 스택들과 함께 또 다른 스택인 FARM 스택이 빠르게 인기를 얻고 있습니다.

FARM 스택은 MongoDB 및 React와 같은 기술을 활용한다는 점에서 MEAN 스택MERN 스택 과 유사한 학습 곡선을 가지고 있습니다. FastAPI, React, MongoDB를 함께 사용하여 애플리케이션 성능, 속도 및 개발 용이성을 크게 향상합니다.

목차:

FARM 스택 설명

FARM 스택은 다음과 같이 가장 인기 있는 네 가지 기술을 하나로 결합한 기술 스택입니다.

  • FastAPI — Python 기반 백엔드 프레임워크
  • React — 프론트엔드 JavaScript 라이브러리
  • MongoDB — 유연한 스키마 NoSQL 데이터베이스

기술 스택

기술 스택 은 함께 작동하여 웹 애플리케이션과 같은 엔드투엔드 애플리케이션을 생성하는 다양한 프론트엔드, 백엔드 및 데이터베이스 기술의 스택입니다. 기술 스택은 MEAN, MERN, FARM 스택과 같이 미리 구축되거나 특정 비즈니스 사용 사례에 따라 맞춤화될 수 있습니다.

FARM 스택은 프론트엔드(React), 백엔드(Fast API), 데이터베이스(MongoDB)를 사용하는 풀 기술 스택입니다. 좋은 기술 스택은 확장 가능하고, 비용 효율적이어야 하며, 속도와 성능에 최적화되어야 합니다.

일반적으로 애플리케이션의 프론트엔드(사용자/클라이언트 대면)는 HTML, CSS, JavaScript와 같은 기술로 구축됩니다. React는 향상된 개발자 및 사용자 경험을 제공하는 이러한 기술을 기반으로 구축된 라이브러리입니다.

백엔드는 서버와 서버 측 프로그래밍 언어로 구성됩니다. 여기에 애플리케이션의 비즈니스 로직이 있습니다. FARM 스택에서는 Starlette 프레임워크를 기반으로 구축된 초고속 웹 프레임워크인 FastAPI를 사용합니다.

FastAPI는 내장된 API 유효성 검사 및 자동 대화형 API 문서와 같은 놀라운 기능으로 빠르게 탄력을 받고 있습니다. Fast API는 비동기식 서버 게이트웨이 인터페이스(ASGI)를 기반으로 하므로 비동기 프로그래밍을 지원하여 매우 빠릅니다.

스택의 가장 아래 계층은 모든 데이터의 저장 허브 역할을 하는 데이터베이스 계층입니다. 여러 소스에서 수집될 수 있고, 형식이 다르고, 엄청나게 큰 오늘날의 데이터의 특성으로 인해, 우리는 이러한 비정형 데이터를 유연하게 처리할 수 있는 데이터베이스가 필요합니다.

가장 인기 있는 NoSQL 데이터베이스인 MongoDB는 기업이 수집하려는 빅데이터를 저장, 처리, 분석 및 조회할 수 있는 완벽한 플랫폼을 제공합니다. MongoDB의 풍부한 쿼리 언어, 집계 및 기타 여러 기능을 통해 애플리케이션이 원하는 데이터를 정확하게 얻을 수 있으므로 개발자가 데이터를 광범위하게 조작하거나 변환하기 위해 코드를 작성할 필요가 없습니다.

FARM 스택을 차별화하는 기능

FARM 스택은 신속한 개발이 가능하고, 코루틴을 통해 여러 동시 연결을 쉽게 처리할 수 있으며, 쉽게 학습할 수 있는 강력한 기술의 조합을 갖추고 있습니다.

FARM 스택은 어떻게 작동하나요?

FARM 스택은 최소한의 학습 과정으로 쉽게 이해할 수 있습니다. JavaScript, Python, 그리고 MongoDB에 익숙하기만 하면 프로젝트를 쉽게 빌드할 수 있습니다. 이러한 기술은 다른 많은 스택 및 비즈니스에도 유용하므로 이러한 기술을 배우는 것은 커리어에 필수적이라고 할 수 있습니다.

사용자는 애플리케이션에서 다음 작업 중 하나를 수행할 수 있습니다.

HTTP 요청

  • POST
  • 얻다
  • PUT
  • 삭제

해당 CRUD 작업

  • C = 생성/삽입
  • R = 읽기
  • U = 업데이트
  • D = 삭제

 

사용자가 이들 중 하나에 대해 HTTP 요청을 할 때마다, React는 필요한 매개변수를 사용하여 요청을 구성하여 백엔드 서버로 전송합니다. 백엔드에서 FastAPI는 요청을 적절한 메서드로 라우팅하고 적절한 데이터베이스 메서드를 호출하여 작업을 수행합니다. 쿼리가 데이터베이스 수준에서 성공적으로 실행되면 백엔드에서 응답을 수신하고 처리한 후 React 프론트엔드로 전송합니다. React는 사용자에게 성공/실패 메시지를 표시합니다.

React 프론트엔드

React JS 라이브러리는 재사용이 가능한 다양한 즉시 사용 가능한 일반 유틸리티와 구성 요소를 제공하여 프로덕션 환경에서 사용할 수 있는 프론트엔드 애플리케이션을 신속하게 개발할 수 있게 합니다. FARM 스택의 일부인 React는 백엔드에 HTTP 요청을 전송하고 백엔드 응답을 프론트엔드에 표시하는 데 사용됩니다.

React JS는 전체 트리 구조가 아닌 애플리케이션에서 수정된 부분만 업데이트하는 가상 DOM을 사용합니다. 이렇게 하면 애플리케이션이 빨라집니다. 또 다른 주목할 만한 기능은 HTML 태그 내부에 JavaScript 요소를 추가할 수 있는 JSV(JavaScript 확장) 구문입니다. 따라서 요소 값의 변경 사항이 새로 고침이나 서버를 재시작할 필요 없이 즉시 반영됩니다.

사용자가 휴대폰 번호를 업데이트하기 위해 간단한 HTTP 요청을 한다고 가정해 보겠습니다. React는 사용자가 입력한 데이터를 간단한 훅(useState)을 사용해 저장합니다.

이 데이터는 JSON 형식의 PUT 요청을 사용하여 애플리케이션 계층으로 전송됩니다.

FARM 스택은 비동기 프로그래밍을 지원하므로 프라미스 기반으로 모든 브라우저를 지원하는 axios JS 라이브러리를 사용할 수 있습니다. axios를 사용하면 HTTP 요청을 생성하고 구성하는 복잡성을 추상화할 수 있습니다.

React가 다양한 데이터 형식을 허용하지만, JSON 형식이 가볍고 대역폭을 덜 사용하기 때문에 가장 선호됩니다.

FastAPI

FastAPI는 Python 기반의 비동기 웹 프레임워크입니다. FARM 스택에서 Fast API는 React 앱에서 수신한 HTTP 요청을 처리하고 응답을 반환하는 미들웨어 역할을 합니다. FastAPI는 비동기식 웹 서버를 위한ASGI 서버 사양을 기반으로 하는 uvicorn 서버 에서 실행됩니다.

Fast API는 비차단 I/O 작업을 활용하여 코루틴을 통해 여러 동시 로드를 처리합니다. 예를 들어, 온라인 포털에서 휴대폰 번호를 업데이트하기 위해 여러 요청이 들어오는 경우, 리소스를 차단하는 대신 FastAPI는 여러 요청을 병렬로 처리할 수 있는 코루틴을 생성합니다.

휴대폰 번호 업데이트 요청이 동시에 5개 있다고 가정해 보겠습니다. 각각을 하나씩 처리하면 CPU와 시간이 낭비됩니다. Python의 asyncio 라이브러리에 있는 비동기 키워드를 사용하여 요청 처리를 병렬로 시작할 수 있습니다. 첫 번째 요청이 결과 가져오기(업데이트할 휴대폰 번호 찾기)를 대기하고 있다고 가정해 보겠습니다. 이 대기 시간은 두 번째 요청을 시작하는 데 사용할 수 있습니다. 이러한 방식으로 각 요청은 다른 요청과 완전히 독립적이며 차단이나 대기가 없습니다.

위의 코루틴에서 main()은 각 요청이 별도의 코루틴으로 비동기적으로 처리되는 프로그램의 진입점입니다.

FastAPI에서 제공하는 웹 프레임워크는 다음과 같은 기능을 제공합니다.

  • 비동기 프로그래밍을 완벽하게 지원하여 높은 성능을 제공합니다.
  • 종속성 삽입, 즉 프로젝트 종속성을 선언하고 런타임 중에 삽입합니다.
  • Pydantic 라이브러리를 사용한 데이터 유효성 검사 및 직렬화.
  • asyncio Python 라이브러리를 사용한 비동기 프로그래밍.
  • Swagger를 사용하는 API 엔드포인트에 대한 자동 API 문서화.
  • 유형 힌팅 및 주석.

Python 데코레이터(@app.get, @app.put 등)을 사용하여 HTTP 요청과 라우팅 경로를 정의합니다.

그런 다음 요청의 경로 또는 쿼리 파라미터를 사용하여 입력 데이터에 액세스할 수 있습니다. Pydantic 라이브러리를 사용하여 데이터 유효성 검사를 처리합니다.

그런 다음 MongoDB 데이터베이스 컬렉션의 휴대폰 번호를 업데이트하는 비동기 함수를 생성할 수 있습니다.

실제의 경우 customers_id와 같은 기준에 따라 휴대폰 번호를 업데이트하려고 할 가능성이 높습니다. 이 경우 FastAPI 엔드포인트(라우팅 URL)에 경로 매개 변수를 추가할 수 있습니다.

휴대폰 번호를 업데이트하는 비동기 함수는 업데이트할 휴대폰 번호와 함께 customer_id를 매개 변수로 사용합니다.

'결과'는 BSON 문서로, 비동기식 드라이버 모터에 의해 Python 딕셔너리로 자동 변환됩니다. FastAPI는 이를 JSON 응답으로 변환합니다.

FastAPI 코드에서 결과를 기반으로 사용자 지정 응답을 구성할 수도 있습니다.

React 애플리케이션은 후크를 사용하여 변수 상태를 설정하므로 변수에 응답을 설정하기만 하면 React가 프론트엔드 페이지에 이를 표시합니다.

FastAPI는 종속성을 사용하여 권한 및 역할 기반 액세스 제어 관리를 위한 내장 지원을 제공합니다. 예를 들어, 사용자 인증 또는 경로에 대한 액세스 권한 부여합니다.

비동기식 서버 게이트웨이 인터페이스(ASGI)

ASGI는 Python에서 비동기 애플리케이션과 서버를 빌드하기 위한 사양을 제공합니다. 이를 통해 애플리케이션은 다른 작업을 차단하지 않고도 데이터베이스 쿼리나 네트워크 요청과 같은 I/O 작업을 수행할 수 있습니다. ASGI는 일반적인 HTTP 요청 및 응답 외에도 수명이 긴 연결을 처리하도록 설계되었습니다. 이 기능은 클라이언트와 서버 간의 양방향 통신이 필요한 실시간 애플리케이션에 유용합니다.

Uvicorn 웹 서버

Uvicorn은 ASGI 사양을 기반으로 하는 비동기 웹 서버입니다. 높은 성능을 제공하며 높은 애플리케이션 부하를 효율적으로 처리하는 데 매우 적합합니다. Fast API를 사용하는 Python 개발자는 uvicorn 서버를 사용하여 애플리케이션을 배포하고 관리할 수 있습니다. Uvicorn은 웹 소켓도 지원합니다. FastAPI는 Hypercorn 및 Quart와 같은 몇 가지 다른 서버와 호환되지만, 성능과 안정성으로 인해 uvicorn이 선호됩니다.

Motor 비동기 드라이버

MOTOR 는 FastAPI(Python)와 MongoDB를 연결하기 위한 비동기 드라이버입니다. pymongo 드라이버와 유사하지만 비동기 애플리케이션용입니다. MOTOR는 MongoDB server의 커뮤니티 또는 엔터프라이즈 버전에서도 잘 작동합니다. 모터에 대한 자세한 내용은 문서 페이지를 참조하십시오.

MongoDB 데이터 플랫폼

MongoDB는 애플리케이션의 요구에 따라 데이터를 저장하고 조회하는 데이터 계층입니다.

MongoDB는 BSON(Binary JavaScript Object Notation)이라고 하는 JSON과 유사한 형식으로 데이터를 MongoDB 데이터베이스에 저장하는 문서 데이터베이스입니다. MongoDB는 문서 모델 덕분에 높은 데이터 저장 유연성을 제공하고 모든 스키마 변경 사항을 쉽게 수용할 수 있습니다.

MongoDB 데이터베이스는 MongoDB 엔터프라이즈 데이터베이스, MongoDB 커뮤니티 데이터베이스, 클라우드 데이터베이스(Atlas)로 다양하게 제공됩니다. MongoDB Atlas를 사용하면 아무것도 설치할 필요가 없습니다. 무료 계정을 만들기만 하면 클러스터를 생성할 수 있습니다.

MongoDB는 데이터 일관성과 유연성을 그대로 유지하면서 성능을 최적화하는 효율적인 데이터 모델링 옵션을 제공합니다. 예를 들어 FARM 스택 애플리케이션을 위한 데이터 모델을 생성하기 위해 워크로드를 정의하고 주요 엔터티 간의 다양한 관계 유형(1:1, 1:다 또는 다:다 관계)을 식별할 수 있습니다. 이를 기반으로 문서 구조를 결정할 수 있습니다. MongoDB는 함께 액세스되는 데이터를 함께 저장해야 한다는 간단한 규칙을 따릅니다. 엔티티의 모든 관련 세부 정보를 단일 문서에 포함하거나, 데이터를 정규화하고 식별자를 사용하여 참조(예: 관계형 데이터베이스)할 수 있습니다.

MongoDB Atlas 는 최신 애플리케이션 관리를 위한 포괄적인 기능을 제공하는 클라우드 데이터 개발 플랫폼입니다. 예를 들어 내장된 고가용성 및 내결함성, 자동화된 백업 및 복원, 수직 및 수평 확장성, 자동화된 서버 프로비저닝, 설정, 구성 및 패치 적용 등입니다.

MongoDB의 풍부한 집계 프레임워크 와 Python의 광범위한 과학 라이브러리는 사기 탐지, 실시간 데이터 분석, 대상 고객 추천, 사용자 행동 분석 등 오늘날의 AI 및 머신 러닝 사용 사례에 가장 적합합니다. MongoDB Atlas를 사용하면 Atlas Search, MongoDB Charts, App Services, BI 도구 Connector, data federation, 스트림 처리 등과 같은 추가 기능에 액세스할 수 있습니다.

FastAPI 백엔드에서 MongoDB 연결을 생성하려면 URL을 설정한 후 MongoDB 데이터베이스 컬렉션을 열면 됩니다.

연결을 설정하고 데이터베이스를 가져오면 이를 사용하여 적절한 메서드로 모든 CRUD 작업을 수행할 수 있습니다(예시: FastAPI 섹션에서 사용한 update_one() 메서드).

애플리케이션 구축에 필요한 엔드 투 엔드 코드 및 설정에 대한 지침이 필요한 TODO 애플리케이션 을 사용하여 완전한 FARM 스택 애플리케이션을 만들 수 있습니다.

Python 개발자를 위한 풀스택 FastAPI Python 앱 생성기

MongoDB는 Python 개발자를 위해 풀스택 FastAPI MongoDB 앱 생성기를 제공합니다. 이전에는 Python 개발자가 인증, 테스트, 통합과 같은 구성 요소를 Python 애플리케이션에 수동으로 통합해야 했습니다. MongoDB 풀스택 FastAPI 앱 생성기는 잘 구조화된 앱 스켈레톤을 제공하므로 초기 프로젝트 설정이 간단합니다. 앱 생성기의 주요 기능은 다음과 같습니다.

  • 프론트엔드와 백엔드 구성 요소를 통합한 완전한 웹 애플리케이션 스택.
  • 인증 시스템 내장.
  • 운영 및 모니터링 도구.

FARM 스택 vs MERN 스택

FARM과 MERN 스택 모두 높은 유연성과 성능을 제공하는 React와 MongoDB를 사용합니다. 차이점은 Node.js와 FastAPI를 사용하는 데 있으며, 두 스택 중 하나를 선택하는 것은 비즈니스 사용 사례나 개인적인 선호도에 따라 달라집니다.

  • MERN 스택은 개발자가 백엔드와 프론트엔드 모두를 위해 JavaScript 코드를 학습하고 작성하기만 하면 되지만, FARM 스택의 경우 Python도 학습해야 하기 때문에 학습 시간이 짧습니다. 또한 MERN 스택은 통합된 경험과 더 나은 코드 가독성 및 유지 관리 용이성을 제공합니다.
  • Node.js는 더 많은 커뮤니티 지원을 받고 있으며 다양한 사용 사례와 도메인에 대한 풍부한 문서를 보유하고 있습니다.

즉, FastAPI는 데이터 분석 및 데이터 과학 지원과 관련하여 훨씬 더 나은 점수를 받았습니다.

  • Python은 데이터 과학 및 머신 러닝 작업을 위한 방대한 고급 라이브러리 에코시스템을 갖추고 있어 웹 애플리케이션에 분석 및 데이터 처리 파이프라인을 쉽게 추가할 수 있습니다. Node.js는 이러한 라이브러리를 지원하지만, Python 라이브러리만큼 포괄적이지 않습니다.
  • FastAPI의 직관적인 API 설계, 자동 OpenAPI 문서 생성 및 내장 데이터 유효성 검사 지원을 통해 API 개발을 간소화하고 모든 기술 수준의 개발자가 액세스할 수 있습니다. Node.js는 콜백 기반 프로그래밍의 개념과 종속성 관리의 복잡성으로 인해 초보자가 학습하기 어려울 수 있습니다.
  • Python은 엄격하게 형식이 지정되는 반면, JavaScript는 느슨한 형식이기 때문에 런타임 오류가 발생할 수 있습니다.

FARM 스택 사용 사례

FARM 스택은 다양한 도메인과 산업의 범위가 넓은 사용 사례에 적합하며, 그 중 일부는 다음과 같습니다.

  • 동적이고 상호작용적인 웹사이트 및 웹 페이지 구축: 프론트엔드에서 React는 사용자에게 대화형 실시간 경험을 제공하며, 백엔드 FastAPI를 사용하면 인증, 권한 부여 및 트랜잭션을 처리할 수 있는 강력한 REST API를 만들 수 있습니다. MongoDB는 유연한 스키마 덕분에 전자상거래 플랫폼 및 콘텐츠 관리 시스템과 같이 진화하는 애플리케이션 요구 사항과 다양한 데이터 구조를 쉽게 수용할 수 있습니다.
  • AI 및 데이터 분석: MongoDB 집계 프레임워크와 Python 데이터 과학 라이브러리의 강력한 기능을 사용하는 FARM 스택은 개발자가 데이터 처리, Real-Time Analytics, 실용적인 인사이트 도출, 시각적 보고서 생성을 위한 시스템을 구축할 수 있는 강력한 기반을 제공합니다. React 프론트엔드는 대화형 대시보드 및 데이터 탐색에 활용할 수 있습니다.
  • IoT(Internet of Things) 애플리케이션: React를 사용하여 개발자는 원격 모니터링 및 제어를 위한 원활한 인터페이스를 만들 수 있습니다. FastAPI는 데이터 수집, 장치 통신, 라우팅과 같은 서비스를 처리합니다. MongoDB는 센서 데이터, 메타데이터 및 로그를 저장할 수 있으며 분석 및 이상 징후 감지에 사용할 수 있습니다.
  • 채팅 애플리케이션: React의 실시간 렌더링 기능을 사용하면 채팅 에이전트와 사용자 간의 원활한 실시간 커뮤니케이션이 가능합니다. FastAPI의 라우팅 기능과 웹소켓 지원을 통해 HTTP 인증, 실시간 메시징 및 양방향 통신을 위한 요청을 처리할 수 있습니다. MongoDB의 유연하고 확장 가능한 아키텍처는 동적이고 진화하는 채팅 데이터를 처리하는 데 매우 적합합니다.

요약

FARM 스택은 유망한 기술 스택이며 매우 유연하고 확장 가능한 성능이 뛰어난 애플리케이션을 빌드할 수 있는 강력한 기능을 제공합니다. 앞으로 개발자 경험과 생산성, 자동화, 다른 기술과 통합하여 새로운 사용 사례와 애플리케이션을 촉진하는 데 중점을 두면서 기술에서 더 많은 혁신과 발전을 기대할 수 있습니다. FARM 스택을 시작하려면 MongoDB.live 튜토리얼을 시청하세요.

자주 묻는 질문

MongoDB Atlas 시작하기

무료 체험판 다운로드
데이터베이스 일러스트.