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

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

Ir al canal en Telegram

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

Mostrar más
3 141
Suscriptores
Sin datos24 horas
-27 días
-1930 días
Archivo de publicaciones
🔥24 июня в 20.00 мск. приглашаем на открытый урок: "Отказоустойчивый и высоко-доступный кластер RabbitMQ" На вебинаре разбер
🔥24 июня в 20.00 мск. приглашаем на открытый урок: "Отказоустойчивый и высоко-доступный кластер RabbitMQ" На вебинаре разберём практические подходы к созданию отказоустойчивой и высоко-доступной очереди сообщений для высоконагруженных систем. 📌 Что будет: — Запуск и настройка кластера: Quorum Queues и Mirrored Queues (синхронная репликация) — Синхронизация очередей и обеспечение согласованности — Dead Letter Queue + правильные настройки durability — Гарантии доставки для Producer: баланс между надёжностью и производительностью — Asynchronous cluster-to-cluster message routing: Exchange Federation и Shovels 🎯 После вебинара вы сможете: — Самостоятельно развернуть отказоустойчивый кластер RabbitMQ — Настраивать Quorum Queues и Mirrored Queues под разные сценарии — Правильно работать с Dead Letter Queues и гарантиями доставки — Организовывать межкластерное взаимодействие сообщений — Проектировать надёжные асинхронные коммуникации в микросервисной архитектуре 👉 Регистрация открыта: https://vk.cc/cYRBlr Вебинар приурочен к старту курса «Высоконагруженные системы: архитектура и масштабирование». 🎁При покупке курса вы получите в подарок мини-курс по Kafka, который поможет подготовиться к собеседованию в бигтех Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🚩 Шаблон проектирования Фасад 🟣 Подробное описание паттерна Структурный паттерн Фасад (англ. Facade) помогает скрыть способ
+3
🚩 Шаблон проектирования Фасад 🟣 Подробное описание паттерна Структурный паттерн Фасад (англ. Facade) помогает скрыть способ реализации сложной системы и предоставляет клиенту простой интерфейс взаимодействия с ней. Другими словами, данный паттерн проектирования используется в качестве “обертки”, скрывающей детали реализации. Фасад полезен, если вы используете какую-то сложную библиотеку со множеством подвижных частей, но вам нужна только часть её возможностей. 🗂 Код на Python

Лидеры по работе с данными и ИИ из Альфа-Банка, Сбера, X5 Tech, Т-Банка, Ozon Fintech, Банка России, Дикси, Ситидрайва, Lamod
Лидеры по работе с данными и ИИ из Альфа-Банка, Сбера, X5 Tech, Т-Банка, Ozon Fintech, Банка России, Дикси, Ситидрайва, Lamoda, Черкизово и других компаний расскажут, как данные и искусственный интеллект помогают ускорять бизнес в финтехе, ритейле, промышленности, транспорте и агросекторе. 9 июля на форуме Data Day 2026: 💰 Тренды AI и данных «из первых уст». На какие технологии и подходы делают ставку лидеры рынка? 💰 Как превратить хаос данных в надежный бизнес-навигатор и сделать данные стратегическим активом компании. 💰 Практика внедрения AI и data-driven подходов в финтехе, ритейле, логистике, промышленности и агросекторе. 💰 Как находить новые точки роста, используя опыт цифровых лидеров и сильные data-команды. 💰 AI-hub: выставка и центр экспертизы готовых AI-решений и автономных агентов для бизнеса. Выступают:Руслан Булатов, Банк России. Директор Департамента финансовых технологий. – Дмитрий Криволапов, Lamoda. Директор департамента по данным и аналитике. – Алексей Бондаренко, Газпромбанк. Вице-президент — начальник департамента управления данными. – Дмитрий Рузанов, Альфа-Банк. Директор департамента разработки моделей. – Павел Денисенко, X5 Tech. Директор департамента развития платформы больших данных. – Артём Летин, ВТБ. Начальник управления моделирования КИБ и СМБ, вице-президент. – Валерий Поляков, Т-Банк. Лидер по данным группы Т-Технологии (Chief Data Officer). – Александр Лукьянов, ДОМ РФ Технологии. Генеральный директор. – Валентина Рудик, Ozon Fintech. Руководитель розничного кредитования. – Андрей Скачёк, М.Видео, Директор по маркетингу И другие. Вас ждет самый масштабный Data Day: 🔥 5 отраслевых треков (Финтех, Агропром, Путешествия и Транспорт, Ритейл, Персональная эффективность) 🔥 1500+ участников 🔥 60+ спикеров 9 июля, «Бизнес. Техноград», ВДНХ, Москва. Присоединяйтесь! Форум соберет экспертов по данным и AI из банков, ритейла, телекома, транспорта, агропрома, ИТ-компаний и индустриальных лидеров. 👉 Программа и регистрация Реклама. ООО «Регламент». ИНН 7708323273. erid:2W5zFJJ3D6q

