Pattern Guru. Шаблоны проектирования. Архитектура ПО @highloadmicro Channel on Telegram

Pattern Guru. Шаблоны проектирования. Архитектура ПО

@highloadmicro


Патерны программирования.
Архитектура ПО.
Микросервисы

@anothertechrock

Pattern Guru (Russian)

Pattern Guru - это Telegram-канал, посвященный паттернам программирования, архитектуре программного обеспечения и микросервисам. Если вы хотите углубить свои знания в области разработки программного обеспечения и узнать о передовых технологиях, то этот канал для вас.
Шаблоны проектирования играют важную роль в создании эффективного и масштабируемого ПО. Архитектура ПО определяет основные принципы и структуру системы, влияя на ее производительность и надежность. Микросервисы - это подход к разработке ПО, который позволяет создавать независимые и легко масштабируемые компоненты.
Присоединяйтесь к каналу Pattern Guru, чтобы узнать о последних тенденциях в мире разработки программного обеспечения и стать настоящим гуру в этой области. Следите за обновлениями и общайтесь с единомышленниками, чтобы обогатить свои знания и навыки в IT-сфере. Присоединяйтесь к нам прямо сейчас!

Pattern Guru. Шаблоны проектирования. Архитектура ПО

13 Dec, 05:20


🔥 Топ-9 паттернов для обмена данными и взаимодействия между компонентами/сервисами в распределенных системах

🔹 Peer-to-Peer
🔹 API Gateway
🔹 Pub-Sub
🔹 Request-Response
🔹 Event Sourcing
🔹 ETL
🔹 Batching
🔹 Streaming Processing
🔹 Orchestration

👉 Источник

#инфографика

Pattern Guru. Шаблоны проектирования. Архитектура ПО

12 Dec, 16:30


⁉️ Хотите, чтобы ваши Java-приложения выдерживали любые нагрузки и были стабильны в любой ситуации?
Научитесь этому на бесплатном открытом уроке с использованием Resilience4j!

В мире высоких нагрузок и распределенных систем стабильность — это ключ к успеху.

🗓 На уроке 19 декабря в 20:00 мск мы разберем фреймворк Resilience4j и покажем, как повысить отказоустойчивость ваших приложений.

🦾 Уверенные навыки работы с Resilience4j сделают вас востребованным специалистом, который способен справляться с реальными вызовами. Добавьте этот мощный инструмент в свой профессиональный стек.

Спикер Сергей Петрелевич — опытный разработчик на Java и Kotlin.

🔗 Регистрируйтесь на вебинар

Все участники вебинара получат скидку на курс «Java Developer. Professional».

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Pattern Guru. Шаблоны проектирования. Архитектура ПО

12 Dec, 11:15


Обработка исключений и SOLID

Присоединяйтесь к нашему открытому уроку и погрузитесь в основы обработки исключений и SOLID

🚀На вебинаре вы узнаете:

1. Как реализовать обработку исключений в соответствии с принципами SOLID

2. Как избежать распространения ошибок при обработке исключений

3. Как минимизировать подверженность программного кода изменениям

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

👉 Регистрация и подробности о курсе «Архитектура и шаблоны проектирования»

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Pattern Guru. Шаблоны проектирования. Архитектура ПО

03 Dec, 10:30


Ваши микросервисы тормозят? База данных перегружена? Решение есть — кэширование!

На открытом уроке «Кэширование в микросервисной архитектуре» мы разберём, как ускорить системы, сократить время отклика и снизить нагрузку. Вы узнаете про паттерны кэширования, типы кэшей и популярные инструменты вроде Redis и Memcached.

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

Спикер Сергей Прощаев — ведущий инженер-Java-разработчик в одной из крупнейших российских нефтяных и газодобывающих компаний.

🔴 Регистрируйтесь на вебинар 11 декабря в 20:00 мск! Урок пройдёт перед стартом курса «Microservice Architecture». Участники получат скидку на обучение

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Pattern Guru. Шаблоны проектирования. Архитектура ПО

02 Dec, 13:15


Научитесь проектировать отказоустойчивые хранилища для распределённых систем

Узнайте на открытом вебинаре, как минимизировать риски, настроить репликацию и автоматическое восстановление. Разберём актуальные практики с примерами на Cassandra, MongoDB и Ceph.

