Software engineers, architects, and SREs (site reliability engineers) are faced with building and managing complex systems that are expected to scale as the business needs grow and expand. This presents unique challenges because it’s not always easy to predict or understand how the future needs of business will impact the decisions made while architecting and designing solutions today.
In this blog series we’ll discuss how engineering teams have approached the challenges of designing and building scalable systems. We’ll reference white papers, blog posts, and industry experts along with publications including Cloud System Administration, The SRE Handbook, and others. Over the next few weeks, we’ll cover several important topics:
- General Scaling Strategy
- Bottleneck Identification and Refactoring
- Basic Scaling Tactics
- Advanced Approaches To Scaling Up
- Caching, Threading, and Queuing – Oh My!
- The Importance of Measurement
In the general strategy post, we’ll discuss some of the basic architectural requirements in order to effectively scale out applications. Next, we’ll talk about approaches to identifying bottlenecks, refactoring, and some of the initial approaches engineers can take to begin scaling their applications.
We’ll then discuss advanced scaling topics such as horizontal duplication, service splits, and lookup-oriented splits, and sharding. Finally, we’ll talk about integrating technology which even further enhances performance, scalability, and explore the benefits of using caching, threading, and queuing.
The series will finish with why all of these activities require precise, accurate, and real-time monitoring in today’s high-velocity organizations; and how Instana can help system engineers make informed decisions when managing distributed application performance. The goal of this series is to share a broad understanding of how to strategize and effectively scale cloud native applications, with several resources aimed at helping you dig deeper into specific topics.