Pattern Guru. Шаблоны проектирования. Архитектура ПО
описание
Патерны программирования. Архитектура ПО. Микросервисы @anothertechrock
3 111
подписчиков
Охват к подписчикам
23,9%
ERR
Реакции к просмотрам
0,18%
48 на 29 постов
Пересылки к просмотрам
1,15%
301
Постов в день
0,0
всего 29
Где отзываются чаще
доля реакций к просмотрам- 17 июл.NAITION AI: Спрос на разработку с ИИ-агентами вырос в сотни раз за год. Свежий Stanford AI Index 2026 показал, что навык AI Agents стал №1 среди самых востребованных инженерных скиллов. • Упоминания «Agentic systems» в вакансиях за год выросли на 10854% (!) — это не опечатка. • «AI agents» — +2113%. • Вывод простой: компаниям массово нужны не «написатели кода», а архитекторы мультиагентных систем.Главный скилл в 2026 году — строить долгоживущие автономные процессы, управлять контекстом и верифицировать работу десятков агентов. Рынок можно догнать! Naition запускает новый, обновленный в июле поток буткемпа по AI-driven разработке уже 21 июля. Максимум пользы получат middle+ разработчики и команды, нацеленные на апгрейд производительности инженерного процесса. IT-специалисты других профессий тоже могут себя попробовать. За 12 недель вы встроите ИИ во все процессы: • Соберёте своё ядро — MCP под задачи, RAG, мультиагентную систему с сабагентами и оркестрацией. • Внедрите агентов в кодовые базы на 100К+ строк — автоматизируете индексацию кода, рефакторинг и изменение архитектуры. • Научитесь масштабировать AI-практики на всю команду. Ведут практики с 15-20 годами опыта: ex-Yandex Cloud, staff-инженер Google, CEO Symbioway (центр по найму разработчиков) — люди из эпицентра трансформации рынка. Формат: 17 уроков, 5 модулей, живые вечерние эфиры + практика между ними. Минимум теории, максимум разборов кейсов и групповой практики прямо на вебинаре. 👉 Забронировать место — naition.ai А по промокоду PATTERNGURU для подписчиков — скидка 20% до 20 июля. Что ещё стоит знать: • Приведёте друга или коллегу — вы вместе получите доп. скидку 10% сверху (в сумме 30%). • Можно оплатить частями, а начать даже с одного модуля. • Если вы бизнес, можно прокачать всю команду разом.1,10%
- 17 июл.Фабричный метод — это порождающий паттерн проектирования, который определяет общий интерфейс для создания объектов в суперклассе, позволяя подклассам изменять тип создаваемых объектов. 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())0,88%
- 17 июн.🚩 Шаблон проектирования Фасад 🟣 Подробное описание паттерна Структурный паттерн Фасад (англ. Facade) помогает скрыть способ реализации сложной системы и предоставляет клиенту простой интерфейс взаимодействия с ней. Другими словами, данный паттерн проектирования используется в качестве “обертки”, скрывающей детали реализации. Фасад полезен, если вы используете какую-то сложную библиотеку со множеством подвижных частей, но вам нужна только часть её возможностей. 🗂 Код на Python0,51%
- 18 июн.🔥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, который поможет подготовиться к собеседованию в бигтех Реклама. ООО «Отус онлайн-образование», ОГРН 11777466185760,51%
- 23 июн.🟣 Навигация по каналу: ▶️ Одиночка (Singleton) ▶️ Итератор (Iterator) ▶️ Декоратор (Decorator) ▶️ Фасад (Facade) ▶️ Адаптер (Adapter) ▶️ Абстрактная фабрика (Abstract Factory) ▶️ Мост (Bridge) ▶️ Посредник (Mediator) ▶️ Приспособленец (Flyweigth) ▶️ Команда (Command) ▶️ Посетитель (Visitor) ▶️ Фабричный метод (Factory Method) ▶️ Хранитель (Memento) ▶️ Компоновщик (Composite) ▶️ Заместитель (Proxy) ▶️ Наблюдатель (Observer) ▶️ Прототип (Prototype) ▶️ Стратегия (Strategy) ▶️ Цепочка обязанностей (Chain of Responsibility) ▶️ Строитель (Builder) Вопросы с интервью: #interview0,38%
- 2 июл.🕯 Паттерн Proxy (Прокси) Proxy — это структурный паттерн, который предоставляет объект-заместитель для управления доступом к другому объекту, обеспечивая контроль над его использованием. Использование: 🔹 Когда необходимо контролировать доступ к ресурсоемким объектам или операциям. 🔹 Для добавления дополнительной функциональности без изменения исходного объекта. Преимущества: 1️⃣ Позволяет контролировать доступ к реальному объекту, например, для ленивой инициализации или кэширования. Это может улучшить производительность, так как ресурсоемкие объекты создаются только тогда, когда они действительно нужны. 2️⃣ Позволяет контролировать доступ к объектам, добавляя проверки перед вызовом методов. Это полезно для управления доступом в сетевых приложениях или для защиты данных. 3️⃣ Позволяет оптимизировать работу с удаленными объектами, минимизируя количество вызовов или обрабатывая их асинхронно. Это снижает нагрузку на систему и повышает скорость работы приложения. 4️⃣ Может использоваться для логирования или отслеживания вызовов методов реального объекта, не внося изменений в сам объект. Это упрощает мониторинг и отладку системы.0,36%
- 20 июл.🔥 Топ-9 паттернов для обмена данными и взаимодействия между компонентами/сервисами в распределенных системах 🔹 Peer-to-Peer 🔹 API Gateway 🔹 Pub-Sub 🔹 Request-Response 🔹 Event Sourcing 🔹 ETL 🔹 Batching 🔹 Streaming Processing 🔹 Orchestration 👉 Источник #инфографика0,36%
- 22 июл. 2025 г.#паттерны Введение Сегодня мы рассмотрим паттерн проектирования "Адаптер". Классификация Тип: Структурный Определение: Адаптер — это структурный паттерн проектирования, который позволяет объектам с несовместимыми интерфейсами работать вместе. Адаптер выступает прослойкой между объектами превращая вызовы одного в понятные для другого. Очень удобно понять адаптер на примере из жизни. Представим человеку который говорит только на французском нужно рассказать историю человеку который понимает только немецкий. Сами понять они друг друга не смогут, поэтому им понадобится переводчик, который переведёт французкий на немецкий. В данном случае переводчик выступит адаптером. Из чего состоит и как работает паттерн адаптер 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/0,35%
- 22 мая 2025 г.Old but gold: подборка статей, которые простым языком объяснят 3 вида паттернов С примерами из жизни, кейсами для использования и кодом. Порождающие: https://tprg.ru/patterns-1 Структурные: https://tprg.ru/patterns-2 Поведенческие: https://tprg.ru/patterns-3 #паттерны0,32%
- 16 июн.Лидеры по работе с данными и ИИ из Альфа-Банка, Сбера, 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:2W5zFJJ3D6q0,30%
- 2 июл.⚠️ Научитесь международному стандарту построения архитектуры предприятия. Начните обучение на курсе «Архитектура корпорации. Togaf 10». Вебинар 1: «Новшества языка ArchiMate 4.0» ⏰8 июля в 20:00 мск Программа вебинара: 1. Отличие метамоделей ArchiMate 4.0 от ArchiMate 3.2. 2. Практические рекомендации и практические визуализации по миграции существующих моделей 3. Ответы на вопросы в прямом эфире Вебинар 2: «Новшества языка ArchiMate 4.0» ⏰15 июля в 20:00 мск Программа вебинара: 1. Роль бизнес-слоя в корпоративной архитектуре и его место в TOGAF 10. 2. Основные элементы ArchiMate 3.2 для моделирования бизнес-аспектов 3. Практический пример описания базовых бизнес-процессов организации с ArchiMate. Вебинар 3: «Новшества языка ArchiMate 4.0» ⏰21 июля в 20:00 мск Программа вебинара: Разберём, где именно в архитектуре скрываются данные, как они связаны с процессами и системами, а также почему управление данными становится важным элементом Data-Driven подхода. Записывайтесь ➡️ https://vk.cc/cZfDUj Реклама. ООО «Отус онлайн-образование», ОГРН 11777466185760,27%
- 23 апр.#паттерны Введение Сегодня мы рассмотрим паттерн проектирования "Абстрактная фабрика". Классификация Тип: Порождающий Определение: Абстрактная фабрика - это порождающий паттерн проектирования, который предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов. Грубо говоря, абстрактная фабрика - это "фабрика фабрик", данный паттерн позволяет решить проблему создания целых семейств связанных объектов, без указания конкретных классов продуктов. С помощью абстрактной фабрики вы можете предоставить библиотеку объектов не расскрывая их реализацию. Из чего состоит и как работает данный паттерн 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 Вот его объяснение, какую задачу он решает в данном случае:0,25%