Добавить в корзинуПозвонить
Найти в Дзене

Микросервисы в разработке на Python с Django и FastAPI

Микросервисы — это подход к проектированию приложений, при котором система делится на отдельные сервисы, каждый из которых выполняет конкретную задачу. В контексте Python, популярными инструментами для создания микросервисов являются Django и FastAPI. Рассмотрим, как можно использовать микросервисы на практике. Микросервисы подходят, если: Рассмотрим маркетплейс с тремя микросервисами: Каталог отвечает за управление товарами и их отображение. Шаги создания: Создайте проект 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: #
Оглавление

Микросервисы — это подход к проектированию приложений, при котором система делится на отдельные сервисы, каждый из которых выполняет конкретную задачу. В контексте Python, популярными инструментами для создания микросервисов являются Django и FastAPI. Рассмотрим, как можно использовать микросервисы на практике.

Зачем микросервисы?

Микросервисы подходят, если:

  • Ваше приложение растёт и его трудно поддерживать.
  • Вам нужно масштабировать отдельные части приложения.
  • Разработкой занимаются разные команды.

Основные принципы

  1. Разделение ответственности: каждый сервис выполняет одну задачу.
  2. Автономность: сервисы не зависят друг от друга напрямую.
  3. Взаимодействие через API: сервисы общаются через HTTP (REST, GraphQL) или gRPC.

Пример реализации

Рассмотрим маркетплейс с тремя микросервисами:

  1. Каталог товаров (Django).
  2. Обработка заказов (FastAPI).
  3. Сервис оплаты (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 для взаимодействия между ними.