제가 프론트엔드를 ‘서빙 직원’과 ‘홀의 인테리어’에 비유했다면, 백엔드는 보이지 않는 곳에서 묵묵히 일하는 ‘주방과 요리사’로 비유 했습니다.
손님(사용자)이 서빙 직원(프론트엔드/React)에게 “비트코인 1년 치 차트와 20일 이동평균선 데이터 주세요!”라고 주문을 하면, 서빙 직원은 주방(백엔드)으로 주문서를 넘깁니다. 그러면 요리사(백엔드 언어 및 프레임워크)는 냉장고(데이터베이스)에서 날것의 식재료(Raw Data)를 꺼내어, 맛있게 요리(데이터 가공 및 계산)한 뒤, 서빙 직원에게 내어주는 역할을 합니다.
바이브 코딩을 지휘하는 우리는 모든 요리법(문법)을 달달 외울 필요는 없습니다. 하지만 어떤 요리사가 어떤 요리에 특화되어 있는지는 알아야 내 식당(서비스)에 맞는 셰프를 고를 수 있습니다.
여기에 추가적으로 백엔드는 주식데이터를 무료로 제공하는 업체에서 주어지는 데이터를 수집하고 가공하는 역할까지 합니다. 말 그대로 겉으로 드러나지 않고 거의 모든 작업을 한다고 봅니다.
🌍 글로벌 백엔드 시장의 트렌드 (어떤 요리사가 대세일까?)
최신 백엔드 생태계는 과거처럼 ‘하나의 완벽한 언어’가 모든 것을 덮는 구조에서 벗어나, 서비스의 역할과 특성에 맞춰 언어가 자연스럽게 분업되는 역할(Role) 중심의 트렌드로 정착하고 있습니다. 각 백엔드 언어와 프레임워크의 최신 트렌드를 정리해 드립니다.
이러한 백엔드 트렌드에서도 우리가 선택한 조합은 Python+FastAPI입니다. 가장 AI친화적이며 간편하고 여러기능을 제공합니다.
이러한 백엔드의 기술적 스택이나 내용을 자세히 알 필요는 없으며 전문 프로그래머가 아니면 너무 어려워 알수도 없습니다.(도전하고 싶다면 말리지는 않습니다.)
그러나 최소한 무슨 기능이 있고 이걸 어디에 적용할 것인지를 알면 좀더 충실하고 풍부한 자료 수집과 가공을 할 수 있을것입니다.
📊 글로벌 백엔드 기술 스택 선호도 및 점유율 트렌드 (복수 응답 기준)
JavaScript (Node.js) ███████████████ ~40% 이상 (스타트업 및 풀스택 주도)
Python (FastAPI 등) ██████████ ~35% 이상 (AI/데이터 표준, TIOBE 1위)
Java (Spring Boot) ███████ ~30% 내외 (엔터프라이즈/대규모 시스템)
PHP (Laravel) ██████ ~20% 내외 (워드프레스 및 전통 웹 생태계)
Go / Kotlin / Rust █████ (클라우드 인프라 및 고성능 특화 분야 급부상)
1. Python + FastAPI / Django (AI와 데이터 시대의 황태자)
최신 트렌드 TIOBE 인덱스에서 꾸준히 1위를 차지하며 글로벌 생태계에서 가장 빠르게 성장하고 있습니다. 기존에는 머신러닝과 데이터 분석 중심이었으나, AI 모델 서빙과 데이터 파이프라인 운영이 필수적으로 변하면서 백엔드 주력 언어로 영역을 넓히고 있습니다.프레임워크 동향 비즈니스 로직 전체를 파이썬으로 짜기보다는, AI 모델 추론 구간과 데이터 가공을 초고속으로 처리하는 FastAPI의 실용성이 극대화되고 있습니다. 우리는 이 책에서 Python + FastAPI를 선택할 것이며 이는 현재 가장 폭발적으로 성장하는 AI 트렌드와 정확히 일치합니다.
2. Java + Spring Boot (엔터프라이즈의 든든한 철옹성)
최신 트렌드대규모 트랜잭션과 안정적인 서비스 운영에 있어서는 여전히 대체 불가능한 주류입니다. 최근에는 JDK 21의 가상 스레드(Virtual Thread) 도입으로 동시성 처리 성능이 획기적으로 개선되었습니다.프레임워크 동향Spring Boot 3로 세대교체가 이루어지며, 최소 요구 사항이 Java 17 이상으로 높아졌습니다. 컨테이너 환경에 맞춰 가동 시간과 메모리를 최적화(CDS 지원)하고, 마이크로미터(Micrometer)를 통한 시스템 관측성(Observability)을 기본 내장하는 등 클라우드 네이티브 운영에 최적화되고 있습니다.
3. TypeScript + Node.js / NestJS (스타트업과 풀스택의 영원한 친구)
최신 트렌드프론트엔드와 백엔드를 하나의 언어(TypeScript)로 통일하여 커뮤니케이션 비용을 줄이려는 프론트엔드 주도 조직이나 속도 중심의 SaaS 기업에서 널리 채택됩니다.프레임워크 동향기존의 가벼운 Express를 넘어, Spring Boot와 유사한 구조(의존성 주입, 데코레이터 등)를 제공하여 대규모 앱에 적합한 NestJS의 채택이 급격히 늘고 있습니다.
🎯 왜 우리는 ‘Python + FastAPI’를 선택했는가?
이 책의 목표인 투자 마켓 분석 서비스(firemarkets.net)를 만들기 위해 수많은 백엔드 중 Python + FastAPI를 최종 선정했습니다. 그 이유는 명확합니다.
하나, 데이터 요리의 최강자 (Python)
계획한 서비스는 주식/코인의 시세 데이터를 가져오고(API, 크롤링), 이동평균선을 계산하고(Pandas 라이브러리), 향후 추세를 예측(AI/Scikit-learn)해야 합니다. 이 모든 것을 가장 잘하는 언어가 바로 파이썬입니다. PHP나 Node.js로 수학적 계산을 하려면 굉장히 고통스럽습니다.
둘, Next.js와의 완벽한 분업 (FastAPI)
프론트엔드로 선정한것은 SEO 친화적인 Next.js입니다. 즉, 백엔드는 HTML 화면을 렌더링할 필요 없이 순수하게 ‘데이터(JSON)’만 빠르게 프론트엔드에 던져주면 됩니다. FastAPI는 이름 그대로(Fast) API를 만드는 데 최적화되어 있으며 속도가 매우 빠릅니다.
셋, AI와의 찰떡궁합 (바이브 코딩 최적화):
FastAPI는 코드가 매우 간결하고 직관적입니다. Cursor나 Antigravity 같은 AI에게 “비트코인 시세 가져오는 API 만들어줘”라고 했을 때, 가장 버그 없이 깔끔한 코드를 뱉어내는 프레임워크 중 하나입니다.
넷, 자동 문서화 (Swagger UI):
FastAPI는 코드를 짜면 ‘API 사용 설명서(Swagger)’를 자동으로 예쁘게 만들어줍니다. 지휘자(나)가 서빙 직원(Next.js)과 요리사(FastAPI) 사이의 연결을 확인할 때 이 자동 문서화 기능은 엄청난 시간 절약을 가져다줍니다.
🤖 실전! 프로젝트 DB 읽기
✨ 사용자의 의도(Vibe): “postgres-markets 컨테이너를 읽을수 있는 backend컨테이너를 만드는데 “Python + FastAPI”를 이용해줘”
postgres-markets ,backend,Python + FastAPI가 꼭 들어가야 합니다.
💻 AI가 생성한 코드 (Syntax) 및 결과
- backend/requirements.txt
fastapi==0.111.0uvicorn==0.30.0sqlalchemy==2.0.30psycopg2-binary==2.9.9pydantic==2.7.1python-dotenv==1.0.1
- backend/Dockerfile
FROM python:3.11-slimWORKDIR /app# 시스템 의존성 설치 (psycopg2 등을 위해 필요할 수 있음)RUN apt-get update && apt-get install -y libpq-dev gcc && rm -rf /var/lib/apt/lists/*COPY requirements.txt .RUN pip install --no-cache-dir -r requirements.txtCOPY . .ENV DATABASE_URL="postgresql://root:rootpassword@postgres:5432/markets"CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]
-
backend/app/database.py : DB 연결을 설정하는 파일입니다. 컨테이너 환경에 맞게 DATABASE_URL을 주입받아 처리합니다.
-
backend/app/models.py : DB 스키마(asset_types, assets, ohlcv_data)와 매핑되는 SQLAlchemy 모델들을 선언했습니다.
-
backend/app/main.py : FastAPI 인스턴스를 초기화하고, 간단하게 자산(assets)이나 가격(ohlcv) 정보를 조회할 수 있는 엔드포인트를 구현했습니다.
각 AI모델에 따라 조금식 폴더이름이라던지 설정코드등은 다를수 있습니다. 그러나 “API 문서 접근: http://localhost:8000/docs” 꼭 나와 줘야 합니다. 만약에 나오지 않으면 FastAPI가 아닐 확률이 높습니다.
docs페이지로 들어가면