Вопрос с собеседования Зачем нужна инкапсуляция? Ответ опубликуем завтра, а пока пишите свои варианты в комментариях! #interview

🔥 Приглашаем на бесплатный открытый вебинар курса «Высоконагруженные системы: архитектура и масштабирование»: «Асинхронная о
🔥 Приглашаем на бесплатный открытый вебинар курса «Высоконагруженные системы: архитектура и масштабирование»: «Асинхронная обработка данных в высоконагруженных системах» 🗓 Когда: 16 июня, 20:00 (мск) Когда система выходит на тысячи и миллионы запросов в секунду, синхронная обработка превращается в настоящее узкое горлышко. Асинхронная архитектура помогает снять блокировки, повысить отзывчивость и масштабировать приложение без резкого роста ресурсов. На вебинаре разберём, как грамотно внедрять асинхронность и строить по-настоящему производительные системы. Что будет на вебинаре: — Зачем и когда переходить на асинхронную обработку данных в высоконагруженных проектах — Очереди сообщений, веб-сокеты и другие инструменты асинхронного взаимодействия — Реальный архитектурный кейс: от веб-сервера до брокера сообщений и базы данных — Типичные узкие места асинхронных систем и проверенные способы их устранения Что вы получите: — Чёткое понимание принципов асинхронной архитектуры и её влияния на производительность — Реальные примеры решений, которые можно сразу применять в своих проектах — Знания, как избегать типичных ошибок и строить стабильные, отказоустойчивые системы 👉 Зарегистрироваться: https://vk.cc/cYtuQf Бесплатное занятие приурочено к курсу «Высоконагруженные системы: архитектура и масштабирование», где вы научитесь проектировать высоконагруженные системы, способные выдерживать экстремальные нагрузки и работать стабильно в любых условиях. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Это точно поможет тебе в проектировании API Если ты только начинаешь, советую стартовать с этого интерактивного роадмапа: Он удобен и на каждом этапе содержит ссылки для изучения подтем. 6 самых популярных стилей архитектуры API: которые вам нужно знать (с плюсами, минусами и примерами использования) Проектирование REST API: спорные вопросы с проектов и собеседований на системного аналитика (и не только) Руководство по проектированию сетевых API от Google: Его использовали внутри компании с 2014 года, и оно служит основой при разработке облачных и других API. — Книга «Паттерны проектирования API: Сотрудник того же Google Джей Гивакс рассказывает о том, как в компании создают масштабируемые и гибкие сервисы. Вы узнаете, как улучшить дизайн самых распространённых API и как действовать в сложных пограничных случаях. Сопровождается иллюстрациями и примеры кода. С вас лойс 👍 #api

