Joko tehtäväsi on pieni tai voit jakaa sen pienempiin tehtäviin. Ja pieni tehtävä sopii täydellisesti mikropalveluun.
Ohjelmistosuunnittelu on olennainen vaihe ohjelmistokehityksessä. Suunnittelutapa voi vaikuttaa koko projektiin ja siihen, miten käsittelet erilaisia vaatimuksia.
Kehittäjät ovat usein käyttäneet monoliittista arkkitehtuuria niputtamalla kaikki ohjelmistokomponentit yhdeksi moduuliksi. Tämä lähestymistapa voi kuitenkin osoittautua tehottomaksi, etenkin suuremmissa sovelluksissa.
Mikropalvelut pyrkivät korjaamaan nämä rajoitukset. Mikropalvelu on pieni, modulaarinen sovellus, joka suorittaa tiettyjä toimintoja. Toisin kuin monoliittiset sovellukset, mikropalvelut mahdollistavat itsenäisen käyttöönoton ja skaalauksen. Tämän seurauksena ne ovat joustavampia ja helpompia huoltaa.
Mikropalveluarkkitehtuuri
Mikropalveluarkkitehtuuri on ohjelmistosuunnittelun lähestymistapa, joka jakaa suuren sovelluksen itsenäisiin palveluihin, joista jokainen on suunniteltu vastaamaan tiettyä liiketoimintavaatimusta.
Nämä palvelut toimivat omistetuilla resursseilla, mukaan lukien erilliset tietokantaesiintymät ja laskentateho. Toisin kuin monoliittiset järjestelmät, mikropalvelusovellukset on kytketty löyhästi, mikä mahdollistaa suuremman joustavuuden.
Hajautetussa järjestelmässä palvelinsolmut ottavat käyttöön ja suorittavat mikropalvelusovelluksia erillisinä prosessit — viestivät keskenään kommunikaatioprotokollien, kuten HTTP: n, tai viestivälittäjien kautta kuten RabbitMQ.
Pohjimmiltaan tämä arkkitehtoninen lähestymistapa mahdollistaa sen, että palvelut voivat säilyttää itsenäisyytensä toisistaan samalla kun ne toimivat tehokkaasti ohjelmistojärjestelmän sisällä.
Tässä opetusohjelmassa opastamme sinua ottamaan käyttöön yksinkertaisen mikropalvelun, joka hallitsee käyttäjätietoja Flaskin ja PostgreSQL: n avulla.
Luo PostgreSQL-tietokanta
Aloita asentamalla PostgreSQL. Jos sinulla ei ole PostgreSQL: ää asennettuna, voit selvittää miten PostgreSQL asennetaan Windowsiin tai miten PostgreSQL asennetaan macOS: ään.
Vaihtoehtoisesti voit määrittää a etä PostgreSQL-tietokanta ilmentymä.
Tämä opas käyttää Renderin ilmaista tasoa PostgreSQL-tietokannan luomiseen. Seuraa näitä luodaksesi PostgreSQL-tietokantaesiintymän Renderissä:
- Suuntaa kohti Renderin verkkosivusto, rekisteröidy tilille ja kirjaudu sisään kojelauta sivu.
- Valitse kojelautasivulla näkyvästä palveluluettelosta PostgreSQL-palvelu.
- Täytä tietokannan asetussivulla tarvittavat tiedot ja varmista, että valitset ilmainen tasoja lopuksi napsauta Luo tietokanta.
Löydät tämän projektin koodin tästä GitHub-arkisto.
Luo Flask-mikropalvelu
- Tee terminaalissasi uusi hakemisto ja vaihda siihen:
mkdir flask-microservice
cd pullo-mikropalvelu - Seuraavaksi asenna virtualenv, luomaan eristetty virtuaalinen kehitysympäristö.
pip install virtualenv
- Luo virtuaalinen ympäristö projektiisi:
virtualenv venv
- Aktivoi lopuksi virtuaaliympäristö.
# Windows:
.\venv\Scripts\activate
# Unix tai MacOS:
lähde venv/bin/activate
Asenna tarvittavat paketit
- Luoda uusi vaatimukset.txt tiedosto juurihakemistoon ja lisää nämä paketit:
pullo
psycopg2-binääri
sqlalchemy - Seuraavaksi asenna paketit.
pip install -r vaatimukset.txt
Luo Flask-palvelin
Luo uusi tiedosto juurihakemistoon: service.py, ja seuraava koodi:
- Tee seuraavat tuonnit:
alkaen pullo tuonti Pullo, pyydä, jsonify
alkaen sqlalchemy tuonti create_engine, sarake, kokonaisluku, merkkijono
alkaen sqlalchemy.orm tuonti istunnontekijä
alkaen sqlalchemy.ext.declarative tuonti deklaratiivinen_pohja
tuonti psycopg2 - Luo Flask-instanssi ja määritä tietokantayhteys.
Kopioi ulkoisen tietokannan URL-osoite Renderin tietokannan asetussivulla. Käytämme SQLAlchemy create_engine menetelmä ja Psycopg2 määrittääksesi tietokantayhteyden. Muista päivittää ja korvata yllä olevan koodin tietokannan URL-osoite oman PostgreSQL-ilmentymän URL-osoitteella, joka vastaa yllä määritettyä muotoa. Jos URL-muoto on virheellinen, koodi antaa virheilmoituksen.app = Kolvi (__name__)
moottori = create_engine("postgresql+psycopg2://flask_service_fe0v_user: 4785MhjfkdjfhjfjyUx67O2Nuzjchb2MQIP@dpg-chffjfjdkgfk54d6mb7860-a.oregon-postgres.v_service.)
- Luo tietokantaan SQLAlchemy-malli.
Koodi määrittelee tietomallin käyttäjien taulukolle. Mallin määrittämisen jälkeen se luo taulukon käyttämällä SQLAlchemy create_all menetelmä, joka ottaa tietokannan yhteys moottorin esine parametrina. Lopuksi se luo esiintymän istunnon tekijä käyttämällä samaa moottoriobjektia mahdollistamaan vuorovaikutus tietokannan kanssa.Kanta = deklaratiivinen_kanta()
luokkaaKäyttäjä(Peruskohta):
__taulukon nimi__ = "käyttäjät"
id = Sarake (kokonaisluku, ensisijainen_avain=Totta)
nimi = Sarake (String(50))
Base.metadata.create_all (moottori)
Tulosta("Taulukon käyttäjät luominen onnistui.")
Istunto = istunnontekijä (moottori) - Lopuksi määritä mikropalvelun API-reitit.
@app.route("/api/user", method=["POST"])
defluo käyttäjä():
data = request.get_json()
nimi = data["nimi"]
yrittää:
istunto = istunto()
new_user = Käyttäjä (nimi=nimi)
session.add (uusi_käyttäjä)
session.commit()
palata {"id": uusi_käyttäjä.id, "nimi": uusi käyttäjätunnus, "viesti": f"Käyttäjä {nimi} luotu."}, 201
paitsi Poikkeus kuten e:
Tulosta(f "virhe"{e}' tapahtui.")
palata {"virhe": "Käyttäjää luotaessa tapahtui virhe."}, 500
@app.route("/api/user", method=["GET"])
defget_all_users():
yrittää:
istunto = istunto()
käyttäjät = session.query (Käyttäjä).all()
jos käyttäjät:
tulos = []
varten käyttäjä sisään käyttäjät:
result.append({"id": käyttäjätunnus, "nimi": käyttäjä.nimi})
palata jsonify (tulos)
muu:
palata jsonify({"virhe": f"Käyttäjiä ei löydy."}), 404
paitsi Poikkeus kuten e:
Tulosta(f "virhe"{e}' tapahtui.")
palata {"virhe": "Kaikkia käyttäjiä haettaessa tapahtui virhe."}, 500
jos __nimi__ == "__main__":
app.run (debug=Totta, isäntä="0.0.0.0")
Testaa mikropalvelua
Yllä oleva koodi esittelee yksinkertaisen käyttäjätietojen mikropalvelun, joka lisää ja hakee tietoja PostgreSQL-tietokannasta. Ihannetapauksessa mikropalvelut heijastavat REST API -arkkitehtuuri koska se mahdollistaa joustavan lähestymistavan verkkopalvelujen rakentamiseen – tämä arkkitehtuuri sopii hyvin mikropalvelujen suunnittelumalliin.
On kuitenkin tärkeää huomata, että mikropalvelut voivat käyttää myös muun tyyppisiä suunnittelumenetelmiä ja viestintäprotokollia järjestelmän erityistarpeista riippuen.
Testaaksesi palvelua, pyöritä kehityspalvelin ja siirry Postmaniin tekemään HTTP-pyyntöjä määritettyihin päätepisteisiin.
flask -- sovelluksen palveluajo
Tee Postmanissa POST-pyyntö lisätäksesi käyttäjätietoja.
Mikropalvelujen säiliöiminen Dockerin avulla
Docker niputtaa sovellukset ja niiden riippuvuudet konteissa. Tämä lähestymistapa virtaviivaistaa mikropalvelujen kehittämistä, käyttöönottoa ja hallintaa tuotantoympäristössä koska jokainen palvelu voi toimia itsenäisesti ja kommunikoida muiden palvelujen kanssa määritettyä viestintää käyttämällä protokollaa.
Ennen kuin aloitat, sinun on ensin asennettava Docker noudattamalla sivulla olevia ohjeita Dockerin verkkosivusto. Luo sitten Docker-kuva Docker-tiedostosta, joka sisältää tarvittavat ohjeet tarvittavien riippuvuuksien määrittämiseen sovelluksen suorittamiseksi säilössä.
- Luo Docker-tiedosto projektikansiosi juurihakemistoon ja lisää nämä ohjeet:
FROM python:3.9-alppi
TYÖOHJ /app
KOPIO vaatimukset.txt ./
JUOSTA pip install -r vaatimukset.txt
KOPIO. .
PALJISTA5000
CMD ["python", "./service.py"] - Suorita alla oleva komento luodaksesi Docker-kuvan.
docker build -t flask-microservice .
- Suorita lopuksi Docker-säiliö.
docker run -p 5000:5000 pullo-mikropalvelu
Tämä käynnistää Docker-säiliön, joka käyttää Flask-mikropalvelua ja paljastaa säiliön portin 5000 isäntäkoneen portti 8000, jonka avulla voit tehdä HTTP-pyyntöjä verkkoselaimesta tai Postmanista käyttämällä URL-osoite http://localhost: 5000.
Microservice-arkkitehtuurin käyttöönotto
Mikropalveluarkkitehtuurista on tullut suosittu tapa kehittää skaalautuvia ja kestäviä ohjelmistosovelluksia. Jakamalla sovelluksen pieniin, itsenäisesti käyttöönotettaviin palveluihin, mikropalveluarkkitehtuuri helpottaa järjestelmän ylläpitoa ja skaalausta.
Vaikka tällä arkkitehtuurilla on mahdollisia etuja, se ei sovellu kaikkiin käyttötapauksiin. Joka tapauksessa hankkeen erityisten liiketoimintavaatimusten tulisi ensisijaisesti vaikuttaa omaksumaan suunnittelutapaan.