Building Scalable Architectures
Micro Services
Sasidhar Gogulapati
Agenda
 The Monolith
 Decomposing Applications into Services
 Microservice Characteristics
 Reference – Microservice Architecture
 Drawbacks of Microservices
The Monolith
Let’s Imagine we are building an Taxi-
hiring application
Browser/
Client
Load
Balancer
Database
Tomcat
UI
WAR/EAR
….......................................
Passenger Mgmt. Service
Driver Mgmt. Service
Payment Service
Notifications Service
Traditional Application Architecture
Easy To: Develop, Test, Deploy, Scale
But Large, Complex Monolithic Applications are Problematic 
 Intimidates Developers
 Obstacles to Frequent Deployments
 Overloads IDE and Container, Slows down the development process
 Obstacle to scaling development: lot of coordination and
communication required between UI and Backend services
 Requires long term commitment to a Technology Stack
X-axis : Horizontal Scaling
Y-axis: functional
decomposition
Scale by splitting
different things
Z-axis: data
partitioning
The Scale Cube
Decomposing Application into Services
Y-axis scaling: Application Level
Passenger UI Passenger Mgmt. Service
Driver UI Driver Mgmt. Service
Payment UI Payment Service
Notifications UI Notifications Service
Apply z-axis and x-axis scaling to each service independently
Microservices
More Service, Less Micro
But more realistically..
Focus on building services that make development and
deployment easier
- not just tiny services
Benefits of Microservices
Smaller, Simpler apps
 Easier to Understand and Develop
 Faster to Build and Deploy
 Reduced startup time
 Less jar/class path problems
Benefits of Microservices
 Scales Development
 Develop, Deploy and Scale each Service Independently
 Improves Fault Isolation
 Eliminates long term commitment to a Single Technology Stack
 Possible to build Modular, Polyglot, multi-framework applications
Microservices Architecture for Taxi Hiring Application
Drawbacks
 Complexity of developing a distributed system
 Multiple databases and Transaction management
 Complexity of testing a distributed system
 Complexity of deploying and operating a distributed system
Future Plans
 Working on a POC to build a Microservice, with the
technologies Spring Boot and Cisco Search API
 Working with Cisco CSTG CSF team to discuss and
participate in building real Microservices to solve
business problems
Thank You.

Final_Presentation

  • 1.
    Building Scalable Architectures MicroServices Sasidhar Gogulapati
  • 2.
    Agenda  The Monolith Decomposing Applications into Services  Microservice Characteristics  Reference – Microservice Architecture  Drawbacks of Microservices
  • 3.
    The Monolith Let’s Imaginewe are building an Taxi- hiring application
  • 5.
    Browser/ Client Load Balancer Database Tomcat UI WAR/EAR …....................................... Passenger Mgmt. Service DriverMgmt. Service Payment Service Notifications Service Traditional Application Architecture Easy To: Develop, Test, Deploy, Scale
  • 6.
    But Large, ComplexMonolithic Applications are Problematic   Intimidates Developers  Obstacles to Frequent Deployments  Overloads IDE and Container, Slows down the development process  Obstacle to scaling development: lot of coordination and communication required between UI and Backend services  Requires long term commitment to a Technology Stack
  • 7.
    X-axis : HorizontalScaling Y-axis: functional decomposition Scale by splitting different things Z-axis: data partitioning The Scale Cube Decomposing Application into Services
  • 8.
    Y-axis scaling: ApplicationLevel Passenger UI Passenger Mgmt. Service Driver UI Driver Mgmt. Service Payment UI Payment Service Notifications UI Notifications Service Apply z-axis and x-axis scaling to each service independently
  • 10.
    Microservices More Service, LessMicro But more realistically.. Focus on building services that make development and deployment easier - not just tiny services
  • 11.
    Benefits of Microservices Smaller,Simpler apps  Easier to Understand and Develop  Faster to Build and Deploy  Reduced startup time  Less jar/class path problems
  • 12.
    Benefits of Microservices Scales Development  Develop, Deploy and Scale each Service Independently  Improves Fault Isolation  Eliminates long term commitment to a Single Technology Stack  Possible to build Modular, Polyglot, multi-framework applications
  • 13.
    Microservices Architecture forTaxi Hiring Application
  • 14.
    Drawbacks  Complexity ofdeveloping a distributed system  Multiple databases and Transaction management  Complexity of testing a distributed system  Complexity of deploying and operating a distributed system
  • 15.
    Future Plans  Workingon a POC to build a Microservice, with the technologies Spring Boot and Cisco Search API  Working with Cisco CSTG CSF team to discuss and participate in building real Microservices to solve business problems
  • 16.

Editor's Notes

  • #7 Need to redeploy everything to change one component Interrupts long running background jobs Increases risk of failure
  • #8 Need to redeploy everything to change one component Interrupts long running background jobs Increases risk of failure
  • #9 Need to redeploy everything to change one component Interrupts long running background jobs Increases risk of failure
  • #10 Need to redeploy everything to change one component Interrupts long running background jobs Increases risk of failure
  • #11 Need to redeploy everything to change one component Interrupts long running background jobs Increases risk of failure
  • #12 Need to redeploy everything to change one component Interrupts long running background jobs Increases risk of failure
  • #13 Need to redeploy everything to change one component Interrupts long running background jobs Increases risk of failure
  • #14 Need to redeploy everything to change one component Interrupts long running background jobs Increases risk of failure
  • #15 Need to redeploy everything to change one component Interrupts long running background jobs Increases risk of failure
  • #16 Need to redeploy everything to change one component Interrupts long running background jobs Increases risk of failure
  • #17 Need to redeploy everything to change one component Interrupts long running background jobs Increases risk of failure