Микросервисы — это подход к проектированию приложений, при котором система делится на отдельные сервисы, каждый из которых выполняет конкретную задачу. В контексте Python, популярными инструментами для создания микросервисов являются Django и FastAPI. Рассмотрим, как можно использовать микросервисы на практике.
Зачем микросервисы?
Микросервисы подходят, если:
-
Ваше приложение растёт и его трудно поддерживать.
-
Вам нужно масштабировать отдельные части приложения.
-
Разработкой занимаются разные команды.
Основные принципы
-
Разделение ответственности: каждый сервис выполняет одну задачу.
-
Автономность: сервисы не зависят друг от друга напрямую.
-
Взаимодействие через API: сервисы общаются через HTTP (REST, GraphQL) или gRPC.
Пример реализации
Рассмотрим маркетплейс с тремя микросервисами:
-
Каталог товаров (Django).
-
Обработка заказов (FastAPI).
-
Сервис оплаты (FastAPI).
Каталог товаров (Django)
Каталог отвечает за управление товарами и их отображение.
Шаги создания:
Создайте проект Django:
django-admin startproject catalog_service
cd catalog_service
Создайте приложение для управления товарами:
python manage.py startapp products
Определите модель товара:
# products/models.py
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=255)
description = models.TextField()
price = models.DecimalField(max_digits=10, decimal_places=2)
in_stock = models.BooleanField(default=True)
def __str__(self):
return self.name
Настройте маршруты для API:
# products/views.py
from django.http import JsonResponse
from .models import Product
def product_list(request):
products = Product.objects.all().values()
return JsonResponse(list(products), safe=False)
# catalog_service/urls.py
from django.urls import path
from products.views import product_list
urlpatterns = [
path('api/products/', product_list, name='product_list'),
]
Обработка заказов (FastAPI)
Этот сервис отвечает за создание и управление заказами.
Шаги создания:
Установите FastAPI и Uvicorn:
pip install fastapi uvicorn
Создайте файл orders_service.py
:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Order(BaseModel):
product_id: int
quantity: int
orders = []
@app.post("/api/orders/")
def create_order(order: Order):
orders.append(order)
return {"message": "Order created", "order": order}
@app.get("/api/orders/")
def get_orders():
return orders
Запустите сервер:
uvicorn orders_service:app --reload
Сервис оплаты (FastAPI)
Этот сервис взаимодействует с платёжными системами.
Шаги создания:
Создайте файл payment_service.py
:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Payment(BaseModel):
order_id: int
amount: float
@app.post("/api/payments/")
def process_payment(payment: Payment):
return {"message": "Payment processed", "payment": payment}
Запустите сервер:
uvicorn payment_service:app --reload
Взаимодействие между сервисами
Для взаимодействия микросервисов используйте HTTP-запросы. Например, сервис обработки заказов может отправлять запросы в сервис оплаты:
import requests
response = requests.post(
"http://localhost:8000/api/payments/",
json={"order_id": 1, "amount": 100.0}
)
print(response.json())
Заключение
Микросервисы на Python с использованием Django и FastAPI позволяют создавать гибкие и масштабируемые приложения. Этот подход подходит для сложных проектов, где каждая часть системы может быть разработана, развернута и масштабирована независимо. Начните с разделения вашей системы на модули и создания API для взаимодействия между ними.
Написать комментарий