Создание надежной, безопасной, масштабируемой и независимой системы.

Недавно я наткнулся на фантастическое руководство, написанное разработчиками Google Cloud, под названием Основные принципы проектирования системы. Документ был кратким, информативным и понятным. Давайте сразу к делу-

Присоединяйтесь к более чем 90 тысячам технологических лидеров и получайте информацию о наиболее важных идеях в области ИИ прямо на свой почтовый ящик через мой бесплатный информационный бюллетень — AI Made Simple

Основные принципы проектирования систем — TL;DR

  1. Цели проектирования системы. Мы хотим разработать надежную систему. Вы спросите, что такое надежная система? «Надежная система должна быть безопасной, надежной, масштабируемой и независимой. Оно позволяет вносить итеративные и обратимые изменения без нарушения работы системы, минимизировать потенциальные риски и повышать эффективность работы. Чтобы создать надежную систему, мы рекомендуем следовать четырем основным принципам.»
  2. Принцип 1. Документируйте все. Это не должно вас шокировать. Хорошая документация позволяет визуализировать текущие развертывания, обеспечивает межфункциональное сотрудничество и контекстуализирует проектные решения для новичков. У нас есть подробное (и очень популярное) руководство по документации.
  3. Принцип 2. Упростите дизайн и используйте полностью управляемые сервисы.Это музыка моих лет, потому что я проповедовал это с тех пор, как пишу. Если ваша архитектура слишком сложна для понимания, со временем будет сложно реализовать проект и управлять им. Сложная архитектура — не признак великого инженера, а скорее недальновидность.

мы обнаружили, что различия в сложности архитектуры могут привести к снижению производительности на 50%, трехкратному увеличению плотности дефектов и увеличению текучести кадров на порядок.

-Насколько плоха архитектурная сложность

Один из наиболее мощных методов — использование полностью управляемых сервисов. Полное управление означает, что вам не нужно настраивать какие-либо машины: управление, установка исправлений и резервное копирование в основном выполняются за вас. Обычно это достигается за счет привлечения сторонних подрядчиков и продуктов для упрощения рабочих процессов. Первоначальные затраты окупятся многократно. Если ваша группа ищет хорошее место для старта, напишите мне сообщение. Я был бы рад обсудить с вами детали.

  • Принцип 3. Разделение архитектуры.Развязка – это метод, который используется для разделения ваших приложений и компонентов служб на более мелкие компоненты, которые могут работать независимо. Это повышает гибкость и безопасность вашей системы и позволяет легче вносить изменения. Это составляет основу архитектуры микросервисов, но здесь следует быть осторожным. Реализация этого требует много усилий и проблем, и если все сделано плохо, ваши накладные расходы резко возрастут, как выяснила Amazon. Разделение – это хорошо, но оно может зайти слишком далеко.
  • Принцип 4. Используйте архитектуру без состояния.Как описано в нашей статье об архитектуре без состояния,Архитектура без состояния – это немного неправильное название. Дело не в том, что ваше приложение не отслеживает состояние (это необходимо), но это отслеживание передается на аутсорсинг системам, которые могут делать это лучше. Используя такие инструменты, как файлы cookie, совместное использование экземпляров Redis для хранения черно-белых серверов состояния и т. д., обработка состояний становится намного проще. Архитектура без сохранения состояния хорошо подходит для мира, где ПК потягивают сок джунглей, а современное оборудование стоит дешево. Это позволяет компьютерам на стороне клиента вмешаться и взять на себя часть вычислительной нагрузки. Это выигрыш для всех: работа клиента становится более плавной, поскольку хранение состояния на стороне клиента становится более надежным, а вычисления и масштабирование на стороне сервера становятся проще.

Чтобы узнать больше о том, что сказали разработчики облачных технологий, я цитирую их принципы ниже:

Фото Med Badr Chemmaoui на Unsplash

Документируйте все

Когда вы начинаете переносить свои рабочие нагрузки в облако или создавать приложения, основным препятствием на пути к успеху является отсутствие документации по системе. Документация особенно важна для правильной визуализации архитектуры ваших текущих развертываний.

Правильно документированная облачная архитектура устанавливает общий язык и стандарты, которые позволяют межфункциональным группам эффективно общаться и сотрудничать. Он также предоставляет информацию, необходимую для определения и принятия будущих проектных решений. Документацию следует писать с учетом ваших вариантов использования, чтобы обеспечить контекст для проектных решений.

Со временем ваши дизайнерские решения будут развиваться и меняться. История изменений обеспечивает контекст, необходимый вашим командам для согласования инициатив, предотвращения дублирования и эффективного измерения изменений производительности с течением времени. Журналы изменений особенно ценны, когда вы нанимаете нового облачного архитектора, который еще не знаком с текущим дизайном, стратегией или историей вашей системы.

