Gregory Koshelev channel – Telegram
Gregory Koshelev channel
981 subscribers
9 photos
2 files
67 links
Java, Kafka, HighLoad, SRE, распределённые системы и проектирование архитектуры

https://news.1rj.ru/str/chat_GregoryKoshelev for discussions
Download Telegram
26-27 сентября выступлю (да простят меня коллеги-джависты и да поддержат меня коллеги-питонисты) на конференции PiterPy c докладом Apache Kafka для Python-разработчиков.

Что будет в докладе:
— Внутреннее устройство и принцип работы основных компонентов Apache Kafka (иными словами: БАЗА).
— Особенности использования Python-клиента к Apache Kafka (есть из чего выбрать и какие ручки покрутить).
— Разбор основных сценариев использования и best practices (пока не решил: это будет либо часть презентации, либо интерактив с коллегой по Контуру, либо часть дискуссионки — по Кафке она довольно часто выходит долгой).

#анонс #kafka #best_practice #python #piterpy
🔥13👍4
Gregory Koshelev channel
8 июня буду в Челябинске на UWDC с докладом Apache Kafka: погружение на 45 минут. Погружение в Apache Kafka для разработчиков: 1. Внутреннее устройство и принцип работы основных компонентов Apache Kafka. 2. Особенности использования Apache Kafka в различных…
Делюсь видео доклада "Apache Kafka: погружение на 45 минут" на UWDC 2024:
— YouTube: https://youtu.be/V5t_3RxBals
Презентация на GitHub
— Подборка моих докладов про Кафку (на осень 2022): https://news.1rj.ru/str/chnl_GregoryKoshelev/23. В ленте канала можно найти другие релевантные выступления.

#видеозаписи #материалы #kafka #uwdc
🔥29
Материалы к докладу "Система перевода в ведущие инженеры-программисты с промодоками и комиссарами" на DotNext 2023:
Презентация доклада.
— Видео на YouTube.
История проумоушена одного инженера в Google, рассказанная его менеджером. Суть кратко: менеджер помогал инженеру из своей команды подготовить промодок, один из двух инженеров в комиссии при рассмотрении поставил оценку 👎 (это с высокой долей вероятности не позволило бы получить промоушен), менеджер по своей инициативе пошёл общаться с этими комиссаром, и последний в итоге решил поменять решение на 👍, а инженер получил своё повышение.
История одного инженера, который в итоге уволился из Google после нескольких попыток промоушена. Есть перевод этой статьи на Хабре.
— Подробнее про работу LOH в C# можно почитать в этой статье.
— Вынесу основные тезисы из доклада:
* Оценкой инженера по признаку «ведущий или не ведущий» занимается комиссия из ведущих инженеров (не менеджеров!). Комиссия подбирается таким образом, чтобы не было конфликта интересов и учитывалась специализация (например, стек технологий).
* Мы выделяем 4 трека ведущих: тимлид (ответственность за команду и командные процессы), фичалид (project manager на минималках — ведение крупных технических эпиков), техлид (ответственность за техническую составляющую проекта) и «rocket science» (ответвление от техлида — решатель сложных технических задач).
* Чтобы попасть на оценку в комиссию, необходимо написать промодок (и мы не против, если инженеру с этим кто-то поможет, но ждём от инженера умения рефлексировать и рассказывать о своих результатах) и пройти комиссию.
* До начала работы комиссии собираем обратную связь с коллег по тем проектам, которыми занимался кандидат.
* У нас обязательно общение комиссии и кандидата. Благодаря чему, вся эта система не выглядит как чёрный ящик.
Ниже 👇 выгрузка из нашего внутреннего роадмапа развития управленческих компетенций. Без комментариев не самая полезная штука, но позволяет верхнеуровнево оценить глубину (вот это каламбур!) и масштаб компетенций. Среди прочего можно выделить те самые инженерные веточки: тимлидерство, фичалидерство и техлидерство.

