SlideShare a Scribd company logo
1 of 33
Scaling Systems: Architectures
          that Grow
Fundamental Patterns for scaling you can
      implement incrementally
Who Am I?
• Kendall Miller
• One of the Founders of Gibraltar Software
   – Small Independent Software Vendor Founded in 2008
   – Developers of VistaDB and Gibraltar
   – Engineers, not Sales People
• Enterprise Systems Architect & Developer since 1995
• BSE in Computer Engineering, University of Illinois
  Urbana-Champaign (UIUC)
• Twitter: @KendallMiller
Fair Warning
What is Scale?


Scaling is the ability to cope
   and perform under an
    increasing workload.
What is Scale?



Scaling to a load = available
    sustaining that load
What is Scale?


 Being available is really
 about a request being
completed in a period of
         time.
What’s your Target?
0.00E+00   1.00E+07    2.00E+07    3.00E+07   4.00E+07   5.00E+07   6.00E+07   7.00E+07

                                 Microsoft.com

                   Twitter.com

     Amazon.com

    Target.com

    Slashdot.org

    DevExpress.com

    Hanselman.com
    Gibraltar
    Software
     Average daily traffic in Visitors / Day
What’s your Target?
1.00E+00 1.00E+01 1.00E+02 1.00E+03 1.00E+04 1.00E+05 1.00E+06 1.00E+07 1.00E+08

                                 Microsoft.com

                                 Twitter.com

                              Amazon.com

                           Target.com

                     Slashdot.org

                DevExpress.com

              Hanselman.com
             Gibraltar
             Software
    Average daily traffic in Visitors / Day
What’s your Target?


  25,000 Visitors/Day = 125,000 Pages/Day

11 High Traffic Hours/Day = 12,000 Pages/Hour

   12,000 Pages/Hour = 3.3 Pages/Second
Specific Architectures
•   Gossip                   • Load Balancers + Shared
•   Map Reduce                 Nothing Units
•   Tree of Responsibility   • Load Balancers +
•   Stream Processing          Stateless Nodes +
                               Scalable Storage
•   Scalable Storage
                             • Content Addressable
•   Publish/Subscribe          Networks
•   Distributed Queues       • General Peer to Peer
ACD/C
• Async – Do the work whenever
• Caching – Don’t do any work you don’t have
  to
• Distribution – Get as many people to do the
  work as you can
• Consistency – We all agree on these key things
Async
• Decouple operations so you do the minimum
  amount of work in performance critical paths
• Queue work that can be completed later to
  smooth out load
• Speculative Execution
• Scheduled Requests (Nightly processes)
Caching
• Save results of earlier work nearby where they
  are handy to use again later
• Apply in front of anything that’s time
  consuming
• Easiest to apply from the left to the right
• Simple strategies can be really effective (EF
  Dump all on update)
Why Caching?
• Loading the world is impractical
• Apps ask a lot of repeating questions.
  – Stateless applications even more so
• Answers don’t change often
• Authoritative information is expensive
Distribution
• Distribute requests across multiple systems
• Classic web “Scale Out” approach
• The less state held, the easier to distribute
  work.
  – Distributed database = hard
  – Distributed static content server = easy
• Request routing for distribution can serve
  other availability purposes
Consistency
• The degree to which all parties observe the
  same state of the system at the same time
• Scaling inevitably requires compromise
  – Forces one source of the truth for absolute
    consistency and requires extensive locking to
    ensure parties agree
  – The real world doesn’t require the consistency we
    tend to demand of our systems
Consistency Challenges
• Singleton Data Structures (Order numbers..)
• State held between the endpoints of a process
• Consistent results of queries across
  partitioned datasets
