Phase 1 · Chapter 1.04
Flask vs FastAPI
দুটোই Python web framework। কিন্তু ML serving-এ কোনটা কখন বেছে নেবেন — সেটাই এই chapter-এর target।
Hook
পুরোনো বনাম নতুন
Flask 2010 — synchronous, minimalist, ecosystem বিশাল। FastAPI 2018 — async-first, typed, modern. প্রশ্ন হলো: আপনার ML service-এর requirement কী?
Concept
Side-by-side comparison
| Aspect | Flask | FastAPI |
|---|---|---|
| Async support | Limited (2.x) | Native |
| Type hints | Optional | First-class |
| Validation | Manual | Pydantic auto |
| Docs | Extensions দিয়ে | Auto Swagger |
| Performance | Moderate | High (Starlette) |
| Ecosystem maturity | Very mature | Mature |
| Learning curve | Gentle | Moderate |
Code
একই endpoint, দুই framework
pythonproduction
# Flask
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.post("/predict")
def predict():
data = request.get_json()
if "x" not in data:
return jsonify({"error": "x required"}), 400
return jsonify({"y": sum(data["x"])}) pythonproduction
# FastAPI
from fastapi import FastAPI
from pydantic import BaseModel
class In(BaseModel):
x: list[float]
app = FastAPI()
@app.post("/predict")
async def predict(payload: In):
return {"y": sum(payload.x)}ব্যাখ্যা: FastAPI-তে validation, typing এবং async free — Flask-এ একই জিনিস করতে extension ও manual code লাগে।
Intuition
কখন Flask, কখন FastAPI
Flask বেছে নিন যখন
- Legacy system বা existing Flask team।
- Server-rendered HTML app।
- খুবই simple internal tool।
FastAPI বেছে নিন যখন
- New ML/AI microservice।
- High throughput, async I/O দরকার।
- Strict request/response contract।
- Auto API docs দরকার।
Benchmark
Rough throughput (single worker)
- Flask (sync) — ~2k req/s lightweight JSON echo।
- FastAPI (async) — ~10k+ req/s একই endpoint।
- Heavy CPU model হলে পার্থক্য কমে — কারণ bottleneck inference।
Numbers indicative — hardware ও payload-ভেদে variable।
Real-world
Industry decision
- নতুন ML team বেশিরভাগ default-এ FastAPI বেছে নিচ্ছে।
- Flask এখনো admin dashboard, internal CRUD-এ জনপ্রিয়।
- Hybrid: Flask main app + FastAPI inference microservice — common pattern।
Common Mistakes
Decision-এ যে ভুল
- "Async = fast" ভেবে CPU-bound কাজ async-এ দেওয়া।
- Framework choice-কে performance issue-এর প্রধান কারণ ভাবা — usually model/IO bottleneck।
- Team familiarity ignore করে hype-driven decision।
Practice Tasks
অনুশীলন
- একই iris predictor Flask ও FastAPI-তে implement করুন।
wrkবাlocustদিয়ে throughput compare করুন।- Code line count ও validation effort তুলনা করুন।
Mini Project
Mini Project — Framework Benchmark Report
একই model দুই framework-এ host করুন। 1k concurrent request পাঠিয়ে latency p50, p95, p99 এবং throughput measure করুন। Markdown report বানান — কোন situation-এ কোনটা বেছে নেবেন সেই recommendation সহ।
Summary
Phase 1 শেষ
- Serialization → REST contract → FastAPI implementation → framework choice।
- আপনার model এখন network-এ accessible, typed এবং documented।
- পরবর্তী Phase: Containerization — Docker দিয়ে portable packaging।
← Roadmap-এ ফিরুন
পরবর্তী: Phase 2 — Docker Basicsশীঘ্রই