Либо ваша задача небольшая, либо вы можете разбить ее на более мелкие задачи. А небольшая задача идеально подходит для микросервиса.

Дизайн программного обеспечения является важным этапом в разработке программного обеспечения. Подход к проектированию может повлиять на весь проект и на то, как вы справляетесь с различными требованиями.

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

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

Микросервисная архитектура

Архитектура микросервисов — это подход к разработке программного обеспечения, который разбивает большое приложение на независимые службы, каждая из которых предназначена для удовлетворения конкретных бизнес-требований.

instagram viewer

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

В распределенной системе серверные узлы развертывают и выполняют микросервисные приложения как отдельные процессы — взаимодействуют друг с другом с помощью коммуникационных протоколов, таких как HTTP, или через брокеры сообщений. как RabbitMQ.

По сути, такой архитектурный подход позволяет службам сохранять свою независимость друг от друга, эффективно работая в программной системе.

В этом руководстве мы проведем вас через реализацию простого пользовательского микросервиса, который управляет пользовательскими данными с помощью Flask и PostgreSQL.

Настроить базу данных PostgreSQL

Для начала установите PostgreSQL. Если у вас не установлен PostgreSQL, вы можете узнать как установить PostgreSQL в Windows или как установить PostgreSQL на macOS.

Кроме того, вы можете настроить удаленная база данных PostgreSQL пример.

В этом руководстве будет использоваться уровень бесплатного пользования Render для настройки базы данных PostgreSQL. Следуйте этим инструкциям, чтобы развернуть экземпляр базы данных PostgreSQL на Render:

  1. Направляйтесь к Сайт рендера, зарегистрируйте учетную запись и войдите в свой панель приборов страница.
  2. На странице панели управления из списка отображаемых служб выберите службу PostgreSQL.
  3. На странице настроек базы данных заполните необходимые данные и обязательно выберите бесплатный уровеньи, наконец, нажмите Создать базу данных.

Вы можете найти код этого проекта в этом Репозиторий GitHub.

Создание микросервиса Flask

  1. В вашем терминале создайте новый каталог и перейдите в него:
    mkdir фляга-микросервис
    cd flask-микросервис
  2. Далее установите виртуальная среда, чтобы создать изолированную виртуальную среду разработки.
    пип установить виртуалэнв
  3. Создайте в своем проекте виртуальную среду:
    виртуальный
  4. Наконец, активируйте виртуальную среду.
    # Окна: 
    .\venv\скрипты\активировать
    # Unix или MacOS:
    источник venv/bin/активировать

Установите необходимые пакеты

  1. Создать новый требования.txt файл в корневом каталоге и добавьте эти пакеты:
    колба
    psycopg2-двоичный
    алхимия
  2. Далее устанавливаем пакеты.
    pip install -r требования.txt

Создать Flask-сервер