Упростите дизайн и используйте полностью управляемые сервисы.

Простота имеет решающее значение для проектирования системы. Если ваша архитектура слишком сложна для понимания, со временем будет сложно реализовать проект и управлять им. По возможности используйте полностью управляемые сервисы, чтобы минимизировать риски, время и усилия, связанные с управлением и обслуживанием базовых систем.

Если вы уже используете свои рабочие нагрузки в рабочей среде, протестируйте управляемые сервисы, чтобы увидеть, как они могут помочь снизить операционные сложности. Если вы разрабатываете новые рабочие нагрузки, начните с простого, создайте минимально жизнеспособный продукт (MVP) и не поддавайтесь желанию переусердствовать. Вы можете выявить исключительные варианты использования, выполнять итерации и постепенно улучшать свои системы.

Разделите свою архитектуру

Развязка – это метод, используемый для разделения приложений и компонентов служб на более мелкие компоненты, которые могут работать независимо. Например, вы можете разбить монолитный стек приложений на отдельные сервисные компоненты. В несвязанной архитектуре приложение может выполнять свои функции независимо, независимо от различных зависимостей.

Отдельная архитектура дает вам большую гибкость при выполнении следующих действий:

  • Применить независимые обновления.
  • Применять определенные меры безопасности.
  • Определите цели надежности для каждой подсистемы.
  • Отслеживать состояние здоровья.
  • Детальный контроль параметров производительности и затрат.

Вы можете начать отделять систему на раннем этапе проектирования или включить ее в процесс обновления системы по мере ее масштабирования.

Используйте архитектуру без сохранения состояния

Архитектура без сохранения состояния может повысить надежность и масштабируемость ваших приложений.

Приложения с отслеживанием состояния используют различные зависимости для выполнения задач, например локально кэшированных данных. Приложениям с отслеживанием состояния часто требуются дополнительные механизмы для отслеживания прогресса и корректного перезапуска. Приложения без сохранения состояния могут выполнять задачи без значительных локальных зависимостей, используя общее хранилище или кэшированные службы. Архитектура без сохранения состояния позволяет вашим приложениям быстро масштабироваться с минимальными зависимостями при загрузке. Приложения выдерживают принудительный перезапуск, сокращают время простоя и обеспечивают более высокую производительность для конечных пользователей.

В категории «Проектирование системы» описаны рекомендации по тому, как сделать ваши приложения без сохранения состояния или использовать облачные функции для улучшения регистрации состояния компьютера для ваших приложений с сохранением состояния.

Вот и все для этого произведения. Я ценю ваше время. Как всегда, если вы хотите поработать со мной или посмотреть другие мои работы, мои ссылки будут в конце этого электронного письма/поста. Если вам нравится то, что я пишу, я был бы очень признателен за анонимный отзыв. Вы можете оставить это здесь. И если вы нашли ценность в этой статье, я был бы признателен, если бы вы поделились ею с большим количеством людей. Именно рекомендации из уст в уста, подобные вашим, помогают мне расти.

Сэкономьте время, энергию и деньги, просмотрев все эти видеоролики, курсы, продукты и тренеров, и легко найдите все, что вам нужно, в одном месте Технологии стали проще! Будьте на шаг впереди всех в области искусственного интеллекта, разработки программного обеспечения и индустрии высоких технологий, используя экспертные знания, советы и ресурсы. Скидка 20 % для новых подписчиков, перейдя по этой ссылке. Подпишитесь сейчас и упростите свое путешествие в мир технологий!

Использование этой скидки снизит цены.

800 индийских рупий (10 долларов США) → 640 индийских рупий (8 долларов США) в месяц

8000 индийских рупий (100 долларов США) → 6400 индийских рупий (80 долларов США) в год (533 индийских рупий в месяц)

Получите скидку 20% на 1 год

Обратитесь ко мне

Используйте ссылки ниже, чтобы просмотреть другой мой контент, узнать больше о репетиторстве, связаться со мной по поводу проектов или просто поздороваться.

Небольшие отрывки о технологиях, искусственном интеллекте и машинном обучении здесь

Информационный бюллетень AI – https://artificialintelligencemadesimple.substack.com/

Любимый технический информационный бюллетень моей бабушки — https://codinginterviewsmadesimple.substack.com/

Ознакомьтесь с другими моими статьями на Medium. : https://rb.gy/zn1aiu

Мой YouTube: https://rb.gy/88iwdd

Свяжитесь со мной в LinkedIn. Подключаемся: https://rb.gy/m5ok2y

Мой Инстаграм: https://rb.gy/gmvuy9

Мой Твиттер: https://twitter.com/Machine01776819