28 февраля 2024
Автор: Екатерина Ананьева
Архитектура
Проектирование архитектуры системы — это сложный и многоуровневый процесс, который требует не только технических знаний, но и стратегического мышления. Ошибки на этапе проектирования могут стать причиной проблем с масштабируемостью, производительностью, безопасностью и управляемостью системы в будущем.
В этом блоге собраны наиболее распространенные ошибки в проектировании архитектуры и рекомендации о том, как их избежать.
1. Недооценка важности этапа проектирования
Некоторые команды разработки пренебрегают выделением времени на этап проектирования, считая, что исследовательская деятельность никому не нужна и только задерживает старт разработки.
Это включает в себя минимизацию времени на:
Такой подход может привести к непониманию требований разработчиками, постоянным запросам аналитикам об уточнениях, невозможности реализации задач в середине процесса разработки, ошибкам в продакшн. А потом и к разочаровнию пользователей, когда у них очередная форма загружается минуту, и они отказываются пользоваться системой, потому что неудобно по техническим причинам: слишком медленно работает, тормозит, тупит.
Почему так происходит:
Рекомендации:
2. Игнорирование масштабируемости и производительности: проектирование без учета будущего роста
Игнорирование масштабируемости и производительности - это когда при проектировании системы не учитывается её способность адаптироваться к увеличению количества пользователей или возможности расширения функциональности в будущем. Это может привести к тому, что система становится неспособной эффективно обрабатывать растущие нагрузки или интегрироваться с новыми технологиями и сервисами.
И это не о том, что разработку системы нужно делать строго на микросервисах и сразу гибко, а о том, чтобы предусмотреть потенциальные проблемы с нагрузкой в системе в ближайшем будущем и сразу точечно предотвратить их.
Пример:
Финансовая аналитическая система формирует отчет по торгам в среднем от 10 до 30 секунд. Но в момент завершения торгов, когда больше всего пользователей начинает запрашивать отчеты, система начиниет тормозить и выдавать ответ на запрос в течение 2-3 минут. Все остальные действия в ней выполняются дольше чем обычно.
Почему так происходит:
Рекомендации:
3. Завышение сложности архитектуры (овер-инжиниринг): создание избыточно сложной архитектуры в проектах, где в этом нет необходимости
Завышение сложности архитектуры случается, когда для системы создают слишком сложную систему, не всегда нужную для обеспечения её работы. Это может включать использование избыточного количества технологий, паттернов проектирования или большого количества компонентов для реализации, усложняющих понимание, разработку, тестирование и поддержку системы.
Пример:
Разработка системы интернет-магазина для малого бизнеса, который продает всего несколько видов товаров. Вместо использования простой монолитной архитектуры или шаблонного "интернет-магазина из коробки", команда решила реализовать собственную систему на основе микросервисов, разделив каждую функцию (обработку заказов, управление каталогом товаров, обработку платежей) на отдельные сервисы.
Это значительно увеличило сложность проекта, требуя дополнительных ресурсов для разработки, координации между сервисами и обеспечения их надежной работы. В результате, затраты на разработку и поддержку системы оказались гораздо выше, чем если бы была выбрана более простая архитектура, адекватная масштабам и потребностям бизнеса.
Почему происходит:
Рекомендации:
4. Пренебрежение безопасностью
Если в процессе разработки системы не уделяется должное внимание мерам защиты от внешних угроз, уязвимостей и рисков потери или утечки данных, то это может привести к потере конфиденциальных данных, финансовым потерям и ущербу для репутации бизнеса.
Примеры угроз безопасности
Кража данных:
- Медицинские информационные системы с данными о пациентах.
- Онлайн-магазины с клиентскими базами.
- Системы продажи авиабилетов с паспортными данными и сведениями об авиаперелетах пассажиров.
Атаки типа "отказ в обслуживании" (DoS-атака) направлены на выведение из строя системы или ее компонентов, что делает ресурсы недоступными для реальных пользователей. Это может быть достигнуто путем перегрузки серверов большим количеством запросов или эксплуатацией программных уязвимостей.
Ошибки в проектировании архитектуры могут стать препятствием на пути к успешному развитию проекта. Системные аналитики играют ключевую роль в минимизации этих рисков, обеспечивая четкое понимание бизнес-, функциональных и особенно нефункциональных требований, влияя на принятие обоснованных решений на каждом этапе работы над проектом.
Помните о перечисленных ошибках и рекомендациях по проектированию архитектуры, чтобы ваши проекты можно было успешно поддерживать и развивать в будущем.
Мы используем файлы cookie, для персонализации сервисов и повышения удобства пользования сайтом. Если вы не согласны на их использование, поменяйте настройки браузера.