Регистрация завершена
Регистрация завершена
Чат хакатона
Чат хакатона
FAQ

Архитектурный стандарт надежности

Проблематика
Импортозамещение задает очень высокий темп разработки и внедрения, в том числе — и для применения принципов ИТ-архитектуры. Системы активно переводят на архитектуру х86 и открытые решения, которые существенно уступают зарубежным платным продуктам по объему хранимых данных и производительности на единицу оборудования. Кроме того, в перспективе существует задача ухода с архитектуры x86 на отечественную архитектуру. В связи с этим активно используется виртуализация, что сделает переход наименее болезненным. С другой стороны, бизнес постоянно растет, растут объемы хранимых данных, уменьшается Time2Market, увеличивается количество релизов, существенно усложняется интеграция между информационными системами при переходе на микросервисную архитектуру. При возникновении аварии в промышленной среде не всегда понятно, что является причиной, а что — следствием.
Образ решения
Необходимо разработать архитектурный стандарт (или ряд стандартов) для использования архитектором и разработчиком системы, в котором появятся подходы к обеспечению высокой доступности информационных систем и сервисов. Стандарт должен учитывать все возможные причины появления аварий таким образом, чтобы они не приводили к недоступности процессов и сервисов для клиентов и пользователей. А, кроме того, если авария потребует устранение последствий после сбоя, то стандарт должен учитывать, что это устранение происходит в автоматическом или автоматизированном режиме.
Технические требования
  • В организации принято, что слои хранения данных (postgresql, redis, tarantool, elastic) и транспортные слои (глобальная балансировка нагрузки синхронных вызовов, kafka, различные MQ) располагаются кластерами по формуле 2,5 ЦОД, когда данные живут в двух ЦОДах, а кворумные элементы в трех ЦОДах.
  • В организации принято, что слой обработки данных (kubernetes, nginx) располагаются в виде кластера внутри одного любого ЦОДа — принципиально, что каждый кластер ограничен одним ЦОДом.
  • В системе могут быть внутренние очереди, синхронные и/или асинхронные интеграционные взаимодействия.
  • Существуют следующие слои хранения данных: кэширующий слой с персистентным и/или неперсистентным хранением, слои хранения данных в базах данных с горячими и/или холодными зонами.
  • Прикладной слой — WildFly, k8s, nginx.
  • Запросы в системы поступают через точки балансировки (UI, REST, MQ, Kafka).
  • Релизы — 2 раза в неделю (вторник и суббота) без недоступности системы.
  • Минимизировано участие человека в тестировании/внедрении/откате релиза/устранении ошибок/нештатных ситуаций.
  • Функциональность сервисов, предоставляемых системой, должна быть способна к автоматическому восстановлению при нештатных ситуациях, должны быть механизмы устранения последствий сбоев.
Бизнес-требования
  • В организации информационные системы ранжированы на 4 уровня критичности для прикладных информационных систем:
  1. 1-й уровень критичности должен по итогу быть обеспечен доступностью на уровне не менее 99,99%
  2. доступность на уровне не менее 99,9%
  3. доступность на уровне не менее 99,7%
  4. доступность на уровне не менее 99,5%
  • Работать с данными можно как через интерфейс пользователя, так и через API.
  • Режим работы системы 24х7, доступность системы зависит от одного из 4-х уровней критичности.
  • Отсутствуют потери данных при сбоях.
  • Для 98% идентичных запросов, время выполнения - одинаковое.
  • С инфраструктурой могут происходит различные нештатные ситуации (стихийные бедствия/диверсия/поломки/отсутствие питания/сети связи).
  • Поддержка может ошибаться (ошибки деплоя/настроек/несогласованные работы/случайная порча данных/неполное знание систем/болезни-отпуска ключевых экспертов).
  • Разработчики могут ошибаться.
  • Потребители могут влиять на работу систем напрямую или косвенно (через другие системы) — превышения пикового RPS, нарушения контрактов, целенаправленные или случайные нарушения иного типа.
  • Бюджет условно не ограничен, но требуются выбирать наиболее эффективные решения с минимальными затратами (с оглядкой на уровень критичности системы).
Ожидаемый результат
Смысл задания сводится к тому, чтобы сделать презентацию со сводом своих правил обеспечения надежности в организации, которые в совокупности должны образовать в своем роде вашу систему обеспечения надежности для бесперебойной работы информационных систем организации.
Презентация должна включать в себя:
  • Схемы (а также типы/варианты/шаблоны реализации), текстовые описания, условия применения, критерии зрелости, критерии приемки, (при необходимости могут быть примеры систем) и т.д., описывающие архитектурные стандарты надежности.
  • Систематизацию (классификацию) и описание механизмов обеспечения надежности с архитектурными схемами для каждого механизма.
  • Методы обеспечения различных способов гарантированной доставки, обеспечения консистентности данных и обеспечения функциональности в различных нештатных ситуациях.
  • Методы резервирования и масштабирования возможностей системы, оптимального использования оборудования для получения максимальных возможностей систем на предоставленном оборудовании.
Формат загрузки решения
Решение должно быть представлено на платформу не позднее 22 мая 22:00 МСК в следующем виде:
Ссылка на презентацию вашего проекта (облачный диск с файлом .pptx/.pdf или развернутая презентация на younote/buildin или иных сервисах)
Оптимальный состав команды
  • 3 Аналитика
  • 1 Solution Architect
  • 1 backend-разработчик*
  • 1 DevRel*
*Привлекать таких специалистов следует в случае полного формирования команды (5 человек), когда полностью закрыты все необходимые компетенции (архитекторы и аналитики).
Ограничения
  • Учтите, что существует модель критичности функционала для клиента — есть функционал, от которого он готов отказаться в случае необходимости или подождать. Эту модель вы должны продумать самостоятельно.
  • Есть периоды в году, когда нагрузка на систему кратно повышается.
  • Есть данные, которые должны находиться в оперативном доступе, но их объём не помещается в одну БД и продолжает постоянно расти — удваивается каждый год. Начальный объём – 1 ТБ.
  • Есть данные, к которым редко обращаются. Максимальный срок их хранения – 5 лет.
  • В системе пишутся логи, срок хранения которых 30 дней.
  • В архитектуру системы должно быть заложено эффективное использование ресурсов хранения по объему и стоимости.
Технологический стек:
  • Kibana
  • Grafana
  • Debezuim
  • F5
  • MQ
  • PostgreSQL
  • patroni
  • HAProxy
  • Tarantool
  • K8s
  • Redis
  • nginx
  • Apache Kafka
  • Иные технологии при доказательстве их эффективности