Блог Архитектура и шаблоны проектирования | OTUS
Посты
Асинхронная загрузка CSS

Асинхронная загрузка CSS даcт возможность показать веб-страницу быстрее. Это особенно важно, когда речь идет о мобильных устройствах, где канал связи может быть медленным. Давайте рассмотрим, как реализовать асинхронную загрузку.

Шаблон проектирования Компоновщик (Composite)

Arch_headline_970x70-1801-410a68.png

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

Паттерны проектирования: Мост (Bridge)

Arch_headline_970x70-1801-410a68.png

Мост — структурный шаблон, который применяется в проектировании ПО для разделения абстракции и реализации таким образом, чтобы они могли меняться независимо друг от друга. Этот шаблон использует инкапсуляцию и агрегирование, а также, если требуется разделение ответственности между классами, может использовать наследование.

Структурные шаблоны проектирования: Adapter

Arch_headline_970x70-1801-410a68.png

В структурных шаблонах проектирования рассматривается вопрос о том, каким образом из классов и объектов формируются более крупные структуры. Иными словами, структурные шаблоны, как правило, связаны с композицией объектов и с тем, как именно сущности могут использовать друг друга. По сути, они помогают узнать ответ на вопрос «Как создать программный компонент?» Один из таких шаблонов — «Адаптер» (Adapter).

Выбор MQ для HighLoad-проекта

Highload_970x90-1801-fc90a0.png

Чтобы управлять потоком запросов в микросервисной архитектуре, применяют очереди сообщений MQ (message queues). Но какую MQ лучше выбрать, если речь идет о высоконагруженном проекте?

Sharding в построении отказоустойчивого сервиса

В предыдущих заметках мы рассказывали про горизонтальное масштабирование, CQRS и архитектурный паттерн Event Sourcing. Но, как известно, в системах с Event Sourcing нет строгой согласованности. А это значит, что нам можно задействовать сразу несколько хранилищ, причем без синхронизации между этими хранилищами.

Откуда берется высокая нагрузка?

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

Архитектурные паттерны: Event Sourcing

Arch_headline_970x70-1801-410a68.png

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

Архитектурные паттерны: горизонтальное масштабирование и CQRS

Arch_headline_970x70-1801-410a68.png

Не секрет, что сегодня интернет-сервисы подвергаются усиленной нагрузке. Случается, что торговые сети даже останавливают сайты с заказами по причине нехватки имеющихся мощностей. Но если запросы клиентов не обрабатывать или обрабатывать с перебоями, клиенты, разумеется, уйдут к конкурентам. Избежать этого помогут архитектурные практики, позволяющие создавать быстрые и отказоустойчивые сервисы. Рассмотрим некоторые из таких паттернов.

Шаблон проектирования Singleton

Arch_headline_970x70-1801-410a68.png

Шаблон проектирования Singleton также называют шаблоном проектирования «Одиночка». Это порождающий шаблон, который гарантирует, что в однопроцессном программном приложении будет лишь один экземпляр некого класса. Также шаблон предоставляет глобальную точку доступа к вышеупомянутому единственному экземпляру.