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

Developing Scalable Apps for deploying on IaaS ...

Developing Scalable Apps for deploying on IaaS Cloud

write2munish

April 28, 2012
Tweet

More Decks by write2munish

Other Decks in Technology

Transcript

  1. 2 Who am I? • Current Avatar • Practice Lead

    – Architecture for High Performance Applications (AHiPA) @ Wipro Technologies • Work with lot of open source stuff – Play Framework, Akka, Scala, mongodb, redis, LAMP stack • Previous Avatar • Chief Architect for ideaken.com • Worked @ Wipro, Sapient, MindTree and Siemens • My Blogs • http://www.techspot.co.in • http://www.akkaessentails.in
  2. 3 Expectation(s) • This session will not solve your problems

    ! • My goals are • To make you think harder about your problems • Help you evaluate possible solutions • Agenda • Patterns that help improve Scalability of Application • Best Practices when building scalable applications
  3. 4 High Performance Applications – Impact Factors Application requirements Reduce

    Latency Scalability High Availability • Topology of the Solution • Single Point of Failure(s) • Chosen Product Stack • Integration Strategy Solution Architecture • Application Design • Choice of Frameworks • Standards Enforcement • Build & Release Application Architecture • Hardware Choices made • Hardware/Software Sizing • System Configuration(s) • Hosting Environment • Application/System Monitoring • Capacity Planning Deployment Architecture
  4. 5 What is Scalability? Scalability means ability of an application

    to handle growing amount of data and concurrency in an efficient manner without impacting performance.
  5. 7 • Load Balanced • Stateless • Asynchronous • Event

    Driven / Message based • Partition by function McDonald’s Model
  6. 9 Load Balancing Adding more web server and application servers

    Load Balanced the DB Servers with active sync Load Balanced the DB Servers using Master-Slave replications mode Amazon RDS or SQL Azure options
  7. 10 Go Asynchronous ! • Break down the request into

    parts – Go all the way ! • Isolate those that can be executed in non blocking mode (asynchronously) • Queue the information needed to complete the Task (messages) • Process the queues on the background thread (non blocking) Event Driven Architecture
  8. 11 Best Practices • Partition by Function - Shard/Segment your

    Application.. Spread Out ! • Think Horizontal, Not Vertical • Scale Out • Use commodity equipment • Hardware and Memory is cheap - Add plenty of RAM and use 64bit hardware • Design application with failure in mind • Use caching wherever possible ! • Bring homogeneity in your application • Do not have too many moving parts • Think Simplicity • Define the QoS for your application
  9. 12 Best Practices • Continuous Application Monitoring • Test your

    ability to scale ! • Do not underestimate the importance of Processes & related documentation • Configuration Management • Release Management • Change Management • Source Control • Issue Tracking • Coding Standards • Minimize human intervention • Learn from Others !
  10. 13 Summary • What is Scalability? • Factors that impact

    Application Scalability • Darshini vs McDonald Model • Scalability Patterns and Best Practices You can read all the books in the world about riding a bicycle, but you will not be able to ride one until you get on it and fall off a few times.
  11. 14 Munish K Gupta write2munish (at) gmail dot com Twitter

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