суббота, 20 июля 2024 г.

Какие ошибки допустила команда InfluxDB по ходу своего развития

Сегодня наткнулся на статью от разработчиков плагина для Postgres TimescaleDB "What InfluxDB Got Wrong", в которой коллеги рассуждают об ошибках, которые допустила команда InfluxDB на своем пути построения базы данных для работы с временными рядами. 

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

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

среда, 5 февраля 2020 г.

Мартин Клеппман. Высоконагруженные приложения (Designing Data-Intensive Applications)


Книга Мартина Клеппмана "Высоконагруженные приложения" (в оригинале Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems) может и должна стать настольной книгой современного разработчика программного обеспечения, который разрабатывает приложения, включающие какую-либо серверную/прикладную часть для хранения или обработки данных и использующие сеть для взаимодействия с другими компонентами системы.

Издание предназначено для разработчиков программного обеспечения, архитекторов ПО и технических директоров, которые в свободное время любят писать код. Книга особенно актуальна, если вам нужно принять решение об архитектуре систем, над которыми вы работаете, - например, выбрать инструменты для решения конкретной проблемы и придумать, как их лучше использовать. Но даже если у вас нет права выбирать инструменты, данная книга поможет понять их достоинства и недостатки.

В статье я приведу конспект книги. Я его написал, потому что при написании конспекта лучше усваивается материал. Надеюсь, что он кому-то поможет в принятии решения прочитать данную книгу. Текст получился достаточно объемный, но и полезного материала в книге масса.

среда, 18 сентября 2019 г.

sensor.community (ранее luftdaten.info) - общественный мониторинг качества воздуха

По данным всемирной организации здравоохранения (ВОЗ) в 2012 году из-за загрязнения атмосферного воздуха в городских окраинах и сельских районах во всем мире произошло 4,2 миллиона случаев преждевременной смерти людей. Один из показателей загрязненности - это концентрация пыли, размеры которой настолько малы, что при вдохе через легкие она может распространиться по всему организму. Источники пыли могут быть как природными, так и связанными с деятельностью человека. Сильнее всего на пыль влияют автомобильный трафик, грунтовые дороги, дровяные печи и некоторые промышленные предприятия (например, угольные электростанции).

Проблема чрезмерной запыленности воздуха может быть очень серьезной в зависимости от региона и страны проживания: постоянно находясь в среде с повышенным содержанием взвешенных частиц в воздухе, можно нанести серьезный вред своему здоровью. Чтобы узнать, чем ты дышишь ежедневно необходимо измерять степень загрязненности воздуха. В статье расскажу, как собрать, установить и настроить общественную станцию мониторинга качества воздуха у себя дома. Проект основан на гражданской инициативе https://luftdaten.info/, которая появилась в 2015 году в Германии. В данный момент проект расположен на странице https://sensor.community/.

пятница, 31 мая 2019 г.

JAva COde COverage. Оценка покрытия java кода тестами с помощью JaCoCo

18 мая 2019 года состоялась десятая встреча сообщества java разработчиков Севастополя JUG.SEV. На данной встрече я вступил с докладом на тему "JAva COde COverage. Оценка покрытия java кода тестами". В докладе я рассказал об особенностях измерения одной из метрик качества тестирования: покрытии кода тестами. На примере open source библиотеки JaCoCo разобрал, как работает технология оценки покрытия кода в java. Рассказал о внедрении процесса анализа покрытия кода тестами в процесс разработки продукта. Расставил акценты и резюмировал, какую пользу может принести оценка покрытия, и какие есть подводные камни ее использования.


Видео доклада




Презентация



пятница, 9 ноября 2018 г.

Fullstack разработка: от железа до фронтэнда. IoT in action

14 октября 2018 года прошла девятая встреча сообщества java разработчиков Севастополя JUG.SEV, на которой я выступил с докладом "Fullstack разработка: от железа до фронтэнда. IoT in action".

В докладе я рассказал об особенностях построения решений в сфере интернета вещей (IoT) на примере проекта мониторинга температуры и влажности помещения с помощью сенсоров на базе микроконтроллера esp8266 (Lolin (Wemos) D1 mini) с wi-fi и сервера на Raspberry Pi 3.

Рассказал, как проектировать и создавать сенсоры в железе, как разрабатывать софт для сенсоров с помощью Arduino Framework. Развернул на Raspberry Pi java сервер, который управляет сенсорами, собирает с них значения температуры и влажности по WI-FI и предоставляет интерфейс для настройки и просмотра графиков истории значений сенсоров через web интерфейс.

Основная цель доклада — помочь тем, кто интересуется темой IoT сделать первые шаги. Рассказать об инструментарии и об особенностях разработки систем с "умными" устройствами.


Видео доклада




Презентация



воскресенье, 10 июня 2018 г.

TimescaleDB. Комфортное хранение метрик в PostgreSQL