#видеозаписи #материалы #dotnext #management #lead
🔥5
Роадмап EngineersManagement.pdf
209.2 KB
Выгрузка из нашего внутреннего роадмапа развития управленческих компетенций. Включает 3 ветки развития "в лида":
— Тимлидерство
— Фичалидерство
— Техлидерство.
Отмечу, что "быть *лидом" не подразумевает наличия у человека всех компетенций из соответствующей ветки. Как и нельзя гарантировать, что будет успешной команда, в которой коллективно закрываются все раскрашенные компетенции

#материалы #management #lead
👍9🔥2
Следующая неделя у меня выходит довольно насыщенной на конференции:
— 15 октября открываем offline Джокера с Алексеем Фёдоровым.
— 16 октября провожу круглый стол по теме Concurrency на Joker с Романом Елизаровым, Александром Ланцовым и Александром Нозиком.
— Позднее в этот же день поучаствую в роли эксперта на keynote от Владимира Ситникова про Обратную совместимость в Java.
— 18 октября на Heisenbug буду экспертом на докладе Алексея Морозова "Приключения хакера на сайтах знакомств".
— И наконец, 19 октября на онлайн-конференции Podlodka Techlead Crew 7 проведу публичное интервью техлида по теме "Надёжности".

По какой из тем было бы интересно почитать материалы?

#анонс #joker #пк #heisenbug #techlead #podlodka #собеседование
🔥17👏4👍1🎉1
23 октября провели внутреннюю конференцию инженеров-программистов, где я выступил в роли программного директора. По обратной связи в ТОПе оказалась фейл-секция из 6 выступлений ребят из Контура и Яндекса, заняв второе место в рейтинге, уступив только эпичной истории переезда всей компании из Slack в Mattermost. Впрочем, это не удивительно: хорошо учиться на ошибках, особенно, если это чужие ошибки. 😀
Во время подготовки было некоторое волнение, поскольку фейл-секцию проводили под конец конференции в формате стендапа, а ещё всё это было под пиво и пиццу. В общем, "шалость удалась".

А за организацию фейл-секции я взялся неспроста: на следующей неделе 13 ноября выступаю на DevOops с историей "Комбо-факапы, или Эффект бабочки-факапницы".

#анонс #пк #кип #devoops #факапы
👍13
У нас тут прошла внутренняя Конференция инженеров-программистов

Что было: доклады, мастер-классы, фейл-секция и некоторое количество lightning talk в перерывах. Пиво, пицца, веселье и возможность поймать обычно занятого на созвонах коллегу. Ведь вы только что вместе послушали доклад про релизный цикл 🤝

Спросили у создателей конференции Гриши Кошелева и Андрея Эйдинова, как и зачем они придумали КИП. И подкрепили отзывами контуровцев.

Фото прилагаются. Ну а то, что было на фейл-секции, остается на фейл-секции 🤐
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21
Публичное собеседование техлида на Podlodka Techlead Crew и дополнительные материалы.

