Anton Sidorov homepage

Bookmark this to keep an eye on my project updates!

Follow me on GitHub

Паттерны Проектирования и реализации

  • System Design шаги
  • DDD
  • SOLID
    • Single concern principle, single response principle (SRP) принцип единственной ответственности
      • решать одну проблему хорошо
      • У класса должна быть только одна причина для изменения
    • Open-Closed - сущности открыты для расширения, но закрыты для изменения
    • Liskov
    • Interface Segregation
    • Dependeny Injection
  • LC/HC - Принципы GRASP
  • DRY - Dont Repeat Yourself: не должны повторяться именно в поведении, а не в данных (например микросервисы)
  • TODO
  • Придумайте второй вариант дизайна архитектуры, который тоже может сработать в вашей ситуации. Противопоставьте оба дизайна и объясните, почему один лучше другого.
  • Групповые ревью - коллективный архитектор
  • закладывайте в архитектуру возможности для автоматического устранения неполадок. В распределенных системах происходят сбои.
    • Приложение необходимо проектировать так, чтобы оно могло автоматически восстанавливать свою работу при возникновении сбоев.
  • Обеспечивайте резервирование всех компонентов. Резервирование позволяет избежать появления в приложении единственной точки отказа.
  • Сводите к минимуму потребности в координации. Сведение к минимуму координации между службами приложения помогает обеспечить масштабируемость
  • Учитывайте возможность расширения. Проектируйте приложение так, чтобы оно могло горизонтально масштабироваться, т.е. при необходимости можно было добавлять новые экземпляры
  • Используйте секционирование для обхода ограничений. Секционирование позволяет обходить ограничения, связанные с базами данных, сетевыми и вычислительными ресурсами.
  • Проектируйте с учетом последующей эксплуатации. Приложение должно проектироваться так, чтобы его было удобно эксплуатировать и у группы эксплуатации были необходимые инструменты
  • Используйте управляемые службы. По возможности используйте подход РAAS (платформа как услуга), а не laas (инфраструктура как услуга)
  • Используйте наиболее подходящие технологии хранения данных. Выбирайте технологии хранения в соответствии с типом данных и особенностями их использования
  • Проектируйте с учетом дальнейшего развития. Все успешные приложения со временем развиваются. Чтобы приложение могло развиваться, необходимо закладывать возможности развития на этапе проектирования
  • Разрабатывайте приложения с учетом потребностей бизнеса. Каждое принятое на этапе проектирования решение должно быть обусловлено конкретным бизнес-требованием.