логотип PurpleSchool
логотип PurpleSchool

Примеры микросервисов в реальных кейсах

Автор

Олег Марков

Введение

Микросервисы применяются для разделения крупного приложения на независимые компоненты. Каждый сервис решает отдельную задачу, что облегчает разработку, тестирование и масштабирование. Рассмотрение конкретных примеров помогает понять принципы их проектирования и взаимодействия. В этой статье мы разберемся в практических примерах микросервисов и приведем примеры кода.

Примеры микросервисов

1. Сервис управления пользователями

Обрабатывает регистрацию, аутентификацию и авторизацию, хранит данные пользователей и обеспечивает безопасный доступ к другим сервисам.

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel

app = FastAPI()

users_db = {}

class User(BaseModel):
    username: str
    password: str

@app.post("/register")
def register_user(user: User):
    if user.username in users_db:
        raise HTTPException(status_code=400, detail="User already exists")
    users_db[user.username] = user.password
    return {"status": "user created", "username": user.username}

@app.post("/login")
def login(user: User):
    if users_db.get(user.username) != user.password:
        raise HTTPException(status_code=401, detail="Invalid credentials")
    return {"status": "login successful", "username": user.username}

2. Сервис заказов

Хранит информацию о заказах, связывается с сервисом пользователей и платежей.

orders_db = []

@app.post("/order")
def create_order(username: str, product_id: int, quantity: int):
    order = {"username": username, "product_id": product_id, "quantity": quantity}
    orders_db.append(order)
    return {"status": "order created", "order": order}

3. Сервис платежей

Интегрируется с платёжными системами и хранит историю транзакций.

payments_db = []

@app.post("/pay")
def make_payment(username: str, amount: float):
    payment = {"username": username, "amount": amount, "status": "completed"}
    payments_db.append(payment)
    return {"status": "payment successful", "payment": payment}

Эти сервисы могут взаимодействовать через REST API или асинхронные очереди сообщений.

Для более глубокого понимания архитектуры и практики микросервисов с примерами проектов, если вы хотите детальнее погрузиться в практику микросервисов — приходите на наш курс Microservices. На курсе 94 урока и 5 упражнений, AI-тренажёры для безлимитной практики с кодом и задачами 24/7, решение задач с живым ревью наставника, еженедельные встречи с менторами.

4. Сервис уведомлений

Отправляет уведомления по email или push на основе событий из других микросервисов.

def send_email_notification(user_email: str, message: str):
    # Здесь может быть интеграция с SMTP или внешним сервисом
    print(f"Email to {user_email}: {message}")

def notify_order_created(username: str, order_id: int):
    send_email_notification(f"{username}@example.com", f"Ваш заказ {order_id} создан")

5. Сервис аналитики

Собирает данные от других сервисов и строит отчеты о поведении пользователей и работе системы.

analytics_db = []

def log_event(service_name: str, event: dict):
    analytics_db.append({"service": service_name, "event": event})

log_event("orders", {"order_id": 1, "action": "created"})

6. Сервис рекомендаций

Использует алгоритмы машинного обучения для персонализированных рекомендаций.

def recommend_products(user_id: str):
    # Простейший пример: возвращаем топ-3 продукта
    recommendations = [101, 102, 103]
    return {"user_id": user_id, "recommendations": recommendations}

Частые ошибки

  • Несоблюдение принципа автономности микросервисов;
  • Отсутствие централизованного логирования и мониторинга;
  • Смешивание бизнес-логики с инфраструктурной;
  • Недостаточное тестирование интеграций и API.

Частозадаваемые вопросы

Все ли части приложения нужно разбивать на микросервисы? Не обязательно. Малые и средние проекты часто используют монолит или гибридный подход.

Как контролировать взаимодействие микросервисов? Через API Gateway, очереди сообщений и централизованное логирование.

Заключение

Примеры микросервисов демонстрируют, как крупные приложения делятся на независимые компоненты, упрощая масштабирование и поддержку.

Использование этих практик ускоряет разработку и делает систему более устойчивой к изменениям. Для закрепления навыков проектирования и внедрения микросервисов в реальных кейсах рекомендуем курс Microservices. В первых 3 модулях курса доступно бесплатное содержание, что позволяет попробовать практические решения на практике и понять структуру курса до покупки полного доступа.

Стрелочка влевоПринципы работы микросервисовОсновные проблемы микросервисовСтрелочка вправо

Постройте личный план изучения Microservices до уровня Middle — бесплатно!

Microservices — часть карты развития Backend

  • step100+ шагов развития
  • lessons30 бесплатных лекций
  • lessons300 бонусных рублей на счет

Бесплатные лекции

Все гайды по Microservices

Взаимодействие микросервисов в распределённых приложенияхСобытийно управляемые микросервисыRabbitMQ и микросервисыОркестрация микросервисов в продакшенеМикросервисы и API взаимодействиеХореография микросервисов — подход без оркестратораВзаимодействие микросервисов в распределённых системахKafka в микросервисной архитектуреИнтеграция микросервисов в сложных системахHTTP запросы внутри микросервисовgRPC микросервисы и высокопроизводительное взаимодействиеGateway микросервисы — маршрутизация запросов
Открыть базу знаний

Лучшие курсы по теме

изображение курса

Микросервисы

Антон Ларичев
Гарантия
Бонусы
иконка звёздочки рейтинга4.8
3 999 ₽ 6 990 ₽
Подробнее
изображение курса

Nest.js с нуля

Антон Ларичев
AI-тренажеры
Практика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.6
3 999 ₽ 6 990 ₽
Подробнее
изображение курса

Docker и Ansible

Антон Ларичев
AI-тренажеры
Гарантия
Бонусы
иконка звёздочки рейтинга4.8
3 999 ₽ 6 990 ₽
Подробнее

Отправить комментарий