🔴 Регистрируйтесь на открытый вебинар «Обеспечение отказоустойчивости хранилищ» 10 декабря в 20:00 мск. Участникам — скидка на участие в курсе «Highload Architect»

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Pattern Guru. Шаблоны проектирования. Архитектура ПО

22 Nov, 08:12


Вопрос с собеседования

В чем разница между классом и структурой?

Ответ:

Класс – это определенный пользователем чертеж, на основе которого создаются объекты. Он состоит из методов (набор инструкций), которые выполняются над объектами.

Структура – это определенная пользователем коллекция переменных. Структуры также являются различными типами данных.

#interview

Pattern Guru. Шаблоны проектирования. Архитектура ПО

21 Nov, 18:02


Вопрос с собеседования

В чем разница между классом и структурой?

Ответ опубликуем завтра, а пока пишите свои варианты в комментариях!

#interview

Pattern Guru. Шаблоны проектирования. Архитектура ПО

21 Nov, 10:50


🎓 Разработчики и архитекторы ПО, хотите расширить возможности своих систем и повысить их гибкость?

👨‍💻🛠👨🏻‍💻Присоединяйтесь к бесплатному вебинару курса «Highload Architect» и узнайте, как управлять данными из внешних источников с помощью Foreign-Data Wrappers (FDW) в PostgreSQL!

Вы научитесь подключаться к внешним базам данных, таким как MySQL и MongoDB, и работать с ними прямо в PostgreSQL, как с обычными таблицами.

🌐 В рамках вебинара вы:

- освоите практические приемы объединения данных из разных источников без сложных ETL-процессов
- узнаете, как настраивать FDW для интеграции с облачными хранилищами и Big Data
- получите ключевые советы по оптимизации производительности работы с внешними данными

Готовьтесь к запуску курса «Highload Architect». Все участники вебинара получат спеццену на обучение. Улучшите свои навыки и работайте с данными еще эффективнее!

🔴 Ссылка для регистрации

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Pattern Guru. Шаблоны проектирования. Архитектура ПО

19 Nov, 13:15


🚀 Ваша CMS под контролем: легко, гибко, масштабируемо!

Управление контентом — это не просто тексты и картинки, а ключ к стабильной работе цифрового бизнеса. На открытом вебинаре вы поймете, как спроектировать CMS, которая выдержит любой трафик, и поддерживать её без лишних ресурсов.

Что вы узнаете на вебинаре:
- как грамотно проектировать структуру CMS для высокой производительности;
- какие модули и плагины помогут настроить систему под любые задачи;
- лучшие подходы к масштабированию и обеспечению стабильности на высоких нагрузках.

🔥 Спикер Евгений Тюменцев — директор компании по разработке ПО. 20 лет преподает компьютерные дисциплины в ВУЗе: C++, Kotlin, C#, ООП.

Урок проходит в преддверии курса «Microservice Architecture». Участники получат скидку на обучение!

26 ноября в 20:00 МСК. Регистрация открыта

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Pattern Guru. Шаблоны проектирования. Архитектура ПО

17 Nov, 17:33


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

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

Этот шаблон стоит использовать, если:
- ваша система должна быть независимой от способа создания новых объектов
- создаваемые объекты должны использоваться вместе и быть взаимосвязанными.

Классы абстрактной фабрики часто реализуются фабричными методами,
но могут быть реализованы и с помощью паттерна Prototype.

Смотреть реализацию

Pattern Guru. Шаблоны проектирования. Архитектура ПО

17 Nov, 09:00


🔥Бесплатный Roadmap для развития архитектурного мышления

5 направлений с полезными ссылками:

👉 Системное мышление
👉 Системный дизайн
👉 БД и брокеры сообщений
👉 Алгоритмы и структуры данных
👉 Инфраструктура

Забирать roadmap ➡️ в боте


Реклама ООО «Слёрм» ИНН 3652901451

Pattern Guru. Шаблоны проектирования. Архитектура ПО

13 Nov, 16:10


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

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

Предположим, что у программиста есть собака, а система ожидает кошку. Эту собаку нужно адаптировать.

Смотреть реализацию

Pattern Guru. Шаблоны проектирования. Архитектура ПО

13 Nov, 12:10


