IT заметки по программированию
IT заметки по программированию
IT заметки по программированию
IT заметки по программированию

В etcd, механизм watch отслеживает изменения в реестре данных, включая как добавление, так и удаление данных. Когда вы используете watch с префиксом или конкретным ключом, etcd будет уведомлять вас не только о добавлении (PUT) или изменении значений, но и об удалении (DELETE) данных....

продолжить чтение


Transactional Outbox — это шаблон для надёжной передачи событий из базы данных в брокер сообщений (Kafka, RabbitMQ, NATS и т. д.). Он помогает избежать проблем с "двойной записью" (Dual Write Problem), обеспечивая атомарность базы данных и брокера сообщений....

продолжить чтение


Для реализации механизма обнаружения сервисов с использованием watch в etcd можно использовать подход, при котором каждый сервис регистрирует себя в etcd при старте, а другие сервисы следят за изменениями в реестре с помощью watch и соответствующим образом реагируют на эти изменения....

продолжить чтение


Реализация health-checker для микросервисов с отправкой алертов — важная часть мониторинга и обеспечения стабильности системы. Обычно используется комбинация инструментов и подходов для проверки состояния сервисов, отправки алертов и автоматизации реакции на инциденты. Вот шаги и лучшие практики для построения такого решения:...

продолжить чтение


Отказоустойчивая кластерная архитектура для PostgreSQL на основе Patroni, PgBouncer, HAProxy и etcd состоит из нескольких компонентов, каждый из которых играет определенную роль для обеспечения высокодоступности, балансировки нагрузки, отказоустойчивости и упрощения управления подключениями. Вот описание основных компонентов и их взаимодействий:...

продолжить чтение


Принцип инверсии зависимостей (Dependency Inversion Principle, DIP) говорит, что: Высокоуровневые модули (логика) не должны зависеть от низкоуровневых (деталей реализации). Оба должны зависеть от абстракций. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций....

продолжить чтение


В Protobuf (в .proto файле) можно задать ошибку как часть возвращаемого сообщения. В контексте Go-приложений, обработка ошибок и возврат их через gRPC-методы часто оформляется с использованием поля типа Status или собственного сообщения для ошибок....

продолжить чтение


.proto файлы используются в Protocol Buffers (Protobuf) для определения структуры данных и сервисов в платформо-независимом формате. Они содержат контракт взаимодействия между системами и позволяют автоматически генерировать код для сериализации/десериализации данных, а также для работы с RPC-сервисами....

продолжить чтение


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

продолжить чтение


Если адаптер не передает данные обратно во внешний мир, то его нельзя назвать контроллером в традиционном смысле этого термина, потому что контроллеры, как правило, отвечают за двустороннее взаимодействие: они получают запросы из внешнего мира и отправляют ответы обратно....

продолжить чтение


Да, в архитектуре Hexagonal Architecture (или Ports and Adapters), контроллеры можно рассматривать как адаптеры. Однако важно понимать, что терминология и роль контроллеров могут немного различаться в зависимости от контекста и архитектурного подхода, который используется....

продолжить чтение


Да, адаптеры обычно относятся к инфраструктурному слою в архитектуре приложения. Однако важно уточнить, что адаптеры не всегда ограничиваются только инфраструктурой, и их роль в архитектуре может быть шире....

продолжить чтение


Да, репозитории можно назвать адаптерами в программной архитектуре приложения, если рассматривать их с точки зрения архитектуры, такой как чистая архитектура (Clean Architecture) или шестигранная архитектура (Hexagonal Architecture). В этих подходах адаптеры служат связующим звеном между различными уровнями системы, обеспечивая взаимодействие с внешними системами или слоями. Репозитории в этом контексте действуют как адаптеры между......

продолжить чтение


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

продолжить чтение


Спецификация W3C Trace Context — это стандарт для передачи контекста трассировки через распределённые системы. Она определяет формат заголовков HTTP-запросов, которые позволяют сервисам обмениваться информацией о трассировках, таких как Trace ID и Span ID, в рамках одной или нескольких систем. Цель стандарта — обеспечить совместимость между инструментами трассировки, такими как OpenTelemetry, Jaeger, Zipkin, и......

продолжить чтение


DTO (Data Transfer Object) действительно по своей сути является простым и плоским объектом, предназначенным для передачи данных между слоями приложения. Его основная цель — перенос данных, а не реализация поведения или бизнес-логики. Однако в практике программирования DTO может включать методы, если они соответствуют следующим условиям:...

продолжить чтение


В Go преобразование структур между архитектурными слоями, таких как преобразование DTO (Data Transfer Object) в Entity, часто необходимо для соблюдения принципов разделения ответственности. Это делается для того, чтобы каждое архитектурное звено работало только с теми структурами данных, которые ему нужны, и избегало ненужной связи между слоями....

продолжить чтение