Typical Application
                   Session State          Transaction Isolation
                    SSL Session           Reader/Writer Locks
                  Log Contention       Singleton Data Structures
                Memory Allocation/GC
                  Network Sockets
                  Request Queue



 Client                Server
  (Web                  (Web                   Storage
Browser)               Server)               (Database)
Caching
100%       50%     10%      1%




 Client           Server
  (Web             (Web            Storage
Browser)          Server)        (Database)
Distribution
                            Session State and Identity
                             need to be factored out
                             Partition (Sticky Session)
                            First, then stateless nodes
 Client           Server
  (Web             (Web
 Client
Browser)          Server)
  (Web
 Client                                Storage
Browser)
  (Web                               (Database)
 Client           Server
Browser)
  (Web             (Web
Browser)          Server)
Partitioned Storage Zones
                   Server
 Client             (Web
                   Server
  (Web             Server)
                    (Web       Storage
 Client                      (Database)
Browser)           Server)
  (Web
 Client
Browser)
  (Web
 Client            Server
Browser)
  (Web              (Web
Browser)           Server
                   Server)     Storage
                    (Web
                   Server)   (Database)
Partitioned Storage Intra-Zone

 Client                 Server
                                   Orders
  (Web     Customer B    (Web
                        Server
 Client
Browser)                Server)
                         (Web
  (Web                  Server
 Client                 Server)
Browser)                 (Web
  (Web                  Server
 Client                 Server)
Browser)                 (Web     Products
  (Web
                        Server)
Browser)


                                  Inventory
Asynchronous Processing

Server                   Orders
 (Web      Order
Server
Server)    Queue
 (Web
Server
Server)
 (Web
Server
Server)
 (Web                   Products
Server)
            Order
          Processing
            Server      Inventory
Fallacies of Distributed Computing
•   The network is reliable
•   Latency is zero
•   Bandwidth is infinite
•   The network is secure
•   Topology doesn’t change
•   There is one administrator
•   Transport cost is zero
•   The network is homogeneous
Fresh Problems: Partial Failures

 Client           Server
  (Web             (Web
 Client
Browser)          Server)
  (Web
 Client                        Storage
Browser)
  (Web                       (Database)
 Client           Server
Browser)
  (Web             (Web
Browser)          Server)
Fresh Problems: Partial Failures
1. Break system into individual failure zones
2. Monitor each instance of each zone for
   problems
3. Route around bad instances
Without
monitoring, redundancy is
       worthless
Fresh Problems: Upgrades
                  Server
 Client            (Web
                  Server
  (Web            Server)
                   (Web       Storage
 Client                     (Database)
Browser)          Server)
  (Web
 Client
Browser)
  (Web
 Client           Server
Browser)
  (Web             (Web
Browser)          Server
                  Server)     Storage
                   (Web
                  Server)   (Database)
Fresh Problems: Upgrades
1. Break system into individual upgrade zones
2. Upgrade each zone – Drain &
   Stop, Upgrade, Verify.
3. Cut traffic over to updated zones
Design for Software Update
      From the Start
    • Don’t forget Data Schemas
Bringing Home the Bacon


       Testing
       Testing
       Testing
Critical Lessons Learned
• ACD/C
• Clear Consistency
  Strategy
• Build in monitoring and
  management
Additional Information:
   Websites
      – www.GibraltarSoftware.com
      – www.eSymmetrix.com

   Follow Up
      – Kendall.Miller@eSymmetrix.com
      – Twitter: kendallmiller

More Related Content

What's hot

The impact of cloud NSBCon NY by Yves Goeleven
The impact of cloud NSBCon NY by Yves GoelevenThe impact of cloud NSBCon NY by Yves Goeleven
The impact of cloud NSBCon NY by Yves GoelevenParticular Software
 
Aws 12 Month Free Tier for Web Designers and Developers
Aws 12 Month Free Tier for Web Designers and DevelopersAws 12 Month Free Tier for Web Designers and Developers
Aws 12 Month Free Tier for Web Designers and DevelopersDylan Burris
 
VMworld 2014: Virtualize Active Directory, the Right Way!
VMworld 2014: Virtualize Active Directory, the Right Way!VMworld 2014: Virtualize Active Directory, the Right Way!
VMworld 2014: Virtualize Active Directory, the Right Way!VMworld
 