В статье пойдет речь об opensource базе данных TimescaleDB, которая предназначена для хранения временных рядов. Мы поговорим об особенностях хранения временных рядов, рассмотрим, как устроена внутри TimescaleDB, рассмотрим на примере запись и чтение метрик в TimescaleDB.

В одной из предыдущих статей мы рассматривали одну очень интересную базу данных для хранения временных рядов InfluxDB. Мы говорили о том, что InfluxDB очень гибкая позволяет быстро начать работу и, самое главное, InfluxDB заточена под запись хранение и обработку временных рядов. А что это означает: "заточена под запись хранение и обработку временных рядов"? Давайте разберемся.

Разработчики для хранения данных разрабатываемых приложений (будем называть их бизнес данными) в зачастую используют реляционные SQL базы данных. Такие базы строго структурированы и хорошо обеспечивают целостность данных благодаря механизмам внешних ключей и транзакций, позволяют делать сложные запросы к данным и выполняют эти запросы быстро благодаря индексам на колонки, по которым идет фильтрация и сортировка. Бизнес данные - это в большей своей части описание некоторых сущностей реального мира, которые имеют свои параметры, и эти параметры меняются во времени. Когда происходит изменение параметров сущности - происходит обновление определенной строки в определенной таблице в базе данных, при этом предыдущее значение мы не запоминаем, а перезаписываем на новое. А что если мы хотим сохранить все предыдущие состояния наших сущностей? Если мы будем запоминать все изменения объектов - то наши данные превращаются во временные ряды.

понедельник, 5 февраля 2018 г.

Семантическое версионирование (Semantic Versioning)

При разработке программных решений встает задача управления изменениями ваших публичных API во времени. Например, у вас есть 2 сервиса А и Б. Сервис А делает запросы к сервису Б по REST API для получения необходимой информации. А зависит от Б, так как для его работы необходима информация из Б. Мы выпускаем новую версию сервиса Б, в которой изменилось API. Как сообщить клиентам сервиса Б, совместим ли API с предыдущей версией? 

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

Для решения вышеописанных проблем можно воспользоваться Семантическим версионированием (Semantic Versioning) - набором правил и требований, которые определяют, как назначаются и увеличиваются номера версии.

суббота, 17 сентября 2016 г.

Федерик Лалу, Открывая организации будущего

Есть книги, после прочтения которых, меняется полностью представление о чем-либо, хочется все поменять вокруг. Одна из таких книг Федерик Лалу "Открывая организации будущего".

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

четверг, 3 марта 2016 г.

Алекс Беллос, Красота в квадрате

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

- Почему люди любят число 7? 
- Как правильно разделить пирог на 3 части? 
- Как нарисовать эллипс используя нитку и карандаш? 
- Что такое комплексное число? 
- Что такое число пи и число e, и как они связаны друг с другом? 
- Что нужно знать про число е, когда берешь кредит?
- В какую игру нужно играть, чтобы построить колонию живых клеток?

На эти и многие другие вопросы отвечает в книге Алекс Беллос. Книга написана очень качественно и читать ее интересно - я прочитал на одном дыхании. Если вы любите математику, то книга вам очень понравится, а если не любите, то после прочтения полюбите. Всем советую.

P.S. Книга издана в 2015 году, поэтому вы вряд ли ее читали;-)

пятница, 26 февраля 2016 г.

Федерик Брукс, Мифический человеко-месяц

Я созрел и прочитал книгу "Мифический человеко-месяц" Федерика Брукса - американского ученого в области теории вычислительных систем, который управлял разработкой OS/360 в IBM. Также Брукс был награжден Премией Тьюринга - самой престижной премией в информатике в 1990 году. Поделюсь впечатлениями от прочитанной книги.

воскресенье, 17 января 2016 г.

Мониторинг с помощью InfluxData. Часть 3. Chronograf

В предыдущих сериях 

В первой статье мы познакомились с InfluxData - платформой для работы с временными рядами, настроили базу данных временных рядов InfluxDB. Во второй статье настроили сбор метрик и дальнейшую отправку в InfluxDB с помощью Telegraf. В текущей статье научимся рисовать графики значений метрик с помощью Chronograf.

пятница, 8 января 2016 г.

Мониторинг с помощью InfluxData. Часть 2. Telegraf

Добрый день. В предыдущей статье мы познакомились с платформой для работы с временными рядами InfluxData. Разобрались, что она состоит из 4 приложений: Telegraf, InfluxDB, Chronograf и Kapacitor, которые образуют так называемый TICK стек технологий (по первым буквам приложений). Научились устанавливать и работать с базой данных InfluxDB. В текущей статье речь пойдет о приложении Telegraf.

среда, 6 января 2016 г.

Мониторинг с помощью InfluxData. Часть 1. InfluxDB

influxdata
Новый год наступил, а значит самое время узнать что-то новое. Текущая статья начинает серию статей про InfluxData - платформу для сбора/хранения/визуализации/управления временными рядами (time-series data).

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

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

