highloadmicro | Unsorted

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

2672

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

Subscribe to a channel

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

Паттерн 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, они всегда будут работать с одним и тем же экземпляром.

Читать полностью…

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

🔥 От разработчика до архитектора высоконагруженных систем! 🚀

Высоконагруженные системы — необходимость для крупных проектов. Пройдите тест, проверьте свои знания и получите скидку на курс «Highload Architect» от OTUS.

Вы научитесь:

✅ Проектировать масштабируемые системы, способные обрабатывать миллионы запросов
✅ Оптимизировать производительность и работать с отказоустойчивыми архитектурами
✅ Использовать современные инструменты и технологии для создания высоконагруженных решений
✅ Применять лучшие практики в проектировании и разработке серверных приложений

📌 Пройдите тест и получите скидку на курс! Подробности уточняйте у менеджера

👉 Пройти тест https://vk.cc/cPCE8D

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

Читать полностью…

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

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

Зачем нужна инкапсуляция?

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

#interview

Читать полностью…

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

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

🟣 Подробное описание паттерна

Строитель (англ. Builder) — порождающий паттерн проектирования. Он позволяет создавать сложные объекты пошагово. Строитель дает возможность использовать один и тот же код строительства для получения разных представлений объектов.

От абстрактной фабрики отличается тем, что делает акцент на пошаговом конструировании объекта. Строитель возвращает объект на последнем шаге, тогда как абстрактная фабрика возвращает объект немедленно.

🟪 Паттерн Строитель может помочь в решении следующих задач:

🔎 В системе могут существовать сложные объекты, которые сложно или невозможно создать за одну операцию. Требуется поэтапное построение объектов с контролем результатов выполнения каждого этапа.

🔎 Данные должны иметь несколько представлений. Допустим, есть некоторый исходный документ в формате RTF (Rich Text Format), в общем случае содержащий текст, графические изображения и служебную информацию о форматировании (размер и тип шрифтов, отступы и др.). Если этот документ в формате RTF преобразовать в другие форматы (например, Microsoft Word или простой ASCII-текст), то полученные документы и будут представлениями исходных данных.

🗂 Код на Python

Читать полностью…

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

🚩 Шаблон проектирования Стратегия

🟣 Подробное описание паттерна

Стратегия (англ. Strategy) относится к поведенческим шаблонам проектирования. Цель этого паттерна - выделить схожие алгоритмы, решающие конкретную задачу. Реализация алгоритмов выносится в отдельные классы и предоставляется возможность выбирать алгоритмы во время выполнения программы.

🙂Аналогия из жизни🙂

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

🟪 Когда применять?

🔎 Когда вам нужно использовать разные вариации какого-то алгоритма внутри одного объекта.

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

🔎 Когда вы не хотите обнажать детали реализации алгоритмов для других классов.

🔎 Когда различные вариации алгоритмов реализованы в виде развесистого условного оператора. Каждая ветка такого оператора представляет собой вариацию алгоритма.

🗂 Код на Python

Читать полностью…

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

🚩 Шаблон проектирования Наблюдатель

🟣 Подробное описание паттерна

Наблюдатель (англ. Observer) — поведенческий паттерн проектирования. Определяет зависимость типа "один ко многим" между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом и автоматически обновляются.

🟪 Когда применять:

🔎 Когда после изменения состояния одного объекта требуется что-то сделать в других, но вы не знаете наперёд, какие именно объекты должны отреагировать.

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

🗂 Код на Python

Читать полностью…

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

🚩 Шаблон проектирования Хранитель

🟣 Подробное описание паттерна

Хранитель (англ. Memento) – поведенческий паттерн проектирования. Он позволяет определять, сохранять, а также восстанавливать предыдущие состояния объектов без нарушения принципа инкапсуляции.

🟪 Применяйте этот паттерн, когда:

🔎Вам нужно сохранять мгновенные снимки состояния объекта (или его части), чтобы впоследствии объект можно было восстановить в том же состоянии.

🔎 Прямое получение состояния объекта раскрывает приватные детали его реализации, нарушая инкапсуляцию.

🗂 Код на Python

Читать полностью…

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

💣 Большая сила - большая ответственность.
А ты справишься с тестом по HighLoad?