Хотите создавать масштабируемую и отказоустойчивую микросервисную архитектуру?

19 ноября в 20:00 мск приглашаем на открытый вебинар, где вы узнаете, как применять ключевые стратегии Circuit Breaker, Retry и Load Balancing для повышения стабильности систем.

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

👨‍💻🛠👨🏻‍💻 Вебинар будет полезен разработчикам, архитекторам и DevOps-инженерам, которые хотят повысить производительность своих микросервисов, внедрив современные решения для автоматического масштабирования и балансировки.

🔴 Регистрируйтесь прямо сейчас и получите скидку на курс «Software Architect»

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Pattern Guru. Шаблоны проектирования. Архитектура ПО

31 Oct, 14:39


В библиотеке aiogram dialog есть диалог менеджер, он реализует базовую функциональность управления диалогами: старт разным способом, доступ к контексту и т.п.
Также есть менеджер - это временный объект. Он создаётся на время обработки конкретного события. Соответственно, его надо постоянно пересоздавать.
В какой-то момент я решил что неплохо дать возможность что-то в менеджере переопределить, соответственно нужно и фабрику менять.
Для решения этой проблемы абстрактная фабрика подошла лучше всего.

Pattern Guru. Шаблоны проектирования. Архитектура ПО

30 Oct, 14:48


#паттерны

Введение

Сегодня мы рассмотрим паттерн проектирования "Абстрактная фабрика".

Классификация

Тип: Порождающий

Определение: Абстрактная фабрика - это порождающий паттерн проектирования, который предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов.

Грубо говоря, абстрактная фабрика - это "фабрика фабрик", данный паттерн позволяет решить проблему создания целых семейств связанных объектов, без указания конкретных классов продуктов.
С помощью абстрактной фабрики вы можете предоставить библиотеку объектов не расскрывая их реализацию.

Из чего состоит и как работает данный паттерн

1. Абстрактного класса/Интерфейса абстрактной фабрики. Содержит абстрактные методы которые возвращают абстрактные продукты, связанные одной конпцецией.

class AbstractFactory(ABC):
@abstractmethod
def create_product_a(self):
...

@abstractmethod
def create_product_b(self):
...


2. Конретные фабрики. Конкретные фабрики реализут операции которые создают конкретные продукты.

class ConcreteFactory1(AbstractFactory):
def create_product_a(self):
return ConcreteProductA1()

def create_product_b(self):
return ConcreteProductB1()

class ConcreteFactory2(AbstractFactory):
def create_product_a(self):
return ConcreteProductA2()

def create_product_b(self):
return ConcreteProductB2()


3. Абстрактные классы продуктов. Реализуют интерфейс для всех конретных продуктов своего семейства.

class AbstractProductA(ABC):
@abstractmethod
def very_important_super_function_a(self) -> str:
...

class AbstractProductB(ABC):
@abstractmethod
def very_important_super_function_b(self) -> str:
...


4. Конкретные продукты. Реализуют абстрактные продукты. Продукты одного семейства не могут взаимодействовать, с продуктами другого семейства.

class ConcreteProductA1(AbstractProductA):
def very_important_super_function_a(self) -> str:
return "Product A1"


class ConcreteProductA2(AbstractProductA):
def very_important_super_function_a(self) -> str:
return "Product A2"

class ConcreteProductB1(AbstractProductB):
def very_important_super_function_b(self) -> str:
return "Product B1"


class ConcreteProductB2(AbstractProductB):
def very_important_super_function_b(self) -> str:
return "Product B2"


5. Клиент. Клиентский код работает исключительно с абстрактной фабрикой и абстрактными продуктами.

def client(factory: AbstractFactory) -> str:
return factory.create_product_a().very_important_super_function_a()

for factory in (ConcreteFactory1, ConcreteFactory2, ...):
client(factory)


Плюсы данного паттерна

1. Реализует принцип открытости/закрытости.

2. Упращает поддержку кода.

3. Выделяет код производства продуктов в одно место, упрощая поддержку кода.

Минусы данного паттерна

1. Снижает читаемость программы из-за введения множества дополнительных классов.

Пример и задача

Дед Мороз и Пасхальный кролик не успевают сделать игрушки к празднику, которые они будут дарить детям.
Все существует 3 вида игрушек:

