Ни одно серьезное приложение не обходится без логирования, будь то сайтик, GUI или даже что-нибудь под Android. В мире Java ситуация с логированием на первый взгляд несколько запутанная. Есть какие-то SLF4J, какой-то Logback, зачем-то нужно создавать XML-файлы, вот это все. Но, как это часто бывает, если сесть, и не спеша во всем разобраться, на самом деле все оказывается очень просто и логично.
Я потихоньку слежу за развитием языка Go и в последнее время он начинает нравится мне все больше и больше. Недавно дошли руки написать небольшую программку, генерирующую шоуноты к подкасту по списку ссылок. Ну и, поскольку это все-таки Go, программка была сделана многопоточной.
Некоторое время назад мы с вами успешно разобрались, что такое Cassandra, а также как установить и настроить Cassandra-кластер в облаке от Amazon. В чем мы не разобрались, это в том, как использовать Cassandra в наших программах. Настало время исправить столь вопиющую несправедливость!
В опросе, ссылка на который была приведена в предыдущих «находках в сети», всего приняло участие более 500 человек. Из них 93% проголосовали за то, что линкоблог нужен и закрывать его нельзя. А значит, в обозримом будущем в начале каждого нового месяца вас ждет очередная подборка интересных ссылок. Предыдущие выпуски: июнь 2015, май 2015, апрель 2015, март 2015.
В этот раз я сосредоточил свое внимание на книгах, посвященных Cassandra и Couchbase, так как мне это сейчас нужно по работе. Но также не обошлось без книг и на другие интересные темы. Предыдущие мои рецензии на прочитанные книги вы найдете здесь: одиннадцатый десяток, десятый десяток, девятый десяток, восьмой десяток.
Property-based тесты — довольно простая, но очень полезная штука. Идея в следующем. Вы описываете инвариант в стиле «для любых данных, таких, что … выполняется условие …». При этом, в отличие от обычных тестов, вы не задаете явно все тестовые примеры, а только описываете свойства, которым они должны удовлетворять. Сами же примеры генерируются автоматически фреймворком для property-based тестирования. Если после определенного числа прогонов со случайными данными, удовлетворяющих описанию, условие действительно выполняется, тест считается пройденным. Иначе фреймворк пытается как можно сильнее сжать (shrink) пример, на котором тест завалился, после чего выводит его и завершает тест с ошибкой.
RabbitMQ — приложение, предоставляющее шину для обмена сообщениями по протоколу AMQP. Написан «кролик» на Erlang, а следовательно автоматически масштабируем, отказоустойчив и учится за две недели :) RabbitMQ используют в таких компаниях, как VMware, Mozilla и AT&T, а также в бесчисленном количестве веб-сайтов. В этой заметке мы попытаемся разобраться, для каких практических задач нужен RabbitMQ, а также как поднять RabbitMQ-кластер в облаке Amazon’а.
В последнее время я стал получать много писем от посетителей и постоянных читателей этого блога. Часто это одни и те же вопросы с несущественными вариациями. Для экономии времени я решил написать эту заметку с ответами на наиболее часто задаваемые вопросы.
На момент написания этих строк существует как минимум два SDK для работы с Couchbase на языках под JVM — как бы старый SDK 1.4 и новый SDK 2.1. SDK версий 1.x основан на spymemcached, и потому практически такой же, включая всякие некрасивости вроде преобразований asInstanceOf. А вот SDK версий 2.x стильный, модный, молодежный, c RxJava внутри.
Любые сайтики и бэкенды должны писать метрики, это бесспорно. Однако возникает вопрос, куда именно их писать. Есть неплохие SaaS решения, например, Datadog. Но Datadog на момент написания этих строк стоял 15$ в месяц за один хост. При определенном количестве хостов в какой-то момент вы можете обнаружить, что 30% стоимости всей инфраструктуры приходится на метрики. В связи с чем возникает желание перевести все на self hosted решение. О том, как поднять такой вот self hosted недо Datadog, и пойдет речь в посте.