Problem Statement
When a service evolves, changing its API without versioning breaks existing clients. This causes failures and forces all clients to upgrade simultaneously, leading to downtime and poor user experience.
This diagram shows clients calling different API versions routed by an API Gateway to corresponding service versions.
### Before (No versioning, breaking change) from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/user') def get_user(): # Returns user name as string return 'Alice' ### After (With versioning via URL path) from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/v1/user') def get_user_v1(): # Old API returns name string return 'Alice' @app.route('/v2/user') def get_user_v2(): # New API returns JSON object return jsonify({'name': 'Alice', 'id': 123})