Event Driven-Architecture from a Scalability perspective
Event Driven-Architecture from a Scalability perspectiveEvent Driven-Architecture from a Scalability perspective
Event Driven-Architecture from a Scalability perspectiveJonas Bonér
 
10 Tricks to Ensure Your Oracle Coherence Cluster is Not a "Black Box" in Pro...
10 Tricks to Ensure Your Oracle Coherence Cluster is Not a "Black Box" in Pro...10 Tricks to Ensure Your Oracle Coherence Cluster is Not a "Black Box" in Pro...
10 Tricks to Ensure Your Oracle Coherence Cluster is Not a "Black Box" in Pro...SL Corporation
 
How to Build High Performance : WordPress
How to Build High Performance : WordPressHow to Build High Performance : WordPress
How to Build High Performance : WordPressDylan Burris
 
12 best practices for virtualizing active directory DCs
12 best practices for virtualizing active directory DCs12 best practices for virtualizing active directory DCs
12 best practices for virtualizing active directory DCsVeeam Software
 
Towards the Cloud: Architecture Patterns and VDI Story
Towards the Cloud: Architecture Patterns and VDI StoryTowards the Cloud: Architecture Patterns and VDI Story
Towards the Cloud: Architecture Patterns and VDI StoryIT Expert Club
 
Design principles of scalable, distributed systems
Design principles of scalable, distributed systemsDesign principles of scalable, distributed systems
Design principles of scalable, distributed systemsTinniam V Ganesh (TV)
 
Dennis Doomen. Using OWIN, Webhooks, Event Sourcing and the Onion Architectur...
Dennis Doomen. Using OWIN, Webhooks, Event Sourcing and the Onion Architectur...Dennis Doomen. Using OWIN, Webhooks, Event Sourcing and the Onion Architectur...
Dennis Doomen. Using OWIN, Webhooks, Event Sourcing and the Onion Architectur...IT Arena
 
VMworld 2013: Virtualize Active Directory ‒ The Right Way!
VMworld 2013: Virtualize Active Directory ‒ The Right Way!VMworld 2013: Virtualize Active Directory ‒ The Right Way!
VMworld 2013: Virtualize Active Directory ‒ The Right Way!VMworld
 
Stream Collections - Scala Days
Stream Collections - Scala DaysStream Collections - Scala Days
Stream Collections - Scala DaysGreg Silin
 
Architecting for the cloud cloud providers
Architecting for the cloud cloud providersArchitecting for the cloud cloud providers
Architecting for the cloud cloud providersLen Bass
 
Reactive Supply To Changing Demand
Reactive Supply To Changing DemandReactive Supply To Changing Demand
Reactive Supply To Changing DemandJonas Bonér
 