🚩 Шаблон проектирования Декоратор 🟣 Подробное описание паттерна Структурный паттерн Декоратор (англ. Decorator) позволяет р
+3
🚩 Шаблон проектирования Декоратор 🟣 Подробное описание паттерна Структурный паттерн Декоратор (англ. Decorator) позволяет расширять функциональность без использования наследования. Дело в том, что механизм наследования имеет несколько проблем: 1⃣ Он статичный, т.е. не дает возможности менять поведение уже существующего объекта. 2⃣ Он не позволяет наследовать поведение нескольких классов одновременно. Декоратор позволяет обойти эти проблемы. Суть этого шаблона отлично передает его второе название — "обертка". Вы помещаете один объект в другой — обертку. Обертка запускает базовое поведение объекта, а затем что-то добавляет к нему. 🗂 Код на Python

🔥 Приглашаем на бесплатный открытый вебинар курса «Высоконагруженные системы: архитектура и масштабирование»: «Polyglot Pers
🔥 Приглашаем на бесплатный открытый вебинар курса «Высоконагруженные системы: архитектура и масштабирование»: «Polyglot Persistence: как современные системы живут с десятками баз данных» 🗓 Когда: 2 июня, 20:00 (мск) Одной базы данных уже давно недостаточно. Современные высоконагруженные системы — это сложная экосистема из разных хранилищ, каждое из которых решает свою задачу. На вебинаре разберём, как грамотно сочетать PostgreSQL, ClickHouse, Redis, Kafka и Elasticsearch, чтобы система оставалась быстрой, согласованной и отказоустойчивой. Что будет на вебинаре: — Принципы Polyglot Persistence и роль каждой базы в современной архитектуре — Как связать PostgreSQL, ClickHouse, Redis и Kafka без потери согласованности данных — Event-driven подход, CDC и Outbox-паттерн в высоконагруженных системах — Архитектурные приёмы построения надёжных data-платформ, способных выдерживать миллионы операций Кому будет полезно: — Backend-разработчикам, желающим понимать устройство современных систем — Архитекторам и DevOps-инженерам, решающим задачи масштабирования и согласованности — Всем, кто работает с большими данными и хочет эффективно комбинировать разные типы хранилищ 👉 Зарегистрироваться: https://vk.cc/cYdHaS Бесплатное занятие приурочено к курсу «Highload Architect», на котором вы научитесь проектировать сложные высоконагруженные системы, грамотно выбирать и сочетать технологии хранения и обработки данных. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🕯 Паттерн Proxy (Прокси) Proxy — это структурный паттерн, который предоставляет объект-заместитель для управления доступом к
🕯 Паттерн Proxy (Прокси) Proxy — это структурный паттерн, который предоставляет объект-заместитель для управления доступом к другому объекту, обеспечивая контроль над его использованием. Использование: 🔹 Когда необходимо контролировать доступ к ресурсоемким объектам или операциям. 🔹 Для добавления дополнительной функциональности без изменения исходного объекта. Преимущества: 1⃣ Позволяет контролировать доступ к реальному объекту, например, для ленивой инициализации или кэширования. Это может улучшить производительность, так как ресурсоемкие объекты создаются только тогда, когда они действительно нужны. 2⃣ Позволяет контролировать доступ к объектам, добавляя проверки перед вызовом методов. Это полезно для управления доступом в сетевых приложениях или для защиты данных. 3⃣ Позволяет оптимизировать работу с удаленными объектами, минимизируя количество вызовов или обрабатывая их асинхронно. Это снижает нагрузку на систему и повышает скорость работы приложения. 4⃣ Может использоваться для логирования или отслеживания вызовов методов реального объекта, не внося изменений в сам объект. Это упрощает мониторинг и отладку системы.

