Просто о сложном: проектирование и архитектура высоконагруженных систем
Как разрабатывать системы, которые смогут выдержать миллионы пользователей одновременно и при этом корректно работатьРуководитель подразделения по разработке программных продуктов полного цикла с опытом работы в сфере ИТ более 12-ти лет. Руководил разработкой высоконагруженных систем для бизнеса и госзаказчиков.
Как разрабатывать системы, которые смогут выдержать миллионы пользователей одновременно и при этом корректно работать, знает Артем Лебедев, операционный директор компании «Формат Кода». Его специализация — разработка highload-систем. Сегодня Артем делится опытом проектирования высоконагруженных систем передачи, хранения и обработки больших объемов данных, так, чтобы уже на старте они могли масштабироваться в любой момент и при этом корректно работать.
В наше время повсеместной цифровизации многие компании сталкиваются с большими потоками данных. Современные высоконагруженные системы должны выдерживать большие нагрузки. И понятно, насколько важны стабильность и скорость их работы. Любой простой системы ведет к снижению прибыли или к репутационным потерям. Построение таких систем — задача нетривиальная.
Базируясь на опыте работы нашей компании с High End системами, основными критериями которых являются высокая нагрузка, высокая доступность, отказоустойчивость и низкий уровень задержки, рассмотрим несколько важных моментов.
Выбор технологий и подходов в работе
Технологии должны позволять нам реализовать на приеме несколько этапов проверок с последующим отсеиванием тех сообщений, которые не соответствуют критериям заказчика. Например, в нашей практике был проект по созданию высоконагруженной системы для финансовых структур по приему, обработке и аналитике больших массивов данных, поступающих со всей территории РФ. Критерием заказчика был SLA менее 100 мс. Для реализации этого проекта мы использовали распространенную в мировой практике технологию Hadoop, базу данных HBase, ClickHouse, а также брокер сообщений Kafka.
Помимо основных стандартных характеристик к системе, командой были реализованы функциональные требования: доступность 24/7, горизонтальная масштабируемость и аналитика в режиме реального времени.
Архитектура и масштабируемость
Благодаря продуманной микросервисной архитектуре можно достаточно быстро и точечно обновлять исходные модули системы, добавлять новые правила без влияния на общий функционал. Архитектуру системы желательно разбивать по уровням, а затем прорабатывать каждый из них. Чтобы никакой уровень не стал узким местом системы, предусматривайте избыточность для каждого. А также, возможность горизонтального масштабирования.
Тестирование
Один из ключевых параметров высоконагруженной системы — способность обрабатывать большой объем данных. Поэтому во время разработки, помимо обычного тестирования, стоит проводить сессии нагрузочного тестирования.
Результативное построение команд
Подобные системы обычно разрабатываются достаточно продолжительное время. Однако, можно значительно ускорить процесс разработки. Сделать это можно за счет:
- использования всех возможностей гибких методологий как основного элемента планирования и ведения разработки;
- использования принципа непрерывной интеграции;
- сокращения влияния управляющих менеджеров на команду разработки — тимлид , он же скраммастер;
- ежедневного взаимодействия с заказчиком;
- отдельного тестового стенда, который будет полной копией промышленного;
- оперативного отклика на периодические челленджи в выходные и в ночное время.
На примере из практики: систему, которую обычно разрабатывают около года командами не менее 10-12 человек, мы смогли сделать за 7 месяцев и реализовали весь проект командой, состоящей всего из 6 человек.
Выбор исполнителя
При выборе исполнителя стоит обратить внимание на следующие моменты. Во-первых, в портфолио компании должны быть успешно завершенные проекты по высоконагруженным системам. Во-вторых, подтвержденный опыт гибких методологий, а также опыт работы с закрытыми контурами заказчика без прямого доступа к базам данных.
Не стоит бояться сложных задач — для каждой из них найдется оптимальное решение, а наша задача как разработчиков — вам в этом помочь.
Интересное:
Новости отрасли:
Все новости:
Публикация компании
Достижения
Профиль
Контакты
Социальные сети