Building Cloud Native
         Applications
       By Munish K Gupta - @write2munish




1
Munish K Gupta

    • Current Avatar
       • Software Architect/Engineer –High
         Performance Architecture (HiPA) group @
         Wipro Technologies

       • Author – Akka Essentials (Oct 2012)

       • Work with lot of open source stuff – Play
         Framework, Akka, Scala, mongodb, redis, LA
         MP stack

    • My Blogs
       • http://www.techspot.co.in
       • http://www.akkaessentails.in



2
What is Cloud Native Application?




3
Cloud Native Application

                       • All functionality is published and consumed via web
          Services
                         services
                       • Every Integration point will eventually fail one time
          Handling       or another
           Failures
                       • Be prepared to handle all kind of failures
         Horizontal
                       • Design for Scale Out
         Scalability
                       • Break down the task, process requests
     Asynchronous        asynchronously
        Processing     • Use queues to decouple functionality
                       • Eventual consistency model
                       • Build stateless services that can be scaled out and
    Stateless Model
                         load balanced
          Minimize
            Human      • Go DevOps/NoOps
       Intervention

4
Social Feed Application




5
Social Feed Application




6
Functional & Nonfunctional Requirements

    • Functional Requirements
       •   User registrations + Social Sites OAuth (FB, Twitter)
       •   Allows users to insert/import RSS feeds
       •   Feed data need to be categorized , auto tagged and searchable
       •   Feed data can be bookmarked and shared across social channels
       •   Feed recommendations based on social graph data
       •   Feeds displayed to the user via series of templates (list, mosaic, magazine style)
       •   Supports mobile view of data
       •   Site Analytics
    • Nonfunctional Requirements
       •   Supports 10,000 concurrent users
       •   Supports initial user base of 500,000 users
       •   Feed volumes of about 500 feeds/sec
       •   Availability requirements (99.9% uptime)
       •   Hosted on cloud and resilient to availability zone failures
       •   CPU utilization should be minimum of 70% and application should be cost
           optimized for cloud resources


7
Functional Decomposition



                                                                          User Registration +
    •User registrations + Social Sites OAuth (FB, Twitter)
                                                                          Session Management
    •Allows users to insert/import RSS feeds                              User Data

                                                                          Feed Fetch, Search,
    •Feed data need to be categorized , auto tagged and searchable
                                                                          Content Tagging

    •Feed data can be bookmarked and shared across social channels        User Preferences

    •Feed recommendations based on social graph data                      Recommendation
    •Site Analytics                                                       Engine

    •Feeds displayed to the user via series of templates (list, mosaic,
     magazine style)                                                      Responsive Web
                                                                          Design
    •Supports mobile view of data




8
Functional Model



                             Responsive Web Design



           User           Session            User
                                                                  Search
        Registration    Management        Preferences


                   Content      Recommendati
                                                     Feed Fetch
                   Tagging        on Engine




9
Architecture Patterns




10
11
     User Registration



     User Preferences



          Search
                                                                      Partition by Functionality




     Content Tagging
                         Session Management
                                              Responsive Web Design




        Feed Fetch


     Recommendation
         Engine
Loose Coupling




12
Polyglot Persistence


                                                   Redis




                                                   Neo4j

       MySQL



       MySQL



                Apache
                            Mongodb   Mongodb   MapReduce
                Lucene


13
Fault Tolerance + Service Load Balancing

      Load Balancing
     between multiple
      Service provider
         instances




     Handling service
     provider instance
          failures




14
Fault Tolerance + Service Load Balancing

     Netflix Eureka Open Source Project




                                                                                      Picture from
     https://github.com/Netflix/eureka    https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance


15
Decoupling

                                  Communication across
                                                                    Web Services
                                 functional columns using
                                                                    model can also
                                     messages - SQS
                                                                    be used here!




                                                            Recommendation
                                            Content Data
          User Data




                                                                Engine
                        Search




                                          Mongo
         MySQL        Lucene                                Neo4j
                                           db


16
Async Request processing



                                    LESS -
                                Responsive Web
                                    Design




                                  Node.js for
                                 stateless and
                                 async request
                                  processing
                                     mode




17
Deployment Model




                        Distributed    Scalable



                         Available    Stateless


                          ASync            Event
                        processing         driven

                                 Fault
                                Tolerant




18
Summary

     •   Design to decouple and partition application functionality
     •   Right tools to solve the right problem
     •   Build for horizontal scalability – scale out
     •   Design to handle all kinds of failures
     •   Process asynchronously – event driven
     •   Build stateless compute services
     •   Minimize human intervention - DevOps/NoOps
     •   Above all, do not forget continuous build and deployment



                  Learned we may be with another man's learning: we can only be
                  wise with wisdom of our own
                                                            Michel de Montaigne

