Buď je váš úkol malý, nebo jej můžete rozdělit na menší úkoly. A malý úkol se perfektně hodí pro mikroservis.
Návrh softwaru je základní fází vývoje softwaru. Přístup k návrhu může ovlivnit celý projekt a způsob, jakým zvládáte různé požadavky.
Vývojáři často používali monolitickou architekturu, sdružující všechny softwarové komponenty do jediného modulu. Tento přístup se však může ukázat jako neefektivní, zejména u větších aplikací.
Cílem mikroslužeb je tato omezení řešit. Mikroslužba je malá modulární aplikace, která provádí specifické funkce. Na rozdíl od monolitických aplikací umožňují mikroslužby nezávislé nasazení a škálování. Díky tomu jsou pružnější a snadněji se udržují.
Architektura mikroslužeb
Architektura mikroslužeb je přístup k návrhu softwaru, který rozděluje velkou aplikaci na nezávislé služby, přičemž každá služba je navržena tak, aby řešila konkrétní obchodní požadavky.
Tyto služby běží na vyhrazených prostředcích, včetně samostatných databázových instancí a výpočetního výkonu. Na rozdíl od monolitických systémů jsou aplikace mikroslužeb volně propojené, což umožňuje větší flexibilitu.
V distribuovaném systému serverové uzly nasazují a spouštějí aplikace mikroslužeb jako samostatné procesy – vzájemná komunikace pomocí komunikačních protokolů, jako je HTTP nebo prostřednictvím zprostředkovatelů zpráv jako RabbitMQ.
Tento architektonický přístup v podstatě umožňuje službám zachovat si vzájemnou nezávislost a přitom efektivně fungovat v rámci softwarového systému.
V tomto tutoriálu vás provedeme implementací jednoduché uživatelské mikroslužby, která spravuje uživatelská data pomocí Flask a PostgreSQL
Nastavení databáze PostgreSQL
Chcete-li začít, nainstalujte PostgreSQL. Pokud nemáte nainstalovaný PostgreSQL, můžete to zjistit jak nainstalovat PostgreSQL na Windows nebo jak nainstalovat PostgreSQL na macOS.
Případně můžete nakonfigurovat a vzdálená databáze PostgreSQL instance.
Tato příručka použije bezplatnou vrstvu Render k nastavení databáze PostgreSQL. Chcete-li spustit instanci databáze PostgreSQL na Renderu, postupujte takto:
- Zamiřte k Web Render, zaregistrujte si účet a přihlaste se ke svému přístrojová deska strana.
- Na stránce řídicího panelu vyberte ze zobrazeného seznamu služeb službu PostgreSQL.
- Na stránce nastavení databáze vyplňte požadované údaje a nezapomeňte vybrat volná úroveňa nakonec klikněte Vytvořit databázi.
Zde najdete kód tohoto projektu úložiště GitHub.
Vytvořte službu Flask Microservice
- Ve svém terminálu vytvořte nový adresář a změňte se do něj:
mkdir flask-microservice
cd baňka-mikroservis - Dále nainstalujte virtualenvk vytvoření izolovaného virtuálního vývojového prostředí.
pip install virtualenv
- Vytvořte virtuální prostředí ve svém projektu:
virtualenv venv
- Nakonec aktivujte virtuální prostředí.
# Okna:
.\venv\Scripts\activate
# Unix nebo MacOS:
zdroj venv/bin/activate
Nainstalujte požadované balíčky
- Vytvoř nový požadavky.txt soubor v kořenovém adresáři a přidejte tyto balíčky:
baňka
psycopg2-binární
sqlalchemy - Dále nainstalujte balíčky.
pip install -r požadavky.txt
Vytvořte Flask Server
V kořenovém adresáři vytvořte nový soubor: service.pya následující kód:
- Proveďte následující importy:
z baňka import Baňka, žádost, jsonify
z sqlalchemy import create_engine, Column, Integer, String
z sqlalchemy.orm import sessionmaker
z sqlalchemy.ext.deklarative import deklarativní_základ
import psycopg2 - Vytvořte instanci Flask a nakonfigurujte připojení k databázi.
Zkopírujte URL externí databáze na stránce nastavení databáze Render. Použijeme SQLAlchemy create_engine metoda a Psychopg2 pro konfiguraci připojení k databázi. Nezapomeňte aktualizovat a nahradit adresu URL databáze ve výše uvedeném kódu adresou URL vaší vlastní instance PostgreSQL, která odpovídá formátu uvedenému výše. Pokud je formát adresy URL nesprávný, kód vyvolá chybu.app = Flask (__name__)
engine = create_engine("postgresql+psycopg2://flask_service_fe0v_user: 4785MhjfkdjfhjfjyUx67O2Nuzjchb2MQIP@dpg-chffjfjdkgfk54d6mb7860-a.oregon-postgres.render_service.fe0vsk")
- Vytvořte pro databázi model SQLAlchemy.
Kód definuje datový model pro tabulku uživatelů. Po definování modelu vytvoří tabulku pomocí SQLAlchemy create_all metoda, která přebírá databázi objekt spojovacího motoru jako parametr. Nakonec vytvoří instanci souboru tvůrce relace pomocí stejného objektu motoru k umožnění interakce s databází.Základ = deklarativní_základ()
třídaUživatel(Základna):
__název_tabulky__ = 'uživatelé'
id = sloupec (celé číslo, primární_klíč=Skutečný)
jméno = sloupec (String(50))
Base.metadata.create_all (motor)
tisk("Tabulka 'uživatelé' byla úspěšně vytvořena.")
Session = sessionmaker (engine) - Nakonec definujte trasy API pro mikroslužbu.
@app.route("/api/user", methods=["POST"])
defvytvořit uživatele():
data = request.get_json()
jméno = data["název"]
Snaž se:
relace = relace()
new_user = Uživatel (jméno=jméno)
session.add (new_user)
session.commit()
vrátit se {"id": new_user.id, "název": nové uživatelské jméno, "zpráva": f" Uživatel {název} vytvořen."}, 201
až na Výjimka tak jako E:
tisk(f"Chyba"{E}' došlo.")
vrátit se {"chyba": "Při vytváření uživatele došlo k chybě."}, 500
@app.route("/api/user", metody=["GET"])
defget_all_users():
Snaž se:
relace = relace()
users = session.query (User).all()
-li uživatelé:
výsledek = []
pro uživatel v uživatelé:
result.append({"id": uživatelské ID, "název": user.name})
vrátit se jsonify (výsledek)
jiný:
vrátit se jsonify({"chyba": f"Uživatelé nebyli nalezeni."}), 404
až na Výjimka tak jako E:
tisk(f"Chyba"{E}' došlo.")
vrátit se {"chyba": "Při získávání všech uživatelů došlo k chybě."}, 500
-li __jméno__ == "__hlavní__":
app.run (debug=Skutečný, hostitel="0.0.0.0")
Otestujte mikroservis
Výše uvedený kód ukazuje jednoduchou mikroslužbu uživatelských dat, která přidává a načítá data z databáze PostgreSQL. V ideálním případě mikroslužby zrcadlí Architektura REST API protože umožňuje flexibilní přístup k vytváření webových služeb – tato architektura dobře zapadá do návrhového vzoru mikroslužeb.
Je však důležité poznamenat, že mikroslužby mohou používat i jiné typy návrhových přístupů a komunikačních protokolů v závislosti na konkrétních potřebách systému.
Chcete-li službu otestovat, roztočte vývojový server a přejděte k Postmanovi, abyste odeslali požadavky HTTP na definované koncové body.
flask --spuštění služby aplikace
V Postman proveďte POST požadavek na přidání uživatelských dat.
Kontejnerování mikroslužeb pomocí Dockeru
Docker sdružuje aplikace a jejich závislosti do kontejnerů. Tento přístup zjednodušuje vývoj, nasazení a správu mikroslužeb v produkčním prostředí protože každá služba může fungovat nezávisle a komunikovat s ostatními službami pomocí nakonfigurované komunikace protokol.
Než začnete, musíte nejprve nainstalovat Docker podle kroků na Web Docker. Poté vytvořte obraz Dockeru ze souboru Dockerfile, který obsahuje nezbytné pokyny pro nastavení požadovaných závislostí pro spuštění aplikace v kontejneru.
- Vytvořte Dockerfile v kořenovém adresáři složky projektu a přidejte tyto pokyny:
Z krajta:3.9-vysokohorský
WORKDIR /app
KOPÍROVAT požadavky.txt ./
BĚH pip install -r požadavky.txt
KOPÍROVAT. .
ODHALIT5000
CMD ["krajta", "./service.py"] - Spusťte níže uvedený příkaz pro vytvoření obrazu Docker.
docker build -t flask-microservice .
- Nakonec spusťte kontejner Docker.
docker run -p 5000:5000 flask-microservice
Tím se spustí kontejner Docker se spuštěnou mikroslužbou Flask a vystaví se port 5000 na kontejneru port 8000 na hostitelském počítači, což vám umožňuje provádět HTTP požadavky z vašeho webového prohlížeče nebo Postmana pomocí URL http://localhost: 5000.
Přijetí architektury Microservice
Architektura mikroslužeb se stala oblíbeným přístupem pro vývoj škálovatelných a robustních softwarových aplikací. Díky rozdělení aplikace na malé, nezávisle nasaditelné služby usnadňuje architektura mikroslužeb údržbu a škálování systému.
I když má tato architektura potenciální výhody, není vhodná pro všechny případy použití. V každém případě by konkrétní obchodní požadavky projektu měly primárně ovlivnit přijatý designový přístup.