1. Лошадка
2. Зайчик
3. Шарик

Всё было бы просто однако Деду Морозу нужны игрушки в новогоднем стиле, а пасхальному кролику в пасхальном.
Создайте абстрактную фабрику игрушек и спасите эти праздники!

Пример из реального кода

Пример из реального кода предоставил @Tishka17. Он разработал замечательный фреймворк aiogram_dialog для разработки интерактивных диалогов и меню в телеграмм ботах, как обычное приложение с графическим интерфейсом.

Вот здесь он использует данный паттерн: https://github.com/Tishka17/aiogram_dialog/blob/develop/aiogram_dialog/manager/manager_middleware.py#L23

Вот его объяснение, какую задачу он решает в данном случае:

Pattern Guru. Шаблоны проектирования. Архитектура ПО

30 Oct, 10:46


Какой самый больной вопрос для IT-команд? Тестирование микросервисов!

Откройте все секреты! Как повысить отказоустойчивость и управлять взаимодействиями между сервисами?

👨‍💻🛠👨🏻‍💻 На открытом уроке мы разберем всё: от юнит-тестов до тестов производительности.

Присоединяйтесь к бесплатному вебинару 7 ноября в 20:00 мск и получите практические инструменты для работы с микросервисами. А еще скидку на обучение на курсе «Software Architect»!

🔴 Регистрируйтесь прямо сейчас и получите доступ к лучшим практикам тестирования в распределённых системах

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Pattern Guru. Шаблоны проектирования. Архитектура ПО

30 Oct, 10:07


🔍 Что такое MVC?

MVC (Model-View-Controller) — это популярный архитектурный паттерн, который разделяет приложение на три компонента:

Model — отвечает за бизнес-логику и управление данными. Это сердце приложения, где происходит взаимодействие с базой данных, выполнение бизнес-правил и другие операции.

View — представляет собой интерфейс пользователя. Он отвечает за отображение данных и взаимодействие с пользователем, но не содержит бизнес-логики.

Controller — посредник между Model и View. Он получает запросы от пользователя, передает их Model и возвращает результаты во View.

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

Pattern Guru. Шаблоны проектирования. Архитектура ПО

25 Oct, 17:37


#паттерны

Введение

Сегодня мы рассмотрим паттерн проектирования "Адаптер".

Классификация

Тип:
Структурный

Определение: Адаптер — это структурный паттерн проектирования, который позволяет объектам с несовместимыми интерфейсами работать вместе.
Адаптер выступает прослойкой между объектами превращая вызовы одного в понятные для другого.

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

Из чего состоит и как работает паттерн адаптер

1. Клиент. Описывает бизнес логику программы. Работает с адаптером и другими объектами.


adapter = Adapter()
result = adapter.do() + "5"


2. Интерфейс с которым может работать клиентский код.


class Test1:
def do(self) -> str:
return "3"


3. Класс, который имеет нужную клиенту логику, однако клиент не может с ним общаться, так как интерфейс данного класса ему не понятен.


class Test2:
def specific_do(self) -> float:
return 3.4


4. Адаптер - класс который помогает клиенту использовать функционал незнакомого ему сервиса в правильном формате. Реализует клиентский интерфейс. Содержит ссылку на незнакомый сервис. Адаптер при получении вызовов от клиента через клиентский интерфейс и переводит их в вызовы незнакомого сервиса в правильном формате.


class Adapter(Test1, Test2):
def do(self) -> str:
return f"Translated: {round(self.specific_do())}"


Уточнение: Приложение должно использовать объект адаптера только через клиентский интерфейс. Это позволит легко создавать и изменять адаптеры в будущем.

Плюсы данного паттерна

1. Скрывает все "низкоуровневые" преобразования интерфейсов от клиента. Реализует принцип абстракция.

Минусы данного паттерна

Таковых я не обнаружил

Пример и задача

В качестве примера возьмём класс с методом do который возвращает небольшой текст. Также есть класс с методом secret_do который возвращает другую строку, зашифрованную шифром Цезаря со сдвигом 5, которая ещё и полностью развёрнута.

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

Реализуйте адаптер для второго класса, который спасёт ваш блог от зашифрованных постов.

Пример из реального кода

