View
1.860
Download
1
Category
Tags:
Preview:
DESCRIPTION
Citation preview
1
Munish K Gupta
Developing Scalable Apps for deploying on IaaS Cloud
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
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
4
High Performance Applications – Impact Factors
Application requirements
Reduce Latency
ScalabilityHigh 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
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.
6
Darshini Model
• Stateful• Synchronous• No Load
Balancing• No failover
7
• Load Balanced• Stateless• Asynchronous • Event Driven /
Message based• Partition by
function
McDonald’s Model
8
Go Stateless!
• State == Sessions !
Local Sessions
Centralized Session
No Sessions
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
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
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
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 !
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.
14
Munish K Gupta
write2munish (at) gmail dot com
Twitter @write2munish
Blog(s) www.techspot.co.in
www.akkaessentials.in
Recommended