이렇게 우리가 만든 테이블을 참조할수 있는 백엔드 API(Application Programming Interface)를 볼수 있습니다.
이전에 우리는 더미데이터를 넣어 놓았기에 한번 확인해 봅니다.
-
/assets/의 아래 화살표를 클릭
-
[Try it out] 버튼을 클릭
- Execute 버튼 클릭
- 아래와 같은 결과가 나오면 성공입니다.
[ { "asset_id": 2, "ticker": "BTCUSDT", "name": "Bitcoin", "exchange": "Binance", "currency": "USDT", "is_active": true, "description": null }, … ‘생략’ ]
Curl 에 있는
curl -X 'GET' 'http://localhost:8000/assets/?skip=0&limit=100' -H 'accept: application/json'
명령을 안티그래피티 터미널에 붙여넣기 해도 결과가 같게 나옵니다.
주문서 (API와 JSON): 통신 규약
앞 챕터의 결과가 나온 값
[ { "asset_id": 2, "ticker": "BTCUSDT", "name": "Bitcoin", "exchange": "Binance", "currency": "USDT", "is_active": true, "description": null }, { "asset_id": 3, "ticker": "ETHUSDT", "name": "Ethereum", "exchange": "Binance", "currency": "USDT", "is_active": true, "description": null }, … ‘생략’ ]
이 무슨 의미 일까요 자세히 보면 직관적으로 무엇을 의미하는지 보입니다. 아주 단순한 데이터 모음입니다. 이러한 데이터 모임의 규약을 Json이라고 합니다.
💡 JSON: 요리사가 가공한 데이터를 텍스트 형식으로 서빙 직원에게 던져주는 ‘표준 주문서’입니다.
백엔드(주방)에서 데이터를 지지고 볶아 맛있는 요리를 완성했다 며, 이제 매장(프론트엔드)으로 내보낼 준비를 해야 합니다. 그런데 주방장(백엔드, 주로 파이썬)과 홀 서빙 직원(프론트엔드, 주로 자바스크립트)은 서로 다른 언어를 쓸 때가 많습니다.
이 둘이 완벽하게 소통하기 위해 사용하는 ‘표준’이자 ‘공통어’가 바로 JSON(제이슨, JavaScript Object Notation)입니다. 바이브 코딩을 하는 우리가 복잡한 JSON 문법을 달달 외울 필요는 없습니다.
그저 “데이터를 주고받을 때는 무조건 JSON이라는 규격을 쓴다”는 사실만 기억하면 됩니다.
데이터베이스에서 꺼낸 거친 데이터들을 백엔드가 JSON이라는 깔끔한 도시락통에 담아 프론트엔드로 던져주면, 프론트엔드는 그 도시락통을 열어 손님 웹 브라우저에 예쁜 차트나 표로 그려주는 원리입니다. 즉, 백엔드를 완성한다는 것은 결국 ‘프론트엔드의 요청을 받아 올바른 JSON 데이터를 뱉어내는 출구를 만든다’는 뜻입니다.
우리의 시스템 아키텍처
프론트엔드는 이렇게 받은 Json파일로 화면에 차트를 그려줍니다.