https://github.com/aiogram/aiogram/blob/b190bbba1915ed3b7f311a780f34723ebd6b5acd/aiogram/contrib/fsm_storage/redis.py#L280

Вот его объяснение какую задачу решает адаптер в данном случае:

Здесь адаптер дает возможность контроллеру хранилища (RedisStorage) работать с первой версией редиса, т.е. адаптирует aioredis-v1, там еще есть адаптер для aioredis-v2, но он в отличие от первой версии адаптирует только создание клиента редиса


Дополнительные материалы

https://habr.com/ru/post/85095/

Pattern Guru. Шаблоны проектирования. Архитектура ПО

25 Oct, 13:30


Как эффективно разделять приложения на микросервисы?

Расскажет Евгений Непомнящий — разработчик в IT Sense. Встречаемся на бесплатном практическом уроке от OTUS, где вы вместе с опытным экспертом:

- рассмотрите принципы функциональной декомпозиции;
- научитесь выделять отдельные компоненты приложения;
- погрузитесь в методику EventStorming;
- изучите подход API First Design;
- узнаете, как разрабатывать API.

🗓 Встречаемся 28 октября в 20:00 мск в рамках курса «Software Architect». Доступна рассрочка на обучение!

🔴 Ссылка для регистрации

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Pattern Guru. Шаблоны проектирования. Архитектура ПО

23 Oct, 09:43


🕯 Паттерн Proxy (Прокси)

Proxy — это структурный паттерн, который предоставляет объект-заместитель для управления доступом к другому объекту, обеспечивая контроль над его использованием.

Использование:

🔹 Когда необходимо контролировать доступ к ресурсоемким объектам или операциям.
🔹 Для добавления дополнительной функциональности без изменения исходного объекта.

Преимущества:

1️⃣ Позволяет контролировать доступ к реальному объекту, например, для ленивой инициализации или кэширования. Это может улучшить производительность, так как ресурсоемкие объекты создаются только тогда, когда они действительно нужны.

2️⃣ Позволяет контролировать доступ к объектам, добавляя проверки перед вызовом методов. Это полезно для управления доступом в сетевых приложениях или для защиты данных.

3️⃣ Позволяет оптимизировать работу с удаленными объектами, минимизируя количество вызовов или обрабатывая их асинхронно. Это снижает нагрузку на систему и повышает скорость работы приложения.

4️⃣ Может использоваться для логирования или отслеживания вызовов методов реального объекта, не внося изменений в сам объект. Это упрощает мониторинг и отладку системы.

Pattern Guru. Шаблоны проектирования. Архитектура ПО

22 Oct, 13:00


В кругах корпоративных архитекторов всё чаще говорят о «потоках создания ценности» или Value Streams. Это мощный инструмент для анализа и проектирования целевого состояния организации.

На открытом онлайн-уроке «Value Streams: инструмент анализа потоков создания ценности в организации» вы узнаете:

- что такое Value Streams
- для чего нужен Value Streams
- о примерах Value Streams
- о связи Value Streams и Capability Map

👨‍💻🛠👨🏻‍💻 Будет интересно: руководителям всех уровней, корпоративным и бизнес-архитекторам, бизнес-аналитикам, системным аналитикам, руководителям проектов и владельцам продуктов. После вебинара вы можете приобрести курс «Enterprise Architect».

🗓 6 ноября, 20:00
🆓 Бесплатно. Урок в рамках старта курса «Enterprise Architect»

🔴 Записаться на событие

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Pattern Guru. Шаблоны проектирования. Архитектура ПО

22 Oct, 12:59


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

from __future__ import annotations
from abc import ABC, abstractmethod


class Creator(ABC):
"""
Класс Создатель объявляет фабричный метод, который должен возвращать объект
класса Продукт. Подклассы Создателя обычно предоставляют реализацию этого
метода.
"""

@abstractmethod
def factory_method(self):
"""
Обратите внимание, что Создатель может также обеспечить реализацию
фабричного метода по умолчанию.
"""
pass

def some_operation(self) -> str:
"""
Также заметьте, что, несмотря на название, основная обязанность
Создателя не заключается в создании продуктов. Обычно он содержит
некоторую базовую бизнес-логику, которая основана на объектах Продуктов,
возвращаемых фабричным методом. Подклассы могут косвенно изменять эту
бизнес-логику, переопределяя фабричный метод и возвращая из него другой
тип продукта.
"""

