Или задачата ви е малка, или можете да я разделите на по-малки задачи. И една малка задача е идеално подходяща за микроуслуга.

Дизайнът на софтуера е съществена фаза в разработката на софтуер. Дизайнерският подход може да повлияе на целия проект и на начина, по който се справяте с различни изисквания.

Разработчиците често са използвали монолитна архитектура, обединявайки всички софтуерни компоненти в един модул. Този подход обаче може да се окаже неефективен, особено за по-големи приложения.

Микроуслугите имат за цел да се справят с тези ограничения. Микроуслугата е малко, модулно приложение, което изпълнява специфични функции. За разлика от монолитните приложения, микроуслугите позволяват независимо внедряване и мащабиране. В резултат на това те са по-гъвкави и по-лесни за поддръжка.

Архитектурата на микросервизите

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

instagram viewer

Тези услуги работят на специални ресурси, включително отделни екземпляри на база данни и изчислителна мощност. За разлика от монолитните системи, приложенията за микросервизи са слабо свързани, което позволява по-голяма гъвкавост.

В разпределена система сървърните възли внедряват и изпълняват приложения за микросервизи като отделни процеси—комуникация помежду си чрез комуникационни протоколи като HTTP или чрез брокери на съобщения като RabbitMQ.

По същество този архитектурен подход позволява на услугите да поддържат своята независимост една от друга, докато ефективно работят в рамките на софтуерната система.

В този урок ще ви преведем през внедряването на проста потребителска микроуслуга, която управлява потребителски данни с помощта на Flask и PostgreSQL

Настройте база данни на PostgreSQL

За да започнете, инсталирайте PostgreSQL. Ако нямате инсталиран PostgreSQL, можете да разберете как да инсталирате PostgreSQL на Windows или как да инсталирате PostgreSQL на macOS.

Като алтернатива можете да конфигурирате a отдалечена база данни PostgreSQL инстанция.

Това ръководство ще използва безплатното ниво на Render за настройка на PostgreSQL база данни. Следвайте тези, за да завъртите екземпляр на PostgreSQL база данни в Render:

  1. Насочете се към Уеб сайт на Render, регистрирайте акаунт и влезте във вашия табло страница.
  2. На страницата на вашето табло за управление от списъка с показани услуги изберете услугата PostgreSQL.
  3. На страницата с настройки на базата данни попълнете необходимите данни и се уверете, че сте избрали безплатно нивои накрая щракнете Създайте база данни.

Можете да намерите кода на този проект тук GitHub хранилище.

Създайте Flask Microservice

  1. Във вашия терминал създайте нова директория и я сменете:
    mkdir колба-микроуслуга
    cd колба-микросервиз
  2. След това инсталирайте virtualenv, за създаване на изолирана виртуална среда за разработка.
    pip инсталирайте virtualenv
  3. Създайте виртуална среда във вашия проект:
    virtualenv venv
  4. Накрая активирайте виртуалната среда.
    # Windows: 
    .\venv\Scripts\activate
    # Unix или MacOS:
    източник venv/bin/activate

Инсталирайте необходимите пакети

  1. Създайте нов изисквания.txt файл в основната директория и добавете тези пакети:
    колба
    psycopg2-двоичен
    sqlalchemy
  2. След това инсталирайте пакетите.
    pip install -r requirements.txt

Създайте Flask сървър

