Preview

Труды Института системного программирования РАН

Расширенный поиск

Проектирование высоконагруженных систем

https://doi.org/10.15514/ISPRAS-2020-32(6)-6

Аннотация

В настоящее время большинство сервисов переходят в онлайн, что позволяет пользователям получать услугу в любое время. Высокая доступность услуги ведет к росту количества пользователей, что влечет за собой повышение нагрузки на систему. Высокая нагрузка оказывает негативное влияние на компоненты системы, что может привести к сбоям функционирования и потери данных. В статье рассмотрено несколько подходов к проектированию и мониторингу, следование которым поможет предотвратить неправильное функционирование системы. Описан наиболее популярный способ распределения области ответственности каждого сервиса, в соответствии с паттерном DDD, применение которого позволит разделить компоненты системы логически по использованию и физически при масштабировании системы. Данный подход будет полезен также при масштабировании команды и позволит независимо работать разработчикам над разными компонентами системы, не мешая друг другу. Интеграция новых людей в проект также будет занимать кратчайшие сроки. При проектировании архитектуры системы стоит уделить внимание и схеме взаимодействия сервисов между собой. Использование паттерна CQRS позволяет разнести чтение и запись в разные компоненты, что в дальнейшем позволяет пользователю быстро получать ответ от системы. Особое внимание в статье уделено мониторингу системы, так как при увеличении размера системы поиск ошибок в системе занимает много ремени, что может привести к долгой недоступности системы, которое повлечет за собой потерю клиентов. Все описанные в статье способы применены на многих проектах, например, МТС ПОИСК. Благодаря правильно спроектированной системе удалось сократить время ожидание ответа сервиса с двух минут до нескольких секунд без потери качества результата, а сложная система мониторинга системы позволяет в режиме реального времени отслеживать все процессы внутри системы и предотвращать аварии. В итоге, в начале проектирования системы следует особое внимание уделить архитектуре, вопросу мониторинга и тестирования системы. Впоследствии эти временные вложения позволят снизить риски потери данных и недоступности работы системы.

Об авторе

Василий Андреевич РУДОМЕТКИН
ООО СТРИМ
Россия
Аспирант в области вычислительной техники и информатики, эксперт в области разработки высоконагруженных систем, сервисов геолокации, банковских систем


Список литературы

1. High-load Systems. URL: https://flyoutsourcing.com/high-load-systems.html, accessed 17.06.2020.

2. Игумнов А.О., Сонькин Д.М. Об одном из подходов к оптимизации высоконагруженных систем на примере системы диспетчерского управления таксомоторным парком. Науковедение, 2013 г., №2(15), 7 стр. / Igumnov A.O., Sonkin D.M. One approache to optimize highload systems on example of dispatching taxi system. Naukovedenie, №2(15), 7 p. (in Russian).

3. Rajković P., Janković D., Milenković A. Using cqrs pattern for improving performances in medical information systems. In Proc. of the 6th Balkan Conference in Informatics, 2013, pp. 86-91.

4. Pacheco V. F. Microservice Patterns and Best Practices: Explore patterns like CQRS and event sourcing to create scalable, maintainable, and testable microservices. Packt Publishing, 2018, 366 p.

5. What are NoSQL databases? URL: https://aws.amazon.com/ru/nosql/, accessed 17.06.2020.

6. Обзор NOSQL баз данных / NOSQL Database Overview. URL: https://oracle-patches.com/db/3688-обзор-nosql-баз-данных, accessed 05.09.2020 (in Russian).

7. Redis. URL: https://redis.io/, accessed 28.10.2020.

8. ArangoDb, URL: https://www.arangodb.com/, accessed 28.10.2020.

9. What Is ClickHouse? URL: https://clickhouse.tech/docs/en/, accessed 28.10.2020.

10. MongoDb. URL: https://www.mongodb.com/, accessed 17.07.2020.

11. Postgres Professional. URL: https://habr.com/ru/company/postgrespro/blog/458186/, accessed 06.09.2020 (in Russian).

12. Design a DDD-oriented microservice. URL: https://docs.microsoft.com/ru-ru/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/ddd-oriented-microservice, accessed 06.09.2020.

13. Apache Kafka. URL: https://kafka.apache.org/, accessed 28.10.2020.

14. Pattern: Command Query Responsibility Segregation (CQRS). URL: https://microservices.io/patterns/data/cqrs.html, accessed 25.06.2020.

15. Meyer B. Object-Oriented Software Construction. Prentice Hall, 1994, 534 p.

16. МТС ПОИСК / MTS Search. URL: https://poisk.mts.ru/, accessed 25.06.2020 (in Russian).


Рецензия

Для цитирования:


РУДОМЕТКИН В.А. Проектирование высоконагруженных систем. Труды Института системного программирования РАН. 2020;32(6):79-86. https://doi.org/10.15514/ISPRAS-2020-32(6)-6

For citation:


RUDOMETKIN V.A. Designing Highly Loaded Systems. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2020;32(6):79-86. (In Russ.) https://doi.org/10.15514/ISPRAS-2020-32(6)-6



Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)