— Видео собеседования на YouTube: https://youtu.be/xcR56HPM51w.
— Репозиторий с примерами архитектур распределённых систем: System Design Primer (в частности, для интервью за основу была взята задача Web Crawler).
8 заблуждений о распределённых вычислениях:
1. Сеть надёжна;
2. Сетевая задержка равна нулю;
3. Пропускная способность не ограничена;
4. Сеть защищена;
5. Топология сети не меняется;
6. Есть один администратор;
7. Транспортные расходы равны нулю;
8. Сеть (и вычислительные узлы) однородна.
— Архитектурные шаблоны в распределённых системах:
* Большой источник материалов по микросервисной архитектуре — https://microservices.io/,
* Сборник Patterns of Distributed Systems (Unmeshi Joshi и Martin Fowler).
— По теме Non-Functional Requirements (NFR):
* статья «10 nonfunctional requirements to consider in your enterprise architecture» (RedHat) ,
* гайд по сбору нефунциональных требований (Microsoft).
— По теме SLA/SLO:
* видео доклада Даниила Марданова «Как внедрить SLO в продукт и получить от этого пользу» на DevOops 2023,
* видео моего доклада «SLA — друг или враг разработчика» на DevOops 2021.
— Полезные ссылки по использованию PostgreSQL:
* документация по High Availability, в частности сравнение подходов по репликации,
* сравнение способов балансировки запросов в PostgreSQL.
— Полезные ссылки про Redis:
* сравнение Redis Cluster и Sentinel,
* пример использования Redis в качестве очереди.
— Использование GeoDNS для минимизации сетевых задержек в крупной геораспределённой системе (особенно актуально в задаче Web Crawler, где необходимо совершать обход множества сайтов, имеющих непредсказуемое географическое распределение):
* документация на GeoIP и GeoLite 2,
* пример определения локации по IP на Java.
— Комментарий про латентность сети. Скорость света в вакууме в полтора раза выше скорости света в оптическом волокне (~300 000 км / с против ~200 000 км / с). В реальности RTT (Round-Trip Time) выходит значительно выше, т.к. нужно учитывать кривизну проложенных оптических магистралей, задержку передающего и маршрутизирующего оборудования:
* RTT Екатеринбург – Москва — 20-30 мс (теоретический минимум исходя из расстояния «по прямой» в 1 400 км в одну сторону — 14 мс),
* RTT Екатеринбург – Лондон (3900 км в одну сторону) составляет 70-75 мс,
* RTT Екатеринбург – Сан-Франциско (~ 11 000 км) — 180-200 мс.
Bloom Filter — вероятностная структура данных, которая упрощает поиск данных в крупных системах (позволяет быстро отсекать походы на диск и/или в сеть туда, где этих данных точно нет, т.е. исключает false negative сценарии, но допускает false positive). Примеры использования: Apache Cassandra и PostgreSQL.

#видеозаписи #материалы #собеседование #архитектура #slo #highload #distributed_systems #techlead #podlodka
🔥214👍3
Завтра я и Андрей Когунь на Podlodka Java Crew выбираем для разработки приложений Spring фреймворк под конкретные задачи:
— Spring (не нуждается в представлении)
Micronaut
Quarkus
Helidon.

По сути в Java-мире две экосистемы для разработки web-сервисов: Spring и Jakarta EE (ex Java EE). И MicroProfile — естественное развитие Jakarta (расширение дополнительными стандартами), нацеленное на разработку микросервисной архитектуры и cloud-native приложений. MicroProfile помимо совместимости с Jakarta EE включает (но не ограничивается) такие компоненты как телеметрия, конфигурирование, JWT, инструменты отказоустойчивости (типа механик повторов запросов, таймаутов, circuit breaker и т.д.) и другие.
Quarkus, Helidon и Micronaut в той или иной степени поддерживают стандарты MicroProfile. Например, Quarkus на 100% совместим с MP 4.1, а Helidon — с MP 5.0, MP 6.0 и MP 6.1.

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

Если говорить не про концептуальные особенности, а архитектурные, то можно обратить внимание на использование HTTP-серверов, основанных на Netty (Quarkus-Vertx, Micronaut и ранее Helidon). Про это имеет смысл написать отдельный пост в контексте моего доклада про Undertow, т.к. доклад уже доступен публично и можно поделиться материалами.

При этом Spring был и остаётся хорошим выбором "по умолчанию" благодаря своей популярности и тому, что внутрь экосистемы затащили практически всё. Любой другой выбор необходимо обосновывать — вот этим и займёмся за круглым столом.

