Ili je vaš zadatak mali ili ga možete podijeliti na manje zadatke. A mali zadatak savršeno odgovara mikroservisu.

Dizajn softvera bitna je faza u razvoju softvera. Dizajnerski pristup može utjecati na cijeli projekt i na to kako se nosite s različitim zahtjevima.

Programeri su često koristili monolitnu arhitekturu, spajajući sve softverske komponente u jedan modul. Međutim, ovaj se pristup može pokazati neučinkovitim, osobito za veće primjene.

Mikrousluge imaju za cilj riješiti ta ograničenja. Mikroservis je mala, modularna aplikacija koja obavlja određene funkcije. Za razliku od monolitnih aplikacija, mikroservisi omogućuju neovisnu implementaciju i skaliranje. Kao rezultat toga, fleksibilniji su i lakši za održavanje.

Arhitektura mikroservisa

Arhitektura mikroservisa pristup je dizajnu softvera koji veliku aplikaciju rastavlja na neovisne usluge, pri čemu je svaka usluga dizajnirana za rješavanje specifičnih poslovnih zahtjeva.

Ove usluge rade na namjenskim resursima, uključujući zasebne instance baze podataka i računalne snage. Za razliku od monolitnih sustava, mikrouslužne aplikacije su labavo povezane što omogućuje veću fleksibilnost.

instagram viewer

U distribuiranom sustavu čvorovi poslužitelja postavljaju i izvršavaju aplikacije mikroservisa kao zasebni procesi — međusobno komuniciranje korištenjem komunikacijskih protokola kao što je HTTP ili putem brokera poruka poput RabbitMQ.

U suštini, ovaj arhitektonski pristup omogućuje uslugama da zadrže svoju neovisnost jedna o drugoj dok učinkovito rade unutar softverskog sustava.

U ovom vodiču vodit ćemo vas kroz implementaciju jednostavne korisničke mikroservise koja upravlja korisničkim podacima pomoću Flaska i PostgreSQL-a

Postavite PostgreSQL bazu podataka

Za početak instalirajte PostgreSQL. Ako nemate instaliran PostgreSQL, možete saznati kako instalirati PostgreSQL na Windows ili kako instalirati PostgreSQL na macOS.

Alternativno, možete konfigurirati a udaljena baza podataka PostgreSQL primjer.

Ovaj će vodič koristiti Renderov besplatni sloj za postavljanje PostgreSQL baze podataka. Slijedite ove kako biste pokrenuli instancu PostgreSQL baze podataka na Renderu:

  1. Prijeđite na Renderovo web mjesto, prijavite se za račun i prijavite se na svoj nadzorna ploča stranica.
  2. Na stranici nadzorne ploče s prikazanog popisa usluga odaberite uslugu PostgreSQL.
  3. Na stranici s postavkama baze podataka ispunite potrebne podatke i svakako odaberite besplatni sloj, i na kraju kliknite Stvorite bazu podataka.

Kôd ovog projekta možete pronaći ovdje GitHub spremište.

Stvorite Flask Microservice

  1. U svom terminalu napravite novi direktorij i prijeđite u njega:
    mkdir boca-mikroservis
    cd boca-mikroservis
  2. Zatim instalirajte virtualenv, za stvaranje izoliranog virtualnog razvojnog okruženja.
    pip instaliraj virtualenv
  3. Stvorite virtualno okruženje u svom projektu:
    virtualenv venv
  4. Na kraju, aktivirajte virtualno okruženje.
    # Windows: 
    .\venv\Skripte\aktivirati
    # Unix ili MacOS:
    izvor venv/bin/aktivirati

Instalirajte potrebne pakete

  1. Stvorite novi zahtjevi.txt datoteku u korijenskom direktoriju i dodajte ove pakete:
    pljoska
    psycopg2-binarni
    sqlalkemija
  2. Zatim instalirajte pakete.
    pip install -r zahtjevi.txt

Stvorite Flask poslužitelj

