Pull to refresh
0
@Alexb2pread⁠-⁠only

User

Send message

Введение в distributed tracing

Reading time11 min
Views8.2K

В один прекрасный момент вы можете переезжать из одного ДЦ в другой и понять, что не знаете свои системы: их поведение может стать неожиданным. В одной системе вы должны были работать гораздо быстрее, но теперь работаете медленно. В другой — не понимаете, куда приходит запрос, а в третьей столкнетесь с проблемами.

Чтобы проще и быстрее понимать взаимосвязи между системами, и легко оптимизировать то, что уже было, вам прекрасно подойдет distributed tracing. Но как его выбрать, внедрить и не собрать все грабли?

Безкоровайный Денис, директор подразделения DevOps/DevSecOps в Proto Group и Панычев Дмитрий, руководитель разработки ряда достаточно запутанных проектов в Vprok.ru Перекресток, на конференции DevOps 2021 на примерах показали, как distributed tracing помог им решить бизнес-задачи. Читайте под катом, как они выбирали решение для distributed tracing и обходили грабли.

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments3

Система заметок с нуля. Часть 5: знакомство с объектным хранилищем MinIO и разработка микросервиса на Golang

Reading time4 min
Views8.2K

В первой части мы спроектировали микросервисную архитектуру.

Во второй части разработали RESTful API Service на Golang cо Swagger и авторизацией.

Третья часть была посвящена знакомству с графовой БД Neo4j и работе над микросервисами CategoryService и APIService.

Четвертая часть была посвящена разработке микросервисов.

Мы продолжаем создание системы заметок. На этот раз посмотрим на разработанный File Service, который работает с хранилищем MinIO. Но сначала разберёмся с самим хранилищем и его настройкой.

Читать далее
Total votes 2: ↑0 and ↓2-2
Comments0

Сравнение подходов к реализации распределенных транзакций для микросервисов

Reading time21 min
Views43K

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

Читать далее
Total votes 36: ↑36 and ↓0+36
Comments9

Партицирование таблиц в PostgreSQL: чек-лист для старта

Reading time13 min
Views53K

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

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

Читать далее
Total votes 23: ↑23 and ↓0+23
Comments31

Вячеслав Смирнов. Профилирование JVM в Kubernetes

Reading time29 min
Views9.4K

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


Вячеславу повезло использовать разные инструменты. И повезло найти разные дефекты микросервисов на основе JVM. Спикер проанализировал, разделил инструменты и дефекты микросервисов на группы, и хочет рассказать о:


  • подборе профайлеров и их настройках под задачу;
  • собранных рецептах профилирования JVM в Kubernetes;
  • моментах, когда профилирование вредит, а когда помогает.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments7

Полезные советы по LibreOffice, вводное занятие по Quarkus для Spring-разработчиков…

Reading time2 min
Views3.3K

... а также шпаргалка по YAML.

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

Читать дальше: Полезные советы...
Total votes 1: ↑1 and ↓0+1
Comments1

Как работает JavaScript [Объясняю визуально]

Reading time4 min
Views43K

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

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

Читать далее
Total votes 7: ↑5 and ↓2+3
Comments12

Автоматизация проверки срока истечения регистрации доменов в kubernetes с использованием prometheus-stack

Reading time5 min
Views4K

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

Для небольшого количества доменов будет достаточно завести напоминание в календаре, но если доменов много - следует автоматизировать этот процесс.

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments6

Блеск и нищета модели предметной области

Reading time28 min
Views53K


Мартин Фаулер в книге «Patterns of Enterprise Application Architecture» описывает «Модель предметной области (Domain Model)» как сложный подход к организации бизнес-логики. Метод заключается в создании классов, соответствующих объектам предметной области из реального мира как с точки зрения структуры данных, так и поведения. При этом технические аспекты, такие как хранение данных, аутентификация и авторизация, управление транзакциями, выносится за пределы слоя бизнес-логики. Паттерн реализуется одним из двух способов:

  1. Богатая (насыщенная) модель — данные и поведение инкапсулируются внутри объектов предметной области.
  2. Анемичная модель — в объектах предметной области инкапсулируются только данные, поведение (методы) выносится в отдельный слой сервисов.

Фаулер и Эванс считают анемичную модель анти-паттерном. Однако многие кодовые базы, с которыми мне доводилось работать, реализованы именно в стиле «анемичной» модели. Под катом расшифровка и видео моего доклада с DotNext 2019 Moscow, посвященного сравнению сильных и слабых сторон обоих подходов и не очевидным деталям реализации модели предметной области в парадигме ООП и в функциональном стиле.
Читать дальше →
Total votes 36: ↑34 and ↓2+45
Comments46

Предметно-ориентированное проектирование (DDD) | Эванс Эрик — обзор книги и рекомендации

Reading time4 min
Views34K

В одном романе для того, чтобы подчеркнуть бесспорную красоту и поразительную сексуальность одной из героинь, автор использовал фразу: "She was a such kind of woman, that every man look at twice". Что в литературном переводе можно понять: "Одна была такой женщиной, что каждый мужчина оборачивался ей в след".