🔥Приглашаем на бесплатный урок курса «Архитектор программного обеспечения»: «API Gateway и не только: шаги к идеальной архит
🔥Приглашаем на бесплатный урок курса «Архитектор программного обеспечения»: «API Gateway и не только: шаги к идеальной архитектуре внешних API» 🎓Мы разберём продуманную архитектуру внешних API: какие проблемы возникают при их проектировании, как API Gateway помогает их решать и какие паттерны стоит применять, чтобы сделать взаимодействие с системой удобным, безопасным и масштабируемым. 📚Вопросы вебинара: - Сложности проектирования API - Нестабильные каналы, перегрузка, вопросы безопасности и производительности - Зачем нужен API Gateway - Проектирование - Популярные решения и подходы - Агрегация, адаптация и переиспользование API - Антипаттерны и типичные ошибки 👉 Регистрация https://otus.pw/szNj/ Реклама ООО «Отус онлайн-образование», ОГРН 1177746618576

Паттерн Singletone с примером на JavaScript Несмотря на то что в последнее время все больше задач мы обычно решаем в функциональном стиле я хотел бы сегодня вам рассказать о одном из самых распространенных классовых паттернов - синглтон. И так что это: Паттерн Singleton означает создание только одного экземпляра класса и доступ к нему через методы-геттеры. Пример использования: class Singleton {  constructor() {   if (!Singleton.instance) {    Singleton.instance = this;   }   return Singleton.instance;  }  someMethod() {   console.log('Hello from Singleton!');  } } const instance1 = new Singleton(); const instance2 = new Singleton(); instance1.someMethod(); // "Hello from Singleton!" console.log(instance1 === instance2); // true В данном примере класс Singleton будет создавать только один экземпляр и все вызовы конструктора будут возвращать ссылку на этот экземпляр. Таким образом, мы можем быть уверены, что где бы ни встретились вызовы методов класса Singleton, они всегда будут работать с одним и тем же экземпляром.

Паттерн Singletone с примером на JavaScript Несмотря на то что в последнее время все больше задач мы обычно решаем в функциональном стиле я хотел бы сегодня вам рассказать о одном из самых распространенных классовых паттернов - синглтон. И так что это: Паттерн Singleton означает создание только одного экземпляра класса и доступ к нему через методы-геттеры. Пример использования: class Singleton {  constructor() {   if (!Singleton.instance) {    Singleton.instance = this;   }   return Singleton.instance;  }  someMethod() {   console.log('Hello from Singleton!');  } } const instance1 = new Singleton(); const instance2 = new Singleton(); instance1.someMethod(); // "Hello from Singleton!" console.log(instance1 === instance2); // true В данном примере класс Singleton будет создавать только один экземпляр и все вызовы конструктора будут возвращать ссылку на этот экземпляр. Таким образом, мы можем быть уверены, что где бы ни встретились вызовы методов класса Singleton, они всегда будут работать с одним и тем же экземпляром.

🚩 Шаблон проектирования Заместитель 🟣 Подробное описание паттерна Заместитель (англ. Proxy) — структурный паттерн проектиро
+3
🚩 Шаблон проектирования Заместитель 🟣 Подробное описание паттерна Заместитель (англ. Proxy) — структурный паттерн проектирования. Он позволяет подставлять вместо реальных объектов специальные объекты-заменители. Эти объекты перехватывают вызовы к оригинальному объекту, позволяя сделать что-то до или после передачи вызова оригиналу. 🟪 Ситуации, когда можно использовать паттерн Заместитель: 🔎 Виртуальный proxy является заместителем объектов, создание которых обходится дорого. Реальный объект создается только при первом запросе/доступе клиента к объекту. 🔎 Удаленный proxy предоставляет локального представителя для объекта, который находится в другом адресном пространстве ("заглушки" в RPC и CORBA). 🔎 Защитный proxy контролирует доступ к основному объекту. "Суррогатный" объект предоставляет доступ к реальному объекту, только вызывающий объект имеет соответствующие права. 🔎 Интеллектуальный proxy выполняет дополнительные действия при доступе к объекту. 🗂 Код на Python

