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
• Topology of the
Reduce Solution
Latency • Single Point of
Solution Failure(s)
Architecture • Chosen Product
Stack
• Integration Strategy
• Application Design
Application • Choice of
requirements Application Frameworks
Architecture • Standards
Enforcement
• Build & Release
High
Scalability
Availability
• Hardware Choices
made
• Hardware/Software
Deployment Sizing
Architecture • System
Configuration(s)
• Hosting Environment
• Application/System
Monitoring
• Capacity Planning
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
6. Darshini Model
• Stateful
• Synchronous
• No Load
Balancing
• No failover
6
7. McDonald’s Model
• Load Balanced
• Stateless
• Asynchronous
• Event Driven /
Message based
• Partition by
function
7
8. Go Stateless!
• State == Sessions !
Local
Sessions
Centralized
Session
No
Sessions
8
9. Load Balancing
Load Balanced the DB
Servers with active sync
Load Balanced the
DB Servers using
Master-Slave
replications mode
Amazon
RDS
or SQL
Azure
options
Adding more web server and application servers
9
10. Go Asynchronous !
• Break down the request into parts – Go Event Driven
all the way ! Architecture
• 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)
10
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
11
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 !
12
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.
13
14. Munish K Gupta
write2munish (at) gmail dot com
Twitter
@write2munish
Blog(s)
www.techspot.co.in
14 www.akkaessentials.in
Notes de l'éditeur
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
Blank slideyou may use this to insert or show screenshots etcIf content is added in this slide you will need to use bulleted text
Vertical Image slide – Use this slide for a vertical image with text that flows in a running paragraphText– font size 20, ArialClick on the icon to add image, the size of the image will be automatically determined once inserted, do not alter the size of the imageIn the text box on the right the font size should not be beyond 20, Arial normal, and ensure the maximum content used is aligned to the size of the image, content should not exceed beyond the size of the image
Vertical Image slide – Use this slide for a vertical image with bulleted textText– font size 20, ArialClick on the icon to add image, the size of the image will be automatically determined once inserted, do not alter the size of the imageIn the text box on the right the font size should not be beyond 20, Arial normal, and ensure the maximum content used is aligned to the size of the image, content should not exceed beyond the size of the image
Horizontal Image slide – Horizontal image with text that flows in a running paragraphTitle – font size 20, ArialClick on the icon to add image, the size of the image will be automatically determined once inserted, do not alter the size of the imageIn the text box below the image the font size should not be beyond 18, Arial normal, and ensure the maximum content used is aligned to 5 lines, content should not exceed beyond the image size
Horizontal Image slide – Horizontal image with bulleted textTitle – font size 20, ArialClick on the icon to add image, the size of the image will be automatically determined once inserted, do not alter the size of the imageIn the text box below the bulleted text should not be beyond one lineFont size should be 20, Arial normal and should not exceed beyond 4 bullet points