Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Building Cloud Native Applications

3 464 vues

Publié le

Presented at Cloud Developer Conference April 2013

Publié dans : Technologie
  • Soyez le premier à commenter

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