Python
8 bài viết
Vì sao team dữ liệu nên phục vụ dữ liệu qua API thay vì chia sẻ file/DB. Nền tảng REST: resource, HTTP method, status code, thiết kế URL/versioning, và lý do chọn FastAPI cho các bài sau.
Nền tảng FastAPI cho data service: path operation, path/query parameter, request body với Pydantic, response_model, async def, tài liệu OpenAPI tự sinh, APIRouter và xử lý lỗi. Kết bằng endpoint hoàn chỉnh trả lịch sử giao dịch theo account_id có phân trang.
Pydantic v2 là nền tảng validation của FastAPI. Bài này đi từ BaseModel, Field, kiểu nâng cao (Decimal cho tiền tệ, EmailStr, Enum, UUID), validator luật nghiệp vụ, nested model, serialization và response_model lọc field nhạy cảm, đến việc tách schema request/response/DB và quản lý cấu hình bằng pydantic-settings.
Kết nối Postgres trong FastAPI phục vụ dữ liệu: Depends cấp và dọn session, SQLAlchemy 2.0 Core/ORM và driver async asyncpg, connection pooling, truy vấn tham số hoá chống SQL injection, phân trang offset và keyset, map kết quả sang response_model, transaction và ánh xạ lỗi DB sang HTTP.
Phân biệt authentication và authorization, các cơ chế API key/Basic/OAuth2+JWT, cách dùng security utilities của FastAPI với scope và RBAC, băm mật khẩu, cùng các biện pháp vận hành TLS/CORS/rate limiting/audit log. Điểm qua OWASP API Security Top 10 và quản lý secret cho một API dữ liệu khách hàng ngân hàng.
Mô hình async của FastAPI/Starlette và cách không chặn event loop, client async (asyncpg, httpx), BackgroundTasks, caching (Redis/ETag), trả dữ liệu lớn bằng StreamingResponse và phân trang keyset, nén gzip, giới hạn kích thước/timeout, cùng cách đo và chọn số uvicorn worker cho endpoint xuất giao dịch nặng.
Kiểm thử API với TestClient/httpx AsyncClient và pytest (fixture, parametrize), phân tầng unit/integration với test DB rollback, mock dependency qua dependency_overrides và đo coverage. Đồng thời tuỳ biến OpenAPI, export openapi.json cho codegen, và chiến lược versioning/deprecation để giữ hợp đồng dữ liệu ổn định cho nhiều nhóm dùng.
Bài tổng kết series: đưa data API FastAPI lên production. Từ ASGI server và số worker, đóng gói Docker multi-stage non-root, triển khai Kubernetes với probe/HPA/secret, tới observability (log có request id, metrics Prometheus, tracing) và vận hành (graceful shutdown, migration an toàn, blue-green/canary). Kết bằng checklist go-live cho API dữ liệu ngân hàng.