Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Architectural patterns for applications in the cloud

133 views

Published on

As we have started migrating our applications to the cloud, microservices replaced multi-tiered architecture as the recommended choice. But is choosing the architecture really always that simple? The session covers the advantages and disadvantages of both architectural patterns and attempts to provide some guidance on how to choose the right one. It concludes with an overview of cloud services that can be used to host the applications depending on the architectural pattern they follow.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Architectural patterns for applications in the cloud

  1. 1. ARHITEKTURNI VZORCI APLIKACIJV OBLAKU Damir Arh, Razum d.o.o. http://damirscorner.com @DamirArh
  2. 2. Izbira prave arhitekture Večnivojska arhitektura Mikrostoritve
  3. 3. Večnivojska arhitektura Podatkovni vir Aplikacijski strežnik Odjemalci
  4. 4. Aplikacijski strežnik ■ Sestavljen iz več modulov / komponent – Dostop do podatkov – Poslovna logika – Programski vmesniki - API – (Spletni vmesnik) ■ Skupen proces – Monolitna arhitektura
  5. 5. Slabosti monolitne arhitekture ■ Kompleksno dodajanje novih funkcionalnosti ■ Težavno vzporedno delo več ekip ■ Zahtevno vpeljevanje novih tehnologij ■ Zamudno in dolgotrajno testiranje ■ Morebitne napake vplivajo na celotno aplikacijo ■ Počasen zagon aplikacije zaradi velikosti ■ Vire je mogoče dodeljevati le aplikaciji kot celoti ■ Skrbno načrtovane redkejše ročne posodobitve
  6. 6. Mikrostoritvena arhitektura Podatkovni vir Aplikacijski strežnik Odjemalci
  7. 7. Ločene podatkovne shrambe Podatkovni vir Aplikacijski strežnik Odjemalci
  8. 8. API prehod Podatkovni vir Aplikacijski strežnik Odjemalci API prehod
  9. 9. Prednosti mikrostoritev ■ Nove funkcionalnosti se lahko dodajo kot nove storitve ■ Posamezne storitve lahko razvijajo ločene ekipe ■ Storitve lahko uporabljajo različne tehnologije ■ Manj funkcionalnosti v posamezni storitvi olajša testiranje ■ Kljub napaki v eni storitvi preostale še naprej delujejo ■ Hitrejši zagon storitev zaradi manjšega obsega ■ Vsaki storitvi je mogoče neodvisno dodeljevati vire ■ Nameščanje in posodabljanje posamezne storitve je neodvisno od ostalih
  10. 10. Slabosti mikrostoritev ■ Potencialna nedosegljivost posameznih storitev ■ Večja latenca pri klicih med storitvami ■ Porazdeljeno shranjevanje podatkov prek več storitev ■ Težavno integracijsko testiranje prek več storitev ■ Zahtevna koordinacija sprememb, ki vključujejo več storitev ■ Kompleksno nameščanje in konfiguriranje storitev
  11. 11. S kompleksnostjo pada produktivnost PRODUKTIVNOST KOMPLEKSNOST Monolit Mikrostoritve
  12. 12. Začetek razvoja z monolitom ■ Morda prehod na mikrostoritve ne bo potreben ■ Začetek razvoja monolita je hitrejši ■ Modularna arhitektura znotraj monolita – Predstavlja osnovo za kasnejšo delitev v mikrostoritve – Naknadno spreminjanje delitve lažje kot pri mikrostoritvah
  13. 13. Ne gre vedno vse po načrtih Upanje Realnost
  14. 14. Začetek razvoja z mikrostoritvami ■ Modularnost brez zanašanja na disciplino ■ Modularnost v monolitu ni nujno zadostna – Souporaba skupnih modelov – Zanašanje na skupno podatkovno zbirko – Obstoječa komunikacija med moduli ni prenosljiva na mikrostoritve ■ Vpeljava ključnih praks že na začetku projekta – Hitro pripravljanje novih strežnikov (provisioning) – Spremljanje delovanja storitev (health) – Avtomatizirano nameščanje novih verzij storitev (CI/CD)
  15. 15. Monolit ali mikrostoritve? ■ Ni preprostega odgovora – Odvisno od kompleksnosti produkta – Odvisno od izkušenj ekipe ■ Osnovno vodilo – Preproste aplikacije so lahko monoliti – Mikrostoritve, kadar obseg upravičuje dodatno kompleksnost – Modularen monolit kot vmesna pot ■ Oblika gostovanja ni ključnega pomena
  16. 16. Gostovanje monolita Virtualni strežnik Spletni strežnik Lokalno VMware Hyper-V Tomcat Jetty Amazon AWS ElasticCompute Cloud (EC2) Elastic Beanstalk MicrosoftAzure Virtual Machines App Service Google Cloud Platform Compute Engine App Engine
  17. 17. Gostovanje mikrostoritev Containers CI/CD API gateway Lokalno Kubernetes Swarm Jenkins TeamCity Apiggee Edge Mashery Amazon AWS ElasticContainer Service Elastic Kubernetes Service CodeBuild CodeDeploy CodePipeline API Gateway MicrosoftAzure Kubernetes Service Service Fabric DevOps Services API Management Google Cloud Platform Kubernetes Engine Cloud Build Apigee Edge

×