Импортозамещение задает очень высокий темп разработки и внедрения, в том числе — и для применения принципов ИТ-архитектуры. Системы активно переводят на архитектуру х86 и открытые решения, которые существенно уступают зарубежным платным продуктам по объему хранимых данных и производительности на единицу оборудования. Кроме того, в перспективе существует задача ухода с архитектуры x86 на отечественную архитектуру. В связи с этим активно используется виртуализация, что сделает переход наименее болезненным. С другой стороны, бизнес постоянно растет, растут объемы хранимых данных, уменьшается Time2Market, увеличивается количество релизов, существенно усложняется интеграция между информационными системами при переходе на микросервисную архитектуру. При возникновении аварии в промышленной среде не всегда понятно, что является причиной, а что — следствием.
Образ решения
Необходимо разработать архитектурный стандарт (или ряд стандартов) для использования архитектором и разработчиком системы, в котором появятся подходы к обеспечению высокой доступности информационных систем и сервисов. Стандарт должен учитывать все возможные причины появления аварий таким образом, чтобы они не приводили к недоступности процессов и сервисов для клиентов и пользователей. А, кроме того, если авария потребует устранение последствий после сбоя, то стандарт должен учитывать, что это устранение происходит в автоматическом или автоматизированном режиме.
Технические требования
В организации принято, что слои хранения данных (postgresql, redis, tarantool, elastic) и транспортные слои (глобальная балансировка нагрузки синхронных вызовов, kafka, различные MQ) располагаются кластерами по формуле 2,5 ЦОД, когда данные живут в двух ЦОДах, а кворумные элементы в трех ЦОДах.
В организации принято, что слой обработки данных (kubernetes, nginx) располагаются в виде кластера внутри одного любого ЦОДа — принципиально, что каждый кластер ограничен одним ЦОДом.
В системе могут быть внутренние очереди, синхронные и/или асинхронные интеграционные взаимодействия.
Существуют следующие слои хранения данных: кэширующий слой с персистентным и/или неперсистентным хранением, слои хранения данных в базах данных с горячими и/или холодными зонами.
Прикладной слой — WildFly, k8s, nginx.
Запросы в системы поступают через точки балансировки (UI, REST, MQ, Kafka).
Релизы — 2 раза в неделю (вторник и суббота) без недоступности системы.
Минимизировано участие человека в тестировании/внедрении/откате релиза/устранении ошибок/нештатных ситуаций.
Функциональность сервисов, предоставляемых системой, должна быть способна к автоматическому восстановлению при нештатных ситуациях, должны быть механизмы устранения последствий сбоев.
Бизнес-требования
В организации информационные системы ранжированы на 4 уровня критичности для прикладных информационных систем:
1-й уровень критичности должен по итогу быть обеспечен доступностью на уровне не менее 99,99%
доступность на уровне не менее 99,9%
доступность на уровне не менее 99,7%
доступность на уровне не менее 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
Иные технологии при доказательстве их эффективности