By Timonin Egor (estimonin@edu.hse.ru)
Introduction
Nowadays, the businesses are developing, with this growth, the demand for systems that could handle enormous number of requests is increasing, so the software engineers are required to develop and adopt their software for to meet new requirements. Organisations that have not adapted lost their place in the competitive world, therefore it is crucial for Internet-scale systems (ISS) be flexible and robust. Reference architectures for ISS provide guidelines about how to design the system to make it horizontally scalable, maintainable and stable. Also this essay explore reference architectures for high-load ISS with their applications in the real world.
High-Load Systems and Distributed Architectures
Modern ISS are designed to handle a huge amount of requests and large volumes of data. The most significant challenges that these systems face are reliability, scalability and maintainability. To achieve these properties systems are typically built using different technologies like replication, asynchronous communication, load balancing and other techniques [1]. One of the main property for ISS is the ability to be distributed with the horizontal scalability, which means that we can add more instances or pods instead of resources like CPU, RAM or disk space. This capability is a major property for the system to be easily scalable, but designing distributed systems requires to make trade-offs between consistency, availability and partition tolerance [2]. It is another factor that must be accounted when designing ISS. Decomposing monoliths into microservices can enhance the main properties for the system: scalability and maintainability. The approach to decompose the huge system into smaller and more manageable parts could increase not only scaling factor, but also and overall resilience of the whole system. This works because if one microservice fails it doesn’t cause that other services to fail as well.
Reference Arhitectures
Big tech companies develop systems for their requirements of handling millions of requests per second (RPS) and handle a huge amount of data, as reference examples could be distributed database management system Spanner from Google, DynamoDB from Amazon or Cassandra from Facebook. These systems provide recommendations for data storage, network protocols and other crucial parts that are required to make a stable high-load system. For implementing these ISS architectures containerization like Docker and container orchestration systems like Kubernetes played a significant role, because they allowed to automate deployment and enhance scalability of these systems. Applying these technologies ISS use cloud-native platforms like Amazon Web Services, Google Cloud Platform and Microsoft Azure to be more scalable, because these platforms offer mechanisms of load balancing, auto-scaling and resource management that are some of the major factors for the system to be maintainable. Also cloud-native platforms make service integration easier using modular approach where services could be developed and deployed independently.
Data consistency and availability are crucial for ISS and systems like Spanner use consensus protocols in combination with traditional databases to provide consistency in distributed systems [3]. Whereas DynamoDB and Cassandra allows prioritizing availability and partition tolerance through consistency [4, 5]. Another main factor for ISS is security, implementing security protocols ensures data integrity and safety of the system, which is also necessary.
Using reference architectures we can extract key components for high-load Internet scale systems:
Role of Reference Arhitectures
Reference architectures play a significant role in designing and deployment of ISS by providing standard structure they allow to decrease time on development and decrease risks related to system failures. The usage of microservice architecture increases modularity and scalability, which allows to manage service resources independently. However, technologies are developing and new problems have appeared for references architectures. For example, adoption of containerization and orchestration brings continuous updates and integration to apply these technologies more efficiently. Moreover, the edge computing requires revising the strategy of data handling to increase performance. Also AI-solutions could be applied as management tools to optimize the maintenance, but AI integration should be tested and applied carefully with security consideration to make sure that their application brings benefits for the system.
Reference architectures provide abstract principles, but it is typically required to adapt them for concrete companies and technology stack. The balance between standards and flexibility is crucial to make reference architectures applicable for different cases. Companies could adapt reference architectures for their unique processes and legacy systems, which requires flexible architecture frameworks.
Technologies that affect Reference architectures:
Conclusion
Reference architectures are required for ISS, because they provide standards aggregating best-practices and templates for the designing scalable systems. They provide scalable, reliability allowing companies to create reliable systems, which can handle and process millions of RPS. Additionally, technologies are continue to developing, which requires reference systems to adapt to new factors and requests. Using these principles companies could speed up development, increase performance of the systems and provide flexibility for the future trends.
References