# Вызываем фабричный метод, чтобы получить объект-продукт.
product = self.factory_method()

# Далее, работаем с этим продуктом.
result = f"Creator: The same creator's code has just worked with {product.operation()}"

return result


"""
Конкретные Создатели переопределяют фабричный метод для того, чтобы изменить тип
результирующего продукта.
"""


class ConcreteCreator1(Creator):
"""
Обратите внимание, что сигнатура метода по-прежнему использует тип
абстрактного продукта, хотя фактически из метода возвращается конкретный
продукт. Таким образом, Создатель может оставаться независимым от конкретных
классов продуктов.
"""

def factory_method(self) -> Product:
return ConcreteProduct1()


class ConcreteCreator2(Creator):
def factory_method(self) -> Product:
return ConcreteProduct2()


class Product(ABC):
"""
Интерфейс Продукта объявляет операции, которые должны выполнять все
конкретные продукты.
"""

@abstractmethod
def operation(self) -> str:
pass


"""
Конкретные Продукты предоставляют различные реализации интерфейса Продукта.
"""


class ConcreteProduct1(Product):
def operation(self) -> str:
return "{Result of the ConcreteProduct1}"


class ConcreteProduct2(Product):
def operation(self) -> str:
return "{Result of the ConcreteProduct2}"


def client_code(creator: Creator) -> None:
"""
Клиентский код работает с экземпляром конкретного создателя, хотя и через
его базовый интерфейс. Пока клиент продолжает работать с создателем через
базовый интерфейс, вы можете передать ему любой подкласс создателя.
"""

print(f"Client: I'm not aware of the creator's class, but it still works.\n"
f"{creator.some_operation()}", end="")


if __name__ == "__main__":
print("App: Launched with the ConcreteCreator1.")
client_code(ConcreteCreator1())
print("\n")

print("App: Launched with the ConcreteCreator2.")
client_code(ConcreteCreator2())

Pattern Guru. Шаблоны проектирования. Архитектура ПО

15 Oct, 12:15


Какие брокеры использовать, чтобы обеспечить асинхронную связь между микросервисами?

Узнайте на открытом практическом уроке «Брокеры сообщений: RabbitMQ и Kafka» от OTUS, где мы узнаем:

что такое брокеры сообщений и как они помогают в архитектуре микросервисов
основные различия между RabbitMQ и Kafka, включая их архитектурные подходы
как развернуть и настроить RabbitMQ и Kafka для ваших приложений
практическое использование обоих брокеров на реальных примерах в live demo

🗓 Встречаемся 24 октября в 20:00 мск в преддверии старта курса «Microservice Architecture». Все участники вебинара получат специальную цену на обучение и консультацию от менеджеров OTUS!

➡️ Ссылка для регистрации

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Pattern Guru. Шаблоны проектирования. Архитектура ПО

14 Oct, 10:45


Хотите узнать, как использовать Patroni для управления высокодоступными кластерами PostgreSQL?

Ждем вас на открытом вебинаре 24 октября в 20:00 мск, где мы разберем:

- что такое Patroni и как он помогает обеспечить высокую доступность для PostgreSQL;
- основные компоненты и архитектуру Patroni;
- настройку и конфигурацию Patroni для работы с PostgreSQL;
- примеры использования Patroni для управления кластером PostgreSQL;
- практические советы по оптимизации и мониторингу работы кластера.

👨‍💻🛠👨🏻‍💻 Урок для DevOps-инженеров, системных администраторов, backend-разработчиков и тимлидов, стремящихся обеспечить высокую доступность PostgreSQL.

Спикер Андрей Поляков — старший разработчик в Unlimint.

Встречаемся в преддверии старта курса «Highload Architect». Все участники вебинара получат специальную цену на обучение! Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Pattern Guru. Шаблоны проектирования. Архитектура ПО

01 Oct, 10:33


Используйте умные ссылки – создавайте и настраивайте сервисы для динамического управления редиректами
Как именно, спросите вы?

А очень просто: приходите на открытый урок OTUS «Проектирование сервиса умных ссылок»

