Что же именно необходимо учитывать при моделировании новой системы / программных решений? Прежде всего необходимо учитывать три фактора: производительность, масштабируемость и экономическую целесообразность.
Остановимся подробнее на данных факторах:
1. Производительность заключается в получении необходимого результата с учетом баланса скорости обработки, передачи и нагрузки на ресурсы. Расчет такого баланса необходимо закладывать в архитектуру в самом начале проекта, в противном случае мы можем столкнуться либо с неудовлетворительной скоростью работы системы, либо с существенной нагрузкой на действую инфраструктуру (например сервера).
Рассмотрим подробнее ограничения по производительности:
1) Аппаратные ресурсы
— Не хватает скорости процессора (CPU/GPU) — Энергозатраты — Данные должны помещаться в памяти — Скорость чтения с диска ограничена — Пропускная способность сети — Объём хранилища
2) Ввод данных человеком
3) Поступление данных со специфических устройств (IoT)
— Датчики — Устройства
2. Ограничения по масштабируемости, по сути, заключаются в невозможности с учетом имеющихся или приобретаемых ресурсов (финансовые ресурсы, технические ресурсы) обеспечить адекватное исполнение при росте объемов обработки и выполнения количества операций.
Рассмотрим подробнее ограничения по масштабируемости:
1. Вычислительная сложность алгоритма (программы) 2. Ограничения архитектуры компьютера 3. Можно ли распараллелить алгоритм? (использовать несколько компьютеров) 4. Не придётся ли пересылать большие объёмы данных в реальном времени? 5. Происходит ли экспоненциальный рост стоимости обработки информации?
3. Экономическая целесообразность заключается в обоснованности затрат. Необходимо провести адекватное и полноценное исследование рынка имеющихся решений и поставщиков на предмет соответствия заявленным целям и стоимости внедрения, обслуживания и содержания системы, стоимости дальнейшего масштабирования. Очень важно сделать правильный выбор между развертыванием системы на мощностях организации или в облаке.
Облако может иметь ряд преимуществ перед использованием собственных вычислительных мощностей, а именно: скорость, стоимость развертывания, масштабируемость, надежность у облаков в ряде случаев могут оказаться существенно выше. Необходимо учитывать модели развертывания и модели обслуживания облачных сервисов.