📜 ⬆️ ⬇️

The book "Scaling applications. Growing complex systems "

image We live in a world of growing apps. Virtually any software products sooner or later have to expand, build on, adapt to serving a growing user audience and to peak loads. In order for such scaling to proceed smoothly and quickly, you need to lay out such opportunities already at the level of the application architecture. In this application book, Lee Atchison talks not only about the architectural intricacies necessary for effective scaling of applications, but also about the risks inherent in such work, about the competent organization of scaling and about using cloud services. The book describes the key decisions and practices of scalable systems: availability, classes of services, scheduled checks, risk matrices.


For whom the edition is intended


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 experts, or manage an organization that uses large-scale applications and systems, then the recommendations and tutorials in the book will help you make these applications run more smoothly and reliably.

If your application was initially small, and is now experiencing an incredible growth (and its associated growing pains), its reliability and performance may decrease. If you cannot cope with technical debts and application-related failures, this book will show you how to work out these debts and thus make the application more scalable.
')

Why was this book written


After spending many years at Amazon designing large-scale applications in both retail and Amazon web services (AWS), Lee Otchison went to work for 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 has not yet come to a clearly defined order of scaling its application.

In New Relic, he faced the challenges of a company scaling its application. Then I realized that many companies face the same problems every day.

The purpose of this book is to help people working with rapidly growing applications learn the processes and best practices that will help avoid pitfalls when scaling.

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

Current problems of scaling


Cloud services are growing and expanding at an incredibly high rate. The “software as a service” approach (Software as a Service, SaaS) is becoming the norm in modern development practice primarily because of the demand for cloud services. SaaS applications are particularly sensitive to scaling problems 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 of the size and complexity of cloud applications has no end in sight.

The mechanisms that represent today the last word of technology in the field of scaling control, tomorrow will be nothing more than basic building blocks. Solutions to current problems of scaling will look simple and minimalist compared to solutions to future problems. The software industry will require more and more complex systems capable of withstanding future workloads.

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 risk 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 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. Availability

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

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

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

Chapter 3. Measuring Accessibility. This chapter discusses the standard algorithm for measuring availability, and also explores the concept of high availability.

Chapter 4. Improved Poor Accessibility. If your application is difficult to access or you want to prevent this problem from occurring 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 vitally important both to increase its availability and to improve its scalability to the level needed today and in the future.

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

Chapter 6. Criticality and probability. This chapter discusses the differences between the criticality of risk and the likelihood of its realization. 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. This chapter discusses how you can intentionally take a risk while minimizing the negative consequences for the application.

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

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

Part III. Services and microservices

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

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

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

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

Part IV. Application scaling

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. Reserve for two errors. This chapter describes how to scale your system and ensure its high availability even in case of failures.

Chapter 15. Ownership of services. In this chapter, we will look at how important it is to pay attention to owning services in order to scale your organization and application.

Chapter 16. Classes of services. This chapter describes how to determine the significance of your services, with the result that you can impose certain requirements on their work.

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

Chapter 18. Service Level Agreements. In this chapter, we consider SLA as a mechanism for managing the dependencies 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 requirements and management.

Chapter 20. Clouds and changes in them. This chapter examines how cloud computing has changed the way we build highly scalable applications.

Chapter 21. Cloud Distribution. This chapter outlines how to effectively use regions and availability zones to improve availability 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 different distribution strategies affect the scalability of your application.

Chapter 24. Other scaling tools. 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. In the last chapter of this part, AWS Lambda is considered in more detail, a technology that provides super-wide possibilities for scaling events with small computing power requirements.

Part VI. Conclusion

Chapter 26. A general overview of all aspects of scaling. This chapter briefly summarizes the most important topics discussed in the book. This will allow you to remember what was said in each of the chapters.

about the author


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

Lee has been in the industry for 28 years; he has studied cloud scalable systems for all seven years of work as a general manager at Amazon.com. At Amazon, he led the creation of the first downloadable software store in the company, created AWS Elastic Beanstalk, and led the team that translated the monolithic Amazon online store to a service-oriented architecture.

»More information about the book can be found on the publisher's website.
» Announcement
» Excerpt

For Habrozhiteley 20% discount coupon - Architecting for Scale

Source: https://habr.com/ru/post/340288/


All Articles