#анонс #java #spring #microprofile #quarkus #helidon #micronaut #netty #vertx
👍13🔥41
Forwarded from Gregory Koshelev
Сижу на чьём-то докладе. Название ещё странное: "Кафка. PRO. ", а дальше в названии то ли "Время умирать", то ли "Время убирать" — шрифт и цвета какие-то убогие — не смог разобрать. Ещё подумал, как Володя Ситников такое пропустил? Но спикер бодро начинает, какие-то вопросы в зал задаёт, а я на них отвечаю. А потом мои же ответы дополняет — да всё складно так выходит, словно мы специально всё это готовили, хотя я его впервые в жизни вижу. Но потом докладчик начал какой-то лютый бред нести (уже не могу восстановить детали — какие-то фантастические сценарии для Кафки придумывал). В итоге я Алексею Андрею Кулешову говорю: "я это слушать больше не могу", и вышел из зала. Захожу в главный зал, а там почему-то выставка (!) унитазов (!), а на сцене Алексей Мерсон (я ещё удивился, почему он пришёл на JPoint, но решил, что его ведущим позвали, а я это пропустил вместе с каким-то синком ПК). В общем, я прохожу мимо всех этих унитазов к первому ряду и спрашиваю:
— Почему тут выставка унитазов?
Лёша со сцены отвечает:
— Какое поколение — такая и выставка.
А я ему тут же:
— Молодое поколение или старое?
После моего вопроса зал ржёт (а я ещё думаю, что шутка норм — надо запомнить).
Тут на сцену поднимаются Андрей Когунь, Алексей Фёдоров и ещё кто-то — типа собрались эксперты, чтобы ответить на вопросы из зала, а зал вопросы почему-то не задаёт. Ну, я руку тяну и обращаюсь к Андрею:
— Андрей, нормально ли вместо вызова Thread.yield делать прогрев?
Андрей берёт микрофон в две руки, смотрит на меня и молчит, и в зале тишина. Я уточняю:
— Ну, прогревочные итерации вызывать вместо метода yield.
Вижу, что и Лёша Мерсон на меня смотрит и не понимает, так я ему объясняю:
— В Java у Thread-а есть метод yield, который подсказывает планировщику, что можно тред снять с выполнения. А раз мы так и так готовы снять тред с выполнения, то почему бы не прогреть вместо этого нужный нам код.
И тут... я просыпаюсь... так и не узнав, что @akogun думает о прогреве вместо Thread.yield.
😁38😱5🥱1
State of Java 2025 на JPoint от Кирилла Толкачева. 3 из 4 используют #kafka! 🤟
😁10🔥63🤡2
На этой неделе идёт онлайн-конференция Podlodka Techlead Crew, посвящённая теме межсервисного взаимодействия. В четверг 10 апреля расскажу про Observability распределённых систем.

Расскажу, как обеспечить высокий уровень Observability распределённых систем с использованием существующих инструментов телеметрии, и на примерах разберём, как управлять ростом когнитивной сложности поддержки больших систем в части мониторинга и поиска корневых причин деградаций.

P.S. Есть ещё один бесплатный билет, чтобы залететь на конференцию. Пишите в комментарии — поделюсь.

#анонс #доклад #podlodka #observability #телеметрия #sre #open_telemetry #moira #graphite #grafana #prometheus #sentry #elastic #kibana #techlead
🔥3🤡32
Материалы по докладу «Observability распределённых систем» на Podlodka Techlead Crew №8:
Презентация доклада на GitHub

— Книги
* Mastering Distributed Tracing
* Distributed Tracing in Practice
* серия «Site Reliability Engineering»

— Доклад «В чём (ещё) польза распределённых трассировок?» (DevOops 2022)
* запись на YouTube
* ссылка на сообщение с материалами

— Доклад про Sentry «Работа над ошибками» (DevOops 2020)
* запись на YouTube
* ссылка на сообщение с материалами

— Доклад «Vostok Hercules: 3 года доставляем телеметрию — полёт нормальный» (JPoint 2022)
* запись на YouTube
* ссылка на тред с материалами

— Доклад «SRE и перформанс, или Когда производительность имеет значение» (DevOops 2023)
* запись на YouTube
* ссылка на сообщение с материалами

