Building Cloud Native Applications

2,954 views

Published on

Presented at Cloud Developer Conference April 2013

Published in: Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,954
On SlideShare
0
From Embeds
0
Number of Embeds
41
Actions
Shares
0
Downloads
125
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide
  • 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
  • Building Cloud Native Applications

    1. 1. Building Cloud Native Applications By Munish K Gupta - @write2munish1
    2. 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.in2
    3. 3. What is Cloud Native Application?3
    4. 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 Intervention4
    5. 5. Social Feed Application5
    6. 6. Social Feed Application6
    7. 7. 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 resources7
    8. 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 data8
    9. 9. Functional Model Responsive Web Design User Session User Search Registration Management Preferences Content Recommendati Feed Fetch Tagging on Engine9
    10. 10. Architecture Patterns10
    11. 11. 11 User Registration User Preferences Search Partition by Functionality Content Tagging Session Management Responsive Web Design Feed Fetch Recommendation Engine
    12. 12. Loose Coupling12
    13. 13. Polyglot Persistence Redis Neo4j MySQL MySQL Apache Mongodb Mongodb MapReduce Lucene13
    14. 14. Fault Tolerance + Service Load Balancing Load Balancing between multiple Service provider instances Handling service provider instance failures14
    15. 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-glance15
    16. 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 db16
    17. 17. Async Request processing LESS - Responsive Web Design Node.js for stateless and async request processing mode17
    18. 18. Deployment Model Distributed Scalable Available Stateless ASync Event processing driven Fault Tolerant18
    19. 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 mans learning: we can only be wise with wisdom of our own Michel de Montaigne19
    20. 20. Munish K Gupta write2munish (at) gmail.com Twitter @write2munish Blog(s) www.techspot.co.in www.akkaessentials.in20

    ×