Facebook Pixel
Searching...
English
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Architecting for Scale

Architecting for Scale

High Availability for Your Growing Applications
by Lee Atchison 2016 230 pages
3.55
100+ ratings
Listen

Key Takeaways

1. Availability is the cornerstone of scalable applications

No one cares if your system has great features if they can't use it.

Availability vs. Reliability. Availability refers to a system's ability to be operational when needed, while reliability is about performing intended operations without mistakes. High availability is critical for scalable applications, as it directly impacts customer satisfaction and business success.

Measuring and improving availability. Use the formula: (Total Time - Downtime) / Total Time to calculate availability percentage. Aim for the "nines" (99.9%, 99.99%, etc.) based on your business needs. To improve availability:

  • Build with failure in mind
  • Always think about scaling
  • Mitigate risks
  • Monitor availability
  • Respond to issues predictably

Continuous monitoring and improvement. Regularly review and update your availability metrics, risk matrices, and recovery plans. Implement automated processes for deployments, configuration management, and testing to reduce human error and improve system reliability.

2. Risk management is essential for maintaining high availability

Everything fails all the time.

Identify and prioritize risks. Create a risk matrix to list all known risks, their likelihood, and severity. Regularly review and update this matrix to keep it current and relevant.

Mitigate risks effectively. Focus on:

  • Removing worst offenders
  • Implementing mitigation strategies
  • Creating recovery plans
  • Conducting "Game Days" to test recovery procedures

Balance risk and cost. Not all risks need to be eliminated. Assess the cost of removing a risk against the potential impact of it occurring. Use service tiers to prioritize critical components and allocate resources accordingly.

3. Microservices architecture enhances scalability and maintainability

A service is a distinct enclosed system that provides business functionality in support of building one or more larger products.

Benefits of microservices:

  • Improved scaling decisions
  • Better team focus and ownership
  • Reduced complexity at the local level
  • Enhanced testing and deployment capabilities

Designing microservices. Consider the following when defining service boundaries:

  • Specific business requirements
  • Distinct team ownership
  • Naturally separable data
  • Shared capabilities or data

Balancing granularity. Avoid creating too many small services, as this can increase overall system complexity. Aim for a balance between service simplicity and application manageability.

4. Service ownership and clear boundaries improve system reliability

A single service should be owned and operated by a single team that is typically no larger than three to eight developers.

Single Team Owned Service Architecture (STOSA). Implement STOSA to ensure clear ownership and responsibility for each service. This approach enables teams to focus on their specific areas of expertise and reduces inter-team dependencies.

Service owner responsibilities:

  • API design and management
  • Service development and testing
  • Data management
  • Deployments and production changes
  • Monitoring and incident response
  • SLA negotiation and management

Service-Level Agreements (SLAs). Use internal SLAs to manage expectations between services and teams. This builds trust and helps diagnose problems in complex systems.

5. Continuous improvement is crucial for scaling applications

Most modern applications experience growth in their traffic requirements, in the size and complexity of the application itself, and in the number of people working on the application.

Regular system examination. Continuously review and improve your application's architecture, performance, and scalability. Don't wait for problems to become critical before addressing them.

Key areas for improvement:

  • Implement microservices architecture
  • Adopt a distributed ownership model
  • Design stateless services where possible
  • Optimize data storage and access
  • Consider data partitioning strategies

Balancing improvements and growth. Anticipate future growth and implement improvements proactively. This approach helps prevent scaling issues before they become critical problems.

6. Cloud services offer flexible and scalable infrastructure options

Cloud computing has changed the way we think about building and running our applications.

Advantages of cloud services:

  • Rapid resource allocation and scaling
  • Managed services for databases, caching, and more
  • Improved focus on application development
  • Enhanced security and compliance options

Cloud resource allocation models:

  • Allocated-capacity resources (e.g., EC2 instances)
  • Usage-based resources (e.g., S3 storage)

Optimizing cloud usage. Leverage cloud-specific features like auto-scaling, reserved capacity, and managed services to balance cost and performance. Distribute your application across multiple availability zones and regions for improved reliability and global reach.

7. Scalable computing models provide diverse solutions for growth

Setting up, configuring, and managing servers, and deploying your applications to them, is only one way of deploying your high-scale application.

Scalable computing options:

  1. Cloud-based servers (e.g., EC2)
  2. Compute slices (e.g., Heroku Dynos)
  3. Dynamic containers (e.g., Docker)
  4. Microcompute (e.g., AWS Lambda)

Choosing the right model. Consider factors such as:

  • Application architecture and requirements
  • Desired level of control and management
  • Scalability needs and traffic patterns
  • Cost considerations

Leveraging microcompute. Explore technologies like AWS Lambda for event-driven, highly scalable processing tasks. These solutions offer near-limitless scaling with minimal management overhead, but may have limitations in functionality and deployment options.

Last updated:

Review Summary

3.55 out of 5
Average of 100+ ratings from Goodreads and Amazon.

Architecting for Scale receives mixed reviews, with an average rating of 3.55 out of 5. Readers appreciate its high-level overview of building scalable systems, risk management insights, and cloud computing guidance. Many find it valuable for beginners and managers, praising its concise writing style and real-world examples. However, some criticize its lack of depth, repetitiveness, and limited technical details. The book is considered a good starting point for understanding large-scale application architecture but may not offer new information for experienced professionals.

Your rating:

About the Author

Lee Atchison is an experienced software architect and author with a background in cloud computing and scalable systems. He has worked for notable companies such as Amazon Web Services (AWS) and New Relic, gaining valuable insights into building and managing large-scale applications. Atchison's expertise is evident in his writing, where he focuses on high-availability service-based systems, risk management, and cloud adoption strategies. His practical knowledge and lessons learned from years in the industry have contributed to the book's content, particularly in areas like risk assessment, microservices, and cloud computing best practices.

Download PDF

To save this Architecting for Scale summary for later, download the free PDF. You can print it out, or read offline at your convenience.
Download PDF
File size: 0.79 MB     Pages: 9

Download EPUB

To read this Architecting for Scale summary on your e-reader device or app, download the free EPUB. The .epub digital book format is ideal for reading ebooks on phones, tablets, and e-readers.
Download EPUB
File size: 3.45 MB     Pages: 6
0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Create a free account to unlock:
Bookmarks – save your favorite books
History – revisit books later
Ratings – rate books & see your ratings
Unlock unlimited listening
Your first week's on us!
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Dec 1,
cancel anytime before.
Compare Features Free Pro
Read full text summaries
Summaries are free to read for everyone
Listen to summaries
12,000+ hours of audio
Unlimited Bookmarks
Free users are limited to 10
Unlimited History
Free users are limited to 10
What our users say
30,000+ readers
“...I can 10x the number of books I can read...”
“...exceptionally accurate, engaging, and beautifully presented...”
“...better than any amazon review when I'm making a book-buying decision...”
Save 62%
Yearly
$119.88 $44.99/yr
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Settings
Appearance