1
Implementing Horizontal Scaling with Microservices, Docker, and NGINX in a SaaS
Environment
Student’s Name
Institution
Course
Professor
Date
, 2
Implementing Horizontal Scaling with Microservices, Docker, and NGINX in a SaaS
Environment
1) Flask microservice (containerizable)
app/main.py
from flask import Flask, jsonify, request
from sqlalchemy import create_engine, text
import os
app = Flask(__name__)
DB_URI = os.getenv("DB_URI", "mysql+pymysql://user:password@db:3306/appdb")
POOL_SIZE = int(os.getenv("DB_POOL_SIZE", "10"))
engine = create_engine(DB_URI, pool_size=POOL_SIZE, max_overflow=POOL_SIZE,
pool_pre_ping=True)
@app.get("/health")
def health():
with engine.connect() as conn:
conn.execute(text("SELECT 1"))
return jsonify(status="ok")
@app.get("/users")
def list_users():
# demo endpoint; assumes a 'users' table exists
limit = int(request.args.get("limit", 10))
with engine.connect() as conn:
rows = conn.execute(text("SELECT id, email FROM users ORDER BY id LIMIT :lim"),
{"lim": limit}).mappings().all()
Implementing Horizontal Scaling with Microservices, Docker, and NGINX in a SaaS
Environment
Student’s Name
Institution
Course
Professor
Date
, 2
Implementing Horizontal Scaling with Microservices, Docker, and NGINX in a SaaS
Environment
1) Flask microservice (containerizable)
app/main.py
from flask import Flask, jsonify, request
from sqlalchemy import create_engine, text
import os
app = Flask(__name__)
DB_URI = os.getenv("DB_URI", "mysql+pymysql://user:password@db:3306/appdb")
POOL_SIZE = int(os.getenv("DB_POOL_SIZE", "10"))
engine = create_engine(DB_URI, pool_size=POOL_SIZE, max_overflow=POOL_SIZE,
pool_pre_ping=True)
@app.get("/health")
def health():
with engine.connect() as conn:
conn.execute(text("SELECT 1"))
return jsonify(status="ok")
@app.get("/users")
def list_users():
# demo endpoint; assumes a 'users' table exists
limit = int(request.args.get("limit", 10))
with engine.connect() as conn:
rows = conn.execute(text("SELECT id, email FROM users ORDER BY id LIMIT :lim"),
{"lim": limit}).mappings().all()