The book "Scaling applications. Growing complex systems »

    imageWe live in a world of growing applications. Almost any software product sooner or later has to be expanded, built on, adapted to serve a growing user audience and peak loads. In order for such scaling to proceed smoothly and quickly, you need to lay such capabilities already at the application architecture level. In this application book, Lee Atchison talks not only about the architectural subtleties necessary for efficient application scaling, but also about the risks inherent in such work, the competent organization of scaling, and the use of cloud services. The book describes the key decisions and practices of scalable systems: availability, service classes, scheduled inspections, risk matrices.


    Who is the publication for?


    This book is intended for programmers, system architects, technical managers, and directors who create and operate large-scale applications and systems. If you manage programmers, system reliability engineers, DevOps specialists, or run an organization that uses large-scale applications and systems, the recommendations and guides in this book will help you make these applications work more smoothly and reliably.

    If your application was initially small, and is now experiencing incredible growth (and the concomitant growth diseases), its reliability and performance may decrease. If you cannot handle the technical debts and related application failures, this book will show you how to handle these debts and thus make the application more scalable.

    Why was this book written?


    After spending many years at Amazon designing large-scale applications for both retail and Amazon web services (AWS), Lee Otchison moved to New Relic, which was experiencing a period of explosive growth. The company felt a painful need for systems and processes for managing large-scale applications, but so far they have not come to a clearly established procedure for scaling their application.

    At New Relic, he was confronted with the challenges of a company scaling up his application. Then I realized that many companies face the same problems every day.

    The goal of this book is to help people working with fast-growing applications learn about processes and best practices that can help you avoid pitfalls when scaling.

    It doesn’t matter if your application has grown tenfold or 10% over the year, whether the number of users, transactions, stored data, or code complexity is expressed — this book will help you create and maintain applications that can withstand growth, but at the same time maintain a high availability level.

    Current scaling issues


    Cloud services are growing and expanding at an incredibly fast pace. The software as a service (SaaS) approach is becoming the norm in modern development practice, primarily due to the demand for cloud services. SaaS applications are particularly sensitive to scalability issues due to their multi-user nature.

    The world is changing, more and more attention is paid to SaaS, cloud services and applications that process large amounts of data. The growth in size and complexity of cloud applications has no end in sight.

    The mechanisms that represent the last word in technology in the field of scaling management today will become nothing more than basic building blocks tomorrow. Solutions to modern scaling problems will look simple and minimalistic compared to solutions to future problems. The software industry will require more and more complex systems that can withstand future loads.

    The purpose of this book is to provide information that will be relevant for more than one year.

    Book structure


    Scaling management is not only managing the number of incoming requests, but also managing risks and availability. All these aspects often describe the same problem from different angles; they all go hand in hand. Therefore, in order to fully consider the issue of scaling, it is necessary to consider the issues of accessibility, risk management, as well as modern architectural paradigms such as microservices and cloud computing.

    Thus, this book has the following structure.

    Part I. Accessibility

    Accessibility and accessibility management are areas that are often the first to feel the effects of application growth.

    Chapter 1. What is accessibility. First, let's define what high availability is and how it differs from reliability.

    Chapter 2. Five priority areas for improving application accessibility. In this chapter, I list five key points that you should focus on when creating your application to improve its availability.

    Chapter 3. Measuring accessibility. This chapter discusses the standard accessibility measurement algorithm, and explores the concept of high availability more deeply.

    Chapter 4. Improving poor accessibility. If your application is hard to access or you want to prevent this problem from happening in the future, the organizational steps in this chapter will help you increase the availability of the application.

    Part II Management of risks

    Understanding what the risks to your system are is vital to both increasing its availability and improving its scalability to the level needed today and in the future.

    Chapter 5. What is risk management. In this chapter, we begin to expand on the topic of risk management in large-scale applications, examining the basic concepts and essence of this task.

    Chapter 6. Criticality and probability. This chapter discusses the differences between the criticality of a risk and the likelihood of its occurrence. Both of these factors are important, but each in its own way.

    Chapter 7. Risk matrix. In this chapter, I present a system for understanding and managing risks in large-scale applications.

    Chapter 8. Mitigation of risks. This chapter discusses how you can intentionally take risks, while minimizing the negative consequences for the application.

    Chapter 9. Days of the big game. This chapter discusses the ongoing review and evaluation of your risk management, mitigation, and disaster recovery plans. It also provides methods for their use in the production environment and their advantages.

    Chapter 10. Creating systems with reduced risks. In this chapter, I give recommendations on how to reduce risks in your applications and create applications with lower risks.

    Part III. Services and microservices

    Services and microservices - an architectural strategy for building large and complex applications that work with large volumes of requests.

    Chapter 11. Why do we need services. In this chapter, we learn why services are important for creating scalable applications.

    Chapter 12. Using microservices. In this chapter, I give an introduction to creating microservice-based architectures. Particular attention is paid to the size of services and the definition of their boundaries in order to improve scalability and availability.

    Chapter 13. Handling service failures. In the last chapter of this part, we will look at how to create services that correctly handle failures.

    Part IV Scaling applications

    Scaling concerns not only the number of requests, but your entire organization and its ability to cope with the needs of a growing application.

    Chapter 14. Stock for two errors. This chapter describes how to scale your system and make it highly available even if a failure occurs.

    Chapter 15. Ownership of services. In this chapter, we’ll look at the importance of paying attention to service ownership to scale your organization and application.

    Chapter 16. Classes of services. This chapter describes the methodology for determining the significance of your services, as a result of which you can set certain requirements for their work.

    Chapter 17. Using service classes. After we have defined the service classes, we will begin to use them to manage the consequences of risks, the requirements for response time and user expectations.

    Chapter 18. Service Level Agreements. In this chapter, we consider SLA as a mechanism for managing the interdependence of service owners.

    Chapter 19. Continuous Improvement. This chapter provides techniques and recommendations for improving the scalability of the application as a whole.

    Part V. Cloud services

    Cloud services are beginning to play an increasingly important role in creating large critical applications with high scalability and management requirements.

    Chapter 20. Clouds and changes in them. This chapter discusses how cloud computing has changed approaches to building highly scalable applications.

    Chapter 21. Cloud Distribution. This chapter outlines how to effectively use regions and accessibility zones to improve accessibility and scalability.

    Chapter 22. Infrastructure management. This chapter discusses the use of managed services such as RDS, SQS, SNS, and SES to scale applications and reduce management costs.

    Chapter 23. Distribution of cloud resources. In this chapter, we will discuss how resources are distributed in the cloud and how various distribution strategies affect the scalability of your application.

    Chapter 24. Other means of scaling. This chapter discusses scalable computing models such as AWS Lambda. They are used to improve the scalability, availability, and manageability of applications.

    Chapter 25. AWS Lambda. The final chapter in this installment looks more closely at AWS Lambda, a technology that provides ultra-wide capabilities for event scaling with low processing power requirements.

    Part VI. Conclusion

    Chapter 26. A general overview of all aspects of scaling. This chapter briefly summarizes the key topics discussed in the book. This will allow you to recall what was mentioned in each of the chapters.

    about the author


    Lee Atchison  is New Relic's chief cloud architect. He worked there for four years. During this time, Lee designed and managed the New Relic infrastructure products, and also helped New Relic create a robust service-oriented architecture that scaled throughout the entire organization as it grew from a simple SaaS startup to a heavily loaded large enterprise. Lee gained the greatest experience in developing highly accessible systems.

    Lee has been in the industry for 28 years and has studied cloud-based scalable systems for seven years as a general manager at Amazon.com. At Amazon, he led the company’s first downloadable software store, created AWS Elastic Beanstalk, and led the team that moved Amazon’s online store from a seamless service-oriented architecture.

    »More information on the book can be found on the publisher’s website
    » Exclamation
    » Excerpt

    For Savory Agents 20% discount on coupon - Architecting for Scale

    Also popular now: