Size: a a a

2020 April 07
middlejava
#kafka #ssl #translation

Have translated into Russian basics of Kafka SSL connectivity
Master article https://docs.confluent.io/current/kafka/authentication_ssl.html

\\\\\

Перевел на русский язык основные тезисы SSL подключения к Kafka:

Обзор SSL

С помощью SSL-аутентификации сервер аутентифицирует клиента (что также называется «двухсторонняя аутентификация»). Поскольку  SSL-аутентификация требует SSL шифрования, то здесь показано, как настроить и то, и другое одновременно, а также представлен суперсет конфигураций, необходимых только для SSL шифрования (https://docs.confluent.io/current/kafka/encryption.html#kafka-ssl-encryption).
По умолчанию Apache Kafka® осуществляет взаимодействие в формате PLAINTEXT, что означает, что все данные передаются в открытом виде. Для шифрования взаимодействия необходимо настроить в вашем развертывании все компоненты платформы Confluent на использование шифрования SSL.
Secure Sockets Layer (SSL) является предшественником Transport Layer Security (TLS) и является устаревшим с июня 2015 года. Однако по историческим причинам Kafka (как и Java) использует в конфигурации и в коде термин/аббревиатуру «SSL» вместо «TLS». В этом разделе используется только аббревиатура «SSL».
Вы можете настроить SSL для шифрования или аутентификации. Можно настроить только SSL-шифрование (по умолчанию SSL-шифрование включает аутентификацию сертификата сервера) и независимо выбрать отдельный механизм аутентификации клиента (например, SSL (https://docs.confluent.io/current/kafka/authentication_ssl.html#kafka-ssl-authentication), SASL (https://docs.confluent.io/current/kafka/authentication_sasl/index.html#kafka-sasl-auth)). Технически, SSL шифрование уже включает однонаправленную аутентификацию, при которой клиент аутентифицирует сертификат сервера. Таким образом, в этом разделе «SSL аутентификация» действительно относится к двухсторонней аутентификации, где брокер также аутентифицирует сертификат клиента.
Включение SSL может повлиять на производительность из-за накладных расходов на шифрование.
SSL использует пары закрытый ключ/сертификат, применяемые во время SSL-рукопожатия.
•   Каждому брокеру требуется собственная пара секретный ключ/сертификат и клиент использует сертификат для аутентификации брокера.
•   Если включена аутентификация клиента, то каждому логическому клиенту требуется пара закрытый ключ/сертификат и брокер использует сертификат для аутентификации клиента.
Вы можете настроить для каждого брокера и логического клиента truststore, который используется для определения того, каким сертификатам (идентификаторам брокера или логического клиента) следует доверять (аутентифицировать их). Truststore можно настроить несколькими способами. Рассмотрим следующие два примера:
•   Truststore содержит один или несколько сертификатов: тогда брокер или логический клиент будет доверять любому сертификату, имеющемуся в truststore.
•   Truststore содержит Центр Сертификации (Удостоверяющий Центр, Certificate Authority (CA)): тогда брокер или логический клиент будет доверять любому сертификату, подписанному by CA в truststore.
Использование метода CA более удобно, поскольку добавление нового брокера или клиента не требует изменений в truststore. Метод CA описан в этой диаграмме (https://github.com/confluentinc/confluent-platform-security-tools/blob/master/single-trust-store-diagram.pdf).
Однако с помощью метода CA Kafka не поддерживает блокировку аутентификации для отдельных брокеров или клиентов, которым ранее доверяли с помощью этого механизма (отзыв сертификата обычно выполняется с помощью списков отзыва сертификатов (Certificate Revocation Lists) или онлайн-протокола состояния сертификатов (Online Certificate Status Protocol)), поэтому для блокировки доступа необходимо полагаться на авторизацию.
С другой стороны, если используется один или несколько сертификатов, блокировка аутентификации достигается удалением сертификата брокера или клиента из truststore.

t.me/middle_java
источник
2020 April 08
middlejava
#education #free #courses #pluralsight

Все курсы Pluralsight (>7000) доступны бесплатно в течение апреля

All Pluralsight courses (>7000) are available for free during April

https://www.pluralsight.com/offer/2020/free-april-month/

t.me/middle_java
источник
2020 April 26
middlejava
#books #java #springboot #springcloud #cloudfoundry #russian

Java в облаке. Spring Boot, Spring Cloud, Cloud Foundry | Бастани Кеннет, Лонг Джош | 2019 год

t.me/middle_java
источник
middlejava
My opinion about this book:
Josh Long's thoughts are hard to understand and verbalized flowery with a lot of rare English words. For sure you listened to his Spring podcasts and familiar with that problem.
At the same time the matters he discovers are absolutelly relevant and pull along with him the rest of the authors.
This book as of 2019 also considers relevant issues both microservices in general and using of Spring for them in particular.
The translation of the book adds misunderstanding to the features of Long's speech, that's why I recommend keep the original book at hand for the case if something is unclear.

\\\\\

Мое мнение о книге:
У Джоша Лонга тяжелый слог и обильное использование редких английских слов. Наверняка вы слушали его подкасты про Spring и сталкивались с этой проблемой.
Вместе с тем рассматриваемые им темы совершенно актуальны и в целом тянут за собой остальных авторов.
Данная книга по состоянию на 2019-й год также рассматривает актуальные вопросы как микросервисов в целом, так и использование Spring в частности.
Перевод книги добавляет непонимания к особенностям изложения Лонга, поэтому рекомендую при прочтении держать открытым оригинал и если что-то непонятно, смотреть там.

t.me/middle_java
источник
2020 May 18
middlejava
#springboot #java #spring

15 мая вышла новая версия Spring Boot 2.3.0

-- Поддержка Java 14.
-- Обновление ключевых зависимостей, включая последний релиз семейства Spring Data.
-- Поддержка построения более эффективных Docker образов из коробки (меньше плагинов теперь нужно).
-- Использование /config/ӿ/ на файловой системе для вычитки конфигураций (убирает кучу костылей в Kubernetes деплоях).
-- Реализация graceful shutdown, что очень важно в мире контейнеризации.
-- Liveness и readiness пробы из коробки, что прекрасно для использования Kubernetes.
-- Добавлен еще одна слайс-аннотация для тестирования веб-сервисов WebServiceClientTest.
-- Улучшения actuator для еще большего удобства observability.

Все нововведения здесь:
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.3-Release-Notes#new-and-noteworthy

Прикольная штука поддержка Cloud Native Buildpacks (CNB).
CNB позволяет разработчику не писать и не поддерживать свой собственный Dockerfile. Запуская единственную команду сборки проекта CNB сама определит какие зависимости собрать в образ
https://habr.com/ru/post/485486/
https://www.youtube.com/watch?v=SK6e_ZatOaw

Для миграции рекомендуется использовать spring-boot-properties-migrator.
Он поможет на лету мигрировать некоторые настройки, а также покажет какие существуют потенциальные проблемы.
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.3-Release-Notes#upgrading-from-spring-boot-22

t.me/middle_java
источник
2020 May 27
middlejava
#mongodb #meetup

Друзья, привет!
Вчера ребятами из Яндекса был проведен
"Онлайн-митап о MongoDB".

Материалы вебинара:
-- Видеозапись:
https://www.youtube.com/watch?v=ITHpBscGSTM
-- Презентация и материалы:
https://yadi.sk/d/CdgGP0HXyzX2JQ

На митапе вы узнаете:
-- какие характеристики есть в MongoDB
-- что из того, что вы слышали о ней, миф, а что правда
-- компания Skillaz подробно расскажет об архитектуре своих проектов на базе MongoDB
-- Яндекс.Толока покажет сценарий использования этой БД для реализации производительного буфера при потоковой обработке данных в аналитике

t.me/middle_java
источник
2020 June 11
middlejava
#teambuilding #teammanagement #mentorship #pairprogramming #translation

Have translated into Russian an article
"The Essential Guide to Building Balanced Development Teams".
Master article is https://medium.com/javascript-scene/the-essential-guide-to-building-balanced-development-teams-b051a62acc80

\\\\\

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

-- отсутствие техлида. Формально техлид был. С очень высоким техническим уровнем. Но как руководитель, который мог заниматься ведением и развитием своей группы, он был полный ноль: не умел декомпозировать задачи, распределять их в соответствии с уровнем каждого члена, не занимался обучением группы, контроль деятельности группы осуществлялся в диктаторском режиме, софт скиллы отсутствовали и т.п.
-- большой разрыв между скиллами миддла и сеньорами. То, что было непонятно миддлу, приходилось изучать на 95% самостоятельно, потому что у сеньоров не было времени и желания помогать миддлу в обучении, отсутствовало парное программирование (при этом код-ревью было отличным с технической точки зрения), в результате скорость работы миддла не удовлетворяла руководство, хотя качество его кода было высоким.
-- отсутствие командного духа. Обстановка в группе была нездоровой, общение не партнерское или менторское, а с унижениями, насмешками, ошибки на этапе разработки были непростительны и т.п.

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

Перевод статьи разместил на Хабре
https://habr.com/ru/post/506400.

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

t.me/middle_java
источник
2020 July 28
middlejava
#quarkus #springwebflux #webflux #springboot #spring #rest #yandextank #webinar #russian

Привет!
Сегодня ребята из Мегафона провели вебинар на тему:
Реактивные и нативные приложения на Java Spring и Quarkus

Вебинар получился немного сумбурным в плане объяснения основ и подходов, но крайне интересный и практичный с точки зрения плюсов и минусов различных реализаций одной и той же идеи на Spring MVC, Spring WebFlux, Quarkus в контейнере и Quarkus native.
На сессиях кодинга создали простую REST-ручку на указанных выше стеках и нагрузили получившиеся сервисы yandex-tank'ом.
Что из этого получилось можно увидеть здесь:

https://www.youtube.com/watch?v=OCSgjQBWNwo

t.me/middle_java
источник
2020 July 30
middlejava
#books #java #ocp #oracle #exam #english

Boyarsky J., Selikoff S. - OCP Oracle Certified Professional Java SE 11 Programmer II Study Guide (2020) PDF

The completely-updated preparation guide for the new OCP Oracle Certified Professional Java SE 11 Programmer II exam.
Covers Exam 1Z0-816.

t.me/middle_java
источник
2020 August 04
middlejava
#job #ml #dl #ai #nlp

Контора, в которой я работаю ведет поиск ML/DL специалистов в интереснейший, амбициозный проект с фокусом на NLP.
У нас есть 2 мешка печенек, 75 узлов DGX-2 соединённых шиной Infiniband, 5 вариантов GPT-2, лонгформеры, ресемблайзер и целое множество дистиллированных BERT'ов всех сортов и расцветок, ALBERT, а также ROBERTA, трансформеры с adaptive attention span, NER'ы, Common Crawl и 2 дюжины диалоговых датасетов. Не то чтобы это был необходимый запас для NLP, но если начал собирать дурь, становится трудно остановиться. Единственное, что вызывало у нас опасение — это Mogrifier LSTM. Ничто в мире не бывает более беспомощным, безответственным и порочным, чем LSTM-ные зомби. Мы знали, что рано или поздно мы перейдем и на эту дрянь.
Не стесняйся, присылай свое резюме на ящик
middle.java@mail.ru

t.me/middle_java
источник
2020 August 19
middlejava
#events #springone #kafkasummit

Друзья привет!
Просто напоминаю, если вы вдруг пропустили:
В ближайшие недели состоятся большие информационно-пролетарско-объединяющие события по Spring и Kafka.
Регистрируйтесь бесплатно, подключайтесь, обучайтесь, наслаждайтесь)

Hi friends!
Just a reminder in case you missed it:
In the coming weeks there will start two big events on Spring and Kafka.
Get register for free, involve, learn and get enjoyed)

1. Spring One 2020
September 2 – 3
https://springone.io

2. Kafka Summit 2020
August 24 - 25
https://kafka-summit.org

t.me/middle_java
источник
2020 September 06
middlejava
#books #java #sre #microservices #english

SRE with Java Microservices.
Patterns for Reliable Microservices in the Enterprise.
J. Schneider, 2020

Testing. Continuous integration / delivery. Microservices. It’s not hard to get to production the first time, but the practices above optimize for the many subsequent trips to production. They optimize for cycle time: how quickly can you take an idea and see it delivered into production, from concept to customer?
This book presents a phased approach to building and deploying more reliable Java microservices.

\\\\\

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

t.me/middle_java
источник
2020 September 12
middlejava
#programmersday

День программиста / Programmer day

Поздравляю с нашим праздником!
Желаю ясной головы, вдохновения, комфортной обстановки на работе, понимания со стороны близких! И тогда программирование станет не только работой но и хобби!

\\\\\

Congratulations with our holiday!
Wish you bright mind, inspiration, comfortable working environment, understating by your family! Then programming will become not only a work but also a hobby!

t.me/middle_java
источник
2020 September 18
middlejava
Яндекс.Маркет Java Party

19:05 Как мы с нуля запускали Яндекс.Маркет Аналитику - Андрей Антипов
Про запуск с нуля нового аналитического сервиса. От получения данных до пользовательских графиков. Какие технологии используем и почему.

19:30 Как катать релизы несколько раз в день и спать спокойно - Мария Кузнецова
Про сервис собственной курьерской доставки. Как мониторим приложение и обеспечиваем отказоустойчивость и стабильность при высоких темпах разработки.

20:00 Эксперимент с Kotlin в бэкенде Маркета - Юрий Малинов
Как выбирали, оценивали и взвешивали риски, про наши ожидания и постановку эксперимента. Первые результаты и выводы.

20:30 Руководитель: как им стать и зачем это нужно - Алексей Остриков
Про основные стереотипы о становлении руководителей, как пройти этот путь быстрее. Почему это классно и тяжело одновременно.

21:00 After[Java]Party: общение со спикерами в зум-комнатах
______________________________

🗓 7 октября, начало в 19:00

🌐 ОНЛАЙН

✅ Регистрация на мероприятие

t.me/middle_java
источник
middlejava
Яндекс запустил телеграм-канал с вакансиями для разработчиков

— Свежие вакансии каждый день
— Описания задач, технологий и условий без воды
— Лёгкий поиск по тегам
— Один пост раз в две недели будет посвящён ответам на ваши вопросы о найме и работе в Яндексе

Подписывайтесь

t.me/middle_java
источник
middlejava
#java #jdk #java15 #jdk15 #jep

Java 15 has released
Вышла Java 15


New features / Нововведения:

JEP 339: Edwards-Curve Digital Signature Algorithm (EdDSA)
JEP 360: Sealed Classes (Preview)
JEP 371: Hidden Classes
JEP 372: Remove the Nashorn JavaScript Engine
JEP 373: Reimplement the Legacy DatagramSocket API
JEP 374: Disable and Deprecate Biased Locking
JEP 375: Pattern Matching for instanceof (Second Preview)
JEP 377: ZGC: A Scalable Low-Latency Garbage Collector
JEP 378: Text Blocks
JEP 379: Shenandoah: A Low-Pause-Time Garbage Collector
JEP 381: Remove the Solaris and SPARC Ports
JEP 383: Foreign-Memory Access API (Second Incubator)
JEP 384: Records (Second Preview)
JEP 385: Deprecate RMI Activation for Removal

https://mail.openjdk.java.net/pipermail/announce/2020-September/000291.html

t.me/middle_java
источник
2020 September 21
middlejava
Java MeetUp

1. Как выжать максимум: исследуем контейнеризованное Java-приложение со стороны рантайма - Дмитрий Чуйко, Senior Performance Architect, BellSoft
Как избежать сложной реконфигурации? Как оптимально использовать память? Как сделать так, чтобы сервисы стартовали, работали быстро и не умирали молча? Как строить надёжный контейнер для вашего Java-приложения?

2. Распространенные ошибки при проектировании нового приложения - Маргарита Богданова, Team Lead, Architect, DataArt
Наиболее часто встречающиеся при старте проекта ошибки проектирования java-приложений, которые имеют самую высокую цену.

3. Делаем наши тесты быстрее (юнит тесты со скоростью пули) - Александр Линьков, Tech Lead, Leroy Merlin
Почему долгие тесты это плохо и как они влияют на качество. Что можно сделать для того, чтобы выполнение наших тестов не доставляло нам дискомфорта на примере Spring Boot приложения.


🗓 24 сентября, 18:00-20:00, Четверг

✅ Регистрация на мероприятие

t.me/middle_java
источник
middlejava
#books #russian #architecture #softwaredevelopment

Эволюционная архитектура. Поддержка непрерывных изменений, 2019

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

t.me/middle_java
источник
2020 September 25
middlejava
​​#webflux #projectreactor #spring #reactiveprogramming

Cancel, Retry and Timeouts: Keep Your Sanity Thanks to Reactive Programming
Отмены, повторы и таймауты: сохраните рассудок благодаря Реактивному Программированию


Have you ever had to orchestrate multiple tasks (some of which are asynchronous) and compose them together?
As soon as latency comes into play—a database or HTTP request for instance—composing rhymes with complexity.
Worse: One cannot trust the network, and so you generally need to think about timeouts.
Under some conditions, you might also want to cancel part or all of the processing, perform calls in parallel, or introduce retries in case of transient errors (preferably without overloading the remote server in a retry storm)...
How to manage all this at various levels of granularity in a callback-based or future-based system? It’s a recipe for going insane.
One of the added values of Reactive Programming is how timeout, retry and cancel concepts are first-class citizens.
It naturally takes their propagation to all of the asynchronous processing pipeline into account.
We will present solutions to these themes based on Reactor, and you’ll see it is possible to keep your sanity!

\\\\\

Вам когда-нибудь приходилось управлять работой нескольких задач (некоторые из которых асинхронны) и обеспечивать их одновременную работу?
Как только в игру вступает задержка, например, база данных или HTTP-запрос, с обеспечением одновременной работы начинаются сложности.
Еще хуже, что сети нельзя доверять и поэтому обычно нужно задумываться о тайм-аутах.
При некоторых условиях также может потребоваться отменить всю обработку или ее часть, выполнить вызовы параллельно или использовать повторные попытки в случае возникновения временных ошибок (предпочтительно без перегрузки удаленного сервера при куче ретраев)...
Как работать со всем этим на различных уровнях детализации в системе, использующей коллбеки или фьючи? От этого можно сойти с ума.
Одним из дополнительных преимуществ Реактивного Программирования являются первоклассные реализации концепций таймаута, повтора и отмены.
Они естественно распространяются на весь конвейер асинхронной обработки.
Мы представим решения этих тем на основе Reactor'а и вы увидите, что при этом можно сохранить рассудок!

Slides / слайды:
https://www.slideshare.net/Pivotal/cancel-retry-and-timeouts-keep-your-sanity-thanks-to-reactive-programming

t.me/middle_java @middle_java
источник
2020 October 06
middlejava
#books #russian #education

1400 задач по программированию
Златопольский Д.М. 2020 год


В книге приведено более 1400 задач по программированию. Задачи имеют разный уровень сложности и охватывают большой круг тем – от вычислений по формулам до использования процедур и функций. Решения могут быть реализованы в программе на любом языке – Pascal, Python, С, школьном алгоритмическом языке и др.

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

t.me/middle_java @middle_java
источник