Реализация health-checker для микросервисов с отправкой алертов — важная часть мониторинга и обеспечения стабильности системы. Обычно используется комбинация инструментов и подходов для проверки состояния сервисов, отправки алертов и автоматизации реакции на инциденты. Вот шаги и лучшие практики для построения такого решения:...
продолжить чтение
Отказоустойчивая кластерная архитектура для PostgreSQL на основе Patroni, PgBouncer, HAProxy и etcd состоит из нескольких компонентов, каждый из которых играет определенную роль для обеспечения высокодоступности, балансировки нагрузки, отказоустойчивости и упрощения управления подключениями. Вот описание основных компонентов и их взаимодействий:...
продолжить чтение
OpenTelemetry поддерживает Grafana Tempo в качестве бэкенда для трассировок. Tempo интегрируется с OpenTelemetry Collector или другими клиентами OpenTelemetry, позволяя собирать, агрегировать и сохранять трассировки....
продолжить чтение
OpenTelemetry — это открытый стандарт и инструмент для сбора, обработки и экспорта данных о производительности и диагностике из приложений. Он позволяет разработчикам и инженерам собирать метрики, логи и трассировки из распределённых систем, объединяя эти данные для мониторинга и анализа....
продолжить чтение
Спецификация W3C Trace Context — это стандарт для передачи контекста трассировки через распределённые системы. Она определяет формат заголовков HTTP-запросов, которые позволяют сервисам обмениваться информацией о трассировках, таких как Trace ID и Span ID, в рамках одной или нескольких систем.
Цель стандарта — обеспечить совместимость между инструментами трассировки, такими как OpenTelemetry, Jaeger, Zipkin, и......
продолжить чтение
DTO (Data Transfer Object) действительно по своей сути является простым и плоским объектом, предназначенным для передачи данных между слоями приложения. Его основная цель — перенос данных, а не реализация поведения или бизнес-логики. Однако в практике программирования DTO может включать методы, если они соответствуют следующим условиям:...
продолжить чтение
В Go преобразование структур между архитектурными слоями, таких как преобразование DTO (Data Transfer Object) в Entity, часто необходимо для соблюдения принципов разделения ответственности. Это делается для того, чтобы каждое архитектурное звено работало только с теми структурами данных, которые ему нужны, и избегало ненужной связи между слоями....
продолжить чтение
Инициализация конфигурации из нескольких источников (.env, параметры командной строки, config.yaml) — это распространённая задача в Go. Принципиальный порядок инициализации часто следующий:...
продолжить чтение
Инициализация конфигурации из нескольких источников (.env, параметры командной строки, config.yaml) — это распространённая задача в Go. Принципиальный порядок инициализации часто следующий:...
продолжить чтение
Handlers (обработчики запросов) могут относиться к инфраструктурному слою в программной архитектуре, но это зависит от того, как организована система и какая архитектурная концепция применяется....
продолжить чтение
Инфраструктурный слой в программной архитектуре — это уровень системы, который отвечает за взаимодействие с внешними сервисами и ресурсами, такими как базы данных, файловые системы, сетевые компоненты, другие сервисы или API. Этот слой обрабатывает технические детали работы системы, абстрагируя их от бизнес-логики. Инфраструктурный слой является ключевым элементом архитектурных паттернов, таких как "Чистая архитектура" или......
продолжить чтение
В обеденный перерыв вы оказались на улице, на которую раньше не попадали. Там есть два места, где можно перекусить: палатка с надписью «Конкурентные бургеры» и ресторанчик, который называется «Параллельные салаты»....
продолжить чтение
Связность (cohesion) — это мера того, насколько отдельная компонента образует логически законченную, осмысленную единицу...
продолжить чтение
Статья Дмитрия Елисеева об архитектуре слабосвязанных модулей...
продолжить чтение
Алгоритм Диффи-Хеллмана — это криптографический метод, используемый для безопасного обмена ключами в незащищенных каналах связи. Он позволяет двум сторонам совместно создать общий секретный ключ, который затем может использоваться для шифрования сообщений, не передавая этот ключ напрямую....
продолжить чтение