Вы узнаете:
- как спроектировать сервис умных ссылок и создавать ссылки с динамическими правилами редиректа
- как настраивать редирект в зависимости от геолокации, устройства пользователя и других параметров
- как разрабатывать и оптимизировать масштабируемый и гибкий сервис умных ссылок

Вебинар проведёт действующий директор компании по разработке ПО, в прошлом – профессиональный разработчик на C++

👨‍💻🛠👨🏻‍💻 Будет интересно: бэкенд-разработчикам, фулстек-разработчикам, техническим архитекторам

📅 8 октября, 20:00
🆓 Бесплатно. Урок в рамках старта курса «Microservice Architecture»

🔴 Записаться на открытый урок

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Pattern Guru. Шаблоны проектирования. Архитектура ПО

30 Sep, 09:08


Highload, системный дизайн, производительность и масштабирование

Приглашаем на курс для прокачки навыков архитектора и проектировщика, которые важны для профессионального роста программиста.

🌐 С курсом «Системный дизайн высоконагруженных проектов» вы:

▪️изучите ключевые фундаментальные паттерны и получите навыки проектирования проектов с миллионной аудиторией (балансировка, масштабирование апп/кешей/субд, высокая доступность и кластерные решения, шардинг, CAP/PACELS, консистентность, саги, транзакционные очереди и многое другое)
▪️поупражняетесь в проектировании и получите обратную связь на реальных задачах: магазин/маркетплейс, такси/доставка, обьявления, соцсети, дейтинг, игры, википедия, мессенжер, CDN, хранилище файлов, онлайн-кинотеатр, счетчики, удаленный мониторинг, интеграционные вебхуки, рассылки и тд.
▪️ научитесь планировать нагрузку и связывать
бизнес-показатели с нефункциональными требованиями к системе
▪️ попрактикуемся в проведении и прохождения секций системного дизайна на интервью

Всё в формате «живых» онлайн-сессий (лекции, брейнштормы, презентации домашних проектов).

🥸 Кто мы: школа Devhands, основатель школы и автор курса Алексей Рыбак, ex-СТО Badoo, с 20-летним опытом высоконагруженных проектов и и управления глобальными технологическими организациями, член программного комитета Highload.

🗓 Старт 22-го октября, изучаем программу, записываемся здесь

Реклама. ИП Рыбак А.А. ИНН 771407709607 erid:LjN8JuvAT

Pattern Guru. Шаблоны проектирования. Архитектура ПО

24 Sep, 12:15


Что поможет обеспечить стабильную работу высоконагруженной системы?
Эффективный мониторинг.


О том, как лучше отслеживать и поддерживать стабильность систем под высокой нагрузкой, вы узнаете на открытом уроке «Мониторинг в высоконагруженных проектах»

👨‍💻🛠👨🏻‍💻 Будет интересно: девопсам, сисадминам, бэкенд-разработчикам, тимлидам.

Вы научитесь:
Настраивать мониторинг для высоконагруженных проектов
Настраивать мониторинг для выявления и предотвращения проблем
Использовать данные мониторинга для повышения стабильности и производительности системы
Усиливать отказоустойчивость архитектуры

А ещё получите ценные советы для оптимизации мониторинга в реальных проектах.

Урок проведёт Олег Мифле, бэкенд-разработчик VK с 15-летним опытом в IT

🆓 Участие бесплатное. Урок в рамках старта курса «Highload Architect»

🔴 Записаться на открытый урок

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Pattern Guru. Шаблоны проектирования. Архитектура ПО

16 Sep, 09:04


Как создавать код, который легко модифицировать и поддерживать?

Узнайте на открытом вебинаре «Практическое руководство по применению SOLID-принципов» 16 сентября в 20:00 мск, где мы разберем:

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

Урок для backend и fullstack-разработчиков, архитекторов ПО и начинающих программистов.

Встречаемся в преддверии старта курса «Архитектура и шаблоны проектирования». Все участники вебинара получат специальную цену на обучение!

Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие.

Pattern Guru. Шаблоны проектирования. Архитектура ПО

14 Aug, 14:22


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

А теперь представьте, что ваши системы работают как часы, координация и синхронизация на высшем уровне, а конфигурация управляется легко и без ошибок. Вы освоили Apache Zookeeper и ваши проекты достигают новых высот надежности и масштабируемости!