Доклады про SLO

— Moira — система алертинга по данным из Prometheus / VictoriaMetrics и Graphite
* репозиторий на GitHub
* документация

— Профилирование приложений на JVM
* запись доклада «Профилирование Java в стиле Linux» (Сергей Мельников, Joker 2024) на YouTube
* презентация доклада «Путеводитель по профилированию приложений на JVM» (Владимир Плизга, JPoint 2025)

— Аннотации (Annotations) — расширенный вид телеметрии (например, события жизненного цикла приложения)
* Аннотации в Grafana
* Аннотации в Elastic APM
* Аннотации в Kibana

OpenTelemetry
* Статья про профили в OTel
* Схема с потоками телеметрии в OTel
* Репозиторий с примерами использования OTel в Java на GitHub
* Инструментация клиентов Apache Kafka при помощи Open Telemetry https://opentelemetry.io/blog/2022/instrument-kafka-clients/

— Методологии проектирования метрик
* 4 Golden Signals (из SRE Book)
* RED method
* USE method

— Экземпляры (Exemplars) — расширенный вид телеметрии, связываемый с метриками
* Описание модели
* Пример использования в Go (Google Cloud Platform)
* Exemplars в Grafana

— Сэмплирование трассировок
* Хвостовое сэмплирование (tail-based sampling) в OTel
* Документация и настройка
* Issue на GitHub про проблему сэмплирования связываемых трассировок (трассировки связываются через Span Link)

— Создание метрик из трассировок
* Статья про использование коннектора SpanMetrics
* Описание коннектора в репозитории на GitHub

— OpenTelemetry Collector — компонент для обработки и передачи телеметрии
* Архитектура
* Масштабирование

#материалы #видеозаписи #книги #moira #distributed_systems #телеметрия #open_telemetry #observability #podlodka #techlead #best_practice
🔥18👍7🤡31👎1
На следующей неделе 29 мая на Podlodka Java Crew №6 рассказываю вводный курс по микробенчмаркам с использованием JMH.

Что будет в докладе:
— Разбор базовых правил написания микробенчмарков на Java/JVM
— Крэш-курс по JMH (quick start, основные фичи, best bractice)
— Разбор множества примеров микробенчарков.

#анонс #доклад #podlodka #java #jvm #performance #jmh #best_practice
😢190👎159😱156🔥14👍4🤡21
За последние полгода много чего интересного было и есть чем поделиться — постараюсь за октябрь наверстать упущенное.

Ну, а пока анонсы предстоящей недели:
С 13 по 17 октября пройдёт онлайн-конференция Podlodka Techlead Crew №9, где я и другие коллеги по программному комитету готовим неделю "Архитектурных антипаттернов" (и паттернов тоже). У меня остался один бесплатный билет на конференцию, которым готов поделиться — пишите в комментарии (достанется первому).
17-18 октября будет Java-конференция Joker, где я не только в роли ПК, но и в роли эксперта на докладе, где есть Кафка (😅), и спикера на дискуссии про новинки Java ("Горячие JEP'ы 25: юбилейное").
19-20 октября будет конференция по тестированию Heisenbug, куда меня позвали экспертом на пару докладов.

