Vorgurakendused 2 prax 1 Mikroteenused 2021 kevad: erinevus redaktsioonide vahel

Allikas: Lambda
Mine navigeerimisribale Mine otsikasti
Martinv (arutelu | kaastöö)
Resümee puudub
Martinv (arutelu | kaastöö)
Resümee puudub
14. rida: 14. rida:
1. Olemasoleva monoliit-süsteemi dekomponeerimine mikroteenusteks ja selle töölepanemine HTTP Protokollil
1. Olemasoleva monoliit-süsteemi dekomponeerimine mikroteenusteks ja selle töölepanemine HTTP Protokollil


2. Väljamõeldud stsenaarium, kus kirjutame arhitektuuri ette ja komponendid omavahel rääkima. Nt Uberi näitel: https://eng.uber.com/microservice-architecture/.  
2. Stsenaarium, kus on arhitektuur ette kirjutatud (see täpsustub) ja komponendid vahetavad omavahel andmeid.  
 
'''Vaata ka:''' Uberi mikroteenuste arhitektuur - https://eng.uber.com/microservice-architecture/.  


Mõlemal juhul oleks stsenaarium selline et erinevad teenused saadavad (olgu käsitsi või automaatselt) andmeid failiandmebaasile.  
Mõlemal juhul oleks stsenaarium selline et erinevad teenused saadavad (olgu käsitsi või automaatselt) andmeid failiandmebaasile.  
Andmebaasiteenus peab suutma hakkama saada sellega et tuleb vastuolulist infot ja olema "source of truth"
Andmebaasiteenus peab suutma hakkama saada sellega et tuleb vastuolulist infot ja olema "single source of truth".
 
Implementeerida tuleb queue, mis protsese sünkroniseerib.
 
 
== Soovitusi tehnoloogiate valikul ==
 
Kuna selles aines valmisehitatud veebiservereid a'la Apache või Nginx kasutada ei tohi, siis peaksid selle implementeerima ise.
Siin on soovitusi ja viiteid teekide valikuks:
 
==== Python: ====
* http.server + socketserver
* https://pythonbasics.org/webserver/
* https://docs.python.org/3/library/http.server.html
* https://www.afternerd.com/blog/python-http-server/
* https://www.bogotobogo.com/python/python_network_programming_socketserver_framework_for_network_servers.php
 
=== Java ===
* `HttpServer`
* https://dzone.com/articles/simple-http-server-in-java
 
 
=== Node ===
 
* `http`
* https://www.digitalocean.com/community/tutorials/how-to-create-a-web-server-in-node-js-with-the-http-module
 
 
## Go, PHP jne
 
* (Go) `net/http` moodul https://gobyexample.com/http-servers
* (PHP) http server - https://github.com/amphp/http-server
 
 
 
 
 


== Viiteid ==
== Viiteid ==

Redaktsioon: 4. veebruar 2021, kell 10:29

Sarnaselt teiste praktikumitöödega oleks alustuseks vaja implementeerida lihtne P2P protokoll üle HTTP, nii et:

  • protokoll oleks realiseeritud HTTP protokolli peale (vaja implementeerida ka HTTP server ja klient)
  • mitu sinu rakenduse klooni suudavad suhelda nii samas masinas, töötades eri portide peal, kui mitmes erinevas masinas eri IP-de peal.
  • eesmärk on kõigi rakendused omavahel suhtlema ja ühise võrguna tegutsema panna


Programmeerimiskeel on vabalt valitav. Masin(ad), kus su süsteem töötab, on vabalt valitavad: võid kasutada oma laptoppi, dijkstrat või mõnda muud serverit.

Kood peaks olema TTÜ Gitlabis repositooriumis nimega `ITI0215_2021`. Niimoodi on praktikumitööd õppejõudude poolt lihtsasti leitavad.

Praktikumitöö kirjtutamiseks on kaks suunda.

1. Olemasoleva monoliit-süsteemi dekomponeerimine mikroteenusteks ja selle töölepanemine HTTP Protokollil

2. Stsenaarium, kus on arhitektuur ette kirjutatud (see täpsustub) ja komponendid vahetavad omavahel andmeid.

Vaata ka: Uberi mikroteenuste arhitektuur - https://eng.uber.com/microservice-architecture/.

Mõlemal juhul oleks stsenaarium selline et erinevad teenused saadavad (olgu käsitsi või automaatselt) andmeid failiandmebaasile. Andmebaasiteenus peab suutma hakkama saada sellega et tuleb vastuolulist infot ja olema "single source of truth".

Implementeerida tuleb queue, mis protsese sünkroniseerib.


Soovitusi tehnoloogiate valikul

Kuna selles aines valmisehitatud veebiservereid a'la Apache või Nginx kasutada ei tohi, siis peaksid selle implementeerima ise. Siin on soovitusi ja viiteid teekide valikuks:

Python:

Java


Node


    1. Go, PHP jne




Viiteid