#паттерны Введение Сегодня мы рассмотрим паттерн проектирования "Абстрактная фабрика". Классификация Тип: Порождающий Определение: Абстрактная фабрика - это порождающий паттерн проектирования, который предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов. Грубо говоря, абстрактная фабрика - это "фабрика фабрик", данный паттерн позволяет решить проблему создания целых семейств связанных объектов, без указания конкретных классов продуктов. С помощью абстрактной фабрики вы можете предоставить библиотеку объектов не расскрывая их реализацию. Из чего состоит и как работает данный паттерн 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 Вот его объяснение, какую задачу он решает в данном случае:

Совет на 2026 год — переходите в ML. Пока обычные разрабы конкурируют с ИИ-копилотами, ML-инженеры эти самые нейронки создают
Совет на 2026 год — переходите в ML. Пока обычные разрабы конкурируют с ИИ-копилотами, ML-инженеры эти самые нейронки создают. В эпоху нейростей это самые востребованые люди в мире программирования. Зарплаты мидлов начинаются от 250 000 ₽, а у сеньоров в BigTech доходят до 700 000 ₽. А чтобы освоить его всего за 4 месяца без лишней суеты — изучите канал Артема Алехина. Его бэкграунд: Руководитель команды в Сбере, валютная удаленка. К 22 годам вышел на доход 1 000 000+ ₽ в месяц. На канале вы найдёте: — Всё про самые востребованные стеки(Python, ИИ-агенты, NLP) и почему математика — это не страшно, если учить только нужное. — Как оформить резюме, чтобы оно пролетало через любые LLM-фильтры и ATS-системы прямо к тимлидам. — Скрипты переговоров, которые помогли его ученикам прыгнуть с 0 до 360к всего за 8 месяцев. Во времена острой нехватки ML-разработчиков, это лучшее время, чтобы перекатиться. Переходи и изучай: https://t.me/+NmeKLJV36Co0MDVi

Паттерны В одном репозитории собрано 111 паттернов проектирования. На данный момент это самый популярный репозиторий на языке Java, у него почти 50k звёзд. Для каждого паттерна есть подробное описание и примеры реализации на Java: https://github.com/iluwatar/java-design-patterns #паттерны #java

🚩 Шаблон проектирования Абстрактная фабрика 🟣 Подробное описание паттерна Шаблон Абстрактная фабрика (англ. Abstract Factor
+7
🚩 Шаблон проектирования Абстрактная фабрика 🟣 Подробное описание паттерна Шаблон Абстрактная фабрика (англ. Abstract Factory) относится к классу порождающих паттернов. Его основное назначение — предоставить интерфейс для создания семейства взаимосвязанных объектов, не указывая конкретные классы этих объектов. 🟪 Этот шаблон стоит использовать, если: 🔎 Ваша система должна быть независимой от способа создания новых объектов 🔎 Создаваемые объекты должны использоваться вместе и быть взаимосвязанными. Классы абстрактной фабрики часто реализуются фабричными методами, но могут быть реализованы и с помощью паттерна Prototype. 🗂 Код на Python

🔥 Приглашаем на бесплатный открытый вебинар курса «Высоконагруженные системы: архитектура и масштабирование»: “Балансировка
🔥 Приглашаем на бесплатный открытый вебинар курса «Высоконагруженные системы: архитектура и масштабирование»: “Балансировка и геораспределение: как создать быстрое и надёжное приложение для всего мира” На вебинаре разберём, как крупные компании — такие как Netflix, Amazon и другие, делают свои сервисы доступными для пользователей по всему миру без задержек и сбоев. Что будет на вебинаре: — Как работают балансировщики и «умные» прокси. — Что такое геораспределение и зачем оно критично для масштабируемых сервисов. — Как грамотно распределять трафик между дата-центрами. — Частые ошибки при проектировании глобальных систем — и как их избежать. 👉 Зарегистрироваться https://vk.cc/cWFtsA Бесплатное занятие приурочено к курсу «Высоконагруженные системы: архитектура и масштабирование» , где вы научитесь проектировать системы, способные выдерживать миллионы запросов, и оптимизировать их производительность. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru