Házi feladat¶
A házi feladat otthon, önállóan elkészítendő mikroszolgáltatások architektúrára épülő és konténertechnológiát használó szoftverrendszer elkészítése és működőképes állapotban való bemutatása.
A rendszer egyetlen alkalmazást kell megvalósítson, ahol az alkalmazás funkciók szerint több szolgáltatásra van darabolva. Az alkalmazás nem feltétlenül kell felhasználói felülettel rendelkezzen, de enélkül is tudni kell demonstrálni a működését (pl. REST API-n keresztül).
Az elkészített rendszer egyes képességeire az alábbiak szerint pontok kaphatóak. Részpontszám csak különleges esetben kapható. A végső jegy az összpontszámból adódik.
Meglévő (pl. Microsoft-os) demók, mintaalkalmazások (elemei) felhasználhatók, de ezt külön jelezni kell bemutatáskor. A nem jelzett, de átvett részletek plágiumnak számítanak. Az órai demókban vagy mintaalkalmazásban megvalósított funkciók átvételéért pont nem adható, de azok tovább átdolgozhatóak saját implementációnak.
A pontrendszer általatok is módosítható/bővíthető. Ezt Pull Request formájában egy megfelelő indoklással nyújthatjátok be, de a PR benyújtása nem jelenti annak az automatikus elfogadását, arról minden esetben a tárgy oktatói döntenek.
Jegy számítás¶
- 0-24: nem teljesítette
- 25-29: elégséges
- 30-34: közepes
- 35-40: jó
- 41-: jeles
Pontok az alábbiakért kaphatóak¶
Mikroszolgáltatatások architektúra: 5+3 pont¶
A rendszer több, független mikroszolgáltatásból épül fel. Ebbe beleértendő a frontend is, amennyiben azt a többitől független webszerver szolgálja ki, de az adatbázis szerver(ek) külön nem számítanak bele.
- Minimum 3 szolgáltatással: 5 pont
- Minimum 4 szolgáltatással: +3 pont
A pont a többnyire korrekt rendszer partícionálás esetében jár. (Egyszerű többrétegű architektúrára nem jár a pont, akkor se, ha a rétegek külön szolgáltatásokban kapnak helyet!)
Több implementációs nyelv használata: 5 pont¶
A backend szolgáltatások legalább 2 különböző nyelven készültek. (A frontend ebbe nem számít bele!)
Konténerekben történő futtatás: 7 pont¶
Minden szolgáltatás konténerben fut, beleértve a használt adatbázis rendszereket is. Részpontszám kapható, ha nem minden szolgáltatás konténerizált.
Legalább két fajta adatbázis használata: 5 pont¶
Két eltérő technológiájú adatbázis használata perzisztenciára. Egyik lehet relációs is. (Redis csak cache-ként való használata ebbe nem számít bele.)
Redis alapú cache használata: 4 pont¶
Redis használata kifejezetten cache-elésre legalább 1 művelet esetén.
Http/gRPC alapú kommunikáció mikroszolgáltatások között: 4+4 pont¶
- Legalább egy olyan művelet, amelyben egy mikroszolgáltatás egy másikkal http alapon kommunikál: 4 pont
- Legalább egy olyan művelet, amelyben egy mikroszolgáltatás egy másikkal gRPC alapon kommunikál: 4 pont
Polly vagy hasonló technológia alkalmazása a mikroszolgáltatások közötti kommunikációra: 3 pont¶
Az előzővel együtt teljesíthető. A mikroszolgáltatások közötti kommunikáció során Backoff/Retry/Throttling/... minták alkalmazása.
Üzenetsor alapú kommunikáció mikroszolgáltatások között: 5 pont¶
Legalább egy olyan művelet, amelyben egy mikroszolgáltatás egy másikkal üzenetsor alapon kommunikál (mind a termelő, mind a fogyasztó oldalt beleértve). Kommunikációs platform lehet Redis, RabbitMQ, ill. bármely ismert message queue szolgáltatás.
API Gateway használata: 5+3 pont¶
- Traefik használata útvonalválasztásra: 5 pont
- Más API gateway használata: +3 pont
Forward authentikáció: 5 pont¶
Az előzőn felül teljesíthető. API Gateway esetén az authentikációt forward authentication módszerrel az API Gateway biztosítja. (Nem szükséges teljes, valódi authentikáció, mint például JWT használata. Elég, ha a működés valamilyen módon demonstrálható.)
Futtatás docker-compose alapokon: 5 pont¶
Az összes szolgáltatás egyetlen compose parancs segítségével elindítható.
Futtatás Kubernetes-ben: 10 pont¶
A bemutatás során az alkalmazás Kubernetes-ben fut. (Akár helyben, akár felhőben.)
Futtatás publikus felhőben Kubernetes-ben: 5 pont¶
Az előzőn felül teljesíthető. Az alkalmazás publikus felhőben hostolt Kubernetes platformon fut, érvényes (nem self-signed) HTTPS tanusítvánnyal rendelkezik, és publikus domain néven keresztül elérhető.
Helm chart Kubernetes-hez: 7 pont¶
A Kubernetes-be történő telepítést helm chart végzi. Szükséges demonstrálni a rendszer frissítését a chart segítségével.
Kubernetes-ben Job, CronJob, ConfigMap, Secret használata: 5 pont¶
Legalább egy Job, CronJob, ConfigMap, vagy Secret használata az alkalmazásban.
OpenTracing (pl. Jaeger) beüzemelése: 5 pont¶
Az alkalmazásban követhetőek a kérések pl. Jaeger használatával.
Continuous Integration beüzemelése: 5 pont¶
Az alkalmazás teljes egésze CI rendszerben lefordul és konténerek készülnek belőle.
Web/mobil felhasználói felület: 5 pont¶
Az alkalmazás rendelkezik modern webes / mobilos felhasználói felülettel. Teljesség és igényesség függvényében részpontszám is kapható.
Eventually Consistent elosztott működés: 5+3 pont¶
- A mikroszolgáltatások között eventually consistent állapotkezelés megvalósítása a kapcsolódó tervezési mintákkal. (5 pont)
- Gondoljunk a műveletek idempotens mivoltára is a tervezés során. (3 pont)
Tervezési minták használata az implementáció során: 5 pont¶
Domain Driven Design (DDD), Command Query Segregation Principle (CQRS). Ezeken felül előzetes egyeztetéssel a tárgy oktatóival.
Visszacsatolás: 0-1 pont, összesen max. 3 pont¶
A véglegesített pontrendszer vagy tananyag javítása, bővítése, módosítása pull request-tel. Helyesírási hiba is lehet, de az oktatók döntenek, hogy pontot ér-e a módosítás. Többször is megszerezhető.