В корневом каталоге создайте новый файл: service.py, и следующий код:

  1. Сделайте следующий импорт:
    от колба Импортировать Фласк, запрос, jsonify
    от алхимия Импортировать create_engine, столбец, целое число, строка
    от sqlalchemy.orm Импортировать создатель сессий
    от sqlalchemy.ext.declarative Импортировать декларативная_база
    Импортировать psycopg2
  2. Создайте экземпляр Flask и настройте подключение к базе данных.
    приложение = Фляга (__имя__)

    двигатель = создать_двигатель ("postgresql+psycopg2://flask_service_fe0v_user: 4785MhjfkdjfhjfjyUx67O2Nuzjchb2MQIP@dpg-chffjfjdkgfk54d6mb7860-a.oregon-postgres.render.com/flask_service_fe0v")

    Скопируйте URL-адрес внешней базы данных на странице настроек базы данных Render. Мы будем использовать SQLAlchemy create_engine метод и Псикопг2 для настройки подключения к базе данных. Обязательно обновите и замените URL-адрес базы данных в приведенном выше коде URL-адресом вашего собственного экземпляра PostgreSQL, который соответствует формату, указанному выше. Если формат URL-адреса неверен, код выдаст ошибку.
  3. Создайте модель SQLAlchemy для базы данных.
    База = декларативная_база()
    сортПользователь(База):
    __имя_таблицы__ = 'пользователи'
    id = столбец (целое число, primary_key=Истинный)
    имя = Столбец (Строка(50))
    Base.metadata.create_all (движок)
    Распечатать("Таблица "пользователи" успешно создана.")
    Сессия = создатель сессий (движок)
    Код определяет модель данных для таблицы пользователей. После определения модели он создает таблицу, используя SQLAlchemy create_all метод, который берет базу данных объект механизма соединения как параметр. Наконец, он создает экземпляр создатель сеанса используя тот же объект механизма, чтобы обеспечить взаимодействие с базой данных.
  4. Наконец, определите маршруты API для микросервиса.
    @app.route("/api/user", методы=["POST"])
    дефСоздать пользователя():
    данные = запрос.get_json()
    имя = данные["имя"]
    пытаться:
    сеанс = сеанс()
    new_user = Пользователь (имя=имя)
    session.add (новый_пользователь)
    сессия.commit()
    возвращаться {"идентификатор": новый_user.id, "имя": новое имя пользователя, "сообщение": f"Пользователь {имя} созданный."}, 201
    кроме Исключение как е:
    Распечатать(f"Ошибка"{е}' произошел.")
    возвращаться {"ошибка": "Произошла ошибка при создании пользователя."}, 500
    @app.route("/api/user", методы=["GET"])
    дефget_all_users():
    пытаться:
    сеанс = сеанс()
    пользователи = session.query(Пользователь).все()
    если пользователи:
    результат = []
    для пользователь в пользователи:
    результат.добавить({"идентификатор": ID пользователя, "имя": имя пользователя})
    возвращаться jsonify (результат)
    еще:
    возвращаться jsonify({"ошибка": f"Пользователи не найдены."}), 404
    кроме Исключение как е:
    Распечатать(f"Ошибка"{е}' произошел.")
    возвращаться {"ошибка": "Произошла ошибка при получении всех пользователей."}, 500
    если __имя__ == "__основной__":
    app.run (отладка =Истинный, хост ="0.0.0.0")

Протестируйте микросервис

Приведенный выше код демонстрирует простой микросервис пользовательских данных, который добавляет и извлекает данные из базы данных PostgreSQL. В идеале микросервисы отражают API-архитектура REST поскольку она обеспечивает гибкий подход к созданию веб-сервисов — эта архитектура хорошо согласуется с шаблоном проектирования микросервисов.

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

Чтобы протестировать службу, запустите сервер разработки и перейдите к Postman, чтобы отправить HTTP-запросы к определенным конечным точкам.

фляга --запуск службы приложения

В Postman сделайте запрос POST, чтобы добавить пользовательские данные.

Контейнеризация микросервисов с помощью Docker

Docker объединяет приложения и их зависимости в контейнеры. Этот подход упрощает разработку, развертывание и управление микросервисами в производственной среде. поскольку каждая служба может работать независимо и связываться с другими службами, используя настроенную связь. протокол.

Прежде чем приступить к работе, вам необходимо сначала установить Docker, следуя инструкциям на Сайт докера. Затем создайте образ Docker из файла Dockerfile, который содержит необходимые инструкции по настройке необходимых зависимостей для запуска приложения в контейнере.

  1. Создайте Dockerfile в корневом каталоге папки вашего проекта и добавьте следующие инструкции:
    ОТ питон:3.9-альпийский
    РАБОЧИЙКАТАЛОГ /app
    КОПИРОВАТЬ требования.txt ./
    БЕГАТЬ pip install -r требования.txt
    КОПИРОВАТЬ. .
    РАЗОБЛАЧАТЬ5000
    CMD ["питон", "./service.py"]
  2. Запустите приведенную ниже команду, чтобы создать образ Docker.
     docker build -t фляга-микросервис.
  3. Наконец, запустите контейнер Docker.
    docker run -p 5000:5000 колба-микросервис

Это запустит контейнер Docker с микросервисом Flask и откроет порт 5000 в контейнере для порт 8000 на хост-компьютере, что позволяет вам делать HTTP-запросы из вашего веб-браузера или Postman, используя URL-адрес http://localhost: 5000.

Внедрение микросервисной архитектуры

Архитектура микросервисов стала популярным подходом к разработке масштабируемых и надежных программных приложений. Разделяя приложение на небольшие независимо развертываемые сервисы, архитектура микросервисов упрощает обслуживание и масштабирование системы.

Хотя у этой архитектуры есть потенциальные преимущества, она подходит не для всех случаев использования. В любом случае конкретные бизнес-требования проекта должны в первую очередь влиять на принятый подход к проектированию.