Mikroszolgáltatások és konténeralapú szoftverfejlesztés

A tantárgy angol neve: Microservices and Container-based Software Development

Adatlap utolsó módosítása: 2019. március 13.

Budapesti Műszaki és Gazdaságtudományi Egyetem
Villamosmérnöki és Informatikai Kar

Mérnök-informatikus Szak

Villamosmérnök Szak

BSc és MSc képzés

Szabadon választható tantárgy
Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VIAUAV42   1/0/1/f 2  
3. A tantárgyfelelős személy és tanszék Dr. Dudás Ákos,
4. A tantárgy előadója

Név:

Beosztás:

Tanszék, Int.:

Dr. Dudás Ákos

docens

Automatizálási és Alkalmazott Informatikai Tanszék

5. A tantárgy az alábbi témakörök ismeretére épít

Elosztott rendszerek ismerete

Adatbázisok ismerete

6. Előtanulmányi rend
Ajánlott:

Kötelező: Nincs.

Ajánlott: Szoftverarchitektúrák (BMEVIAUMA06) vagy Elosztott rendszerek és szakterületi modellezés (BMEVIAUMA01)

7. A tantárgy célkitűzése

A mikroszolgáltatások (microservices) architektúra a szoftverfejlesztés modern irányát képviseli. Komplex és nagy terhelésre tervezett rendszerek estén ez az architektúra adja a tervezhető, átlátható léptékű alkalmazásokat, a skálázhatóságot, és a folyamatosan változó rendszer alkalmazkodóképességét. A konténer technológiák pedig a kényelmes telepítés és egyszerű üzemeltetés lehetőségét biztosítják.

A tárgy keretében bemutatásra kerülnek a konténeralapú rendszerek fejlesztésének sajátságos aspektusai, és a mikroszolgáltatások tervezésének lépései, valamint terítékre kerülnek mikroszolgáltatás rendszerekben gyakran alkalmazott megoldások, mint az elosztott naplózás, megfigyelhetőség (tracing), az „eventually consistent” programozási modell, és API gateway-ek koncepciója. Emellett bemutatásra kerül, hogy a „DevOps” módszertant a szoftverfejlesztés hogyan tudja segíteni, és milyen előnyei vannak a konténer alapú fejlesztés- és üzemeltetésnek a szoftverfejlesztő szempontjából.

8. A tantárgy részletes tematikája

Az előadások és laboratóriumok együtt kerülnek megtartásra. Az elméleti ismeretek az óra elején kerülnek bemutatásra, majd azt követően a laboratórium rész a téma gyakorlati oldalát ismerteti, a hallgatókkal együtt készítve el egy-egy kis alkalmazást, demó rendszert.

Hét

Előadás anyaga

1.

Bevezetés. Elosztott rendszerek alapproblémái, a monolitikus és mikroszolgáltatások architektúra bemutatása, mikroszolgáltatás alapú rendszerek tervezése.

2.

Konténer alapú szoftverfejlesztés alapjai, Docker alapvető működése, Docker-konténerek felépítése, Dockerfile írása, docker CLI használata. Kontéer-kompatibilis szoftverfejlesztői környezetek.

3.

Több komponensből álló rendszer futtatása konténer alapokon, Docker-compose fájlok és használatuk.

4.

Állapotkezelés mikroszolgáltatások környezetben, adattárolási architektúrák, gyakran használt adatbázis rendszerek (Elasticsearch, Mongodb).

5.

Tranzakciókezelés elosztott környezetben, „eventually consistent” modell.

6.

Naplózás és alkalmazás monitorozás elosztott, mikroszolgáltatás alapú rendszerekben, „health check”-ek implementálása a mikroszolgáltatásokban.

7.

API Gateway-ek használata, útvonal irányítás mikroszolgáltatás alapú rendszerekben. Url alapú útvonalválasztás.

8.

Mikroszolgáltatások közötti kommunikáció http és message queue alapon; alternatív kommunikációs protokollok (pl. protobuf). Üzenetvesztés és megbízható kommunikáció; üzenet ismétlés, circuit-breaker, throttle minták.

9.

Kérések nyomkövetése szolgáltatások között, OpenTracing szabvány-alapú rendszerek.

10.

Konténerek a DevOps folyamatban. Konténer-alapú fordítás, „Docker-in-docker” modell, Azure DevOps használata.

11.

A Kubernetes platform alapjai, alkalmazás telepítése Kubernetes platformra, Podok és Deploymentek használata.

12.

A Kubernetes platform alapjai, DaemonSet, Ingress, CronJob használata. Helm chart készítése.

13.

Mikroszolgáltatás keretrendszerek: Orleans. Mikroszolgáltatás platformok a felhőben (PaaS): Azure Service Fabric.

14.

Házi feladat bemutatása.

9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium)

Előadás, laboratórium

10. Követelmények

A szorgalmi időszakban:

(1) Az előadások és laborok látogatása, legalább a kontakt órák 70%-án való részvétel. Az elmulasztott alkalmak nem pótolhatóak.

(2) A félév végéig egy házi feladat elkészítése, forráskódjának feltöltése az oktató által meghatározott helyre, majd bemutatása futtatható állapotban. A házi feladat a félév elején meghatározott kontextusban egy mikroszolgáltatások architektúrájú alkalmazás elkészítése, mely a tanult technológiákat használja, és a hallgató demonstrálni tudja a működését.

 

A végső jegy a házi feladatra kapott érdemjegy. A házi feladat értékelése pontrendszer alapján történik: egy-egy alkalmazott módszerrel, technológiával előre meghatározott mennyiségű pont szerezhető, melyek összeadva adják a kapott érdemjegyet.

11. Pótlási lehetőségek

Ez előadások és laborok pótlására nincs lehetőség.

A házi feladatot a szorgalmi időszak végéig be kell adni; pótlása a pótlási időszakban lehetséges.

12. Konzultációs lehetőségek

Igény szerint előadóval egyeztetve.

13. Jegyzet, tankönyv, felhasználható irodalom

·         Előadásanyag, oktatói jegyzet

·         Sam Newman: Building Microservices: Designing Fine-Grained Systems, 1st Edition, 2015, ISBN: 978-1491950357.

·         Susan J. Fowler: Production-Ready Microservices: Building Standardized Systems Across an Engineering Organization, 1st Edition, 2016, ISBN: 978-1491965979.

·         Chris Richardson, Floyd Smith: Designing and Deploying Microservices (ebook): https://www.nginx.com/resources/library/designing-deploying-microservices/

·         Microsoft Cloud Design Patterns (online): https://docs.microsoft.com/en-us/azure/architecture/patterns/

·         Docker: Get started with Docker (online): https://docs.docker.com/get-started/

·         kubernetes: Learn Kubernetes Basics (online): https://kubernetes.io/docs/tutorials/kubernetes-basics/

14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
Kontakt óra28
Félévközi készülés órákra12
Felkészülés zárthelyire0
Házi feladat elkészítése20
Kijelölt írásos tananyag elsajátítása0
Vizsgafelkészülés0
Összesen60
15. A tantárgy tematikáját kidolgozta

Név:

Beosztás:

Tanszék, Int.:

Dr. Dudás Ákos

docens

Automatizálási és Alkalmazott Informatikai Tanszék

Benedek Zoltán

tanársegéd

Automatizálási és Alkalmazott Informatikai Tanszék