19
Munish K Gupta
     write2munish (at) gmail.com

     Twitter
     @write2munish
                         Blog(s)
               www.techspot.co.in
             www.akkaessentials.in

20

Building Cloud Native Applications

  • 1.
    Building Cloud Native Applications By Munish K Gupta - @write2munish 1
  • 2.
    Munish K Gupta • Current Avatar • Software Architect/Engineer –High Performance Architecture (HiPA) group @ Wipro Technologies • Author – Akka Essentials (Oct 2012) • Work with lot of open source stuff – Play Framework, Akka, Scala, mongodb, redis, LA MP stack • My Blogs • http://www.techspot.co.in • http://www.akkaessentails.in 2
  • 3.
    What is CloudNative Application? 3
  • 4.
    Cloud Native Application • All functionality is published and consumed via web Services services • Every Integration point will eventually fail one time Handling or another Failures • Be prepared to handle all kind of failures Horizontal • Design for Scale Out Scalability • Break down the task, process requests Asynchronous asynchronously Processing • Use queues to decouple functionality • Eventual consistency model • Build stateless services that can be scaled out and Stateless Model load balanced Minimize Human • Go DevOps/NoOps Intervention 4
  • 5.
  • 6.
  • 7.
    Functional & NonfunctionalRequirements • Functional Requirements • User registrations + Social Sites OAuth (FB, Twitter) • Allows users to insert/import RSS feeds • Feed data need to be categorized , auto tagged and searchable • Feed data can be bookmarked and shared across social channels • Feed recommendations based on social graph data • Feeds displayed to the user via series of templates (list, mosaic, magazine style) • Supports mobile view of data • Site Analytics • Nonfunctional Requirements • Supports 10,000 concurrent users • Supports initial user base of 500,000 users • Feed volumes of about 500 feeds/sec • Availability requirements (99.9% uptime) • Hosted on cloud and resilient to availability zone failures • CPU utilization should be minimum of 70% and application should be cost optimized for cloud resources 7
  • 8.
    Functional Decomposition User Registration + •User registrations + Social Sites OAuth (FB, Twitter) Session Management •Allows users to insert/import RSS feeds User Data Feed Fetch, Search, •Feed data need to be categorized , auto tagged and searchable Content Tagging •Feed data can be bookmarked and shared across social channels User Preferences •Feed recommendations based on social graph data Recommendation •Site Analytics Engine •Feeds displayed to the user via series of templates (list, mosaic, magazine style) Responsive Web Design •Supports mobile view of data 8
  • 9.
    Functional Model Responsive Web Design User Session User Search Registration Management Preferences Content Recommendati Feed Fetch Tagging on Engine 9
  • 10.
  • 11.
    11 User Registration User Preferences Search Partition by Functionality Content Tagging Session Management Responsive Web Design Feed Fetch Recommendation Engine
  • 12.
  • 13.
    Polyglot Persistence Redis Neo4j MySQL MySQL Apache Mongodb Mongodb MapReduce Lucene 13
  • 14.
    Fault Tolerance +Service Load Balancing Load Balancing between multiple Service provider instances Handling service provider instance failures 14
  • 15.
    Fault Tolerance +Service Load Balancing Netflix Eureka Open Source Project Picture from https://github.com/Netflix/eureka https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance 15
  • 16.
    Decoupling Communication across Web Services functional columns using model can also messages - SQS be used here! Recommendation Content Data User Data Engine Search Mongo MySQL Lucene Neo4j db 16
  • 17.
    Async Request processing LESS - Responsive Web Design Node.js for stateless and async request processing mode 17
  • 18.
    Deployment Model Distributed Scalable Available Stateless ASync Event processing driven Fault Tolerant 18
  • 19.
    Summary • Design to decouple and partition application functionality • Right tools to solve the right problem • Build for horizontal scalability – scale out • Design to handle all kinds of failures • Process asynchronously – event driven • Build stateless compute services • Minimize human intervention - DevOps/NoOps • Above all, do not forget continuous build and deployment Learned we may be with another man's learning: we can only be wise with wisdom of our own Michel de Montaigne 19
  • 20.
    Munish K Gupta write2munish (at) gmail.com Twitter @write2munish Blog(s) www.techspot.co.in www.akkaessentials.in 20

Editor's Notes

  • #2 The below and following notes on the template slides are to guide you only. In your final presentation, you may delete these notes and add relevant notes if any.Title slide:Title– should not exceed beyond 3 lines, font size 30-34, Arial Bold (Font size for the title of the PPT can vary between 30-34, Arial, Bold depending on the amount of text, however should not be smaller than 30 font size)Name should not exceed beyond 1 line, Designation; font size to remain at 16, Arial normalPlease keep the title slide simple, just the logo, title and name and designation to appear. No other graphic elements or any design, photograph, image can be added to this slide, alignment to remain the same