Присоединяйтесь к открытому вебинару 21 августа в 20:00 мск. Там мы решим все эти проблемы и ответим на возникающие вопросы.

👨‍💻🛠👨🏻‍💻 Урок будет полезен разработчикам, DevOps-инженерам, администраторам систем и сетей, архитекторам ПО и всем, кто хочет глубже понять работу Apache Zookeeper.

🔴 Запишитесь прямо сейчас, чтобы не пропустить мероприятие

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Pattern Guru. Шаблоны проектирования. Архитектура ПО

01 Aug, 17:24


Вопрос с собеседования

Для чего нужен Decorator паттерн в Javascript?
Приведите пример.

Ответ:

Javascript предоставляет удивительно гибкие возможности по работе с функциями: их можно передавать, в них можно записывать данные как в объекты, у них есть свои встроенные методы.

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

Примером декоратора является управление безопасностью, где бизнес-объектам предоставляется дополнительный доступ к привилегированной информации в зависимости от привилегий аутентифицированного пользователя. Например, менеджер по персоналу приступает к работе с объектом сотрудника, к которому добавлена (то есть украшена) запись о зарплате сотрудника, чтобы можно было просматривать информацию о зарплате.

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

Пример использования декоратора в JavaScript:

function User(name) {
this.name = name,
this.print = () => console.log(this.name)
}

const jane = new User ('Jane Doe')
jane.print() // 'Jane Doe'

function DecorateWithCity(user, city) {
user.city = city
user.print = function() {
console.log (${this.name} from ${this.city})
}
}

DecorateWithCity(jane, 'NewYork')
jane.print(); //'Jane Doe from New York'

#interview

Pattern Guru. Шаблоны проектирования. Архитектура ПО

01 Aug, 13:23


Готовы узнать, как настроить мониторинг RabbitMQ с помощью Telegraf, InfluxDB и Grafana?

🚀Ждем вас на открытом вебинаре 13 августа в 20:00 мск, где вы разберете:

- как настроить Telegraf для сбора метрик RabbitMQ;
- конфигурацию InfluxDB для хранения и обработки метрик;
- создание и настройку дашбордов в Grafana для мониторинга RabbitMQ;
- персонализацию дашбордов для отображения нужной информации;
- практическое руководство по работе с Grafana для визуализации данных.

👨‍💻 Урок будет полезен backend- и fullstack-разработчикам, DevOps-инженерам, архитекторам ПО и специалистам по мониторингу и анализу данных.

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

🔴 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Pattern Guru. Шаблоны проектирования. Архитектура ПО

01 Aug, 12:03


Вопрос с собеседования

Для чего нужен Decorator паттерн в Javascript?
Приведите пример.

Ответ опубликуем вечером, а пока пишите свои варианты в комментариях!

#interview

Pattern Guru. Шаблоны проектирования. Архитектура ПО

18 Jul, 13:43


Хотите узнать, как справиться с высокой нагрузкой и обеспечить максимальную производительность вашего приложения? Присоединяйтесь к открытому вебинару «Роль Tarantool в высоконагруженной архитектуре», где мы разгадаем секреты использования Tarantool в high-load проектах.

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

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

🔴 Встречаемся 24 июля в 20:00 мск, регистрация открыта: https://vk.cc/cytzcC

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Pattern Guru. Шаблоны проектирования. Архитектура ПО

17 Jul, 17:19


Использование брокера сообщений Apache Kafka в распределенных очередях

24 июля в 20:00 мск

Хотите узнать, как эффективно управлять сообщениями в масштабируемых распределенных системах? Тогда этот открытый вебинар для вас!

Мы разберем основы и архитектуру Apache Kafka, принципы работы с распределенными очередями, а также научимся настраивать и развертывать кластер Kafka в Docker. Вы увидите реальные примеры использования Kafka для обмена сообщениями между сервисами и узнаете о лучших практиках и рекомендациях по интеграции Kafka в ваши проекты.

💻 Урок будет полезен Fullstack и Backend-разработчикам, DevOps-инженерам, архитекторам ПО и администраторам систем, а также всем, кто хочет углубить свои знания об Apache Kafka и его применении.

🔴 Регистрация открыта: https://vk.cc/cyt6ug

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

2,529

subscribers

67

photos

70

videos