пятница, 23 октября 2015 г.

Raft - алгоритм решения консенсуса в кластере надежных вычислений

Сегодня знакомимся с очень интересным алгоритмом решения консенсуса в сети надежных вычислений - Raft.

Основы алгоритма

Raft реализуется поверх кластера однообразных слабо связных нод, на каждой из которой работает машина состояний. Raft обеспечивает надёжную доставку сигналов на все ноды в заданном порядке. Таким образом обеспечивается переход всех машин состояний по одним и тем же последовательностям состояний. Таким образом, каждая нода гарантированно приходит в согласие с другими нодами.
Каждая нода может находиться в одном из 3-х состояний:

вторник, 20 октября 2015 г.

"Eat your own dog food" - стань клиентом самого себя

Сегодня познакомимся с фразеологизмом: "Eat your own dog food", который давно используется в IT индустрии.

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

среда, 30 сентября 2015 г.

e-maxx.ru хороший сборник алгоритмов на русском языке

Сегодня наткнулся на замечательный сайт e-maxx.ru. На сайте описано множество алгоритмов с реализацией на C++. А самое главное - это задачи, в которых применяются алгоритмы.

понедельник, 1 июня 2015 г.

GUAVA Striped - гибкий инструмент для связывания блокировок с объектами в java

Сегодня познакомимся с полезной утилитой  Striped  в GUAVA.

Засекаем время в java

Предистория

Как-то раз я занимался оптимизацией сложной операции, выполняемой на сервере, которая включала в себя несколько запросов к базе данных с последующей группировкой и сортировкой по определенным параметрам полученных данных. К сожалению, средствами SQL запросов обойтись не получилось, так как в конечной выборке участвовали данные полученные по веб-сервисам из внешних систем. Поэтому приходилось выполнять группировку и сортировку данных с помощью кода приложения.
Когда я запустил первый раз этот код на реальных данных, очевидно, все работало неприемлемо медленно и требовало оптимизации. С чего начинать оптимизацию? Правило Парето никто не отменял и оно гласит, что нужно начинать оптимизацию тех участков кода, выполнение которых занимает львиную долю времени выполнения операции. Возникла задача выяснить, какой из этапов крупной операции выполняется дольше остальных, и насколько дольше. Для этого необходимо "стоять с секундомером" и засекать начало и конец каждого этапа и результат выводить в лог. На момент решения данной задачи я обошелся собственным решением, в котором я запоминал System.currentTimeMillis() в промежуточные значения в локальных переменных. Затем происходил подсчет разниц времени вывод в лог описаний. У данного подхода я обнаружил существенные недостатки:
  1. Код сильно загрязнился. Локальные переменные заполонили код, и его стало читать очень сложно.
  2. Сложно исправлять/добавлять новую операцию, так как логика о подсчету времени размазана.
Но есть и плюс, только он на мой взгляд один: это гибкость и возможность написать то, что тебе нужно.
Мне такое решение не давало покоя и я решил сделать небольшой обзор инструментов подсчета времени в java.

четверг, 28 мая 2015 г.

Rootconf: DevOps, мониторинг, метрики, алерты!




В некотором царстве в некотором государстве под названием Москва 21-22 мая 2015 года прошёл фестиваль Российские интернет технологии, на котором мне посчастливилось побывать. Проходил фестиваль в Крокус сити холле. В этом году Олег Бунин и его команда сделали из ежегодной конференции РИТ целый фестиваль. В рамках фестиваля было организовано 5 секций с различной тематикой.


  1. RootConf. Конференция по эксплуатации.
  2. FronfendConf. Конференция фронтэнд разработчиков.
  3. Highload++ Junior. Обучающая конференция разработчиков высоконагруженых систем.
  4. WhileRider. Профессиональная конференция по управлению и предпринимательству.
  5. Intersystems CacheConf. Конференция по различным типам доступа данных и быстрой разработке.
Подробнее можно ознакомиться с фестивалем на сайте. Я же посещал секцию rootconf, посмотрел на админов и попытался прочувствовать их проблемы посмотреть на эксплуатацию глазами разработчика.

DevOps, мониторинг, метрики, алерты!


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

Конференция расширила мой кругозор, и я пополнил багаж знаний.
  • Открыл для себя пару новых терминов типа devops, гистерезис триггеров. 
  • Получил ссылки на незнакомые ранее для меня системы мониторинга: okmeter, graphite.
  • Познакомился с интересными людьми.
  • Понял, что разработчики и служба эксплуатации должны стать лучшими друзьями для более эффективной работы.
  • И многое другое.

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

воскресенье, 16 ноября 2014 г.

Очень вкусный фрукт GUAVA. Мой доклад на первой встрече JUG.SEV

14.11.2014 прошла первая встреча JUG.SEV - сообщества java разработчиков Севастополя. Мне посчастливилось выступить на ней с докладом.

Слайды:


Видео: