среда, 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.