#анонс #podlodka #joker #heisenbug #пк
😈37🤮36💔35🥱31💩29👎28🍌27🤬25😢24🖕23😡23
Материалы по докладу «JMH: вводный курс по микробенчмаркам» с JPoint 2025:
— Запись доклада на Youtube: https://youtu.be/yjTnuRHtcYw
Презентация доклада
Ссылка на примеры микробенчмарков в репозитории JMH
Репозиторий jmh-crash-course с дополнительными примерами микробенчмарков (из доклада)
Оригинальная статья (PDF) Дональда Кнута, откуда пошла мода на «Premature optimization is the root of all evil»
Статья «Java theory and practice: Anatomy of a flawed microbenchmark» от Brian Goetz (Ссылка ведёт на webarchive, потому что IBM сломали все старые статьи)
Заметка с 8 правилами по написанию микробенчмарков от John Rose
Статья «Avoiding Benchmarking Pitfalls on the JVM» от Julian Ponge
Caliper — альтернативный инструмент для написания микробенчмарков на Java, а также пост Алексея Шипилёва, почему не надо его использовать 😅 (ссылка на пост есть прямо в README Caliper)
— Конечно же, блог Алексея Шипилёва — полезно для всех, кто интересуется темой перформанса и внутрянки JVM, в частности статья «Nanotrusting nanotime»
Запись доклада Алексея Шипилёва «(The Art of) (Java) Benchmarking II»
Запись доклада Алексея Шипилёва «Java Benchmarking: как два таймстампа прочитать!»
— Гигиенический минимум «6 аннотаций» для вашего микробенчмарка:

@Fork 
@Warmup
@BenchmarkMode
@State
@Measurement
@OutputTimeUnit

— Для дальнейшего изучения:
* Статья про чёрную дыру в JMH от Алексея Шипилёва
* jcstress (Java Concurrency Stress) — инструмент для поиска concurrent-ошибок
* JLBH (Java Latency Benchmark Harness) — инструмент для измерения latency в Java-приложениях.

#доклад #видеозаписи #материалы #jmh #best_practice #jvm #java #performance #тестирование
💔131🤬126👎124😢121🔥13❤‍🔥3👍1😱1🫡1
За последние несколько дней было три атаки ботов на канал. Самая масштабная была позавчера (13 октября): 1к+ ботов подписались, поставили рандомных реакций (особенно любят какашки и слёзы). Вчера исчезли оставшиеся боты (выпилены из телеги?), а какашки реакции остались. На данный момент цель акции не ясна, но мы продолжаем следить за ситуацией. ✍️

На публикацию материалов это никак не повлияет. Из ближайшего планирую написать про:
Observability распределённых систем (по мотивам доклада с DevOops, сильно переработанная версия с Podlodka Techlead Crew, материалы предыдущей версии тут).
— Заметка про LTS-версии Java (в первую очередь про мотивацию перехода на Java 25 не только для Java-программистов, но и для тех, кто эксплуатирует Кассандры, Кафки, Эластики и другие инструменты, написанные на Java).
— Подборка материалов про Apache Kafka.
— Заметка про Joker 2025 (интересные доклады, инсайты по мотивам предстоящей конференции).

#офтоп #анонс
👍25💯5🤝2🤔1
Позвали на ближайшую онлайн-конференцию Podlodka Java Crew рассказать про переход на LTS-версию Java 25.
Своему выступлению дал название "Есть время объяснять, переходим на Java 25". Планирую расскзаать, почему Java 25 — подходящий релиз для миграции* не только для Java-программистов, но и для тех, кто эксплуатируют различные инструменты, написанные на Java (это различные Кассандры, Кафки, Эластики).

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

*) спойлер: далеко не каждый такой инструмент готов сейчас к миграции. Это тоже обсудим.

#анонс #доклад #java #podlodka
🔥22👍2
Небольшая заметка про спортивное программирование.

Завершился финал Северной Евразии по спортивному программированию в рамках ICPC 2026:
— Всего участвовало 318 команд из России, Беларуси, Средней Азии и Закавказья.
— Первые три места заняли команды ВШЭ (Москва).
— Среди российских команд в ТОП-30 попали 4 команды не из Москвы и Санкт-Петербурга: ЧелГУ (Челябинск) — 7 место, НГУ (Новосибирск) — 8 место, УрФУ (Екатеринбург) — 19 и 28 места.
— На финал ICPC 2026 от североевразийского региона поедут 16 команд, среди которых 11 — команды российских вузов (от одного вуза может поехать только одна команда).

Таблица с результатами финала тут: https://nerc.itmo.ru/archive/2025/standings.html

#icpc
🔥5😍4👍2