Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CodeFest 2018. Andrea Giunta (OrangeDev S.R.L.)...

CodeFest 2018. Andrea Giunta (OrangeDev S.R.L.) — Software architectures journey to the cloud

Посмотрите выступление Andrea: https://2018.codefest.ru/lecture/1281/

Software architectures are something that we see each day on our jobs even if they are quite independent from development technology and frameworks anyway they impact our work. This talk is about the principal software architectures and how software designing changed in the last years. The demo will focus on the practical differences in writing code for different kind of architectures.

CodeFest

April 09, 2018
Tweet

More Decks by CodeFest

Other Decks in Programming

Transcript

  1. Software architectures journey to the cloud Subtitle or short description

    can be placed here if needed Andrea Francesco Giunta Software Architect Microsoft Azure MVP OrangeDev
  2. Agenda • Software architectures • How our software architecture look

    alike? • Journey to the cloud • Moving to the cloud • Monolith • N-Tier • Soa / Roa • Microservices • Functions • Demo time • Q&A 2
  3. How our software architecture look alike? We are used to

    write software for 3 kinds of scenario Desktop Web Mobile And usually this is done with one of this trustly and true friends Monolith Server / Client Maybe with a decomposition on 3 layers But is this really modern in a cloud first reality? 3
  4. Moving to the cloud We have two scenarios An existing

    application: Usually an «old» software architecture like a monolith or a client/server architecture A new project: This is quite simple, you can choose whatever you want 5
  5. Monolithic architecture There is no separation of concerns in the

    software. Data and business logics are mixed together We can fill this category with two kind of application: -Classic monolith -Everthing is working on my machine -Smart Client / Dumb Server monolith -«Dumb» server -Data are centralized -Smart client with all logic apps -Dumb Client / Smart server -Similar to a Mainframe application, the client act like a terminal consuming data and logic from a server 6
  6. Monolithic architecture Classic monolith Everthing is working on my machine

    Data are on my machine Data access, business logic and client are on my machine Did you remember old Vb6 with Access application? 7
  7. Monolithic architecture Smart Client / Dumb Server monolith -«Dumb» server

    -Data are centralized -Smart client with all logic apps Dumb Client / Smart server -Similar to a Mainframe application, the client act like a terminal consuming data and logic from a server 8
  8. N Tier architecture • Client/Server architecture • Each layer is

    in charge of a specific part of the application • The classic example is the 3 layer decomposition • Data • Business logic • Presentation 10
  9. Soa/Roa Architecture • Both Service oriented architecture and Resource oriented

    architecture can be viewed as a part of the N-Tier • Can be merged toghter • Allow separation of logic in software development • We can see microservices and serverless as a natural evolution of this approach in the cloud. 11
  10. Microservices architecture “Microservices is a variant of the service-oriented architecture

    (SOA) architectural style that structures an application as a collection of loosely coupled services. In a microservices architecture, services should be fine-grained and the protocols should be lightweight. The benefit of decomposing an application into different smaller services is that it improves modularity and makes the application easier to understand, develop and test” -Wikipedia 12
  11. How microservices works? Imagine a 3 layer architecture like a

    wall… Now consider buy an hammer Take the hammer, and apply a «light» decomposition on the 3layer wall You can apply a decomposition by Name or by Verb Items obtained can communicate via API Items are in charge of just a small job 13
  12. Serverless Serverless computing, also known as function as a service

    (FaaS), is a cloud computing code execution model in which the cloud provider fully manages starting and stopping of a function's container platform as a service (PaaS) as necessary to serve requests, and requests are billed by an abstract measure of the resources required to satisfy the request, rather than per virtual machine, per hour. -Wikipedia 15
  13. How serverless works? The idea behind is quite simple :

    create decoupled small unit of application logic Focus on code, not on server Provisioning, maintenance, and scalability can be provided as a service Your cost is based on effective computation time 16
  14. Microservices is serverless?!? Well, this can be a «strange» question

    They are similar but… they aren’t really the same The main difference is on how you think to manage your service. If you have to orchestrate your containers you are not in a Serverless scenario 17
  15. The five pillar of software quality Scalability The ability of

    a system to handle increased load. Availability The proportion of time that the system is functional and working. Resiliency The ability of the system to recover from failures and continue to function. Management Operations processes that keep an application running in production. Security Protecting applications and data from threats. 18 Scalability Availability Resiliency Management Security