🏆 Пройди тест из 29 вопросов, проверь свой уровень знаний и получи скидку на онлайн-курс «Highload Architect» от OTUS!

Если успешно пройдешь тест, сможешь забронировать место в группе по выгодной цене! И еще дарим промокод HIGHLOAD_5

🎫 Курс можно приобрести в рассрочку

🔴 Пройти тест и забрать скидку

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

Читать полностью…

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

⚙️ Открытый урок «Паттерны системы декомпозиции на микросервисах — как проектировать масштабируемую архитектуру»

🗓 19 февраля в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Highload Architect» от Otus.

На вебинаре вы узнаете:
➡️ Как определить границы микросервисов, чтобы добиться высокой автономности, масштабируемости и минимизировать взаимозависимость.
➡️ Основные шаблоны декомпозиции: по бизнес-контекстам, данным, функциональности и пользовательским потокам.
➡️ Особенности взаимодействия между микросервисами: синхронные и асинхронные коммуникации, события и CQRS.
➡️ Подходы к обеспечению согласованности данных и распределенных транзакций в микросервисной архитектуре.
➡️ Как выбрать и внедрить закономерности декомпозиции с учетом бизнес-целей, нагрузки и собственной системы.

🔗 Ссылка на регистрацию: https://vk.cc/cIw2FG

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

Читать полностью…

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

⚙️ Открытый урок «Механизмы выбора лидера кластера. Алгоритм Raft и etcd. Реализуем свой распределённый фреймворк управления задачами с etcd»

🗓 11 февраля в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Highload Architect» от Otus.

На вебинаре вы узнаете:
✔️ Как работает алгоритм Raft, обеспечивающий согласованность данных и надёжный выбор лидера в кластере.
✔️ Основы использования etcd для хранения состояния и управления конфигурациями в распределённых системах.
✔️ Создание своего распределённого фреймворка управления задачами: от проектирования архитектуры до реализации ключевых функций.
✔️ Лучшие практики и рекомендации для интеграции etcd в архитектуру современных приложений.

🔗 Ссылка на регистрацию

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

Читать полностью…

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

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

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

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

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

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

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

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

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

Читать полностью…

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

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

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

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

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

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

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

Читать полностью…

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

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

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

Ответ:

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

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

#interview

Читать полностью…

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

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

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

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

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

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

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

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

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

Читать полностью…

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

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

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

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

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

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

Читать полностью…

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

🔥 25 сентября в 20:00 мск — открытый вебинар в OTUS!

О чём?

В мире высоконагруженных систем с сотнями сервисов управление конфигурацией, сервис-дискавери и координация компонентов — это настоящий вызов. Apache ZooKeeper — проверенное решение для создания надёжных и управляемых распределённых систем.

Что разберём:


- ZooKeeper: что это и зачем он нужен в распределённых системах.
- Архитектура: ZNode, лидер-выборы, механизмы согласованности.
- Применение: сервис-дискавери, управление конфигурацией, координация задач.
- Ограничения: сравнение ZooKeeper с Etcd и Consul.
- Практика: реальные кейсы использования в highload-системах.

🎓 После вебинара вы:

- Поймёте, как ZooKeeper решает задачи координации и конфигурации.
- Узнаете, когда использовать ZooKeeper, а когда выбрать Etcd или Consul.

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

👉 Зарегистрироваться https://vk.cc/cPLDLw

Бесплатное занятие приурочено к старту курса Highload Architect, обучение на котором позволит освоить решения, которые выдерживают большое количество запросов в секунду и правильно оптимизировать работоспособность серверов

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

Читать полностью…

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

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

Зачем нужна инкапсуляция?

Ответ:

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

#interview

Читать полностью…

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

⁉️ Как на практике соединить бизнес-цели и IT-архитектуру? Ответ прост: моделировать потоки ценности с помощью ArchiMate.

Открытый вебинар 24 сентября — это уникальная возможность понять, как Business Capability Map помогает организовать деятельность компании и как эти карты можно трансформировать в потоки создания ценности (Value Stream). Эксперт поделится реальными кейсами и разберёт, как эффективно визуализировать и управлять процессами с помощью ArchiMate.

Курс «Archimate» — это ваш шанс научиться работать с ключевыми бизнес-методами, которые становятся основой архитектуры компании. Освойте создание Capability Map и Value Stream, и применяйте эти инструменты для улучшения бизнес-процессов.

