PGBSNH19/project-grupp-1-hotel

Future architecture

Opened this issue · 9 comments

Future architecture

Arkitektur

Se till så att alla kan uppdatera nugetpaketet för våra modeller för request info och entity.

Förändra AppState till att bli en RoomSearchService istället, för att tydliggöra vad den används till, då AppState i nuläget inte har en specifik uppgift.

Börja implementera viewmodels och services för Frontenden för att mimimera upprepande av kod och ha en tydligare arkitektur.

Teknologi

Blazor WebAssembly med .NET 5.0 har fungerat förhållandevis bra och vi känner oss ganska trygga med framtiden då det förväntas vara stabilit och leva kvar ett tag framöver.

Api i .NET har fungerat väldigt bra tillsammans med entityframework och T-SQL och är väldigt stabilt och har funnits länge, så vi anser att det är värt att fortsätta med framöver.

Scaling

Vi har byggt majoriteten av koden asynkront vilket kommer hjälpa mycket om applikationen skulle växa, samtidigt som vi använt flera lager i API:t, så som repository, service och controller. I FrontendApplikationen däremot skulle vi behöva se över lite mer hur vi skulle kunna förenkla för skalning, vilket services och viewmodels skulle kunna underlätta för.

Säkerhet

Implementera authentification för api:et med JWT eller liknande, för att kunna säkerställa att endast våran Blazor Applikation kan nå api:et.

Branching

Vi är nöjda med hur vi har jobbat med branchingen, men vid fortsatt utveckling skulle vi behöva se till så att vi tar bort en branch efter merge och att Continuous Delivery gått igenom.

Deployment Strategi

Lägga till en produktionsmiljö för Continuous Delivery med Canary Deployment

  • Vi tänker att det verkar vara en bra strategi, just för att man snabbt kan få ut en nu version i produktion
  • För att involvera användarna mer och ta in input ifrån dem för att på så vis kunna optimera applikationen
  • Det är samtidigt väldigt enkelt att gå tillbaka till en tidigare version ifall något skulle gå snett
  • Det innebär att vi med säkerhet kan säga att applikationen inte kommer att gå ner när en nu version deployats
  • På ett enkelt sätt kunna utvärdera den nya versionen gentemot den föregående

Moln leverantör

Förhållandevis så upplever vi att Azure har fungerat bra, men ibland har utvecklingsmiljön legat nere utan att vi riktigt vetat varför.

Samtidigt har vi använt oss utav det billigaste alternativen och kan kanske därför inte förvänta oss allt för mycket.

Men vi är samtidigt lite nyfikna på att testa någon annan leverantör för att utvärdera om Azure är ett bra val eller ej.

Är inloggning någonting man skulle vilja ha? Så att man skulle kunna ändra sin bokning etc.?

Eller hur brukar det gå till?

Hur ser ni på att göra projektet till microservices?

Hur ser ni på framtiden när ni har projektet i microservices? Vilka för- eller nackdelar kommer det att finnas?

Låter som bra tankar att ta med sig i framtida utveckling!
Några egna andra betänkelser:

Skulle man kunna implementera ett state management system i frontenden för att hantera och optimera renderingar samt för att lättare hantera den data som alla vyer/komponenter ska använda sig av?

Kan man överväga att göra frontend delen i ett annat språk/ramverk än Blazor? FInns det för/nackdelar att göra det i exempelvis React eller Vue?

Är inloggning någonting man skulle vilja ha? Så att man skulle kunna ändra sin bokning etc.?

Vi kan bara avboka genom att skriva in ordernummer och sedan bekräfta med email. För den delen behöver inte ha inloggning.

Hur ser ni på att göra projektet till microservices?

Vår projekt är redan byggt med microservices. Vår frontend och backend är oberoende av varandra. Man kan till exempel koppla en annan GUI till vår API utan problem.

Är inloggning någonting man skulle vilja ha? Så att man skulle kunna ändra sin bokning etc.?

Vi kan bara avboka genom att skriva in ordernummer och sedan bekräfta med email. För den delen behöver inte ha inloggning.

Låter som bra tankar att ta med sig i framtida utveckling!
Några egna andra betänkelser:

Skulle man kunna implementera ett state management system i frontenden för att hantera och optimera renderingar samt för att lättare hantera den data som alla vyer/komponenter ska använda sig av?

Kan man överväga att göra frontend delen i ett annat språk/ramverk än Blazor? FInns det för/nackdelar att göra det i exempelvis React eller Vue?

Kul att höra!
Ja för komplicerade datadelning mellan komponenter är det värt att prova state management system. Vi har haft den svårigheten att skicka data mellan komponenter men det löste vi till slut.
Alla språk har sina fördelar och nackdelar och det har även Blazor.
Jag personligen tycker att Blazor är ett bra ramverk om man är vann med C#.

@samirehsani19

Ja absolut! Man ska inte förglömma att teamets kunskaper är bra att ta vara på! OM folk kan C# bäst är kanske Blazor att föredra!