Proof of Work и Proof of Stake для чайников

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

Для достижения консенсуса в блокчейне существуют механизмы Proof of Work и Proof of Stake. Рассмотрим их в этой статье.

Читать далее


4 вида распространённых ошибок в Event-Driven системах

В последние несколько лет в крупных компаниях наблюдается значительный рост внедрения event-driven (событийно-ориентированных) систем. Каковы основные причины этой тенденции? Это чистой воды хайп или есть веские причины, побуждающие к внедрению этой архитектуры? С нашей точки зрения, основными причинами, по которым многие компании выбирают этот путь, являются:

  • Слабая связанность между компонентами
  • Концепция “Fire and Forget”
  • Отсутствие зависимости во времени
  • Ряд бизнес-моделей очень легко вписывается в event-driven системы

Читать далее


Основные функции Apache Tomcat

Apache Tomcat — это открытое программное обеспечение, реализующее спецификации Java ServletJSP и Java WebSocket, предоставляя таким образом платформу для запуска веб-приложений, написанных на языке Java. Разработанный и поддерживаемый Apache Software Foundation, Tomcat служит контейнером сервлетов, который позволяет веб-приложениям использовать Java для создания динамичных веб-страниц.

Tomcat может работать как самостоятельный веб-сервер, где он обрабатывает как статические страницы, так и динамические запросы через Servlets и JSP. Однако часто Tomcat используется в сочетании с традиционными веб-серверами, такими как Apache HTTP Server или Nginx, для обработки статического контента, в то время как динамический контент обрабатывается через Tomcat.

В этой статье мы рассмотрим основной функционал Tomcat.

Читать далее


Kubernetes на AWS: пошаговое руководство

В этой статье мы рассмотрим несколько распространенных способов создания кластера Kubernetes на AWS:

  • Создание кластера с помощью kops: kops — это инструмент, предназначенный для промышленной эксплуатации, используемый для установки, обновления и управления Kubernetes на AWS.
  • Создание кластера с помощью Amazon Elastic Kubernetes Service (EKS): EKS — это управляемый сервис Kubernetes, предоставляемый компанией Amazon. Кластер Kubernetes с EKS можно создать с помощью AWS Management Console.
  • Создание кластера с помощью Rancher: Rancher — это платформа управления Kubernetes, которая упрощает развертывание Kubernetes и контейнеров.

Читать далее


Архитектурный паттерн для обработки больших данных: Kappa

Когда речь идет о обработке больших данных, архитектурные паттерны играют самую важную роль. Ранее мы обсудили Lambda, который предлагает подход, сочетающий в себе потоковую и батч-обработку данных. Однако, Kappa предоставляет нам несколько другой взгляд на эту проблему. Он упрощает архитектуру, фокусируясь исключительно на потоковой обработке.

Читать далее


Как управлять состоянием телеграм-бота

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

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

Читать далее


Паттерн Circuit Breaker

Каждая секунда простоя может стоить компании целое состояние, важно иметь надежные механизмы защиты от сбоев. Здесь и приходит на помощь паттерн Circuit Breaker.

Представьте себе обычный автоматический выключатель в вашем доме. Когда происходит перегрузка, он «выбивается», предотвращая возможные повреждения. Точно так же работает и Circuit Breaker в микросервисах. Он мониторит вызовы к внешнему сервису и при обнаружении слишком большого количества неудачных попыток временно «отключает» вызов, предотвращая тем самым падение всей системы.

Этот паттерн основывается на трех основных состояниях: закрытоеоткрытое и полуоткрытое.

Читать далее


Проблемы согласованности данных в микросервисах и их решение

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

Но не всё так просто. Одной из ключевых проблем, с которыми сталкиваются при переходе от монолитных архитектур к микросервисным, является обеспечение согласованности данных.

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

Читать далее


Паттерн Одиночка

Паттерн «Одиночка» (Singleton) является одним из паттернов проектирования, который используется для создания класса, имеющего только один экземпляр в системе, и предоставляющего глобальную точку доступа к этому экземпляру. Это означает, что в рамках приложения может существовать только один объект данного класса, и любой запрос на создание нового экземпляра будет возвращать ссылку на существующий.

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

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

Читать далее


На пути к четкой архитектуре: проблема избыточной функциональности

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

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

Читать далее


Коротко про платежи через ботов в Telegram

Больше не нужно переключаться между различными приложениями или веб-сайтами, чтобы совершить покупку. Теперь всё это возможно прямо в телеге, платформе, которая уже является частью повседневной жизни миллионов людей.

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

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

Читать далее


Проектирование fault-tolerant систем на Go

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

Go благодаря своей простоте, производительности и, что наиболее важно, поддержке конкурентности на уровне языка, становится идеальным выбором для создания fault-tolerant систем.

Читать далее


Обзор библиотеки bleve в Golang

Bleve предоставляет индексации любых структур данных Go, он поддерживает различные типы полей: текстчисладаты и логические значения, а также разнообразие запросов: от простых терминов до фраз и сложных булевых запросов.

Чтобы начать работу с Bleve, нужно установить саму библиотеку в рабочее пространство Go. Процесс установки выполняется с помощью команды go get:

go get -u github.com/blevesearch/bleve

Читать далее


Обзор библиотеки Go Kit

Go Kit предоставляет стандартизированный способ создания сервисов, с ее помощью можно легко реализовать совместимость сервисов. С его помощью можно легко интегрировать различные транспортные протоколы, такие как HTTP, RPC, gRPC, и многое другое, а также реализовывать общие паттерны: логирование, метрики, трассировка. В общем, Go Kit хорошо подходит для разработки микросервисов на go.

Читать далее


Зачем нужен архитектор 1С

Есть такие, кто считает, что нет оснований для использования отдельного понятия архитектор 1С. Дескать, архитекторы это, например, Растрелли или Гауди, а мы тут немного другим занимаемся. Разработка программного обеспечения и проектирование зданий может и являются родственниками, но уж очень дальними. И, в конце концов, есть уже один достаточно широко используемый термин: разработчик. Зачем плодить лишние сущности и ссылаться при этом на что-то постороннее? Некоторое время назад автор и сам был одним из тех, кто так считал. Но все-таки различать разработчиков ПО и архитекторов ПО имеет смысл. И я попробую раскрыть его.

Читать далее


Разбираемся с Cloud Landing Zone

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

Читать далее