➡️ Пройдите вебинар и получите скидку на курс «Archimate»: https://vk.cc/cPz7iR

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

Читать полностью…

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

🚩 Шаблон проектирования Цепочка обязанностей

🟣 Подробное описание паттерна

Цепочка обязанностей (англ. Chain of Responsibility) — поведенческий паттерн проектирования. Он позволяет передавать запросы по цепочке обработчиков последовательно. Каждый последующий обработчик решает, может ли он обработать запрос сам и стоит ли передавать запрос дальше по цепи.

🙂Аналогия из жизни🙂

Самый наглядный пример шаблона — компьютерная сеть. Пусть в сетевой модели есть 4 типа обработчиков — сеть, маршрутизатор, форвардер и сервер. Также есть всего один тип запроса — запрос на обработку сервером. Обработчики ведут себя следующим образом: сеть — просто предает по своей среде запрос, маршрутизатор — передает запрос из одной сети в другую, форвардер — передает запрос конкретному хосту, сервер — обрабатывает запрос.

Узлы сети представляют собой конвейер обработчиков. Запрос — конкретное сообщение. Запрос, двигаясь по цепочке, обрабатывается (маршрутизируется, форвардится) каждым ее узлом и передается дальше. До тех пор, пока не будет окончательно обработан сервером.

🗂 Код на Python

Читать полностью…

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

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

🟣 Подробное описание паттерна

Прототип (англ. Prototype) — порождающий паттерн проектирования. Он позволяет копировать объекты, не вдаваясь в подробности их реализации.

🟪 Когда использовать Прототип?

🔎 Когда конкретный тип создаваемого объекта должен определяться динамически во время выполнения.

🔎 Когда нежелательно создание отдельной иерархии классов фабрик для создания объектов-продуктов из параллельной иерархии классов (как это делается, например, при использовании паттерна Абстрактная фабрика).

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

🗂 Код на Python

Читать полностью…

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

🚩 Шаблон проектирования Заместитель

🟣 Подробное описание паттерна

Заместитель (англ. Proxy) — структурный паттерн проектирования. Он позволяет подставлять вместо реальных объектов специальные объекты-заменители. Эти объекты перехватывают вызовы к оригинальному объекту, позволяя сделать что-то до или после передачи вызова оригиналу.

🟪 Ситуации, когда можно использовать паттерн Заместитель:

🔎 Виртуальный proxy является заместителем объектов, создание которых обходится дорого. Реальный объект создается только при первом запросе/доступе клиента к объекту.

🔎 Удаленный proxy предоставляет локального представителя для объекта, который находится в другом адресном пространстве ("заглушки" в RPC и CORBA).

🔎 Защитный proxy контролирует доступ к основному объекту. "Суррогатный" объект предоставляет доступ к реальному объекту, только вызывающий объект имеет соответствующие права.

🔎 Интеллектуальный proxy выполняет дополнительные действия при доступе к объекту.

🗂 Код на Python

Читать полностью…

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

🔥 6 архитектурных паттернов: на заметку разработчику

☑️ Layered
☑️ Microservices
☑️ Event-Driven
☑️ Client-Server
☑️ Plugin-based
☑️ Hexagonal

👉 Источник

Читать полностью…

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

⚛️ 6 самых важных шаблонов проектирования в React

Правильное использование паттернов проектирования — ключ к созданию надежных, эффективных и масштабируемых React-приложений. Рассказываем о шаблонах, которые стоит освоить в первую очередь.

👉 Читать статью
👉 Зеркало

Читать полностью…

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

☁️ Топ-6 паттернов обмена сообщения между сервисами в облачной инфраструктуре

🔹 Asynchronous Request-Reply
🔹 Pub-Sub
🔹 Claim Check
🔹 Priority Queue
🔹 Saga
🔹 Competing Consumers

👉 Источник

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

Читать полностью…

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

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

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

👉 Источник

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

Читать полностью…

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

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

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

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

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

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

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

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

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

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

Читать полностью…

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

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

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

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

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

Читать полностью…

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

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

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

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

#interview

Читать полностью…

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

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

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

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

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

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

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

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

Читать полностью…

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

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

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

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

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

Читать полностью…
Subscribe to a channel