Либо ваша задача небольшая, либо вы можете разбить ее на более мелкие задачи. А небольшая задача идеально подходит для микросервиса.
Дизайн программного обеспечения является важным этапом в разработке программного обеспечения. Подход к проектированию может повлиять на весь проект и на то, как вы справляетесь с различными требованиями.
Разработчики часто использовали монолитную архитектуру, объединяя все программные компоненты в единый модуль. Однако этот подход может оказаться неэффективным, особенно для больших приложений.
Микросервисы стремятся устранить эти ограничения. Микросервис — это небольшое модульное приложение, выполняющее определенные функции. В отличие от монолитных приложений, микросервисы допускают независимое развертывание и масштабирование. В результате они более гибкие и простые в обслуживании.
Микросервисная архитектура
Архитектура микросервисов — это подход к разработке программного обеспечения, который разбивает большое приложение на независимые службы, каждая из которых предназначена для удовлетворения конкретных бизнес-требований.
Эти службы работают на выделенных ресурсах, включая отдельные экземпляры базы данных и вычислительную мощность. В отличие от монолитных систем, микросервисные приложения слабо связаны, что обеспечивает большую гибкость.
В распределенной системе серверные узлы развертывают и выполняют микросервисные приложения как отдельные процессы — взаимодействуют друг с другом с помощью коммуникационных протоколов, таких как HTTP, или через брокеры сообщений. как RabbitMQ.
По сути, такой архитектурный подход позволяет службам сохранять свою независимость друг от друга, эффективно работая в программной системе.
В этом руководстве мы проведем вас через реализацию простого пользовательского микросервиса, который управляет пользовательскими данными с помощью Flask и PostgreSQL.
Настроить базу данных PostgreSQL
Для начала установите PostgreSQL. Если у вас не установлен PostgreSQL, вы можете узнать как установить PostgreSQL в Windows или как установить PostgreSQL на macOS.
Кроме того, вы можете настроить удаленная база данных PostgreSQL пример.
В этом руководстве будет использоваться уровень бесплатного пользования Render для настройки базы данных PostgreSQL. Следуйте этим инструкциям, чтобы развернуть экземпляр базы данных PostgreSQL на Render:
- Направляйтесь к Сайт рендера, зарегистрируйте учетную запись и войдите в свой панель приборов страница.
- На странице панели управления из списка отображаемых служб выберите службу PostgreSQL.
- На странице настроек базы данных заполните необходимые данные и обязательно выберите бесплатный уровеньи, наконец, нажмите Создать базу данных.
Вы можете найти код этого проекта в этом Репозиторий GitHub.
Создание микросервиса Flask
- В вашем терминале создайте новый каталог и перейдите в него:
mkdir фляга-микросервис
cd flask-микросервис - Далее установите виртуальная среда, чтобы создать изолированную виртуальную среду разработки.
пип установить виртуалэнв
- Создайте в своем проекте виртуальную среду:
виртуальный
- Наконец, активируйте виртуальную среду.
# Окна:
.\venv\скрипты\активировать
# Unix или MacOS:
источник venv/bin/активировать
Установите необходимые пакеты
- Создать новый требования.txt файл в корневом каталоге и добавьте эти пакеты:
колба
psycopg2-двоичный
алхимия - Далее устанавливаем пакеты.
pip install -r требования.txt
Создать Flask-сервер
В корневом каталоге создайте новый файл: service.py, и следующий код:
- Сделайте следующий импорт:
от колба Импортировать Фласк, запрос, jsonify
от алхимия Импортировать create_engine, столбец, целое число, строка
от sqlalchemy.orm Импортировать создатель сессий
от sqlalchemy.ext.declarative Импортировать декларативная_база
Импортировать psycopg2 - Создайте экземпляр Flask и настройте подключение к базе данных.
Скопируйте URL-адрес внешней базы данных на странице настроек базы данных Render. Мы будем использовать SQLAlchemy create_engine метод и Псикопг2 для настройки подключения к базе данных. Обязательно обновите и замените URL-адрес базы данных в приведенном выше коде URL-адресом вашего собственного экземпляра PostgreSQL, который соответствует формату, указанному выше. Если формат URL-адреса неверен, код выдаст ошибку.приложение = Фляга (__имя__)
двигатель = создать_двигатель ("postgresql+psycopg2://flask_service_fe0v_user: 4785MhjfkdjfhjfjyUx67O2Nuzjchb2MQIP@dpg-chffjfjdkgfk54d6mb7860-a.oregon-postgres.render.com/flask_service_fe0v")
- Создайте модель SQLAlchemy для базы данных.
Код определяет модель данных для таблицы пользователей. После определения модели он создает таблицу, используя SQLAlchemy create_all метод, который берет базу данных объект механизма соединения как параметр. Наконец, он создает экземпляр создатель сеанса используя тот же объект механизма, чтобы обеспечить взаимодействие с базой данных.База = декларативная_база()
сортПользователь(База):
__имя_таблицы__ = 'пользователи'
id = столбец (целое число, primary_key=Истинный)
имя = Столбец (Строка(50))
Base.metadata.create_all (движок)
Распечатать("Таблица "пользователи" успешно создана.")
Сессия = создатель сессий (движок) - Наконец, определите маршруты 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, который содержит необходимые инструкции по настройке необходимых зависимостей для запуска приложения в контейнере.
- Создайте Dockerfile в корневом каталоге папки вашего проекта и добавьте следующие инструкции:
ОТ питон:3.9-альпийский
РАБОЧИЙКАТАЛОГ /app
КОПИРОВАТЬ требования.txt ./
БЕГАТЬ pip install -r требования.txt
КОПИРОВАТЬ. .
РАЗОБЛАЧАТЬ5000
CMD ["питон", "./service.py"] - Запустите приведенную ниже команду, чтобы создать образ Docker.
docker build -t фляга-микросервис.
- Наконец, запустите контейнер Docker.
docker run -p 5000:5000 колба-микросервис
Это запустит контейнер Docker с микросервисом Flask и откроет порт 5000 в контейнере для порт 8000 на хост-компьютере, что позволяет вам делать HTTP-запросы из вашего веб-браузера или Postman, используя URL-адрес http://localhost: 5000.
Внедрение микросервисной архитектуры
Архитектура микросервисов стала популярным подходом к разработке масштабируемых и надежных программных приложений. Разделяя приложение на небольшие независимо развертываемые сервисы, архитектура микросервисов упрощает обслуживание и масштабирование системы.
Хотя у этой архитектуры есть потенциальные преимущества, она подходит не для всех случаев использования. В любом случае конкретные бизнес-требования проекта должны в первую очередь влиять на принятый подход к проектированию.