A labor célja bemutatni a mikroszolgáltatásokra épülő rendszerek esetében gyakran használt polyglot elvet: mikroszolgáltatásonként más-más platformot és nyelvet, valamint más adatbázis rendszer használunk. A szolgáltatásokat pedig egy API gateway fogja össze.
Az alkalmazás teljes egészében platformfüggetlen. A fejlesztői környezet Visual Studio Code-ra épül, a szükséges eszközök:
- Visual Studio Code
- Visual Studio Code Remote - Containers extension
- Docker WSL2 támogatással
- Postman
A rendszer az alábbi mikroszolgáltatásokból épül fel:
- todos: A teendőket kezelő alkalmazás, ASP.NET Core platformon, REST API-t biztosítva. Elasticsearch adatbázist és Redis cache-t használ.
- web: React-ra épülő SPA webalkalmazás TypeScript-ben, NGINX webszerverrel kiszolgálva.
- users: Felhasználókat kezelő alkalmazás Python-ban, MongoDB adatbázisra épülve REST API-t biztosít.
+----+ +-------+ +---------+
| +---->+ todos +--+-->+ elastic |
+-----------+ |API | +-------+ | +---------+
| browser +----->+gate| |
+-----------+ |way | | +---------+
| | +-------+ +-->| redis |
| +---->+ web | +---------+
| | +-------+
| |
| | +-------+ +---------+
| +---->+ users +----->+ mongodb |
+----+ +-------+ +---------+
VS Code-ban az F1 menüben Remote Containers: Open Folder in Container, majd az alábbi mappák egyikét kell megnyitni, attól függően, hogy melyik szolgáltatást akarjuk debuggolni:
src/Todos
a Todos nevű .NET alkalmazáshoz,src/Users
a Users nevű Python alkalmazáshoz.
Mindkettőben a Run and Debug panel alól elindítható a megfelelő debug profil, aminek hatására a .NET vagy a Python alkalmazás debug módban indul, míg a a többi konténer folyamatosan fut.
Az src
könyvtárban az alábbi parancsokkal fordítható és indítható az alkalmazás:
docker-compose build
docker-compose up
Az egyes szolgáltatások az alábbi URL-eken érhetően el:
- Weboldal
- http://localhost:5080
- Visual Studio Code-ban futtatva közvetlenül http://localhost:5082
- Todos REST API
- http://localhost:5080/api/todos
- Visual Studio Code-ban futtatva közvetlenül http://localhost:5081/api/todos
- Users REST API
- http://localhost:5080/api/users
- Visual Studio Code-ban futtatva közvetlenül http://localhost:5083/api/users
- Traefik Dashboard: http://localhost:5088
- Mongodb: mongodb://localhost:27017
- Elasticsearch: http://localhost:9200
Az itt található oktatási segédanyagok a BMEVIAUAV42 tárgy hallgatóinak készültek. Az anyagok oly módú felhasználása, amely a tárgy oktatásához nem szorosan kapcsolódik, csak a szerző(k) és a forrás megjelölésével történhet.
Az anyagok a tárgy keretében oktatott kontextusban értelmezhetőek. Az anyagokért egyéb felhasználás esetén a szerző(k) felelősséget nem vállalnak.