Pattern Guru. Шаблоны проектирования. Архитектура ПО
Kanalga Telegram’da o‘tish
Патерны программирования. Архитектура ПО. Микросервисы @anothertechrock
Ko'proq ko'rsatish3 144
Obunachilar
Ma'lumot yo'q24 soatlar
-67 kunlar
-2330 kunlar
Postlar arxiv
Структурные шаблоны проектирования простым языком
Структурные шаблоны — шаблоны проектирования, в которых рассматривается вопрос о том, как из классов и объектов образуются более крупные структуры.
В этой статье рассматриваем на примерах такие шаблоны, как адаптер, мост, компоновщик, декоратор, фасад, приспособленец, заместитель.
Читать статью
❓ Вопрос с собеседования
Какие антишаблоны вы знаете?Ответ: Например... 🚩 Big ball of mud (Большой Ком Грязи). Термин для системы или просто программы, которая не имеет хоть немного различимой архитектуры. Как правило, включает в себя более одного антишаблона. Этим страдают системы, разработанные людьми без подготовки в области архитектуры ПО. 🚩 Yo-Yo problem (Проблема Йо-Йо). Возникает, когда необходимо разобраться в программе, иерархия наследования и вложенность вызовов методов которой очень длинны и сложны. Программисту вследствие этого необходимо лавировать между множеством различных классов и методов, чтобы контролировать поведение программы. Термин происходит от названия игрушки йо-йо. 🚩 Magic Button. Возникает, когда код обработки формы сконцентрирован в одном месте и, естественно, никак не структурирован. 🚩 Magic Number. Наличие в коде многократно повторяющихся одинаковых чисел или чисел, объяснение происхождения которых отсутствует. 🚩 Gas Factory (Газовый Завод). Необязательный сложный дизайн для простой задачи. 🚩 Analiys paralisys (Паралич анализа). В разработке ПО проявляет себя через чрезвычайно длинные фазы планирования проекта, сбора необходимых для этого артефактов, программного моделирования и дизайна, которые не имеют особого смысла для достижения итоговой цели. 🚩 Interface Bloat (Распухший Интерфейс). Термин, используемый для описания интерфейсов, которые пытаются вместить в себя все возможные операции над данными. 🚩 Accidental complexity (Случайная сложность). Проблема в программировании, которой легко можно было избежать. Возникает вследствие неправильного понимания проблемы или неэффективного планирования. #interview
🔥 Приглашаем на бесплатный открытый вебинар курса «Высоконагруженные системы: архитектура и масштабирование»: «Индексы в PostgreSQL. Как выбрать правильный индекс и масштабировать систему под нагрузкой»
🗓 Когда: 30 марта, 20:00 (мск)
На вебинаре разберём, как реально подбирать тип индекса под задачу, почему PostgreSQL может «не замечать» ваши индексы и как не превратить базу в тормоз под высокой нагрузкой.
Что будет на вебинаре:
- Сравнение типов индексов: B-Tree, Hash, GIN, GiST, BRIN — когда какой использовать и почему.
- Как PostgreSQL выбирает индекс и почему он может игнорироваться.
- Индексы в условиях высокой нагрузки: партиционирование и шардирование.
- Как не «перегрузить» систему лишними индексами и избежать типичных ошибок.
👉 Зарегистрироваться https://vk.cc/cVBXnp
Бесплатное занятие приурочено к курсу «Высоконагруженные системы: архитектура и масштабирование» , где вы научитесь проектировать системы, способные выдерживать миллионы запросов, и оптимизировать их производительность.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Шаблон проектирования Flyweigth
Приспособленец (также - Легковес) - структурный паттерн проктирования. Он позволяет вместить большее количество объектов в отведенную оперативную память.
Основная идея паттерна — различие между внутренним и внешним состоянием объекта. Внешнее состояние передается клиентом, использующим приспособленца, в некотором контексте. Внутреннее состояние хранится непосредственно в приспособленце и позволяет разделять их. Под разделением понимается возможность одновременной работы нескольких клиентов с одним и тем же приспособленцем.
Смотреть реализацию
❓ Вопрос с собеседования
Что такое Interface segregation principle?Ответ: Interface segregation principle - принцип разделения интерфейса (много специализированных интерфейсов лучше, чем один универсальный). Иными словами, большие, объемные интерфейсы надо разбивать на мелкие. При этом клиенты маленьких интерфейсов должны знать только о тех методах, которые необходимы им в работе. Также при изменении метода интерфейса не должны меняться клиенты, которые этот метод не используют. #interview
Когда система падает под нагрузкой, виноват не язык и не фреймворк. Почти всегда проблема в архитектуре.
🔔 Курс «Highload Architect» учит строить системы, которые выдерживают сотни тысяч и миллионы запросов в секунду. Вы разберёте весь путь запроса — от клиента до базы данных и обратно — и поймёте, какие архитектурные решения действительно работают под высокой нагрузкой, а какие ломаются первыми.
Программа ориентирована на веб-разработчиков, тимлидов и архитекторов ПО.
Вы научитесь:
- оптимизировать серверы
- эффективно использовать существующие инструменты
- проектировать отказоустойчивые системы
- аргументированно защищать архитектурные решения перед командой и бизнесом.
На курсе рассмотрим типовые и нетривиальные кейсы, с которыми сталкиваются крупные сервисы.
🎁Закрываем набор до 5.03.2026 в группу февраля со скидкой 🔤 . Подробности у менеджера.
Пройти короткое вступительное тестирование: https://vk.cc/cV1fb5
❗Практическое обучение проводится в прямом эфире — вебинары не являются предзаписанными.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Шаблон проектирования Strategy
Стратегия относится к поведенческим шаблонам проектирования. Цель этого паттерна - выделить схожие алгоритмы, решающие конкретную задачу. Реализация алгоритмов выносится в отдельные классы и предоставляется возможность выбирать алгоритмы во время выполнения программы.
Давайте рассмотрим принципы и суть шаблона Стратегия на примерах.
Читать статью
Какой паттерн инкапсулирует запрос в виде объекта, позволяя тем самым параметризовывать клиентов типом запроса, устанавливать очередность запросов, протоколировать их и поддерживать отмену выполнения операций?
Оффер на 300к без программирования
До такого уровня можно вырасти примерно за 2 года работы бизнес-аналитиком в IT. А если ты еще новичок, то стартануть от сотки в месяц.
Если не планируешь заниматься программированием или тестированием, рекомендую посмотреть видос в закрепе канала IT с Юлей
В нем Юля, ведущий бизнес-аналитик простым языком объясняет:
— чем занимается бизнес-аналитик и почему это лучшее направление для входа в IT
— как с нуля зайти в профессию в 2026 году и зарабатывать от 100к
— ее путь и реальные истории трудоустройства новичков в IT
Плюс дает сборник с разбором самых частых вопросов от HR с правильными ответами и разбором логики.
Посмотри, потом будешь рад, что не пролистал: https://t.me/+ZBBh1Ssqc5IwZTEy
❓ Вопрос с собеседования
Назовите поведенческие шаблоны и кратко опишите их.Ответ: Поведенческие шаблоны характеризуют способы взаимодействия классов или объектов между собой. К поведенческим шаблонам относятся: 🔎 Chain of Responsibility (Цепочка Обязанностей). организует независимую от объекта-отправителя цепочку не знающих возможностей друг друга объектов-получателей, которые передают запрос друг другу (object that can fulfill a request). 🔎 Command (Команда). Используется для определения по некоторому признаку объекта конкретного класса, которому будет передан запрос для обработки (when and how a request is fulfilled). 🔎 Iterator (Итератор). Позволяет последовательно обойти все элементы коллекции или другого составного объекта, не зная деталей внутреннего представления данных (how an aggregate's elements are accessed, traversed). 🔎 Mediator (Посредник). Позволяет снизить число связей между классами при большом их количестве, выделяя один класс, знающий все о методах других классов (how and which objects interact with each other). 🔎 Memento (Хранитель). Сохраняет текущее состояние объекта для дальнейшего восстановления (what private information is stored outside an object, and when). 🔎 Observer (Наблюдатель). Позволяет при зависимости между объектами типа «один ко многим» отслеживать изменения объекта (number of objects that depend on another object; how the dependent objects stay up to date). 🔎 State (Состояние). Позволяет объекту изменять свое поведение за счет изменения внутреннего объекта состояния (states of an object). 🔎 Strategy (Стратегия). Задает набор алгоритмов с возможностью выбора одного из классов для выполнения конкретной задачи во время создания объекта (an algorithm). 🔎 Template Method (Шаблонный Метод). Создает родительский класс, использующий несколько методов, реализация которых возложена на производные классы (steps of an algorithm). 🔎 Visitor (Посетитель). Представляет операцию в одном или нескольких связанных классах некоторой структуры, которую вызывает специфичный для каждого такого класса метод в другом классе (operations that can be applied to object(s) without changing their class(es)). 🔎 Interpreter (Интерпретатор). Для определенного способа представления информации определяет правила (grammar and interpretation of a language). #interview
❗Микросервисы часто обещают масштабируемость, но на практике превращаются в сложную и хрупкую систему.
Причина почти всегда одна — неверная декомпозиция. Слишком мелкие сервисы, плотные связи, распределённые транзакции и постоянные проблемы с данными.
На открытом уроке:
- разберём, как правильно делить систему на сервисы - поговорим о границах микросервисов, ключевых шаблонах декомпозиции, подходах к взаимодействию и управлению согласованностью данных
- вы увидите, как принимать архитектурные решения не по шаблону, а с учётом бизнес-контекста, нагрузки и эволюции системы
- разберём типовые ошибки, из-за которых микросервисы теряют автономность и становятся сложнее монолита
📌 Встречаемся 18 февраля в преддверии старта курса «Highload Architect».
Зарегистрируйтесь, чтобы не пропустить: https://vk.cc/cUxkxP
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576📚 Основы алгоритмов на одной шпаргалке
Хочешь разобраться, чем массив отличается от хеш-таблицы? Этот шпаргалка — для тебя.
✍️ 9 ключевых структур данных:
🟢Массив
🟢 Стек
🟢 Очередь и дек
🟢 Хеш-таблица
🟢 Связанный список
🟢 Двоичное дерево поиска
🟢 Граф
✔️ Для каждой:
🟣 Простое объяснение
🟣 Примеры
🟣 Основные задачи и особенности
👩💻 PostgreSQL давно перестал быть просто хранилищем данных
В высоконагруженных системах он всё чаще становится частью AI-архитектуры — с векторами, семантическим поиском и RAG-паттернами прямо на уровне БД.
На открытом уроке разберём, как PostgreSQL может:
- работать вместе с AI-моделями: хранить эмбеддинги, участвовать в семантическом поиске,
- быть частью RAG-архитектур и выполнять ML-логику внутри базы.
- отдельно обсудим расширения pgvector, pgai и lantern
- обсудим реальные сценарии для production-систем.
Вы увидите где AI в базе данных действительно оправдан, а где создаёт риски по латентности, масштабированию и поддержке.
Разберём архитектурные trade-off’ы, работу с kNN-поиском и подходы к интеграции AI в бизнес-логику через триггеры и функции.
📍Встречаемся 27 января в 20:00 МСК в преддверии старта курса «Highload Architect».
Регистрация открыта: https://vk.cc/cTNllI
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
💡 Concurrency vs Параллелизм — БАЗА для каждого разраба
👉 Concurrency → про то, как организовать программу, чтобы она умела работать с несколькими задачами (структура, управление, планирование).
👉 Parallelism → про то, как реально ускорить выполнение, используя больше процессорных ресурсов (ядра, потоки).
✅ Можно иметь concurrency без параллелизма → например, кооперативная многозадачность на одном ядре (таски в Go,
async/await в JS, coroutines в Python).
✅ Можно иметь параллелизм без concurrency → например, просто запустить два независимых процесса для расчёта матриц на разных ядрах.
А вместе они дают и удобную структуру, и прирост производительности.+3
🚩 Шаблон проектирования Фасад
🟣 Подробное описание паттерна
Структурный паттерн
Фасад (англ. Facade) помогает скрыть способ реализации сложной системы и предоставляет клиенту простой интерфейс взаимодействия с ней.
Другими словами, данный паттерн проектирования используется в качестве “обертки”, скрывающей детали реализации.
Фасад полезен, если вы используете какую-то сложную библиотеку со множеством подвижных частей, но вам нужна только часть её возможностей.
🗂 Код на PythonПолучая формальный язык, определяет представление его грамматики. О каком паттерне идёт речь?
🔥 Последний шанс: набор на курс Highload Architect в этом году завершается! 🚀
Если хотите перейти от разработки к архитектуре высоконагруженных систем — действуйте сейчас.
Чтобы попасть в поток и зафиксировать спеццену, нужно успеть пройти вступительное тестирование до закрытия набора.
Вы сможете прокачать:
- Проектирование масштабируемых систем под миллионы запросов
- Оптимизацию производительности и отказоустойчивые архитектуры
- Практику с современными инструментами highload-разработки
- Применение проверенных паттернов и подходов в продакшене
🗓 Старт уже совсем скоро, места ограничены. Формат — онлайн, реальные кейсы, проект с защитой и детальный фидбек от практиков.
👉 Пройдите вступительное тестирование прямо сейчас: https://vk.cc/cSx0HU
Подтвердите уровень и поступайте в группу со спецценой. Подробности по скидке уточняйте у менеджера.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
☁️ Топ-6 паттернов обмена сообщения между сервисами в облачной инфраструктуре
🔹 Asynchronous Request-Reply
🔹 Pub-Sub
🔹 Claim Check
🔹 Priority Queue
🔹 Saga
🔹 Competing Consumers
👉 Источник
#инфографика
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