В основната директория създайте нов файл: service.pyи следния код:

  1. Направете следните импорти:
    от колба импортиране Колба, заявка, jsonify
    от sqlalchemy импортиране create_engine, колона, цяло число, низ
    от sqlalchemy.orm импортиране създател на сесии
    от sqlalchemy.ext.declarative импортиране декларативна_база
    импортиране psycopg2
  2. Създайте екземпляра на Flask и конфигурирайте връзката с базата данни.
    приложение = Колба (__име__)

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

    Копирайте URL адрес на външна база данни на страницата с настройки на базата данни на Render. Ще използваме SQLAlchemy create_engine метод и Psycopg2 за да конфигурирате връзката с базата данни. Уверете се, че сте актуализирали и заменили URL адреса на базата данни в горния код с URL адреса на вашия собствен екземпляр на PostgreSQL, който съответства на посочения по-горе формат. Ако URL форматът е неправилен, кодът ще изведе грешка.
  3. Създайте модел SQLAlchemy за базата данни.
    База = declarative_base()
    класПотребител(база):
    __име на таблица__ = "потребители"
    id = Колона (Цяло число, първичен_ключ=Вярно)
    име = колона (низ(50))
    Base.metadata.create_all (двигател)
    печат („Таблица „потребители“ е създадена успешно.“)
    Сесия = създател на сесии (двигател)
    Кодът дефинира модел на данни за таблицата на потребителите. След като дефинира модела, той създава таблицата с помощта на SQLAlchemy create_all метод, който взема базата данни обект на двигателя за връзка като параметър. Накрая създава екземпляр на производител на сесии използване на същия обект на машината, за да се даде възможност за взаимодействие с базата данни.
  4. И накрая, дефинирайте API маршрутите за микроуслугата.
    @app.route("/api/user", methods=["POST"])
    дефcreate_user():
    данни = request.get_json()
    име = данни["име"]
    опитвам:
    сесия = сесия()
    new_user = Потребител (име=име)
    session.add (нов_потребител)
    session.commit()
    връщане {"документ за самоличност": new_user.id, "име": ново_потребителско.име, "съобщение": f"Потребител {име} създаден."}, 201
    с изключение Изключение като д:
    печат (f"Грешката"{e}" се случи.")
    връщане {"грешка": „Възникна грешка при създаването на потребителя.“}, 500
    @app.route("/api/user", methods=["GET"])
    дефget_all_users():
    опитвам:
    сесия = сесия()
    потребители = session.query (Потребител).all()
    ако потребители:
    резултат = []
    за потребител в потребители:
    result.append({"документ за самоличност": user.id, "име": user.name})
    връщане jsonify (резултат)
    друго:
    връщане jsonify({"грешка": f"Потребителите не са намерени."}), 404
    с изключение Изключение като д:
    печат (f"Грешката"{e}" се случи.")
    връщане {"грешка": „Възникна грешка при получаване на всички потребители.“}, 500
    ако __име__ == "__основен__":
    app.run (debug=Вярно, хост="0.0.0.0")

Тествайте Microservice

Горният код демонстрира проста микроуслуга за потребителски данни, която добавя и извлича данни от PostgreSQL база данни. В идеалния случай микроуслугите отразяват REST API архитектура тъй като позволява гъвкав подход към изграждането на уеб услуги - тази архитектура се вписва добре в модела на проектиране на микроуслугите.

Въпреки това е важно да се отбележи, че микроуслугите могат да използват и други видове подходи за проектиране и комуникационни протоколи, в зависимост от специфичните нужди на системата.

За да тествате услугата, завъртете сървъра за разработка и се насочете към Postman, за да направите HTTP заявки към дефинираните крайни точки.

flask --app service run

В Postman направете POST заявка за добавяне на потребителски данни.

Контейнериране на микроуслуги с Docker

Docker обединява приложения и техните зависимости в контейнери. Този подход рационализира разработването, внедряването и управлението на микроуслуги в производствена среда тъй като всяка услуга може да работи независимо и да комуникира с други услуги, използвайки конфигурираната комуникация протокол.

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

  1. Създайте Dockerfile в главната директория на папката на вашия проект и добавете тези инструкции:
    ОТ питон:3.9-алпийски
    WORKDIR /app
    КОПИЕ изисквания.txt ./
    БЯГАЙТЕ pip install -r requirements.txt
    КОПИЕ. .
    ИЗЛОЖИ5000
    CMD ["питон", "./service.py"]
  2. Изпълнете командата по-долу, за да създадете изображението на Docker.
     docker build -t flask-microservice.
  3. Накрая стартирайте контейнера на Docker.
    docker run -p 5000:5000 flask-microservice

Това ще стартира Docker контейнер, работещ с микроуслугата Flask, и ще изложи порт 5000 на контейнера на порт 8000 на хост машината, което ви позволява да правите HTTP заявки от вашия уеб браузър или Postman, като използвате URL адрес http://localhost: 5000.

Приемане на архитектурата на микросервизите

Архитектурата на микроуслугите се превърна в популярен подход за разработване на мащабируеми и стабилни софтуерни приложения. Чрез разделянето на приложението на малки, независимо внедряеми услуги, архитектурата на микроуслугите улеснява поддръжката и мащабирането на системата.

Въпреки че тази архитектура има потенциални предимства, тя не е подходяща за всички случаи на употреба. Във всеки случай специфичните бизнес изисквания на проекта трябва да влияят преди всичко на възприетия подход към дизайна.