হোম/Roadmap/Chapter 1.04
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

AspectFlaskFastAPI
Async supportLimited (2.x)Native
Type hintsOptionalFirst-class
ValidationManualPydantic auto
DocsExtensions দিয়েAuto Swagger
PerformanceModerateHigh (Starlette)
Ecosystem maturityVery matureMature
Learning curveGentleModerate
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

অনুশীলন

  1. একই iris predictor Flask ও FastAPI-তে implement করুন।
  2. wrk বা locust দিয়ে throughput compare করুন।
  3. 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শীঘ্রই