С тех пор, как микросервисы захватили умы и серверные стойки, одна тема всплывает с завидной регулярностью. От финтеха, где цена ошибки – реальные деньги, до гигантов e-commerce с их бешеными нагрузками – везде одно и то же: как подружить данные, разбросанные по десяткам независимых сервисов? Старые добрые ACID-транзакции, наша палочка-выручалочка из монолитного прошлого, в новом распределенном мире часто не просто не работают, а ломают всё – доступность, независимость, саму идею микросервисов. Сегодня хочу поговорить начистоту об одном из мощнейших, хотя и непростых, инструментов в нашем арсенале – паттерне Saga.
Рубрика «паттерны»
Микросервисы и данные: Как Saga-паттерн спасает от хаоса транзакций
2025-05-01 в 4:37, admin, рубрики: микросервисы, паттерныRAII 2.0: RAII как архитектурный инструмент в C++
2025-04-15 в 14:16, admin, рубрики: raii, Безопасность кода, жизненный цикл, Логический контракт, паттерны, подписки, С++, транзакции, управление ресурсамиИдиома RAII — давно зарекомендовал себя как удобный способ автоматического управления ресурсами в C++. Обычно мы применяем его для управления памятью, файловыми дескрипторами или мьютексами. Однако что, если расширить понятие RAII до управления не только физическими ресурсами, но и логическими контрактами и состояниями системы?
В этой статье я хочу поговорить о том, как RAII можно использовать для контроля жизненного цикла асинхронных операций, транзакций или подписок, гарантируя их корректное завершение или откат до прежнего состояния.
Как перейти от монолита к микросервисам без сложностей и рисков? Четыре проверенных паттерна
2025-01-18 в 10:43, admin, рубрики: pattern, архитектура по, микросервисы, монолит, паттерныПри переходе от монолитной к микросервисной архитектуре разработчики часто сталкиваются с несколькими проблемами.
Во-первых, это необходимость переработки существующего кода и его разбиения на независимые сервисы, что может быть трудоемким и сложным процессом.
Во-вторых, возникают сложности с обеспечением взаимодействия между микросервисами, включая управление сетевыми запросами и обработку ошибок. Кроме того, важно наладить мониторинг и логирование каждого микросервиса для своевременного выявления и устранения проблем в распределенной системе.
Использование в практике таких паттернов как Читать полностью »
Отмена defer вызова функции в Golang
2024-12-26 в 18:15, admin, рубрики: defer, golang, golang defer, методы, отложенные функции, паттерны, функцииНедавно столкнулся с такой проблемой, что не всегда приходиться выполнять defer вызов функции. Те кто знают, как работает defer можете листать вниз до реализации моего паттерна.
Представьте, что у вас есть 10 кейсов, в одном из которых не вам не нужен вызов defer func. Что же тогда делать......
Оператор defer помещает вызов функции в список. Список сохраненных вызовов выполняется после того, как возвращается функция. Defer обычно используется для упрощения функций, выполняющих различные действия по очистке.
package main
import "fmt"
func foo(){
defer fmt.Println("Deffered out")
fmt.Println("End of func")
}
func main(){
foo()
}
Результат:
End of func
Читать полностью »
Принципы SOLID, только понятно
2024-04-29 в 10:15, admin, рубрики: c++, java, solid, код, ооп, паттерны, принципы, Программирование, проектирование, чистый кодКогда я только знакомился с принципами SOLID, я искал понятные статьи на Хабр. При этом пришлось прочитать не одну статью, и полное понимание пришло сильно позже. Хотелось бы, чтобы новички на более простых примерах смогли почувствовать, о чем эти принципы:
Что такое SOLID и зачем оно надо?
При написании кода программисту следует руководствоваться определенными правилами. Часто эти правила написаны если не кровью, то слезами разработчиков, которые потом стараются исправить ваш код. Если это вообще возможно :)
Принципы S.O.L.I.D.Читать полностью »
Что такое гексагональная архитектура. Разделение бизнес-логики и инфраструктуры с помощью портов и адаптеров
2023-11-02 в 8:01, admin, рубрики: http, rest, sql, timeweb_статьи_перевод, адаптеры, бизнес, бэкенд, гексагональная архитектура, инфраструктура, логика, паттерны, персистентность, порты, приложение
Гексагональная архитектура — это архитектурный паттерн, представленный Алистером Кокберном и описанный у него в блоге в 2005 году. Основная идея заключается в том, чтобы структурировать приложение таким образом, чтобы это приложение можно было разрабатывать и тестировать в изоляции, не завися от внешних инструментов и технологий.
Вот как сам Кокберн описывает эту архитектуру одним тезисом:
Добиться, чтобы приложение в равной степени могло управляться пользователями, программами, автоматизированными тестовыми или пакетными сценариями, а также разрабатываться и тестироваться в изоляции от устройств и баз данных, на которых оно впоследствии будет выполняться. — Алистер Кокберн, 2005 г.
В этой статье мы рассмотрим некоторые задачи, как правило, решаемые в типичных программных проектах. Затем мы поговорим о гексагональной архитектуре и о том, как она призвана решить эти задачи. Мы также рассмотрим некоторые детали реализации такой архитектуры и варианты тестирования.Читать полностью »
Паттерны взаимодействия с ботами в Telegram: неочевидные практики на Python и баг в мессенджере
2022-08-31 в 12:48, admin, рубрики: python, telegram, Блог компании Selectel, мессенджеры, опыт, паттерны, чат-бот
Я часто взаимодействую с ботами в Telegram. Чаще как пользователь, но создать собственного бота или потрогать чужого я не боюсь. При разработке собственного решения чувствуется, что бот не похож на GUI- или веб-приложение, но программисты тщательно превозмогают это чувство и делают так, как проще с точки зрения программирования.
В этой статье я расскажу про некоторые способы взаимодействия человека и бота в личных сообщениях и группах. Текст рассчитан на тех, кто только начинает изучать тему создания ботов, но, возможно, будет полезен и профессионалам.
Читать полностью »
Паттерны верстки. Как объединить верстальщиков и дизайнеров
2022-03-06 в 7:10, admin, рубрики: css, css grid, css3, scss, верстальщик, верстка, верстка сайтов, графический дизайн, дизайн, дизайнер, интерфейсы, Оболочки, паттерныДанная статья поможет улучшить взаимодействие между дизайнерами и верстальщиками для минимизации ошибок и повышения продуктивности работы.
Работа богата практическими примерами. Она будет полезна специалистам разного профиля.
Дизайн является основой качественной верстки и помогает успешно продолжить создание веб-приложения.
Критерии хорошего дизайна:
-
Стандартизированные свойства элементов дизайна (цвета, шрифты, размеры, отступы и т.д.)
Способ качественно изучить паттерны проектирования
2021-10-30 в 18:11, admin, рубрики: design patterns, gang of four, head first, patterns, ооп, паттерны, паттерны проектированияПривет! Когда я изучал паттерны проектирования, я делал это с помощью прочтения двух книг: простую и понятную книгу от Head First одновременно со сложной и менее понятной книгой от Банды Четырех. Ниже описан мой опыт того, как именно я это делал, плюс выводы, впечатления и советы

ДисклеймерЧитать полностью »