Тестируя Kafka: как я учился |
19.02.2025 00:00 |
Когда я приступил к задаче тестирования Kafka, то осознал, что мне нужно вникнуть во множество тем. В ходе работы над задачей я выкроил время на активное изучение этих тем, а также дополнительных, вскрывшихся в ходе работы – например, AWS. Эта статья описывает эти темы. Я не буду детально вдаваться в них (возможно, напишу про них позже) – вместо этого сконцентрируюсь на том, как я учился в ходе этого проекта.
Об этих вопросах я знал с самого начала. Потом появились дополнительные, включая:
Примечание: ниже все сгруппировано по теме или контексту, а не хронологически. Как я изучал то, что нужно для тестирования KafkaЯ заранее знал, что мне придется многое изучить. Поэтому я решил потратить время и деньги еще до того, как подписан контракт, чтобы сразу же смочь приносить пользу. Слава богу, все ПО было в свободном доступе и, как правило, с открытым исходным кодом – это означало, что мы могли читать код, разбираясь в нем, и даже изменять его, чтобы упростить работу и обучение. Большая часть обучения шла через практику – мы с коллегами пытались что-то сделать в различных тест-окружениях и учились по ходу дела, наблюдая и экспериментируя (я упомяну о некоторых тест-окружениях и, возможно, расскажу о них подробнее в следующих статьях). Я открыл для себя и впервые оценил размах, глубину и пользу платных онлайн-курсов. Они не всегда так же хороши, как коммерческие обучающие курсы с инструкторами, доступными в любой момент, но их разнообразие, цена и доступность стали открытием для меня – стоимость всех купленных мной курсов была менее 65 евро (90 долларов). Я также много читал – онлайн я нашел множество статей и постов, включая ряд ключевых статей от прямых участников разработки и тестирования Kafka. Я также искал научные статьи. Нашел лишь несколько – очень жаль, потому что хорошо написанное академическое исследование великолепно добавляет коммерческие или личные неформальные обзоры. Мы потратили много времени на чтение исходного кода, а затем модификации кода, который, как мы рассчитывали, нам подойдет, когда будет адаптирован. К счастью, клиент был согласен на выкладку нашей неконфиденциальной работы в публичный доступ под открытой лицензией. UdemyЯ впервые воспользовался курсами udemy несколько лет назад, пытаясь изучить ряд технологий. Тогда я не извлек особой пользы, но частые скидки сделали цены достаточно низкими, чтобы меня это не огорчало. В этот раз все было совсем не так – курсы были очень полезными и релевантными. Богатство, количество и глубина доступных курсов потрясает, и там достаточно качественных курсов по релевантным темам (особенно по Kafka, AWS, и в меньшем объеме – VMWare), чтобы быстро, на практике прогрессировать в изучении этих ключевых тем. Я оценил возможность посмотреть не только вводные видео, но также примеры более продвинутых разделов каждого из потенциально подходящих курсов. Это бесплатно, не занимает много времени и дает представление о том, подходит ли мне подход и материал автора, учитывая то, что я уже знаю, и то, чего хочу добиться. Я платил за курс, если думал, что извлеку из него достаточно пользы. Стоимость крайне низка по сравнению с потенциальной ценностью полученных знаний. Иногда даже плохо сделанные курсы помогали мне понять, какие концепции легко спутать, какие плохо поняты. Если автор путался сам, вероятно, я запутаюсь тоже. Больше всего пользы я получил от этих курсов:
У первых трех один и тот же автор, Штефан Маарек (Stephane Maarek). Он был особенно интересным. Он также с удовольствием помогал и отвечал на мои вопросы. Опубликованные статьи и посты в блогахНе буду перечислять тут статьи и посты. Их слишком много, и не думаю, что пачка ссылок вам сильно поможет. В плане обучения ключевым камнем преткновения было определение, подходят ли статьи для того, чего я хочу добиться, учитывая тестируемую нами версию Kafka. К примеру, многие из них были написаны до выхода Kafka 0.10, уже устарели, а воспроизводить тесты и примеры было слишком времязатратно, чтобы оправдать потраченные усилия. К тому же применение Kafka в нашем проекте освещалось редко, и мы обнаружили, что ключевые настройки, необходимые нам, сильно меняли поведение Kafka – то есть многие статьи и посты были не применимы к нашей ситуации напрямую. Я использовал инструмент Zotero для управления своими заметками и ссылками (я пользовался им несколько лет для диссертации) – там записано больше сотни статей. Я прочитал куда больше в ходе работы над задачей – возможно, тысячу. Академические исследованияЛучшая найденная мной статья сравнивает Kafka и RabbitMQ в условиях промышленного исследования. Доступно несколько версий. Одобренная к публикации статья находится по ссылке https://doi.org/10.1145/3093742.3093908, однако за доступ, возможно, придется заплатить, если у вас нет подписки. Последняя версия - https://arxiv.org/abs/1709.00333v1, ее можно свободно загрузить и прочитать. Тест-окруженияБуду краток, так как собираюсь подробно написать о тест-окружениях позже. Наши тест-окружения варьировали: кластеры Raspberry Pi (скопированные при помощи MirrorMaker), контейнеры Docker, дешевые физические серверы на ESXi, несколько AWS-окружений. На Docker и AWS часто ссылаются – ряд курсов, которые я упомянул выше, использует AWS в качестве машины. |