U korijenskom direktoriju izradite novu datoteku: usluga.py, i sljedeći kod:

  1. Napravite sljedeće uvoze:
    iz pljoska uvoz Flask, zahtjev, jsonify
    iz sqlalkemija uvoz create_engine, stupac, cijeli broj, niz
    iz sqlalchemy.orm uvoz sessionmaker
    iz sqlalchemy.ext.declarative uvoz deklarativna_baza
    uvoz psycopg2
  2. Stvorite instancu Flaska i konfigurirajte vezu s bazom podataka.
    aplikacija = Flask (__ime__)

    motor = create_engine("postgresql+psycopg2://flask_service_fe0v_user: 4785MhjfkdjfhjfjyUx67O2Nuzjchb2MQIP@dpg-chffjfjdkgfk54d6mb7860-a.oregon-postgres.render.com/flask_service_fe0v")

    Kopiraj URL vanjske baze podataka na stranici postavki Renderove baze podataka. Koristit ćemo se SQLAlchemy create_engine metoda i Psycopg2 za konfiguriranje veze s bazom podataka. Obavezno ažurirajte i zamijenite URL baze podataka u gornjem kodu s URL-om vlastite PostgreSQL instance koja odgovara gore navedenom formatu. Ako format URL-a nije ispravan, kod će izbaciti pogrešku.
  3. Napravite SQLAlchemy model za bazu podataka.
    Baza = deklarativna_baza()
    razredaKorisnik(Baza):
    __naziv tablice__ = 'korisnici'
    id = Stupac (cijeli broj, primarni_ključ=Pravi)
    ime = stupac (niz(50))
    Base.metadata.create_all (motor)
    ispis("Tablica 'korisnici' uspješno je kreirana.")
    Sesija = sessionmaker (motor)
    Kod definira podatkovni model za tablicu korisnika. Nakon definiranja modela, kreira tablicu pomoću SQLAlchemy create_all metoda koja uzima bazu podataka objekt veze motor kao parametar. Konačno, stvara instancu maker sesije korištenje istog objekta stroja za omogućavanje interakcija s bazom podataka.
  4. Na kraju, definirajte API rute za mikroservis.
    @app.route("/api/user", metode=["POST"])
    defstvoriti_korisnika():
    podaci = zahtjev.get_json()
    ime = podaci["Ime"]
    probati:
    sesija = Sesija()
    new_user = Korisnik (name=ime)
    session.add (novi_korisnik)
    session.commit()
    povratak {"iskaznica": new_user.id, "Ime": novo_korisničko.ime, "poruka": f"Korisnik {Ime} stvorio."}, 201
    osim Iznimka kao e:
    ispis(f"Greška"{e}' dogodilo.")
    povratak {"greška": "Došlo je do pogreške prilikom kreiranja korisnika."}, 500
    @app.route("/api/user", metode=["GET"])
    defdobiti_sve_korisnike():
    probati:
    sesija = Sesija()
    korisnici = session.query (Korisnik).all()
    ako korisnici:
    rezultat = []
    za korisnik u korisnici:
    result.append({"iskaznica": user.id, "Ime": Korisničko ime})
    povratak jsonify (rezultat)
    drugo:
    povratak jsonify({"greška": f"Korisnici nisu pronađeni."}), 404
    osim Iznimka kao e:
    ispis(f"Greška"{e}' dogodilo.")
    povratak {"greška": "Došlo je do pogreške prilikom preuzimanja svih korisnika."}, 500
    ako __ime__ == "__glavni__":
    app.run (debug=Pravi, domaćin="0.0.0.0")

Testirajte Microservice

Gornji kod demonstrira jednostavnu mikrouslugu korisničkih podataka koja dodaje i dohvaća podatke iz PostgreSQL baze podataka. U idealnom slučaju, mikroservisi odražavaju REST API arhitektura budući da omogućuje fleksibilan pristup izgradnji web usluga—ova se arhitektura dobro uklapa u obrazac dizajna mikroservisa.

Međutim, važno je napomenuti da mikrousluge mogu koristiti i druge vrste pristupa dizajnu i komunikacijskih protokola, ovisno o specifičnim potrebama sustava.

Da biste testirali uslugu, zavrtite razvojni poslužitelj i prijeđite na Postman da postavite HTTP zahtjeve prema definiranim krajnjim točkama.

flask --pokretanje usluge aplikacije

U Postmanu napravite POST zahtjev za dodavanje korisničkih podataka.

Kontejneriziranje mikroservisa s Dockerom

Docker grupira aplikacije i njihove ovisnosti u spremnike. Ovaj pristup usmjerava razvoj, implementaciju i upravljanje mikroservisima u proizvodnom okruženju budući da svaka usluga može raditi neovisno i komunicirati s drugim uslugama pomoću konfigurirane komunikacije protokol.

Prije nego što počnete, najprije trebate instalirati Docker slijedeći korake na Docker web mjesto. Zatim izradite Docker sliku iz Dockerfilea koja sadrži potrebne upute za postavljanje potrebnih ovisnosti za pokretanje aplikacije u spremniku.

  1. Stvorite Dockerfile u korijenskom direktoriju svoje mape projekta i dodajte ove upute:
    IZ piton:3.9-alpski
    RADNI DIR /app
    KOPIRATI zahtjevi.txt ./
    TRČANJE pip install -r zahtjevi.txt
    KOPIRATI. .
    IZLOŽITI5000
    CMD ["piton", "./service.py"]
  2. Pokrenite naredbu u nastavku za izradu Docker slike.
     docker build -t flask-microservice.
  3. Na kraju pokrenite Docker spremnik.
    docker run -p 5000:5000 flask-microservice

Ovo će pokrenuti Docker spremnik koji pokreće mikroservis Flask i izložiti port 5000 na spremniku priključak 8000 na glavnom računalu, što vam omogućuje da postavljate HTTP zahtjeve iz svog web preglednika ili Poštara koristeći URL http://localhost: 5000.

Usvajanje mikroservisne arhitekture

Arhitektura mikroservisa postala je popularan pristup razvoju skalabilnih i robusnih softverskih aplikacija. Dijeleći aplikaciju na male servise koji se mogu neovisno implementirati, arhitektura mikroservisa olakšava održavanje i skaliranje sustava.

Iako ova arhitektura ima potencijalne prednosti, nije prikladna za sve slučajeve upotrebe. U svakom slučaju, specifični poslovni zahtjevi projekta prvenstveno trebaju utjecati na usvojeni pristup projektiranju.