И точно такую же фразу я могу применить к бесподобной книге "Предметно-ориентированное проектирование (DDD)" Эванса Эрика. К ней хочется возвращаться каждый раз, когда ты садишься за проектирование системы в незнакомой тебе области. Словно маяк во время шторма, она помогает вести вашу галеру через сложности, чтобы все гребцы увидели землю, а проект увидел успешный старт.

И в этом обзоре, я расскажу, почему, по моему мнению, это MUSH HAVE книга для каждого middle+ разработчика.

Читать далее
Total votes 6: ↑4 and ↓2+3
Comments28

Планирование подов для узлов Kubernetes: развёрнутое руководство

Reading time9 min
Views8.3K

В статье — варианты использования расширенного планирования подов в Kubernetes, а также передовые методы его применения на практике. Информация пригодится разработчикам приложений и администраторам K8s, чтобы реализовать расширенные шаблоны развёртывания приложений, в которых есть локальность данных, совместное размещение модулей, высокая доступность и эффективное использование ресурсов кластеров K8s.

Читать далее
Total votes 2: ↑1 and ↓1+1
Comments3

Kweb — Облегченный веб-фреймворк Kotlin для backend-разработчиков

Reading time18 min
Views6.8K


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


Но зачем нужен еще один веб-фреймворк?


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


KWeb исправляет это.


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


Цель Kweb — устранить это разделение сервера и браузера, чтобы архитектура вашего веб-приложения определялась решаемой проблемой, а не ограничениями современных инструментов.


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

Читать дальше →
Total votes 10: ↑9 and ↓1+10
Comments16

Записи воркшопов для Java-разработчиков по ActiveMQ, RabbitMQ, Apache Kafka

Reading time2 min
Views8.8K

Летом прошёл онлайн-интенсив GET PROF IT: Messaging, посвящённый работе с инструментами, которые пригодятся Java-разработчикам. Для тех, кто только вернулся из отпусков и пропустил это событие, мы решили поделиться записями воркшопов.

Читать далее
Total votes 3: ↑3 and ↓0+3
Comments0

Выполнение запланированных заданий в Spring Boot

Reading time12 min
Views92K

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

В этой статье мы покажем, как настраивать и запускать запланированные задания в приложениях Spring Boot.

Читать далее
Total votes 5: ↑4 and ↓1+6
Comments4

Бесплатный хостинг Telegram-бота на Google Cloud Platform

Reading time3 min
Views148K

Почему GCP?


При написание телеграмм ботов столкнулся с вопросом, как быстро и бесплатно сделать так, чтобы бот работал постоянно. Варианты с Heroku и Pythonanywhere имеют слишком маленькие лимиты, если у вас более одного бота. Поэтому я решил воспользоваться GCP. Платформа предоставляет бесплатно 300$ на год + огромные скидки при использование этих средств(до 94%).


Как захостить вашего бота?


Шаг 1. Регистрация на GCP


Переходим на сайт GCP и нажимаем Get started for free.
Читать дальше →
Total votes 19: ↑6 and ↓130
Comments18

Шаблоны модернизации приложения с помощью Apache Kafka, Debezium и Kubernetes, часть 2 – постмиграционные задачи

Reading time5 min
Views3.5K

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

Читать дальше: Шаблоны модернизации...
Total votes 1: ↑1 and ↓0+1
Comments0

Новые возможности в Java версий 12 — 17

Reading time6 min
Views12K

Быстрый тур по новым, готовым к работе функциям при обновлении с Java 11 до Java 17.

Через три года после Java 11 - на данный момент последней версии с долгосрочной поддержкой (LTS), Java 17 LTS будет выпущена в сентябре 2021 года. Пришло время сделать краткий обзор новых функций, которыми разработчики могут пользоваться после обновления с 11 до 17. Обратите внимание, что было внесено гораздо больше улучшений - в этой статье основное внимание уделяется тем функциям, которые могут напрямую использоваться большинством разработчиков.

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments8

Spring @Transactional — ошибки, которые совершали все

Reading time5 min
Views40K

Вероятно, одной из наиболее часто используемых аннотаций Spring является @Transactional. Несмотря на ее популярность, иногда она используется неправильно, в результате чего получается не совсем то, что задумал инженер-программист.

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

1. Вызовы в пределах одного класса

@Transactional редко подвергается достаточному количеству тестов, и это приводит к тому, что какие-то проблемы не видны на первый взгляд. В результате вы можете столкнуться со следующим кодом:

Аннотация не работает в методе registerAccount:

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments7

Spring валидация входных DTO в Kotlin. Краткая инструкция для backend-разработчика

Reading time4 min
Views12K

При переходе с Java на Kotlin многие вопросы приходится решать заново, а точнее по-другому. Два года назад мы начали социальный Open Source проект BrainUp на Kotlin, который сейчас акивно развивается, а мы узнаем на практике что значит Kotlin и его эко-мир, какие удобства он вносит в нашу жизнь, разработчиков, и какие вопросы, задачи встают по-новому.

Читать далее
Total votes 4: ↑4 and ↓0+4
Comments10

Kafka, RabbitMQ или AWS SNS/SQS: какой брокер выбрать?

Reading time10 min
Views23K

Четкая работа микросервисных приложений в значительной степени зависит от передачи сообщений и асинхронных операций.

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

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

Читать перевод далее
Total votes 22: ↑17 and ↓5+15
Comments13
1

Information

Rating
Does not participate
Registered
Activity