Я боялся Kafka гораздо больше, чем она этого заслуживала.
Kafka оказалась проще, чем я думал 🤔
Честно говоря, я долго боялся даже подступиться к Kafka.
Постоянно слышал про неё на конференциях, в вакансиях и на собеседованиях. В голове сформировался образ какой-то огромной и страшной технологии из мира микросервисов и Enterprise-разработки.
Kafka. Event Streaming Platform. Партиции. Оффсеты. Consumer Groups. Лидеры. Реплики.
Чем больше незнакомых слов я слышал, тем сильнее казалось:
"Мне до этого ещё расти и расти. Мне бы пока CRUD нормально писать."
Но со временем начал замечать, что Kafka встречается всё чаще. А окончательно задумался после одного собеседования, где не смог ответить ни на один вопрос по этой теме и даже не смог найти ошибку в коде, связанном с Kafka.
Тогда понял: бояться можно бесконечно, но лучше хотя бы попробовать разобраться.
Сначала было много теории.
Смотрел конференции. Читал статьи. Пытался понять, что вообще происходит внутри.
Но чем больше изучал, тем сильнее появлялось ощущение, что за страшными словами скрывается довольно понятная идея.
В какой-то момент решил: хватит читать, пора трогать руками.
Поднял Kafka через Docker Compose. Написал простого Producer и Consumer.
И дальше началась классика:
- ничего не получается - почему оно не работает? - где ошибка? - как это вообще связать в одну систему?
А потом случился тот самый момент.
Producer отправляет сообщение.
Смотрю в другую консоль.
Consumer это сообщение читает.
И первая мысль была:
"Да ну... Так вот как это работает?"
После этого ещё минут пятнадцать просто сидел и игрался с сообщениями, перезапускал сервисы, смотрел на оффсеты и пытался понять, что происходит внутри.
Наверное, последний раз такой восторг я испытывал в начале изучения программирования, когда каждая новая технология открывала какой-то новый взгляд на разработку.
Что я понял после первого знакомства с Kafka?
Во-первых, она оказалась не такой страшной, как я представлял.
Во-вторых, Kafka не заменяет REST API.
До знакомства с ней мне казалось, что это какая-то альтернативная модель взаимодействия между сервисами.
Сейчас понимаю, что эти подходы могут отлично дополнять друг друга и решать разные задачи.
И самое интересное - я начал немного лучше понимать, как устроены современные системы.
Не только в формате:
Пользователь → Frontend → Backend → База данных
А в формате множества сервисов, событий и асинхронного взаимодействия между ними.
Конечно, я пока только в начале пути.
Я ещё не работал с Kafka в реальных проектах, не настраивал сложные сценарии и только начинаю разбираться в таких вещах, как Outbox Pattern, Consumer Groups и другие особенности.
Но главное открытие для меня оказалось простым:
Иногда технология кажется страшной ровно до того момента, пока не попробуешь её руками.
А у вас была технология, которую вы долго откладывали изучать, а потом удивились, что всё не так страшно, как казалось?
#dotnet #backend #apachekafka #csharp #softwareengineering #programming