Паттерны Проектирования
- Decomposition Patterns (6 Patterns)
- SOLID
- LC/HC - Принципы GRASP
- DRY - Dont Repeat Yourself: не должны повторяться именно в поведении, а не в данных (например микросервисы)
- Разделения ответственности слоев:
- Сквозная функциональность
- Аудита
- Наблюдаемость Observability Patterns
- Агрегация логов
- Обработка исключения
- Распределенная трассировка
- Метрики ИС
- Аудит
- Health Check API
- Оркестрация - есть дирижер или Хореография - нет централизованного управления (медиатора)
- Хранилищ данных
- TODO
Анализ вариантов
CheckList
- закладывайте в архитектуру возможности для автоматического устранения неполадок. В распределенных системах происходят сбои.
- Приложение необходимо проектировать так, чтобы оно могло автоматически восстанавливать свою работу при возникновении сбоев.
- Обеспечивайте резервирование всех компонентов. Резервирование позволяет избежать появления в приложении единственной точки отказа.
- Сводите к минимуму потребности в координации. Сведение к минимуму координации между службами приложения помогает обеспечить масштабируемость
- Учитывайте возможность расширения. Проектируйте приложение так, чтобы оно могло горизонтально масштабироваться, т.е. при необходимости можно было добавлять новые экземпляры
- Используйте секционирование для обхода ограничений. Секционирование позволяет обходить ограничения, связанные с базами данных, сетевыми и вычислительными ресурсами.
- Проектируйте с учетом последующей эксплуатации. Приложение должно проектироваться так, чтобы его было удобно эксплуатировать и у группы эксплуатации были необходимые инструменты
- Используйте управляемые службы. По возможности используйте подход РAAS (платформа как услуга), а не laas (инфраструктура как услуга)
- Используйте наиболее подходящие технологии хранения данных. Выбирайте технологии хранения в соответствии с типом данных и особенностями их использования
- Проектируйте с учетом дальнейшего развития. Все успешные приложения со временем развиваются. Чтобы приложение могло развиваться, необходимо закладывать возможности развития на этапе проектирования
- Разрабатывайте приложения с учетом потребностей бизнеса. Каждое принятое на этапе проектирования решение должно быть обусловлено конкретным бизнес-требованием