Select Stars: A DBA's Guide to Azure Cosmos DB (Chicago Suburban SQL Server U...
Select Stars: A DBA's Guide to Azure Cosmos DB (Chicago Suburban SQL Server U...Select Stars: A DBA's Guide to Azure Cosmos DB (Chicago Suburban SQL Server U...
Select Stars: A DBA's Guide to Azure Cosmos DB (Chicago Suburban SQL Server U...Bob Pusateri
 
Varrow Q4 Lunch & Learn Presentation - Virtualizing Business Critical Applica...
Varrow Q4 Lunch & Learn Presentation - Virtualizing Business Critical Applica...Varrow Q4 Lunch & Learn Presentation - Virtualizing Business Critical Applica...
Varrow Q4 Lunch & Learn Presentation - Virtualizing Business Critical Applica...Andrew Miller
 
Dashboard project.
Dashboard project.Dashboard project.
Dashboard project.ratankadam
 
Architecting for the cloud elasticity security
Architecting for the cloud elasticity securityArchitecting for the cloud elasticity security
Architecting for the cloud elasticity securityLen Bass
 

What's hot (20)

CQRS
CQRSCQRS
CQRS
 
The impact of cloud NSBCon NY by Yves Goeleven
The impact of cloud NSBCon NY by Yves GoelevenThe impact of cloud NSBCon NY by Yves Goeleven
The impact of cloud NSBCon NY by Yves Goeleven
 
Aws 12 Month Free Tier for Web Designers and Developers
Aws 12 Month Free Tier for Web Designers and DevelopersAws 12 Month Free Tier for Web Designers and Developers
Aws 12 Month Free Tier for Web Designers and Developers
 
VMworld 2014: Virtualize Active Directory, the Right Way!
VMworld 2014: Virtualize Active Directory, the Right Way!VMworld 2014: Virtualize Active Directory, the Right Way!
VMworld 2014: Virtualize Active Directory, the Right Way!
 
Event Driven-Architecture from a Scalability perspective
Event Driven-Architecture from a Scalability perspectiveEvent Driven-Architecture from a Scalability perspective
Event Driven-Architecture from a Scalability perspective
 
10 Tricks to Ensure Your Oracle Coherence Cluster is Not a "Black Box" in Pro...
10 Tricks to Ensure Your Oracle Coherence Cluster is Not a "Black Box" in Pro...10 Tricks to Ensure Your Oracle Coherence Cluster is Not a "Black Box" in Pro...
10 Tricks to Ensure Your Oracle Coherence Cluster is Not a "Black Box" in Pro...
 
How to Build High Performance : WordPress
How to Build High Performance : WordPressHow to Build High Performance : WordPress
How to Build High Performance : WordPress
 
12 best practices for virtualizing active directory DCs
12 best practices for virtualizing active directory DCs12 best practices for virtualizing active directory DCs
12 best practices for virtualizing active directory DCs
 
Towards the Cloud: Architecture Patterns and VDI Story
Towards the Cloud: Architecture Patterns and VDI StoryTowards the Cloud: Architecture Patterns and VDI Story
Towards the Cloud: Architecture Patterns and VDI Story
 
Design principles of scalable, distributed systems
Design principles of scalable, distributed systemsDesign principles of scalable, distributed systems
Design principles of scalable, distributed systems
 
Dennis Doomen. Using OWIN, Webhooks, Event Sourcing and the Onion Architectur...
Dennis Doomen. Using OWIN, Webhooks, Event Sourcing and the Onion Architectur...Dennis Doomen. Using OWIN, Webhooks, Event Sourcing and the Onion Architectur...
Dennis Doomen. Using OWIN, Webhooks, Event Sourcing and the Onion Architectur...
 
Os Solomon
Os SolomonOs Solomon
Os Solomon
 
VMworld 2013: Virtualize Active Directory ‒ The Right Way!
VMworld 2013: Virtualize Active Directory ‒ The Right Way!VMworld 2013: Virtualize Active Directory ‒ The Right Way!
VMworld 2013: Virtualize Active Directory ‒ The Right Way!
 
Stream Collections - Scala Days
Stream Collections - Scala DaysStream Collections - Scala Days
Stream Collections - Scala Days
 
Architecting for the cloud cloud providers
Architecting for the cloud cloud providersArchitecting for the cloud cloud providers
Architecting for the cloud cloud providers
 
Reactive Supply To Changing Demand
Reactive Supply To Changing DemandReactive Supply To Changing Demand
Reactive Supply To Changing Demand
 
Select Stars: A DBA's Guide to Azure Cosmos DB (Chicago Suburban SQL Server U...
Select Stars: A DBA's Guide to Azure Cosmos DB (Chicago Suburban SQL Server U...Select Stars: A DBA's Guide to Azure Cosmos DB (Chicago Suburban SQL Server U...
Select Stars: A DBA's Guide to Azure Cosmos DB (Chicago Suburban SQL Server U...
 
Varrow Q4 Lunch & Learn Presentation - Virtualizing Business Critical Applica...
Varrow Q4 Lunch & Learn Presentation - Virtualizing Business Critical Applica...Varrow Q4 Lunch & Learn Presentation - Virtualizing Business Critical Applica...
Varrow Q4 Lunch & Learn Presentation - Virtualizing Business Critical Applica...
 
Dashboard project.
Dashboard project.Dashboard project.
Dashboard project.
 
Architecting for the cloud elasticity security
Architecting for the cloud elasticity securityArchitecting for the cloud elasticity security
Architecting for the cloud elasticity security
 

Similar to Scaling Systems: Architectures that Grow

Building Real World Applications using Windows Azure - Scott Guthrie, 2nd Dec...
Building Real World Applications using Windows Azure - Scott Guthrie, 2nd Dec...Building Real World Applications using Windows Azure - Scott Guthrie, 2nd Dec...
Building Real World Applications using Windows Azure - Scott Guthrie, 2nd Dec...Vikas Sahni
 
Building azure applications ireland
Building azure applications irelandBuilding azure applications ireland
Building azure applications irelandMichael Meagher
 
Windows Azure Platform
Windows Azure PlatformWindows Azure Platform
Windows Azure PlatformAsmTrash
 
Fixing Twitter Velocity2009
Fixing Twitter Velocity2009Fixing Twitter Velocity2009
Fixing Twitter Velocity2009John Adams
 
Architecting Scalable Applications in the Cloud
Architecting Scalable Applications in the CloudArchitecting Scalable Applications in the Cloud
Architecting Scalable Applications in the CloudClint Edmonson
 
Fixing twitter
Fixing twitterFixing twitter
Fixing twitterRoger Xia
 
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...smallerror
 
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...xlight
 
Building Real World Application with Azure
Building Real World Application with AzureBuilding Real World Application with Azure
Building Real World Application with Azuredivyapisces
 
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...Amazon Web Services
 
Building Highly Scalable Java Applications on Windows Azure - JavaOne S313978
Building Highly Scalable Java Applications on Windows Azure - JavaOne S313978Building Highly Scalable Java Applications on Windows Azure - JavaOne S313978
Building Highly Scalable Java Applications on Windows Azure - JavaOne S313978David Chou
 
Internet Scale Architecture
Internet Scale ArchitectureInternet Scale Architecture
Internet Scale ArchitectureRightScale
 
Database Virtualization: The Next Wave of Big Data
Database Virtualization: The Next Wave of Big DataDatabase Virtualization: The Next Wave of Big Data
Database Virtualization: The Next Wave of Big Dataexponential-inc
 
Windows Azure Uzerinden Alinabilen Hizmetler
Windows Azure Uzerinden Alinabilen HizmetlerWindows Azure Uzerinden Alinabilen Hizmetler
Windows Azure Uzerinden Alinabilen HizmetlerMustafa
 
Windows Azure Üzerinden Alınabilecek Hizmetler
Windows Azure Üzerinden Alınabilecek HizmetlerWindows Azure Üzerinden Alınabilecek Hizmetler
Windows Azure Üzerinden Alınabilecek HizmetlerMSHOWTO Bilisim Toplulugu
 
13h00 p duff-building-applications-with-aws-final
13h00   p duff-building-applications-with-aws-final13h00   p duff-building-applications-with-aws-final
13h00 p duff-building-applications-with-aws-finalLuiz Gustavo Santos
 
Java EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolithJava EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolithMarkus Eisele
 

Similar to Scaling Systems: Architectures that Grow (20)

Building Real World Applications using Windows Azure - Scott Guthrie, 2nd Dec...
Building Real World Applications using Windows Azure - Scott Guthrie, 2nd Dec...Building Real World Applications using Windows Azure - Scott Guthrie, 2nd Dec...
Building Real World Applications using Windows Azure - Scott Guthrie, 2nd Dec...
 
Building azure applications ireland
Building azure applications irelandBuilding azure applications ireland
Building azure applications ireland
 
Windows Azure Platform
Windows Azure PlatformWindows Azure Platform
Windows Azure Platform
 
Fixing Twitter Velocity2009
Fixing Twitter Velocity2009Fixing Twitter Velocity2009
Fixing Twitter Velocity2009
 
Architecting Scalable Applications in the Cloud
Architecting Scalable Applications in the CloudArchitecting Scalable Applications in the Cloud
Architecting Scalable Applications in the Cloud
 
Fixing twitter
Fixing twitterFixing twitter
Fixing twitter
 
Fixing_Twitter
Fixing_TwitterFixing_Twitter
Fixing_Twitter
 
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
 
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
 
Building Real World Application with Azure
Building Real World Application with AzureBuilding Real World Application with Azure
Building Real World Application with Azure
 
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
 
Building Highly Scalable Java Applications on Windows Azure - JavaOne S313978
Building Highly Scalable Java Applications on Windows Azure - JavaOne S313978Building Highly Scalable Java Applications on Windows Azure - JavaOne S313978
Building Highly Scalable Java Applications on Windows Azure - JavaOne S313978
 
Internet Scale Architecture
Internet Scale ArchitectureInternet Scale Architecture
Internet Scale Architecture
 
Database Virtualization: The Next Wave of Big Data
Database Virtualization: The Next Wave of Big DataDatabase Virtualization: The Next Wave of Big Data
Database Virtualization: The Next Wave of Big Data
 
Windows Azure Uzerinden Alinabilen Hizmetler
Windows Azure Uzerinden Alinabilen HizmetlerWindows Azure Uzerinden Alinabilen Hizmetler
Windows Azure Uzerinden Alinabilen Hizmetler
 
Windows Azure Üzerinden Alınabilecek Hizmetler
Windows Azure Üzerinden Alınabilecek HizmetlerWindows Azure Üzerinden Alınabilecek Hizmetler
Windows Azure Üzerinden Alınabilecek Hizmetler
 
Building Applications with AWS
Building Applications with AWSBuilding Applications with AWS
Building Applications with AWS
 
13h00 p duff-building-applications-with-aws-final
13h00   p duff-building-applications-with-aws-final13h00   p duff-building-applications-with-aws-final
13h00 p duff-building-applications-with-aws-final
 
Java EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolithJava EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolith
 
Azure basics
Azure basicsAzure basics
Azure basics
 

More from Gibraltar Software

Introducing Agile to the Enterprise
Introducing Agile to the EnterpriseIntroducing Agile to the Enterprise
Introducing Agile to the EnterpriseGibraltar Software
 
The raspberry pi – building an internet radio
The raspberry pi – building an internet radioThe raspberry pi – building an internet radio
The raspberry pi – building an internet radioGibraltar Software
 
Connecting to the raspberry pi from your laptop
Connecting to the raspberry pi from your laptopConnecting to the raspberry pi from your laptop
Connecting to the raspberry pi from your laptopGibraltar Software
 
Setting uptheraspberrypiusingberryboot
Setting uptheraspberrypiusingberrybootSetting uptheraspberrypiusingberryboot
Setting uptheraspberrypiusingberrybootGibraltar Software
 
Software Company Survival Guide
Software Company Survival GuideSoftware Company Survival Guide
Software Company Survival GuideGibraltar Software
 

More from Gibraltar Software (6)

Introducing Agile to the Enterprise
Introducing Agile to the EnterpriseIntroducing Agile to the Enterprise
Introducing Agile to the Enterprise
 
The raspberry pi – building an internet radio
The raspberry pi – building an internet radioThe raspberry pi – building an internet radio
The raspberry pi – building an internet radio
 
Connecting to the raspberry pi from your laptop
Connecting to the raspberry pi from your laptopConnecting to the raspberry pi from your laptop
Connecting to the raspberry pi from your laptop
 
Setting uptheraspberrypiusingberryboot
Setting uptheraspberrypiusingberrybootSetting uptheraspberrypiusingberryboot
Setting uptheraspberrypiusingberryboot
 
Software Company Survival Guide
Software Company Survival GuideSoftware Company Survival Guide
Software Company Survival Guide
 
A Year in the Life of an ISV
A Year in the Life of an ISVA Year in the Life of an ISV
A Year in the Life of an ISV
 

Recently uploaded

"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

Scaling Systems: Architectures that Grow

  • 1. Scaling Systems: Architectures that Grow Fundamental Patterns for scaling you can implement incrementally
  • 2. Who Am I? • Kendall Miller • One of the Founders of Gibraltar Software – Small Independent Software Vendor Founded in 2008 – Developers of VistaDB and Gibraltar – Engineers, not Sales People • Enterprise Systems Architect & Developer since 1995 • BSE in Computer Engineering, University of Illinois Urbana-Champaign (UIUC) • Twitter: @KendallMiller
  • 4. What is Scale? Scaling is the ability to cope and perform under an increasing workload.
  • 5. What is Scale? Scaling to a load = available sustaining that load
  • 6. What is Scale? Being available is really about a request being completed in a period of time.
  • 7. What’s your Target? 0.00E+00 1.00E+07 2.00E+07 3.00E+07 4.00E+07 5.00E+07 6.00E+07 7.00E+07 Microsoft.com Twitter.com Amazon.com Target.com Slashdot.org DevExpress.com Hanselman.com Gibraltar Software Average daily traffic in Visitors / Day
  • 8. What’s your Target? 1.00E+00 1.00E+01 1.00E+02 1.00E+03 1.00E+04 1.00E+05 1.00E+06 1.00E+07 1.00E+08 Microsoft.com Twitter.com Amazon.com Target.com Slashdot.org DevExpress.com Hanselman.com Gibraltar Software Average daily traffic in Visitors / Day
  • 9. What’s your Target? 25,000 Visitors/Day = 125,000 Pages/Day 11 High Traffic Hours/Day = 12,000 Pages/Hour 12,000 Pages/Hour = 3.3 Pages/Second
  • 10. Specific Architectures • Gossip • Load Balancers + Shared • Map Reduce Nothing Units • Tree of Responsibility • Load Balancers + • Stream Processing Stateless Nodes + Scalable Storage • Scalable Storage • Content Addressable • Publish/Subscribe Networks • Distributed Queues • General Peer to Peer
  • 11. ACD/C • Async – Do the work whenever • Caching – Don’t do any work you don’t have to • Distribution – Get as many people to do the work as you can • Consistency – We all agree on these key things
  • 12. Async • Decouple operations so you do the minimum amount of work in performance critical paths • Queue work that can be completed later to smooth out load • Speculative Execution • Scheduled Requests (Nightly processes)
  • 13. Caching • Save results of earlier work nearby where they are handy to use again later • Apply in front of anything that’s time consuming • Easiest to apply from the left to the right • Simple strategies can be really effective (EF Dump all on update)
  • 14. Why Caching? • Loading the world is impractical • Apps ask a lot of repeating questions. – Stateless applications even more so • Answers don’t change often • Authoritative information is expensive
  • 15. Distribution • Distribute requests across multiple systems • Classic web “Scale Out” approach • The less state held, the easier to distribute work. – Distributed database = hard – Distributed static content server = easy • Request routing for distribution can serve other availability purposes
  • 16. Consistency • The degree to which all parties observe the same state of the system at the same time • Scaling inevitably requires compromise – Forces one source of the truth for absolute consistency and requires extensive locking to ensure parties agree – The real world doesn’t require the consistency we tend to demand of our systems
  • 17. Consistency Challenges • Singleton Data Structures (Order numbers..) • State held between the endpoints of a process • Consistent results of queries across partitioned datasets
  • 18. Typical Application Session State Transaction Isolation SSL Session Reader/Writer Locks Log Contention Singleton Data Structures Memory Allocation/GC Network Sockets Request Queue Client Server (Web (Web Storage Browser) Server) (Database)
  • 19. Caching 100% 50% 10% 1% Client Server (Web (Web Storage Browser) Server) (Database)
  • 20. Distribution Session State and Identity need to be factored out Partition (Sticky Session) First, then stateless nodes Client Server (Web (Web Client Browser) Server) (Web Client Storage Browser) (Web (Database) Client Server Browser) (Web (Web Browser) Server)
  • 21. Partitioned Storage Zones Server Client (Web Server (Web Server) (Web Storage Client (Database) Browser) Server) (Web Client Browser) (Web Client Server Browser) (Web (Web Browser) Server Server) Storage (Web Server) (Database)
  • 22. Partitioned Storage Intra-Zone Client Server Orders (Web Customer B (Web Server Client Browser) Server) (Web (Web Server Client Server) Browser) (Web (Web Server Client Server) Browser) (Web Products (Web Server) Browser) Inventory
  • 23. Asynchronous Processing Server Orders (Web Order Server Server) Queue (Web Server Server) (Web Server Server) (Web Products Server) Order Processing Server Inventory
  • 24. Fallacies of Distributed Computing • The network is reliable • Latency is zero • Bandwidth is infinite • The network is secure • Topology doesn’t change • There is one administrator • Transport cost is zero • The network is homogeneous
  • 25. Fresh Problems: Partial Failures Client Server (Web (Web Client Browser) Server) (Web Client Storage Browser) (Web (Database) Client Server Browser) (Web (Web Browser) Server)
  • 26. Fresh Problems: Partial Failures 1. Break system into individual failure zones 2. Monitor each instance of each zone for problems 3. Route around bad instances
  • 28. Fresh Problems: Upgrades Server Client (Web Server (Web Server) (Web Storage Client (Database) Browser) Server) (Web Client Browser) (Web Client Server Browser) (Web (Web Browser) Server Server) Storage (Web Server) (Database)
  • 29. Fresh Problems: Upgrades 1. Break system into individual upgrade zones 2. Upgrade each zone – Drain & Stop, Upgrade, Verify. 3. Cut traffic over to updated zones
  • 30. Design for Software Update From the Start • Don’t forget Data Schemas
  • 31. Bringing Home the Bacon Testing Testing Testing
  • 32. Critical Lessons Learned • ACD/C • Clear Consistency Strategy • Build in monitoring and management
  • 33. Additional Information: Websites – www.GibraltarSoftware.com – www.eSymmetrix.com Follow Up – Kendall.Miller@eSymmetrix.com – Twitter: kendallmiller

Editor's Notes

  1. What level of scaling are we talking about?Scaling is the ability to cope and perform under an increasing workload.
  2. This is VISITORS per DAYMicrosoft.com: 60M Twitter.com: 35MAmazon.com: 15MTarget.com: 2MDevExpress.com & Telerik.com: 25KHanselman.com: 12KGibraltar Software: 1K
  3. This is VISITORS per DAYMicrosoft.com: 60M Twitter.com: 35MAmazon.com: 15MTarget.com: 2MDevExpress.com & Telerik.com: 25KHanselman.com: 12KGibraltar Software: 1K
  4. THIS IS NOT ABOUT ASYNC FOR FASTER PERCEIVED PERFORMANCE
  5. Improve response under loadDo only the work you have to Up to 95% of the work on the typical site can be pulled from cache
  6. Add reverse proxy (Load Balancer)Add additional middle tier serversSession state and identity need to be factored outPartition (“Sticky session”) first, then true load balancing with no state in center
  7. Break down traffic by easy to determine characteristic: Customer, product category, etc.Add storage regions that are self-consistentCan vary exact mix of what data is in each container and how you partitionTypically some parts may be shared like IdentityCross-zone aggregation is slowCross-zone coherency strategy
  8. Middle tier routes storage requests based on easy to determine characteristicConsistency strategy complexity (reports may reflect delayed data, different parties may not see the same view of the world)
  9. Separate long running, dangerous, or serialized tasks from general workWorkflow consistency strategy requiredComplications with deployment and versioningDeferred failure scenarios.
  10. Add reverse proxy (Load Balancer)Add additional middle tier serversSession state and identity need to be factored outPartition (“Sticky session”) first, then true load balancing with no state in center
  11. Break down traffic by easy to determine characteristic: Customer, product category, etc.Add storage regions that are self-consistentCan vary exact mix of what data is in each container and how you partitionTypically some parts may be shared like IdentityCross-zone aggregation is slowCross-zone coherency strategy