Trenutna implementacija
Trenutno aplikacija direktno šalje mejlove iz Flask web-api aplikacije.
Sva logika slanja mejlova nalazi se unutar glavne aplikacije i izvršava se tokom HTTP zahteva.
Problem
Centralizovano slanje mejlova u glavnoj aplikaciji dovodi do sledećih problema:
-
HTTP request čeka završetak slanja e-maila → povećana latencija
-
Slanje mejlova nije asinhrono
-
Teško je skalirati samo mejl funkcionalnost
-
Kod postaje monolitan, ne postoji separation of concerns
Zadatak
Implementirati posebnu Email Service aplikaciju koja će biti odgovorna isključivo za slanje mejlova. Glavna Flask aplikacija neće direktno slati mejlova već će slati poruke putem message brokera.
-
Kreirati novu aplikaciju "Email Service" koja je Python Flask. Servis treba da sluša poruke iz message brokera i šalje mejlove.
-
Postaviti message broker kao Docker container. Predlog je da to bude RabbitMQ.
Glavna aplikacija → publish poruke
Email Service → subscribe / worker koji obrađuje poruke
Reference:
Trenutna implementacija
Trenutno aplikacija direktno šalje mejlove iz Flask
web-apiaplikacije.Sva logika slanja mejlova nalazi se unutar glavne aplikacije i izvršava se tokom HTTP zahteva.
Problem
Centralizovano slanje mejlova u glavnoj aplikaciji dovodi do sledećih problema:
HTTP request čeka završetak slanja e-maila → povećana latencija
Slanje mejlova nije asinhrono
Teško je skalirati samo mejl funkcionalnost
Kod postaje monolitan, ne postoji separation of concerns
Zadatak
Implementirati posebnu
Email Serviceaplikaciju koja će biti odgovorna isključivo za slanje mejlova. Glavna Flask aplikacija neće direktno slati mejlova već će slati poruke putemmessage brokera.Kreirati novu aplikaciju "Email Service" koja je Python Flask. Servis treba da sluša poruke iz
message brokerai šalje mejlove.Postaviti
message brokerkao Docker container. Predlog je da to bude RabbitMQ.Glavna aplikacija → publish poruke
Email Service → subscribe / worker koji obrađuje poruke
Reference: