เบ›เบฐเบชเบปเบšเบเบฒเบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบเบฑเบš API asynchronous เปƒเบ™ Kafka

เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เบšเปเบฅเบดเบชเบฑเบ”เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเป€เบŠเบฑเปˆเบ™ Lamoda, เบ—เบตเปˆเบกเบตเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบ™เบซเบผเบฒเบเบชเบดเบšเปเบซเปˆเบ‡, เบ›เปˆเบฝเบ™เปเบ›เบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ‚เบญเบ‡เบ•เบปเบ™เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ? เปเบฎเบ‡เบˆเบนเบ‡เปƒเบˆเบชเบฒเบกเบฒเบ”เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบขเปˆเบฒเบ‡เบชเบดเป‰เบ™เป€เบŠเบตเบ‡: เบˆเบฒเบเบ™เบดเบ•เบดเบเปเบฒเบเบฑเบšเบ„เบงเบฒเบกเบ›เบฒเบ–เบฐเบซเบ™เบฒเบ—เบตเปˆเบˆเบฐเบ—เบปเบ”เบฅเบญเบ‡เบ›เบฐเบเบปเบ”เบขเบนเปˆเปƒเบ™เบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ—เบฑเบ‡เบซเบกเบปเบ”.

เปเบ•เปˆเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ™เบฑเบšเป„เบ”เป‰เบเปˆเบฝเบงเบเบฑเบšเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก. Sergey Zaika เบˆเบฐเบšเบญเบเป€เบˆเบปเป‰เบฒเบงเปˆเบฒเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบŠเบฐเบ™เบฐเบซเบเบฑเบ‡เป„เบ”เป‰เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” API เบ—เบตเปˆเบ‚เบฑเบšเป€เบ„เบทเปˆเบญเบ™เป€เบซเบ”เบเบฒเบ™เปƒเบ™ Kafka (เบซเบ™เป‰เบญเบ). เปเบ™เปˆเบ™เบญเบ™, เบเบฑเบ‡เบˆเบฐเบกเบตเบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบฑเบเบขเบฒเปƒเบซเบเปˆเปเบฅเบฐเบเบฒเบ™เบ„เบปเป‰เบ™เบžเบปเบšเบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆ - เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบšเปเปˆเบกเบตเบžเบงเบเบกเบฑเบ™.

เบ›เบฐเบชเบปเบšเบเบฒเบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบเบฑเบš API asynchronous เปƒเบ™ Kafka

เบเบฒเบ™เบ›เบฐเบ•เบดเป€เบชเบ”เบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบš: เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเป€เบญเบเบฐเบชเบฒเบ™เบˆเบฒเบเบเบญเบ‡เบ›เบฐเบŠเบธเบกเบ—เบตเปˆ Sergey เป„เบ”เป‰เบˆเบฑเบ”เบ‚เบถเป‰เบ™เปƒเบ™เป€เบ”เบทเบญเบ™เบžเบฐเบˆเบดเบ 2018 เปƒเบ™ HighLoad++. เบ›เบฐเบชเบปเบšเบเบฒเบ™เบชเบปเบ”เบ‚เบญเบ‡ Lamoda เบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Kafka เป„เบ”เป‰เบ”เบถเบ‡เบ”เบนเบ”เบœเบนเป‰เบŸเบฑเบ‡เบšเปเปˆเบซเบ™เป‰เบญเบเบเปˆเบงเบฒเบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบญเบทเปˆเบ™เป†เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เบงเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ”เบตเป€เบฅเบตเบ”เบ‚เบญเบ‡เบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบฅเบฐเบ„เบงเบ™เบˆเบฐเบŠเบญเบเบซเบฒเบ„เบปเบ™เบ—เบตเปˆเบกเบตเปƒเบˆเบ”เบฝเบงเบเบฑเบ™, เปเบฅเบฐเบœเบนเป‰เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ‚เบญเบ‡ HighLoad++ เบˆเบฐเบชเบทเบšเบ•เปเปˆเบžเบฐเบเบฒเบเบฒเบกเบชเป‰เบฒเบ‡เบšเบฑเบ™เบเบฒเบเบฒเบ”เบ—เบตเปˆเป€เบญเบทเป‰เบญเบญเปเบฒเบ™เบงเบ.

เบเปˆเบฝเบงเบเบฑเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™

Lamoda เป€เบ›เบฑเบ™เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเบญเบตเบ„เบญเบกเป€เบกเบตเบŠเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ—เบตเปˆเบกเบตเบชเบนเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เปเปˆเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡, เบšเปเบฅเบดเบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡ (เปเบฅเบฐเบซเบผเบฒเบเบชเบฒเบ‚เบฒ), เบชเบฐเบ•เบนเบ”เบดเป‚เบญเบฎเบนเบšเบžเบฒเบš, เบ„เบฑเบ‡เบชเบดเบ™เบ„เป‰เบฒเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ, เปเบฅเบฐเบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบŠเบญเบšเปเบงเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เบกเบตเบซเบฅเบฒเบเบชเบดเบšเบงเบดเบ—เบตเบเบฒเบ™เบŠเปเบฒเบฅเบฐเป€เบ‡เบดเบ™, เบ„เบนเปˆเบฎเปˆเบงเบกเบ‡เบฒเบ™ b2b เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเปƒเบŠเป‰เบšเบฒเบ‡เบซเบผเบทเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบฅเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบฎเบนเป‰เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเบเปˆเบฝเบงเบเบฑเบšเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, Lamoda เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบขเบนเปˆเปƒเบ™เบชเบฒเบกเบ›เบฐเป€เบ—เบ”เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบชเบฐเบซเบฐเบžเบฑเบ™เบฅเบฑเบ”เป€เบŠเบเปเบฅเบฐเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เปƒเบ™เบˆเปเบฒเบ™เบงเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เบญเบฒเบ”เบˆเบฐเบกเบตเบซเบผเบฒเบเบเปˆเบงเบฒเบฎเป‰เบญเบเบงเบดเบ—เบตเบ—เบตเปˆเบˆเบฐเบเปเบฒเบซเบ™เบปเบ”เบ„เปˆเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบซเบกเปˆ, เป€เบŠเบดเปˆเบ‡เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบเบฒเบ™เบŠเปˆเบงเบเป€เบซเบผเบทเบญเบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบซเบผเบฒเบเบชเบดเบšเปเบซเปˆเบ‡เบ—เบตเปˆเบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ•เบดเบ”เบ•เปเปˆเบชเบทเปˆเบชเบฒเบ™เปƒเบ™เบ—เบฒเบ‡เบ—เบตเปˆเบšเปเปˆเบŠเบฑเบ”เป€เบˆเบ™. เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰เบเบฑเบ‡เบกเบตเบฅเบฐเบšเบปเบšเบชเบนเบ™เบเบฒเบ‡เบ—เบตเปˆเบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ•เบปเป‰เบ™เบ•เปเปเบกเปˆเบ™เบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบšเบ„เปเบฒเบชเบฑเปˆเบ‡. เบžเบงเบเป€เบฎเบปเบฒเป‚เบ—เบซเบฒเบ™เบฒเบ‡ BOB, เบ‚เป‰เบญเบเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ™เบฒเบ‡.

เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบ”เป‰เบงเบ API เบ—เบตเปˆเบ‚เบฑเบšเป€เบ„เบทเปˆเบญเบ™เป€เบซเบ”เบเบฒเบ™

เบ„เบณ เบงเปˆเบฒเป€เบซเบ”เบเบฒเบ™เบ—เบตเปˆเบ‚เบฑเบšเป€เบ„เบทเปˆเบญเบ™เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ–เบทเบ hackneyed; เบ•เบทเปˆเบกเบญเบตเบ เปœเป‰เบญเบ เปœเบถเปˆเบ‡ เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐ เบเบณ เบ™เบปเบ”เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบงเปˆเบฒเบชเบดเปˆเบ‡เบ™เบตเป‰ เปเบฒเบ เบ„เบงเบฒเบกเบงเปˆเบฒเปเบ™เบงเปƒเบ”. เบ‚เป‰เบญเบเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบชเบฐเบžเบฒเบšเบเบฒเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบปเบ”เบฅเบญเบ‡เปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™ API เบ—เบตเปˆเบ‚เบฑเบšเป€เบ„เบทเปˆเบญเบ™เป‚เบ”เบเป€เบซเบ”เบเบฒเบ™เปƒเบ™ Kafka.

เบ›เบฐเบชเบปเบšเบเบฒเบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบเบฑเบš API asynchronous เปƒเบ™ Kafka

เปƒเบ™เบฎเป‰เบฒเบ™เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ™เบญเบเบˆเบฒเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบฅเบนเบเบ„เป‰เบฒเบˆเปˆเบฒเบ, เบกเบตเบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ—เบตเปˆเบฎเป‰เบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบชเบดเบ™เบ„เป‰เบฒเบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบฅเบนเบเบ„เป‰เบฒ. เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบตเปˆเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบชเบฑเป‰เบ™: เบžเบงเบเป€เบฎเบปเบฒเบŠเบตเป‰เปเบˆเบ‡เบ‚เปเป‰เบกเบนเบ™, เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™, เปเบฅเบฐเป‚เบญเบ™เป€เบ‡เบดเบ™.

เปเบ•เปˆเบเบฒเบ™เบเบฑเบšเบ„เบทเบ™เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบเบเป‰เบญเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบเบปเบ”เบซเบกเบฒเบ, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ” microservice เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบชเปเบฒเบฅเบฑเบšเบกเบฑเบ™.

เบ›เบฐเบชเบปเบšเบเบฒเบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบเบฑเบš API asynchronous เปƒเบ™ Kafka

เปเบฎเบ‡เบˆเบนเบ‡เปƒเบˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ:

  1. เบเบปเบ”เปเบฒเบ FZ-54 - เปƒเบ™เบชเบฑเป‰เบ™, เบเบปเบ”เบซเบกเบฒเบเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบฅเบฒเบเบ‡เบฒเบ™เบเบฑเบšเบซเป‰เบญเบ‡เบเบฒเบ™เบžเบฒเบชเบตเบเปˆเบฝเบงเบเบฑเบšเบ—เบธเบเป†เบ—เบธเบฅเบฐเบเปเบฒเบเบฒเบ™เป€เบ‡เบดเบ™, เบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™เบœเบปเบ™เบ•เบญเบšเปเบ—เบ™เบซเบผเบทเปƒเบšเบฎเบฑเบšเป€เบ‡เบดเบ™, เบžเบฒเบเปƒเบ™ SLA เบชเบฑเป‰เบ™เบžเปเบชเบปเบกเบ„เบงเบ™เบ‚เบญเบ‡เบชเบญเบ‡เบชเบฒเบกเบ™เบฒเบ—เบต. เบžเบงเบเป€เบฎเบปเบฒ, เปƒเบ™เบ–เบฒเบ™เบฐเบ—เบตเปˆเป€เบ›เบฑเบ™เบšเปเบฅเบดเบชเบฑเบ”เบญเบตเบ„เบญเบกเป€เบกเบตเบŠ, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบซเบผเบฒเบ. เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™, เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเปƒเบซเบกเปˆ (เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปƒเบซเบกเปˆ) เปเบฅเบฐเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เปƒเบ™เบ—เบธเบเบฅเบฐเบšเบปเบšเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡.
  2. เปเบšเปˆเบ‡ BOB เป€เบ›เบฑเบ™เป‚เบ„เบ‡เบเบฒเบ™เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡เบšเปเบฅเบดเบชเบฑเบ”เป€เบžเบทเปˆเบญเบšเบฑเบ™เป€เบ—เบปเบฒ BOB เบˆเบฒเบเบˆเปเบฒเบ™เบงเบ™เบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบซเบผเบฑเบเปเบฅเบฐเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เป‚เบ”เบเบฅเบงเบก.

เบ›เบฐเบชเบปเบšเบเบฒเบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบเบฑเบš API asynchronous เปƒเบ™ Kafka

เปเบœเบ™เบงเบฒเบ”เบ™เบตเป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบฅเบฐเบšเบปเบš Lamoda เบ•เบปเป‰เบ™เบ•เป. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบชเปˆเบงเบ™เปƒเบซเบเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปเบกเปˆเบ™เบซเบผเบฒเบเบเบงเปˆเบฒ constellation เบ‚เบญเบ‡ 5-10 microservices เบ›เบฐเบกเบฒเบ™ monolith เบซเบปเบ”เบ•เบปเบง. เบžเบงเบเบกเบฑเบ™เป€เบ•เบตเบšเปƒเบซเบเปˆเบŠเป‰เบฒเป†, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบžเบฐเบเบฒเบเบฒเบกเป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเบกเบฑเบ™เบ™เป‰เบญเบเบฅเบปเบ‡, เป€เบžเบฒเบฐเบงเปˆเบฒเบเบฒเบ™ เบ™เบณ เปƒเบŠเป‰เบŠเบดเป‰เบ™เบชเปˆเบงเบ™เบ—เบตเปˆเป€เบฅเบทเบญเบเบขเบนเปˆเป€เบ„เบดเปˆเบ‡เบเบฒเบ‡เปเบกเปˆเบ™ เปœเป‰เบฒ เบขเป‰เบฒเบ™ - เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ›เปˆเบญเบเปƒเบซเป‰เบกเบฑเบ™เบฅเบปเป‰เบกเบฅเบปเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบ–เบทเบเบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เบชเบฐเบซเบ‡เบงเบ™เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบ—เบฑเบ‡เบซเบกเบปเบ” (เบฅเบนเบเบชเบญเบ™) เปเบฅเบฐเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเปƒเบ”เป†เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰.

BOB เบเบฑเบ‡เบกเบตเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบซเบผเบฒเบ: เบฅเบฐเบšเบปเบšเบเบฒเบ™เบˆเปˆเบฒเบเป€เบ‡เบดเบ™, เบฅเบฐเบšเบปเบšเบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡, เบฅเบฐเบšเบปเบšเบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™, เปเบฅเบฐเบญเบทเปˆเบ™เป†.

เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™ BOB เปเบกเปˆเบ™:

  • ~ 150k เบชเบฒเบเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ” + ~ 100k เบชเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš;
  • php7.2 + Zend 1 & Symfony เบญเบปเบ‡เบ›เบฐเบเบญเบš 3;
  • > 100 APIs & ~50 เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ‚เบฒเบญเบญเบ;
  • 4 เบ›เบฐเป€เบ—เบ”เบ—เบตเปˆเบกเบตเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡.

เบเบฒเบ™เปƒเบŠเป‰ BOB เปเบกเปˆเบ™เบฅเบฒเบ„เบฒเปเบžเบ‡เปเบฅเบฐเป€เบˆเบฑเบšเบ›เบงเบ”, เบˆเปเบฒเบ™เบงเบ™เบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบกเบฑเบ™เปเบเป‰เป„เบ‚เปเบกเปˆเบ™เบšเปเปˆเบกเบตเปƒเบœเบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒเบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบซเบปเบงเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบกเบตเบซเบผเบฒเบเป€เบซเบ”เบœเบปเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบเบฑเบšเบ„เบทเบ™

เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™, เบชเบญเบ‡เบฅเบฐเบšเบปเบšเบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™: BOB เปเบฅเบฐเบเบฒเบ™เบˆเปˆเบฒเบเป€เบ‡เบดเบ™. เบ”เบฝเบงเบ™เบตเป‰เบกเบตเบญเบตเบเบชเบญเบ‡เบญเบฑเบ™เบ›เบฐเบเบปเบ”เบงเปˆเบฒ:

  • เบเบฒเบ™โ€‹เบšเปโ€‹เบฅเบดโ€‹เบเบฒเบ™โ€‹เบเบฒเบ™โ€‹เป€เบ‡เบดเบ™โ€‹, เป€เบŠเบดเปˆเบ‡โ€‹เบˆเบฐโ€‹เบ”เบนโ€‹เปเบฅโ€‹เบšเบฑเบ™โ€‹เบซเบฒโ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ‡เบปเบšโ€‹เบ›เบฐโ€‹เบกเบฒเบ™โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบชเบทเปˆโ€‹เบชเบฒเบ™โ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบšเปโ€‹เบฅเบดโ€‹เบเบฒเบ™โ€‹เบžเบฒเบโ€‹เบ™เบญเบโ€‹.
  • เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™, เป€เบŠเบดเปˆเบ‡เบžเบฝเบ‡เปเบ•เปˆเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เปƒเบซเบกเปˆเป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰ BOB เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ™เบตเป‰:

เบ›เบฐเบชเบปเบšเบเบฒเบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบเบฑเบš API asynchronous เปƒเบ™ Kafka

  1. BOB เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™.
  2. BOB เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบ™เบตเป‰.
  3. เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบšเบญเบเบเบฒเบ™เบˆเปˆเบฒเบเป€เบ‡เบดเบ™: "เบ„เบทเบ™เป€เบ‡เบดเบ™."
  4. เบเบฒเบ™เบˆเปˆเบฒเบเป€เบ‡เบดเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™.
  5. เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบชเบปเปˆเบ‡เป€เบ‡เบดเบ™เบ„เบทเบ™เปเบฅเบฐ BOB synchronize เบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบšเป€เบŠเบดเปˆเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบ‚เบปเบฒเบ—เบฑเบ‡เบชเบญเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™เบกเบฑเบ™. เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบšเปเปˆเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบ›เปˆเบฝเบ™เป„เบ›เปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒ BOB เบกเบต UI, เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบเบฒเบ™เบšเบฑเบ™เบŠเบต, เปเบฅเบฐเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เบ‚เปเป‰เบกเบนเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบเบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เป‚เบญเบ™เป„เบ”เป‰เบ‡เปˆเบฒเบ. เป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบ™เบฑเปˆเบ‡เบชเบญเบ‡เบ•เบฑเปˆเบ‡.
  6. เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰เบกเบตเบ‡เบปเบšเบ›เบฐเบกเบฒเบ™เบซเบกเบปเบ”เป„เบ›.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเป‰เบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบฅเบปเบ”เป€เบกเป€เบซเบ”เบเบฒเบ™เปƒเบ™ Kafka - event-bus, เป€เบŠเบดเปˆเบ‡เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. Hurray, เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบˆเบธเบ”เบ”เบฝเบงเบ‚เบญเบ‡เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบง (sarcasm).

เบ›เบฐเบชเบปเบšเบเบฒเบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบเบฑเบš API asynchronous เปƒเบ™ Kafka

เบ‚เปเป‰เบ”เบตเปเบฅเบฐเบ‚เปเป‰เป€เบชเบเปเบกเปˆเบ™เบˆเบฐเปเบˆเป‰เบ‡ pretty. เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบฅเบปเบ”เป€เบก, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบกเบฑเบ™. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบญเบญเบเปเบšเบšเบ‡เปˆเบฒเบเบ”เบฒเบ, เปเบ•เปˆเปเบ™เบฐเบ™เปเบฒเบˆเบธเบ”เบ”เบฝเบงเบ‚เบญเบ‡เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบงเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฅเบฐเบšเบปเบš. Kafka เบˆเบฐ crash, เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบˆเบฐเบขเบธเบ”เป€เบŠเบปเบฒ.

API เบ‚เบฑเบšเป€เบ„เบทเปˆเบญเบ™เป€เบซเบ”เบเบฒเบ™เปเบกเปˆเบ™เบซเบเบฑเบ‡

เบ„เปเบฒเบ•เบญเบšเบ—เบตเปˆเบ”เบตเบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบ–เบฒเบกเบ™เบตเป‰เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เป‚เบ”เบ Martin Fowler (GOTO 2017) "เบ„เบงเบฒเบกเปเบฒเบเบซเบผเบฒเบเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเบณเบ—เบตเปˆเบ‚เบฑเบšเป€เบ„เบทเปˆเบญเบ™เบ”เป‰เบงเบเป€เบซเบ”เบเบฒเบ™".

เป‚เบ”เบเบซเบเปเป‰เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฎเบฑเบ”:

  1. เบซเปเปˆเป€เบ–เบดเบ‡เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™ asynchronous เบ—เบฑเบ‡เบซเบกเบปเบ”เป‚เบ”เบเบœเปˆเบฒเบ™ เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป€เบซเบ”เบเบฒเบ™. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเปเบˆเป‰เบ‡เปƒเบซเป‰เบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบเบ—เบตเปˆเบชเบปเบ™เปƒเบˆเบ—เบธเบเบ„เบปเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบšเปƒเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™เป€เบซเบ”เบเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบšเป„เบ›เบชเบนเปˆเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบชเบนเบ™เบเบฒเบ‡, เปเบฅเบฐเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบเบ—เบตเปˆเบชเบปเบ™เปƒเบˆเปƒเบ™เบซเบปเบงเบ‚เปเป‰เบญเปˆเบฒเบ™เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ›เบฒเบเบปเบ”เบˆเบฒเบเบšเปˆเบญเบ™เบ™เบฑเป‰เบ™.
  2. เป€เบซเบ”เบเบฒเบ™เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰เปเบกเปˆเบ™เปเบˆเป‰เบ‡เบเบฒเบ™ (เปเบˆเป‰เบ‡เบเบฒเบ™) เบงเปˆเบฒเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป„เบ”เป‰เบ›เปˆเบฝเบ™เปเบ›เบ‡เบšเบฒเบ‡เบšเปˆเบญเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡. เบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบเบ—เบตเปˆเบชเบปเบ™เปƒเบˆเบ‚เปเป‰เบกเบนเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบกเบฒเบžเป‰เบญเบกเบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบšเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบฅเบงเบกเบขเบนเปˆเปƒเบ™เบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบšเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡.
  3. เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ—เบตเปˆโ€‹เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบซเบฒโ€‹เป€เบซเบ”โ€‹เบเบฒเบ™โ€‹เบขเปˆเบฒเบ‡โ€‹เป€เบ•เบฑเบกโ€‹เบ—เบตเปˆโ€‹, เบเบฒเบ™โ€‹เป‚เบญเบ™โ€‹เบฅเบฑเบ”โ€‹, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡: เบšเปˆเบญเบ™เบ—เบตเปˆเบกเบฑเบ™เบกเบฒเบˆเบฒเบเปเบฅเบฐเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เปƒเบ”เบ—เบตเปˆเบกเบฑเบ™เป„เบ›, เบ‚เปเป‰เบกเบนเบ™เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบ™เบงเปƒเบ”, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบ„เปเบฒเบ–เบฒเบกเบ”เบฝเบงเปเบกเปˆเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เปเบฅเบฐเบˆเปเบฒเบ™เบงเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบเบฑเบšเป„เบ”เป‰.

เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เปƒเบŠเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเบชเบฒเบก. เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เป€เบซเบ”เบเบฒเบ™เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ™เบตเป‰เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเบฐเบเบฑเบ”เบ‚เปเป‰เบกเบนเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”, เบšเบงเบเบเบฑเบšเบกเบฑเบ™เบเปเบฒเบˆเบฑเบ”เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเปเบ•เปˆเบฅเบฐเป€เบซเบ”เบเบฒเบ™เปƒเบซเบกเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบเบฐเบˆเปˆเบฒเบ‡เปเบˆเป‰เบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบˆเบฒเบเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบ.

เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ„เบทเบ™เป€เบ‡เบดเบ™ เบšเปเปˆเป„เบ”เป‰เป‚เบซเบฅเบ”, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ Kafka เบกเบตเบฅเบปเบ”เบŠเบฒเบ”เบ‚เบญเบ‡เบ›เบฒเบเบเบฒเบซเบผเบฒเบเบเปˆเบงเบฒเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™. เบ‚เป‰เบญเบเบšเปเปˆเบ„เบดเบ”เบงเปˆเบฒเบ–เป‰เบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบเบฒเบเป€เบ›เบฑเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบกเบตเบ›เบฐเบฅเบดเบกเบฒเบ™เบชเบนเบ‡, เบ—เบธเบฅเบฐเบเบดเบ”เบˆเบฐเบกเบตเบ„เบงเบฒเบกเบชเบธเบ.

เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™ Async AS IS

เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™ asynchronous, เบžเบฐเปเบ™เบ PHP เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเปƒเบŠเป‰ RabbitMQ. เบžเบงเบเป€เบฎเบปเบฒเป€เบเบฑเบšเบเปเบฒเบ‚เปเป‰เบกเบนเบ™เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป, เป€เบญเบปเบฒเปƒเบชเปˆเปƒเบ™เปเบ–เบง, เปเบฅเบฐเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบเบ‚เบญเบ‡เบšเปเบฅเบดเบเบฒเบ™เบ”เบฝเบงเบเบฑเบ™เป„เบ”เป‰เบญเปˆเบฒเบ™เบกเบฑเบ™เปเบฅเบฐเบชเบปเปˆเบ‡เบกเบฑเบ™ (เบซเบผเบทเบšเปเปˆเป„เบ”เป‰เบชเบปเปˆเบ‡เบกเบฑเบ™). เบชเปเบฒเบฅเบฑเบš API เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡, Lamoda เปƒเบŠเป‰ Swagger เบขเปˆเบฒเบ‡เบˆเบดเบ‡เบˆเบฑเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบญเบญเบเปเบšเบš API, เบญเบฐเบ—เบดเบšเบฒเบเบกเบฑเบ™เบขเบนเปˆเปƒเบ™ Swagger, เปเบฅเบฐเบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบฅเบนเบเบ„เป‰เบฒเปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ. เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เปƒเบŠเป‰ JSON RPC 2.0 เบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบ.

เปƒเบ™เบšเบฒเบ‡เบšเปˆเบญเบ™เบฅเบปเบ”เป€เบก ESB เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰, เบšเบฒเบ‡เบ„เบปเบ™เบญเบฒเป„เบชเบขเบนเปˆเปƒเบ™ activeMQ, เปเบ•เปˆเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, RabbitMQ - เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™.

เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™ Async TO BE

เป€เบกเบทเปˆเบญเบญเบญเบเปเบšเบšเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบœเปˆเบฒเบ™เป€เบซเบ”เบเบฒเบ™เบฅเบปเบ”เป€เบก, เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฒเบกเป„เบ”เป‰. เบžเบงเบเป€เบฎเบปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ„เบทเบเบฑเบ™เบงเปˆเบฒเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เป‚เบ”เบเบœเปˆเบฒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป€เบซเบ”เบเบฒเบ™. เบฎเบนเบšเปเบšเบš yaml, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡, เบœเบนเป‰เบœเบฐเบฅเบดเบ”เบชเป‰เบฒเบ‡ DTOs เบ•เบฒเบกเบ‚เปเป‰เบเปเบฒเบ™เบปเบ”เปเบฅเบฐเบชเบญเบ™เบฅเบนเบเบ„เป‰เบฒเปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒ. เบเบฒเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป„เบ›โ€‹เปƒเบ™โ€‹เบชเบญเบ‡โ€‹เบžเบฒโ€‹เบชเบฒ - golang เปเบฅเบฐ php. เบ™เบตเป‰เบŠเปˆเบงเบเปƒเบซเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบตเบ„เบงเบฒเบกเบชเบญเบ”เบ„เปˆเบญเบ‡. เป€เบ„เบทเปˆเบญเบ‡เบเปเบฒเป€เบ™เบตเบ”เป„เบŸเบŸเป‰เบฒเปเบกเปˆเบ™เบ‚เบฝเบ™เป€เบ›เบฑเบ™ golang, เบŠเบถเปˆเบ‡เป€เบ›เบฑเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบงเปˆเบฒเบกเบฑเบ™เป„เบ”เป‰เบฎเบฑเบšเบŠเบทเปˆ gogi.

เปเบซเบผเปˆเบ‡เป€เบซเบ”เบเบฒเบ™เปƒเบ™ Kafka เป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบ›เบปเบเบเบฐเบ•เบด. เบกเบตเบเบฒเบ™เปเบเป‰เป„เบ‚เบˆเบฒเบเบชเบฐเบšเบฑเบšเบงเบดเบชเบฒเบซเบฐเบเบดเบ”เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡ Kafka Confluent, เบกเบต เบ™เบฒเบ”เบต, เบเบฒเบ™เปเบเป‰เป„เบ‚เบˆเบฒเบเบžเบตเปˆเบ™เป‰เบญเบ‡เป‚เบ”เป€เบกเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ Zalando. เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ เปเบฎเบ‡เบˆเบนเบ‡เปƒเบˆเบ—เบตเปˆเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ vanilla Kafka - เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบเบฒเบ™เบ›เปˆเบญเบเปƒเบซเป‰เบเบฒเบ™เปเบเป‰เป„เบ‚เบŸเบฃเบตเบˆเบปเบ™เบเปˆเบงเบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™เบขเบนเปˆเบ—เบปเปˆเบงเบ—เบธเบเปเบซเปˆเบ‡, เปเบฅเบฐเบเบฑเบ‡เบ›เปˆเบญเบเปƒเบซเป‰เบ•เบปเบงเป€เบฎเบปเบฒเป€เบญเบ‡เบกเบตเบžเบทเป‰เบ™เบ—เบตเปˆเบชเปเบฒเบฅเบฑเบš maneuver เปเบฅเบฐเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. JSON RPC 2.0, เป€เบ„เบทเปˆเบญเบ‡เบเปเบฒเป€เบ™เบตเบ”เป„เบŸเบŸเป‰เบฒเบชเปเบฒเบฅเบฑเบšเบชเบญเบ‡เบžเบฒเบชเบฒเปเบฅเบฐเปƒเบซเป‰เป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบกเบตเบซเบเบฑเบ‡เบญเบตเบเปเบ”เปˆ.

เบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเบฅเบฑเบ‡เบเบฝเบ”เบงเปˆเบฒเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบชเบธเบ, เป€เบกเบทเปˆเบญเบกเบตเบ—เบธเบฅเบฐเบเบดเบ”เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™, Zalando, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบกเบฑเบ™เป„เบ”เป‰เบขเปˆเบฒเบ‡เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš.

เบฎเบนเบšเปเบšเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ—เบตเปˆเป€เบ›เบตเบ”เบ•เบปเบงเปเบกเปˆเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰: เบžเบงเบเป€เบฎเบปเบฒเบญเปˆเบฒเบ™เป‚เบ”เบเบเบปเบ‡เบˆเบฒเบ Kafka, เปเบ•เปˆเบ‚เบฝเบ™เบžเบฝเบ‡เปเบ•เปˆเบœเปˆเบฒเบ™เป€เบซเบ”เบเบฒเบ™ - เบฅเบปเบ”เป€เบก. เบกเบตเบ„เบงเบฒเบกเบžเป‰เบญเบกเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเปˆเบฒเบ™เบขเบนเปˆเปƒเบ™ Kafka: เบ™เบฒเบเบซเบ™เป‰เบฒ, เบœเบนเป‰เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡, เปเบฅเบฐเบกเบฑเบ™เบกเบตเบ„เบงเบฒเบกเบžเป‰เบญเบกเบซเบผเบฒเบเบซเบผเบทเบซเบ™เป‰เบญเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ•เบฒเบกเปเบ™เบงเบ™เบญเบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบฎเบฑเบเบชเบฒเบ™เบตเป‰. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบชเปเบฒโ€‹เป€เบฅเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบšเบฑเบ™โ€‹เบ—เบถเบโ€‹เป‚เบ”เบโ€‹เบœเปˆเบฒเบ™โ€‹เบเบฒเบ™โ€‹เบซเบ™เบถเปˆเบ‡ Gateway aka Events-bus, เปเบฅเบฐโ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบเป‰เบญเบ™โ€‹เบซเบเบฑเบ‡.

เป€เบซเบ”เบเบฒเบ™ - เบฅเบปเบ”เป€เบก

เบซเบผเบทเบฅเบปเบ”เป€เบกเป€เบซเบ”เบเบฒเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเบ›เบฐเบ•เบน http เบ—เบตเปˆเบšเปเปˆเบกเบตเบฅเบฑเบ”, เป€เบŠเบดเปˆเบ‡เบกเบตเบšเบปเบ”เบšเบฒเบ”เบชเปเบฒเบ„เบฑเบ™เบซเบผเบฒเบ:

  • เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡ โ€” เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบงเปˆเบฒโ€‹เบเบดเบ”โ€‹เบˆเบฐโ€‹เบเปเบฒโ€‹เบ•เบญเบšโ€‹เบชเบฐโ€‹เบซเบ™เบญเบ‡โ€‹เบชเบฐโ€‹เป€เบžเบฒเบฐโ€‹เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹.
  • เบฅเบฐเบšเบปเบšเปเบกเปˆเบšเบปเบ”เป€เบซเบ”เบเบฒเบ™, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ™เบตเป‰เปเบกเปˆเบ™เบฅเบฐเบšเบปเบšเบ•เบปเป‰เบ™เบ•เปเปเบฅเบฐเบ”เบฝเบงเปƒเบ™เบšเปเบฅเบดเบชเบฑเบ”เบ—เบตเปˆเบ•เบญเบšเบ„เปเบฒเบ–เบฒเบกเบ‚เบญเบ‡เป€เบซเบ”เบเบฒเบ™เบ—เบตเปˆเบกเบตเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เปƒเบ”เบ—เบตเปˆเบ–เบทเบงเปˆเบฒเบ–เบทเบเบ•เป‰เบญเบ‡. เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบžเบฝเบ‡เปเบ•เปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐ enums เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เป€เบ™เบทเป‰เบญเบซเบฒเบขเปˆเบฒเบ‡เป€เบ‚เบฑเป‰เบกเบ‡เบงเบ”.
  • เบŸเบฑเบ‡เบŠเบฑเบ™ Hash เบชเปเบฒเบฅเบฑเบš sharding - เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบ„เบงเบฒเบก Kafka เปเบกเปˆเบ™ key-value เปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ hash เบ‚เบญเบ‡ key เบกเบฑเบ™เบ–เบทเบเบ„เบดเบ”เป„เบฅเปˆเบšเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเปƒเบชเปˆเบกเบฑเบ™.

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡

เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบšเปเบฅเบดเบชเบฑเบ”เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ—เบตเปˆเบกเบตเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡. เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ•เป‰เบญเบ‡เบ›เปˆเบฝเบ™เปเบ›เบ‡เบซเบเบฑเบ‡? เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเป€เบเบฑเบšเบเปˆเบฝเบงเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบซเบผเบฒเบเบขเปˆเบฒเบ‡.

1:n+1 เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™ (เบซเบ™เบถเปˆเบ‡เบซเบฒเบซเบผเบฒเบ)

Kafka เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบ‡เปˆเบฒเบเบซเบผเบฒเบเปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบเปƒเบซเบกเปˆเบเบฑเบš API.

เปƒเบซเป‰เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบ—เปˆเบฒเบ™เบกเบตเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบญเบฑเบšเป€เบ”เบ”เปƒเบ™เบซเบผเบฒเบเป†เบฅเบฐเบšเบปเบšเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™ (เปเบฅเบฐเปƒเบ™เบšเบฒเบ‡เบฅเบฐเบšเบปเบšเปƒเบซเบกเปˆ). เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ„เบดเบ”เบ„เบปเป‰เบ™เบŠเบธเบ”เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ” set-API, เปเบฅเบฐเบฅเบฐเบšเบปเบšเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเป„เบ”เป‰เบ–เบทเบเปเบˆเป‰เบ‡เปƒเบซเป‰เบŠเบฒเบšเบเปˆเบฝเบงเบเบฑเบšเบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบ. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบฅเบฐเบšเบปเบšเปเบกเปˆเบšเบปเบ”เบชเบปเปˆเบ‡เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบซเบปเบงเบ‚เปเป‰, เปเบฅเบฐเบ—เบธเบเบ„เบปเบ™เบ—เบตเปˆเบชเบปเบ™เปƒเบˆเบญเปˆเบฒเบ™เบกเบฑเบ™. เบฅเบฐเบšเบปเบšเปƒเบซเบกเปˆเป„เบ”เป‰เบ›เบฒเบเบปเบ” - เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบกเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบซเบปเบงเบ‚เปเป‰. เปเบกเปˆเบ™เปเบฅเป‰เบง, เบเบฑเบ‡เบกเบฑเบ”เป„เบ”เป‰, เปเบ•เปˆเบ‡เปˆเบฒเบเบเบงเปˆเบฒ.

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เป€เบ‡เบดเบ™เบ„เบทเบ™ - เป€เบ„เบทเปˆเบญเบ‡เบกเบท, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบŠเบดเป‰เบ™เบชเปˆเบงเบ™เบ‚เบญเบ‡ BOB, เบกเบฑเบ™เบชเบฐเบ”เบงเบเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเบ—เบตเปˆเบˆเบฐเปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒ synchronized เบœเปˆเบฒเบ™ Kafka. เบเบฒเบ™เบˆเปˆเบฒเบเป€เบ‡เบดเบ™เบšเบญเบเบงเปˆเบฒเป€เบ‡เบดเบ™เบ–เบทเบเบชเบปเปˆเบ‡เบ„เบทเบ™: BOB, RT เบžเบปเบšเป€เบซเบฑเบ™เบเปˆเบฝเบงเบเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰, เบ›เปˆเบฝเบ™เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ”เป‰เบฒเบ™เบเบฒเบ™เป€เบ‡เบดเบ™เป„เบ”เป‰เบžเบปเบšเป€เบซเบฑเบ™เบเปˆเบฝเบงเบเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰เปเบฅเบฐเบญเบญเบเป€เบŠเบฑเบ.

เบ›เบฐเบชเบปเบšเบเบฒเบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบเบฑเบš API asynchronous เปƒเบ™ Kafka

เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบกเบตโ€‹เปเบœเบ™โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบชเป‰เบฒเบ‡โ€‹เบเบฒเบ™โ€‹เบšเปโ€‹เบฅเบดโ€‹เบเบฒเบ™โ€‹เปเบˆเป‰เบ‡โ€‹เบเบฒเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เป€เบญโ€‹เบเบฐโ€‹เบžเบฒเบšโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เปเบˆเป‰เบ‡โ€‹เปƒเบซเป‰โ€‹เบฅเบนเบโ€‹เบ„เป‰เบฒโ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบ‚เปˆเบฒเบงโ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡ / เบเบฒเบ™โ€‹เบเบฑเบšโ€‹เบ„เบทเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเป€เบœเบตเบเปเบœเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡เบฅเบฐเบšเบปเบšเบ•เปˆเบฒเบ‡เป†. เบกเบฑเบ™เบˆเบฐเบžเบฝเบ‡เบžเปเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเบ—เบตเปˆเบˆเบฐเบชเบญเบ™เบšเปเบฅเบดเบเบฒเบ™เบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™เป€เบžเบทเปˆเบญเบˆเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบˆเบฒเบ Kafka เปเบฅเบฐเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบกเบฑเบ™ (เปเบฅเบฐเบ›เบดเบ”เบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบšเบญเบทเปˆเบ™เป†). เบšเปเปˆเบˆเบณเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เป‚เบ”เบเบเบปเบ‡เปƒเปเปˆ.

เบ‚เบฑเบšเป€เบ„เบทเปˆเบญเบ™เบ”เป‰เบงเบเบ‚เปเป‰เบกเบนเบ™

เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡โ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เบเบฒเบโ€‹เป€เบ›เบฑเบ™โ€‹เบ„เบงเบฒเบกโ€‹เป‚เบ›เปˆเบ‡โ€‹เปƒเบช - เบšเปเปˆโ€‹เบงเปˆเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เบˆเบฐโ€‹เบกเบต "เบงเบดโ€‹เบชเบฒโ€‹เบซเบฐโ€‹เบเบดเบ”โ€‹เป€เบฅเบทเบญเบ”โ€‹" เปเบฅเบฐโ€‹เบšเปเปˆโ€‹เบงเปˆเบฒโ€‹เบˆเบฐโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบ‚เบฐโ€‹เบซเบเบฒเบโ€‹เบ•เบปเบงโ€‹เบ‚เบญเบ‡ backlog เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™โ€‹. Lamoda เบกเบตเบžเบฐเปเบ™เบเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป€เบเบฑเบšเบเปเบฒเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบฅเบฐเบšเบปเบšเบ•เปˆเบฒเบ‡เป†เปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ„เบทเบ™เป„เบ”เป‰, เบ—เบฑเบ‡เบชเปเบฒเบฅเบฑเบšเบ—เบธเบฅเบฐเบเบดเบ”เปเบฅเบฐเบฅเบฐเบšเบปเบšเบญเบฑเบ”เบชเบฐเบฅเบดเบเบฐ. Kafka เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบกเบตเบ‚เปเป‰เบกเบนเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบเปเบฅเบฐเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เบ™เบฑเป‰เบ™เปƒเบซเป‰เบ—เบฑเบ™เบชเบฐเป„เบซเบก.

เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡

เบ‚เปเป‰เบ„เบงเบฒเบกเบšเปเปˆเบซเบฒเบเป„เบ›เบซเบผเบฑเบ‡เบˆเบฒเบเบญเปˆเบฒเบ™, เบ„เบทเบเบฑเบš RabbitMQ. เป€เบกเบทเปˆเบญเป€เบซเบ”เบเบฒเบ™เปƒเบ”เบ™เบถเปˆเบ‡เบกเบตเบ‚เปเป‰เบกเบนเบ™เบžเบฝเบ‡เบžเปเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ›เบฐเบซเบงเบฑเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เปเบฅเบฐเบ–เป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™, เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.

เป„เบฅเบเบฐเป€เบงเบฅเบฒเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เบญเบ‡เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเบ‚เบธเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฝเบ™เบซเบปเบงเบ‚เปเป‰เบ™เบตเป‰; Kafka เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เป€เบงเบฅเบฒเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปเบฅเบฐเบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป„เบ”เป‰เบขเปˆเบฒเบ‡เบเบทเบ”เบซเบเบธเปˆเบ™. เบชเปเบฒเบฅเบฑเบšเบซเบปเบงเบ‚เปเป‰เบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเบ‡เบงเบ”, เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบกเบตเป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเบญเปˆเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบเปˆเบญเบ™เบ—เบตเปˆเบกเบฑเบ™เบˆเบฐเบซเบฒเบเป„เบ›, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เปƒเบ™เป„เบฅเบเบฐเบชเบฑเป‰เบ™. เบกเบฑเบ™เบกเบฑเบเบˆเบฐเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เบชเปเบฒเบฅเบฑเบš เบซเบปเบงเปœเปˆเบงเบเบ‚เบญเบ‡เบกเบทเป‰, เป€เบŠเบดเปˆเบ‡เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบžเบฝเบ‡เบžเปเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™.

เบ›เบฐเบชเบปเบšเบเบฒเบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบเบฑเบš API asynchronous เปƒเบ™ Kafka

เบ•เปเปˆเป„เบ›, เบเบฒเบ™เป€เบฅเบปเปˆเบฒเบ„เบทเบ™เป€เบญเบเบฐเบชเบฒเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบ, เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบšเปเปˆเบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบš Kafka (เบฎเบนเบšเปเบกเปˆเบ™เบกเบฒเบˆเบฒเบเป€เบญเบเบฐเบชเบฒเบ™)

AMQP เบกเบตเปเบ–เบง: เบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเปƒเบชเปˆเบ„เบดเบงเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบ. เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบด, เปเบ–เบงเบซเบ™เบถเปˆเบ‡เบˆเบฐเบ–เบทเบเบ›เบฐเบกเบงเบ™เบœเบปเบ™เป‚เบ”เบเบฅเบฐเบšเบปเบšเบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบกเบตเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบ”เบฝเบงเบเบฑเบ™. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™เบซเบผเบฒเบเป†เบฅเบฐเบšเบปเบš, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบญเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปƒเบซเป‰เบ‚เบฝเบ™เปƒเบชเปˆเบซเบผเบฒเบเปเบ–เบงเบซเบผเบทเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบ”เป‰เบงเบเบเบปเบ™เป„เบ fanout, เป€เบŠเบดเปˆเบ‡ clones เบžเบงเบเบกเบฑเบ™เป€เบญเบ‡.

Kafka เบกเบต abstraction เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™ เบเบฐเบ—เบนเป‰, เปƒเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ‚เบฝเบ™เบ‚เปเป‰เบ„เบงเบฒเบก, เปเบ•เปˆเบžเบงเบเบกเบฑเบ™เบšเปเปˆเบซเบฒเบเป„เบ›เบซเบผเบฑเบ‡เบˆเบฒเบเบญเปˆเบฒเบ™. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš Kafka, เบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบˆเบฐเบŠเปˆเบงเบเบ›เบฐเบขเบฑเบ”เบšเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ›เบฐเป„เบงเป‰. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ—เปˆเบฒเบ™เบญเปˆเบฒเบ™เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš, เบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบซเบกเบฒเบเบ‚เปเป‰เบ„เบงเบฒเบกเบงเปˆเบฒเบญเปˆเบฒเบ™, เปเบ•เปˆเบšเบฑเบ™เบ—เบถเบ id เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบทเบšเบ•เปเปˆเบญเปˆเบฒเบ™เป„เบ”เป‰. Id เบ—เบตเปˆเบ—เปˆเบฒเบ™เป„เบ”เป‰เบ•เบปเบเบฅเบปเบ‡เปเบกเปˆเบ™เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบเบฒเบ™เบŠเบปเบ”เป€เบŠเบตเบ, เปเบฅเบฐเบเบปเบ™เป„เบเปเบกเปˆเบ™เบเบฒเบ™เบŠเบปเบ”เป€เบŠเบตเบ.

เบ•เบฒเบกเบ™เบฑเป‰เบ™เปเบฅเป‰เบง, เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบกเบต BOB เปƒเบ™ 4 เบ•เบปเบงเบขเปˆเบฒเบ‡เบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบ—เบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™ - Lamoda เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบฅเบฑเบ”เป€เบŠเบ, Kazakhstan, Ukraine, Belarus. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบžเบงเบเบกเบฑเบ™เบ–เบทเบเบ™เบณเปƒเบŠเป‰เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบกเบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบ เปเบฅเบฐเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบฅเบฐเบšเบธเปƒเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบกเบฑเบ™เบซเบกเบฒเบเป€เบ–เบดเบ‡เบ›เบฐเป€เบ—เบ”. เบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบ BOB เปƒเบ™เปเบ•เปˆเบฅเบฐเบ›เบฐเป€เบ—เบ”เบญเปˆเบฒเบ™เบ”เป‰เบงเบ groupId เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เปเบฅเบฐเบ–เป‰เบฒเบ‚เปเป‰เบ„เบงเบฒเบกเบšเปเปˆเบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒ, เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบ‚เป‰เบฒเบกเบกเบฑเบ™, i.e. commits เบ—เบฑเบ™เบ—เบตเบ—เบฑเบ™เปƒเบ”เบŠเบปเบ”เป€เบŠเบตเบ +1. เบ–เป‰เบฒเบซเบปเบงเบ‚เปเป‰เบ”เบฝเบงเบเบฑเบ™เบ–เบทเบเบญเปˆเบฒเบ™เป‚เบ”เบเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบŠเปเบฒเบฅเบฐเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบกเบฑเบ™เบˆเบฐเป€เบฎเบฑเบ”เปเบ™เบงเบ™เบฑเป‰เบ™เบเบฑเบšเบเบธเปˆเบกเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบŠเบปเบ”เป€เบŠเบตเบเบšเปเปˆเบ•เบฑเบ”เบเบฑเบ™.

เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบซเบ”เบเบฒเบ™:

  • เบ„เบงเบฒเบกเบชเบปเบกเบšเบนเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™. เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เป€เบซเบ”เบเบฒเบ™เบกเบตเบ‚เปเป‰เบกเบนเบ™เบžเบฝเบ‡เบžเปเป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบกเบงเบ™เบœเบปเบ™เป„เบ”เป‰.

  • เบ„เบงเบฒเบกเบŠเบทเปˆเบชเบฑเบ”. เบžเบงเบเป€เบฎเบปเบฒเบกเบญเบšเปเบฒเบเปƒเบซเป‰ Events-bus เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบงเปˆเบฒเป€เบซเบ”เบเบฒเบ™เปเบกเปˆเบ™เบชเบญเบ”เบ„เปˆเบญเบ‡ เปเบฅเบฐเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบกเบฑเบ™เป„เบ”เป‰.
  • เบ„เปเบฒเบชเบฑเปˆเบ‡เปเบกเปˆเบ™เบชเปเบฒเบ„เบฑเบ™. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบเบฒเบ™เบเบฑเบšเบ„เบทเบ™, เบžเบงเบเป€เบฎเบปเบฒเบ–เบทเบเบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ”. เบ”เป‰เบงเบเบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™, เบ„เปเบฒเบชเบฑเปˆเบ‡เบšเปเปˆเบชเปเบฒเบ„เบฑเบ™, เบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเป€เบ›เบฑเบ™เบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™เปเบšเบšเบ”เบฝเบงเบเบฑเบ™, เบญเบตเป€เบกเบงเบˆเบฐเบ„เบทเบเบฑเบ™เบšเปเปˆเบงเปˆเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบ”เบกเบฒเบฎเบญเบ”เบเปˆเบญเบ™. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™, เบกเบตเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™; เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ›เปˆเบฝเบ™เปเบ›เบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡, เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™, เบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบˆเบฐเบšเปเปˆเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบซเบผเบทเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ - เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบดเป‰เบ™เบชเบธเบ”เปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.
  • เบ„เบงเบฒเบกเบชเบญเบ”เบ„เปˆเบญเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบฎเป‰เบฒเบ™เบ„เป‰เบฒ, เปเบฅเบฐเบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เป€เบซเบ”เบเบฒเบ™เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™ API. เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบ‚เปˆเบฒเบงเบชเบฒเบ™เบขเปˆเบฒเบ‡เป„เบงเบงเบฒ เปเบฅเบฐเบฅเบฒเบ„เบฒเบ–เบทเบเบเปˆเบฝเบงเบเบฑเบšเป€เบซเบ”เบเบฒเบ™เปƒเปเปˆเป† เปเบฅเบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบซเป‰เบเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฑเบ™เบฅเบธเป„เบ”เป‰เป‚เบ”เบเบœเปˆเบฒเบ™เบ‚เปเป‰เบเปเบฒเบ™เบปเบ”เบ—เบปเปˆเบงเป„เบ›เปƒเบ™ repository git เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบฅเบนเบเบ„เป‰เบฒเปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปƒเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™.

Kafka เปƒเบ™ Lamoda

เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบชเบฒเบกเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Kafka:

  1. เบšเบฑเบ™เบ—เบถเบ;
  2. R&D;
  3. เป€เบซเบ”เบเบฒเบ™ - เบฅเบปเบ”เป€เบก.

เบกเบทเป‰เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบงเบปเป‰เบฒเบžเบฝเบ‡เปเบ•เปˆเบเปˆเบฝเบงเบเบฑเบšเบˆเบธเบ”เบชเบธเบ”เบ—เป‰เบฒเบ. เปƒเบ™เป€เบซเบ”เบเบฒเบ™ - เบฅเบปเบ”เป€เบก, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบกเบตเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบซเบผเบฒเบ - 3 เบ™เบฒเบเบซเบ™เป‰เบฒ (เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ) เปเบฅเบฐเบกเบตเบžเบฝเบ‡เปเบ•เปˆ 27 เบซเบปเบงเบ‚เปเป‰. เบ•เบฒเบกเบเบปเบ”เบฅเบฐเบšเบฝเบš, เบซเบปเบงเบ‚เปเป‰เบซเบ™เบถเปˆเบ‡เปเบกเปˆเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบซเบ™เบถเปˆเบ‡. เปเบ•เปˆเบ™เบตเป‰เปเบกเปˆเบ™เบˆเบธเบ”เบญเปˆเบญเบ™, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเปเบฒเบœเบฑเบ”เบเบฑเบšเบกเบฑเบ™เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™.

เบ›เบฐเบชเบปเบšเบเบฒเบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบเบฑเบš API asynchronous เปƒเบ™ Kafka

เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบŸ rps. เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เปเบกเปˆเบ™เบซเบกเบฒเบเบ”เป‰เบงเบเป€เบชเบฑเป‰เบ™ turquoise (เปเบกเปˆเบ™, เบซเบ™เบถเปˆเบ‡เปƒเบ™เปเบเบ™ X), เปเบฅเบฐเป€เบชเบฑเป‰เบ™เบชเบตเบšเบปเบงเปเบกเปˆเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เป€เบ™เบทเป‰เบญเปƒเบ™.

เบฅเบฒเบเบเบฒเบ™ Lamoda เบกเบตเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบซเบผเบฒเบเบฅเป‰เบฒเบ™, เปเบฅเบฐเบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เบ•เบฐเบซเบผเบญเบ”เป€เบงเบฅเบฒ. เบšเบฒเบ‡เบ„เปเป€เบฅเบฑเบเบŠเบฑเบ™เบญเบญเบเป„เบ›เบˆเบฒเบเบ„เบปเบ™เบญเบฑเบšเป€เบ”เบ”:, เปƒเบซเบกเปˆเป„เบ”เป‰เบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒเป€เบžเบทเปˆเบญเบ—เบปเบ”เปเบ—เบ™เบžเบงเบเบกเบฑเบ™, เปเบฅเบฐเบฎเบนเบšเปเบšเบšเปƒเบซเบกเปˆเปเบกเปˆเบ™เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบฅเบฒเบเบเบฒเบ™เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบžเบฐเบเบฒเบเบฒเบกเบ„เบฒเบ”เบ„เบฐเป€เบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบˆเบฐเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบเบฑเบšเบฅเบนเบเบ„เป‰เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบกเบทเป‰เบญเบทเปˆเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเป€เบซเบกเบตเบŠเบทเป‰เบชเบดเปˆเบ‡เปƒเบซเบกเปˆ, เบ–เปˆเบฒเบเบฎเบนเบšเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปเบฅเบฐเบ›เบฑเบšเบ›เบธเบ‡เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบชเบฐเปเบ”เบ‡.

เบเบญเบ”เบชเบตเบšเบปเบงเปเบกเปˆเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™. เป€เบซเบฑเบ™โ€‹เป„เบ”เป‰โ€‹เบงเปˆเบฒโ€‹เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป„เบ”เป‰โ€‹เป€เบญเบปเบฒโ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹, เบ–เปˆเบฒเบโ€‹เบฎเบนเบšโ€‹เปเบฅเป‰เบงโ€‹เบญเบตเบโ€‹เป€เบ—เบทเปˆเบญโ€‹เบซเบ™เบถเปˆเบ‡โ€‹! โ€” loaded เบŠเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เป€เบซเบ”โ€‹เบเบฒเบ™โ€‹.

Lamoda Events เปƒเบŠเป‰เบเปเบฅเบฐเบ™เบต

เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เบ•เบดเบ”เบ•เบฒเบกเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบเบฑเบšเบ„เบทเบ™: call-to-action เปเบฅเบฐเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบชเบฐเบ–เบฒเบ™เบฐเบˆเบฒเบเบ—เบธเบเบฅเบฐเบšเบปเบšเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡. เบเบฒเบ™เบˆเปˆเบฒเบเป€เบ‡เบดเบ™, เบชเบฐเบ–เบฒเบ™เบฐ, เบ‡เบปเบšเบ›เบฐเบกเบฒเบ™, เปเบˆเป‰เบ‡เบเบฒเบ™. เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ—เบปเบ”เบชเบญเบšเบงเบดเบ—เบตเบเบฒเบ™, เบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบท, เป€เบเบฑเบšเบเปเบฒเบ‚เปเป‰เบšเบปเบเบžเปˆเบญเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”, เบ‚เบฝเบ™เป€เบญเบเบฐเบชเบฒเบ™เปเบฅเบฐเบšเบญเบเป€เบžเบทเปˆเบญเบ™เบฎเปˆเบงเบกเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบงเบดเบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™.
  • เบเบณเบฅเบฑเบ‡เบญเบฑเบšเป€เบ”เบ”เบšเบฑเบ”เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™: เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, meta-data, เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ. เบฅเบฐเบšเบปเบšเบซเบ™เบถเปˆเบ‡เบญเปˆเบฒเบ™ (เบ—เบตเปˆเบชเบฐเปเบ”เบ‡), เปเบฅเบฐเบ‚เบฝเบ™เบซเบผเบฒเบเป†เบ„เบฑเป‰เบ‡.
  • เบชเบปเปˆเบ‡เบญเบตเป€เบกเบง, เบŠเบธเบเบเบนเป‰เปเบฅเบฐ sms: เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เป€เบเบฑเบšโ€‹เบเปเบฒโ€‹, เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เป„เบ”เป‰โ€‹เบกเบฒโ€‹เป€เบ–เบดเบ‡โ€‹, เบเบฒเบ™โ€‹เบเบฑเบšโ€‹เบ„เบทเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบเบญเบกโ€‹เบฎเบฑเบšโ€‹, เปเบฅเบฐโ€‹เบญเบทเปˆเบ™เป†โ€‹, เบกเบตโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบซเบผเบฒเบโ€‹เบ‚เบญเบ‡โ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹.
  • เบซเบผเบฑเบเบŠเบฑเบš, เบเบฒเบ™เบ•เปเปˆเบญเบฒเบเบธเบชเบฒเบ‡ - เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบญเบ‡เบฅเบฒเบเบเบฒเบ™, เบžเบฝเบ‡เปเบ•เปˆเบ•เบปเบงเป€เบฅเบ: เบกเบฒเบฎเบญเบ”เบชเบฒเบ‡, เบเบฑเบšเบ„เบทเบ™. เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบฅเบฐเบšเบปเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบˆเบญเบ‡เบชเบดเบ™เบ„เป‰เบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบฅเบฐเบšเบปเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบซเบผเบฑเบเบŠเบฑเบšเปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบชเบฑเบšเบชเบปเบ™; Kafka เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ.
  • เบเบฒเบ™โ€‹เบงเบดโ€‹เป€เบ„เบฒเบฐโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™ (เบžเบฐเปเบ™เบ R&D), เป€เบ„เบทเปˆเบญเบ‡เบกเบท ML, เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ, เบชเบฐเบ–เบดเบ•เบด. เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเป‚เบ›เปˆเบ‡เปƒเบช - Kafka เปเบกเปˆเบ™เป€เบซเบกเบฒเบฐเบชเบปเบกเบ”เบตเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบชเปˆเบงเบ™เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบเบเปˆเบฝเบงเบเบฑเบšเบ‚เปเป‰เบšเบปเบเบœเปˆเบญเบ‡เปƒเบซเบเปˆเปเบฅเบฐเบเบฒเบ™เบ„เบปเป‰เบ™เบžเบปเบšเบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เป„เบฅเบเบฐเบซเบปเบเป€เบ”เบทเบญเบ™เบœเปˆเบฒเบ™เบกเบฒ.

เบšเบฑเบ™เบซเบฒเบเบฒเบ™เบญเบญเบเปเบšเบš

เปƒเบซเป‰เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เปƒเบซเบกเปˆ - เบ•เบปเบงเบขเปˆเบฒเบ‡, เป‚เบญเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบซเป‰เบเบฑเบš Kafka. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบ™ BOB. เบกเบตเบฎเบนเบšเปเบšเบšเบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบšเบ—เบตเปˆเบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบซเบฅเบฑเบ‡เบเบฒเบ™เป‚เบญเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เป„เบ›เบซเบฒเบšเปเบฅเบดเบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡, เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเป„เบ›เบชเบนเปˆเบชเบฒเบ‡เบฅเบฐเบ”เบฑเบšเบเบฒเบ‡, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบกเบต monolith เบ—เบฑเบ‡เบซเบกเบปเบ”, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบชเบญเบ‡, เบšเบงเบเบเบฑเบšเบŠเปเปˆเบ‚เบญเบ‡ APIs เบ—เบตเปˆเบญเบธเบ—เบดเบ”เบ•เบปเบ™เป€เบžเบทเปˆเบญเบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡. เบžเบงเบเป€เบ‚เบปเบฒเบฎเบนเป‰เบซเบผเบฒเบเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡.

เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเป€เบ›เบฑเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™, เปเบ•เปˆเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบ™ BOB เปเบฅเบฐเบฅเบฐเบšเบปเบšเบเบฒเบ™เบ‚เบปเบ™เบชเบปเปˆเบ‡เบกเบตเบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบšเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบšเบฒเบ‡เบšเปเบฅเบดเบเบฒเบ™เบชเบปเปˆเบ‡เป€เบ„เบทเปˆเบญเบ‡เบšเปเปˆเบชเบปเปˆเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบฅเบฐเบ”เบฑเบšเบ›เบฒเบ™เบเบฒเบ‡, เปเบ•เปˆเบกเบตเบžเบฝเบ‡เบญเบฑเบ™เบชเบธเบ”เบ—เป‰เบฒเบเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™: โ€œเบชเบปเปˆเบ‡เปเบฅเป‰เบงโ€ เบซเบผเบท โ€œเป€เบชเบโ€. เบ„เบปเบ™เบญเบทเปˆเบ™, เปƒเบ™เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก, เบฅเบฒเบเบ‡เบฒเบ™เบขเปˆเบฒเบ‡เบฅเบฐเบญเบฝเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ‚เบญเบ‡เบชเบดเบ™เบ„เป‰เบฒ. เบ—เบธเบเป†เบ„เบปเบ™เบกเบตเบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡: เบชเปเบฒเบฅเบฑเบšเบšเบฒเบ‡เบ„เบปเบ™, เบญเบตเป€เบกเบงเปเบกเปˆเบ™เบ–เบทเบเบ•เป‰เบญเบ‡, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเบ–เบทเบเบ›เบธเบ‡เปเบ•เปˆเบ‡; เบชเปเบฒเบฅเบฑเบšเบ„เบปเบ™เบญเบทเปˆเบ™เบกเบฑเบ™เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เปเบ•เปˆเบ„เปเบฒเบชเบฑเปˆเบ‡เบˆเบฐเบเบฑเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบตเป€เบšเบตเป‚เบ—เบฅเบฐเบชเบฑเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เปเปˆ, เปเบฅเบฐเบšเบฒเบ‡เบ„เบปเบ™เบˆเบฐเป€เบงเบปเป‰เบฒเบงเปˆเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบˆเบฐเบšเปเปˆเบ–เบทเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”.

เบเบฐเปเบชเบ‚เปเป‰เบกเบนเบ™

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡ Kafka, เบ„เปเบฒเบ–เบฒเบกเบ‚เบญเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เป„เบซเบผเป€เบ‚เบปเป‰เบฒเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เป€เบเบตเบ”เบ‚เบทเป‰เบ™. เบงเบฝเบโ€‹เบ‡เบฒเบ™โ€‹เบ™เบตเป‰โ€‹เบเปˆเบฝเบงโ€‹เบ‚เป‰เบญเบ‡โ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบฅเบทเบญเบโ€‹เบเบธเบ”โ€‹เบ—เบฐโ€‹เบชเบฒเบ”โ€‹เป‚เบ”เบโ€‹เบญเบตเบ‡โ€‹เปƒเบชเปˆโ€‹เบซเบผเบฒเบโ€‹เบˆเบธเบ”โ€‹, เปƒเบซเป‰โ€‹เบœเปˆเบฒเบ™โ€‹เบเบฒเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹.

เปƒเบ™เบซเบปเบงเบ‚เปเป‰เบซเบ™เบถเปˆเบ‡เบซเบผเบทเปƒเบ™เบซเบปเบงเบ‚เปเป‰เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™?

เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบชเบฐเป€เบžเบฒเบฐเป€เบซเบ”เบเบฒเบ™. เปƒเบ™ BOB เบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™เบงเปˆเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡, เปเบฅเบฐเบŠเบตเป‰เบšเบญเบ: เบˆเปเบฒเบ™เบงเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡, เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบกเบฑเบ™, เบšเบฒเบ‡ SKUs เปเบฅเบฐเบšเบฒเป‚เบ„เบ”, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เป€เบกเบทเปˆเบญเบชเบดเบ™เบ„เป‰เบฒเบกเบฒเบฎเบญเบ”เบชเบฒเบ‡, เบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡เบˆเบฐเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบš, เป€เบงเบฅเบฒเปเบฅเบฐเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™. เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เปƒเบ™ BOB. เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบเบฑเบšเบ„เบทเบ™เบ‚เบญเบ‡เบเบฒเบ™เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบซเบ”เบเบฒเบ™เบ”เบฝเบงเบเบฑเบ™เบšเป? เบซเบผเบทเบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ—เบตเปˆเบชเบปเบกเบ„เบงเบ™เบเบฑเบšเบซเบปเบงเบ‚เปเป‰เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบšเป?

เบชเปˆเบงเบ™เบซเบผเบฒเบเบญเบฒเบ”เบˆเบฐ, เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบˆเบฐเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบซเบผเบฒเบ, เปเบฅเบฐเบเบฒเบ™เบฅเปเป‰เบฅเบงเบ‡เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบซเบปเบงเบ‚เปเป‰เบซเบ™เบถเปˆเบ‡เปเบกเปˆเบ™เบšเปเปˆเบกเบตเบžเบทเป‰เบ™เบ–เบฒเบ™, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบซเบปเบงเบ‚เปเป‰เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, configs เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เบเบฒเบ™เบœเบฐเบฅเบดเบ”เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ‚เบญเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰. เปเบ•เปˆเบšเปเปˆเปเบกเปˆเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡.

เบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเปƒเบซเบกเปˆเบซเบผเบทเป€เบซเบ”เบเบฒเบ™เปƒเบซเบกเปˆ?

เปเบ•เปˆเบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰เป€เบซเบ”เบเบฒเบ™เบ”เบฝเบงเบเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบšเบฑเบ™เบซเบฒเบญเบทเปˆเบ™เบเปเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบšเปเปˆเปเบกเปˆเบ™เบ—เบธเบเบฅเบฐเบšเบปเบšเบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ DTO เบ—เบตเปˆ BOB เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เป„เบ”เป‰. เบžเบงเบเป€เบฎเบปเบฒเบชเบปเปˆเบ‡ id เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒ, เปเบ•เปˆเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเป„เบ”เป‰เบšเบฑเบ™เบ—เบถเบเบกเบฑเบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบกเบฑเบ™, เปเบฅเบฐเบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ‚เบญเบ‡เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบซเบ”เบเบฒเบ™ - เบฅเบปเบ”เป€เบก, เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™.

เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเปเบ™เบฐเบ™เปเบฒเบเบปเบ”เบฅเบฐเบšเบฝเบšเบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบเบฒเบ™เบฅเบปเบ”เป€เบกเบ—เบตเปˆเบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ™เบตเป‰เบ•เป‰เบญเบ‡เบเบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเบ–เบทเบเบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เบเปเบฒเบ™เบปเบ”เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™ BOB เบซเบผเบทเปƒเบ™เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เป€เบซเบ”เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เป€เบฅเบตเปˆเบกเปเบœเปˆเบ‚เบฐเบซเบเบฒเบเป„เบ›เบ—เบปเปˆเบงเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ - เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบชเบฐเบ”เบงเบเบซเบผเบฒเบ.

เบšเบฑเบ™เบซเบฒเบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เปเบกเปˆเบ™เบเบฒเบ™เบฅเปเป‰เบฅเบงเบ‡เป„เบ›เบชเบนเปˆเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบตเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ–เบทเบเบšเบญเบเบงเปˆเบฒเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เป€เบซเบ”เบเบฒเบ™, เปเบฅเบฐเบšเบฒเบ‡เบ—เบต, เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™, เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เป€เบซเบ”เบเบฒเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. เปเบ•เปˆเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เป€เบซเบ”เบเบฒเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปเบกเปˆเบ™เบซเบปเบงเบ‚เปเป‰เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. เบซเบปเบงเบ‚เปเป‰เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปเบกเปˆเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบญเบฐเบ—เบดเบšเบฒเบเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡. เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบ”เป‰เบ–เบทเบเบฅเปเป‰เบฅเบงเบ‡เปƒเบซเป‰เบžเบฝเบ‡เปเบ•เปˆเป€เบžเบตเปˆเบกเบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบญเบทเปˆเบ™เปƒเบชเปˆ JSON schema เปเบฅเบฐเบชเป‰เบฒเบ‡เบกเบฑเบ™เปƒเบซเบกเปˆ.

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบกเบฒเบฎเบญเบ”เป€เบซเบ”เบเบฒเบ™เบ‚เบญเบ‡เป€เบซเบ”เบเบฒเบ™เปƒเบ™เป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เบ›เบต. เบžเบงเบเป€เบฎเบปเบฒเบกเบตเป€เบซเบ”เบเบฒเบ™ meta เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™, เป€เบŠเบดเปˆเบ‡เบกเบตเบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเบงเปˆเบฒเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ™เบตเป‰เปเบกเปˆเบ™เบซเบเบฑเบ‡. เบ”เป‰เบงเบเป€เบซเบ”เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ›เบธเปˆเบกเบชเบฐเบซเบผเบฑเบš โ€œเบญเบฑเบ”เบชเบฐเบˆเบฑเบ™โ€ เบเบฑเบšเบœเบนเป‰เบเบงเบ”เบชเบญเบšเบ—เบตเปˆเบšเบญเบเบžเบงเบเป€เบฎเบปเบฒเบงเบดเบ—เบตเบเบงเบ”เบชเบญเบšเป€เบซเบ”เบเบฒเบ™เบ™เบตเป‰เบ”เป‰เบงเบเบ›เบฐเป€เบžเบ”เบ™เบตเป‰.

เป€เบงเบตเบŠเบฑเบ™เป€เบซเบ”เบเบฒเบ™

เป€เบžเบทเปˆเบญเบเบงเบ”เบชเบญเบšเบ‚เปเป‰เบ„เบงเบฒเบกเปƒเบ™ Kafka เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰ Avro, เปเบ•เปˆเบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบงเบฒเบ‡เบกเบฑเบ™เบ—เบฑเบ™เบ—เบตเปเบฅเบฐเปƒเบŠเป‰ Confluent. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡เบเบฑเบšเบชเบฐเบšเบฑเบš. เบกเบฑเบ™เบˆเบฐเบšเปเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบชเบฐเป€เปเบตเบ—เบตเปˆเบˆเบฐเบญเปˆเบฒเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบˆเบฒเบเบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบˆเบณเบฅเบญเบ‡เบ„เบทเบ™เปƒเปเปˆ เป€เบžเบฒเบฐเบงเปˆเบฒเบ•เบปเบงเปเบšเบšเบกเบต โ€œเบŠเป‰เบฒเบโ€. เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบง, เบกเบฑเบ™เบซเบฑเบ™เบญเบญเบเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบชเบฐเบšเบฑเบšเป€เบžเบทเปˆเบญเปƒเบซเป‰เบฎเบนเบšเปเบšเบšเปเบกเปˆเบ™เป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบšเบซเบฅเบฑเบ‡: เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบŠเบปเปˆเบงเบ„เบฒเบง. เบ–เป‰เบฒเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡เป€เบเบตเบ™เป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบฝเบ™เปƒเบ™เบซเบปเบงเบ‚เปเป‰เปƒเบซเบกเปˆ, เปเบฅเบฐเป‚เบญเบ™เบฅเบนเบเบ„เป‰เบฒเป€เบกเบทเปˆเบญเบžเบงเบเป€เบ‚เบปเบฒเบญเปˆเบฒเบ™เบซเบปเบงเบ‚เปเป‰เป€เบเบปเปˆเบฒ.

เบเบฒเบ™โ€‹เบฎเบฑเบšโ€‹เบ›เบฐโ€‹เบเบฑเบ™โ€‹เบเบฒเบ™โ€‹เบญเปˆเบฒเบ™โ€‹เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เปเบšเปˆเบ‡โ€‹เบ›เบฑเบ™โ€‹

เบซเบปเบงเบ‚เปเป‰เบžเบฒเบเปƒเบ™ Kafka เบ–เบทเบเปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™เบžเบฒเบ—เบดเบŠเบฑเบ™. เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบซเบผเบฒเบเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบญเบญเบเปเบšเบšเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เปเบฅเบฐเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™, เปเบ•เปˆเบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเบšเปเบฅเบดเป‚เบžเบเปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เบกเบฑเบ™.

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ›เบปเบเบเบฐเบ•เบด, เบ—เปˆเบฒเบ™เบ‚เบฝเบ™เบซเบปเบงเบ‚เปเป‰เบซเบ™เบถเปˆเบ‡เปƒเบ™ Kafka. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบซเบ™เบถเปˆเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰, เปเบฅเบฐเบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบซเบปเบงเบ‚เปเป‰เบ™เบตเป‰เป„เบ›เบซเบฒเบกเบฑเบ™. เปเบฅเบฐเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบเป„เบ”เป‰เบญเปˆเบฒเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš. เปƒเบซเป‰เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฐเบซเบเบฒเบเบฅเบฐเบšเบปเบšเป€เบžเบทเปˆเบญเปƒเบซเป‰เบ‚เปเป‰เบ„เบงเบฒเบกเบ–เบทเบเบญเปˆเบฒเบ™เป‚เบ”เบเบชเบญเบ‡เบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เบชเบปเปˆเบ‡ SMS, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบšเบญเบ Kafka เปƒเบซเป‰เบกเบตเบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เปเบฅเบฐ Kafka เบˆเบฐเป€เบฅเบตเปˆเบกเปเบšเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบญเบญเบเป€เบ›เบฑเบ™เบชเบญเบ‡เบชเปˆเบงเบ™ - เป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰, เป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰.

Kafka เปเบšเปˆเบ‡เบžเบงเบเบกเบฑเบ™เปเบ™เบงเปƒเบ”? เปเบ•เปˆเบฅเบฐเบ‚เปเป‰เบ„เบงเบฒเบกเบกเบตเป€เบ™เบทเป‰เบญเปƒเบ™ (เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบเบฑเบšเบฎเบฑเบเบชเบฒ JSON) เปเบฅเบฐเบเบฐเปเบˆ. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบ™เบšเบŸเบฑเบ‡เบŠเบฑเบ™ hash เบเบฑเบšเบเบฐเปเบˆเบ™เบตเป‰, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเปƒเบ”เบˆเบฐเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™.

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบšเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™, เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™, เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒเบชเบญเบ‡เบชเปˆเบงเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบตเป‚เบญเบเบฒเบ”เบ—เบตเปˆเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบเบ‚เบฐเบซเบ™เบฒเบ™เบˆเบฐเบ›เบธเบ‡เปเบ•เปˆเบ‡เป€เบซเบ”เบเบฒเบ™เบ—เบตเบชเบญเบ‡เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ—เปเบฒเบญเบดเบ”เปเบฅเบฐเบˆเบฐเบกเบตเบšเบฑเบ™เบซเบฒ. เบŸเบฑเบ‡เบŠเบฑเบ™ hash เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบกเบตเบฅเบฐเบซเบฑเบ”เบ”เบฝเบงเบเบฑเบ™เบชเบดเป‰เบ™เบชเบธเบ”เบฅเบปเบ‡เปƒเบ™เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบ”เบฝเบงเบเบฑเบ™.

เป€เบซเบ”เบเบฒเบ™เบ—เบฝเบšเบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡

เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฑเบ™เบซเบฒเบญเบทเปˆเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบžเบปเบš. เป€เบซเบ”เบเบฒเบ™เปเบกเปˆเบ™เป€เบซเบ”เบเบฒเบ™เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™: เบžเบงเบเป€เบฎเบปเบฒเป€เบงเบปเป‰เบฒเบงเปˆเบฒเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบขเบนเปˆเบšเปˆเบญเบ™เปƒเบ”เบšเปˆเบญเบ™เบซเบ™เบถเปˆเบ‡ (something_happened), เบ•เบปเบงเบขเปˆเบฒเบ‡, เบฅเบฒเบเบเบฒเบ™เบ–เบทเบเบเบปเบเป€เบฅเบตเบเบซเบผเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™. เบ–เป‰เบฒเปƒเบœเบœเบนเป‰เบซเบ™เบถเปˆเบ‡เบŸเบฑเบ‡เป€เบซเบ”เบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบญเบตเบ‡เบ•เบฒเบก "เบฅเบฒเบเบเบฒเบ™เบ–เบทเบเบเบปเบเป€เบฅเบตเบ," เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™, เปเบฅเบฐ "เบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™" เบˆเบฐเบ–เบทเบเบ‚เบฝเบ™เป„เบงเป‰เปƒเบ™เบšเปˆเบญเบ™เปƒเบ”เบšเปˆเบญเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡.

เปเบ•เปˆเบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบง, เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบญเบญเบเปเบšเบšเป€เบซเบ”เบเบฒเบ™, เบ—เปˆเบฒเบ™เบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบšเปเปˆเบกเบตเบ›เบฐเป‚เบเบ” - เบ—เปˆเบฒเบ™เบญเบตเบ‡เปƒเบชเปˆเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบœเบนเป‰เปƒเบ”เบœเบนเป‰เบซเบ™เบถเปˆเบ‡เบˆเบฐเบญเปˆเบฒเบ™เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ. เบกเบตเบเบฒเบ™เบฅเปเป‰เบฅเบงเบ‡เบชเบนเบ‡เบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เบšเปเปˆเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡_happened (item_canceled, refund_refunded), เปเบ•เปˆเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡_should_be_done. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบฅเบฒเบเบเบฒเบ™เปเบกเปˆเบ™เบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เบ„เบทเบ™.

เปƒเบ™เบญเบตเบเบ”เป‰เบฒเบ™เบซเบ™เบถเปˆเบ‡, เบกเบฑเบ™เปเบ™เบฐเบ™เปเบฒเบงเปˆเบฒเป€เบซเบ”เบเบฒเบ™เบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปเบ™เบงเปƒเบ”. เปƒเบ™เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก, เบกเบฑเบ™เบกเบตเบชเบฝเบ‡เบซเบ™เป‰เบญเบเบ„เบทเบเบฑเบšเบŠเบทเปˆเป€เบซเบ”เบเบฒเบ™เบ›เบปเบเบเบฐเบ•เบด. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบฑเบ™เบšเปเปˆเป„เบเบˆเบฒเบเบ™เบตเป‰เป„เบ›เบซเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡ do_something. เปเบ•เปˆเบ—เปˆเบฒเบ™เบšเปเปˆเบกเบตเบเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบœเบนเป‰เปƒเบ”เบœเบนเป‰เบซเบ™เบถเปˆเบ‡เบญเปˆเบฒเบ™เป€เบซเบ”เบเบฒเบ™เบ™เบตเป‰; เปเบฅเบฐ เบ–เป‰เบฒ เบซเบฒเบ เบ—เปˆเบฒเบ™ เบญเปˆเบฒเบ™ เบกเบฑเบ™, เบซเบผเบฑเบ‡ เบˆเบฒเบ เบ™เบฑเป‰เบ™ เบ—เปˆเบฒเบ™ เบญเปˆเบฒเบ™ เบกเบฑเบ™ เบชเปเบฒ เป€เบฅเบฑเบ” เบœเบปเบ™; เปเบฅเบฐเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบญเปˆเบฒเบ™เบกเบฑเบ™เบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เป„เบ”เป‰เป€เบฎเบฑเบ”เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡, เปเบฅเบฐเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”. เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบซเบ”เบเบฒเบ™เบเบฒเบเป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบฎเบฑเบ”, เบ„เปเบฒเบ„เบดเบ”เป€เบซเบฑเบ™เบเบฒเบเป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™, เปเบฅเบฐเบ™เบฑเป‰เบ™เบเปเปˆเป€เบ›เบฑเบ™เบšเบฑเบ™เบซเบฒ.

เบ›เบฐเบชเบปเบšเบเบฒเบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบเบฑเบš API asynchronous เปƒเบ™ Kafka

เปƒเบ™เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™ asynchronous เปƒเบ™ RabbitMQ, เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบญเปˆเบฒเบ™เบ‚เปเป‰เบ„เบงเบฒเบก, เป„เบ›เบ—เบตเปˆ http, เบ—เปˆเบฒเบ™เบกเบตเบ„เปเบฒเบ•เบญเบš - เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบงเปˆเบฒเบ‚เปเป‰เบ„เบงเบฒเบกเป„เบ”เป‰เบฎเบฑเบš. เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ‚เบฝเบ™เป„เบ›เบซเบฒ Kafka, เบกเบตเบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ‚เบฝเบ™เป„เบ›เบซเบฒ Kafka, เปเบ•เปˆเบ—เปˆเบฒเบ™เบšเปเปˆเบฎเบนเป‰เบซเบเบฑเบ‡เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบกเบฑเบ™.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เปเบ™เบฐเบ™เปเบฒเป€เบซเบ”เบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เปเบฅเบฐเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเป€เบžเบทเปˆเบญเบงเปˆเบฒเบ–เป‰เบฒเป€เบซเบ”เบเบฒเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบ–เบทเบเบชเบปเปˆเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบงเบฅเบฒเบ™เบฑเป‰เบ™เปเบฅเบฐเป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เบ‚เบญเบ‡เป€เบซเบ”เบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบ™เบˆเบฐเบกเบฒเบฎเบญเบ”. เบ–เป‰เบฒเบชเบดเปˆเบ‡เบ™เบตเป‰เบšเปเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบœเบดเบ”เบžเบฒเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบปเปˆเบ‡เป€เบซเบ”เบเบฒเบ™ "item_ready_to_refund", เบžเบงเบเป€เบฎเบปเบฒเบ„เบฒเบ”เบซเบงเบฑเบ‡เบงเปˆเบฒเบเบฒเบ™เบชเบปเปˆเบ‡เป€เบ‡เบดเบ™เบ„เบทเบ™เบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™, เป€เบ‡เบดเบ™เบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เบ„เบทเบ™เปƒเบซเป‰เบฅเบนเบเบ„เป‰เบฒ, เปเบฅเบฐเป€เบซเบ”เบเบฒเบ™ "money_refunded" เบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบžเบงเบเป€เบฎเบปเบฒ. เปเบ•เปˆเบ™เบตเป‰เบšเปเปˆเปเบ™เปˆเบ™เบญเบ™, เบชเบฐเบ™เบฑเป‰เบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบเบงเบ”เบเบฒเปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™.

Nuances

เบกเบตเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™: เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบเบซเบปเบงเบ‚เปเป‰เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš, เปเบฅเบฐเบ—เปˆเบฒเบ™เบกเบตเบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบšเปเปˆเบ”เบต, เบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบเบˆเบฐเบซเบผเบธเบ”เบฅเบปเบ‡, เปเบฅเบฐเบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเป„เบ›เบ•เบทเปˆเบกเบญเบตเบ. เป€เบˆเบปเป‰เบฒโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™ เบขเบธเบ”เป€เบŠเบปเบฒเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบเบ—เบฑเบ‡เบซเบกเบปเบ”, เบชเบฑเบ™เบเบฒเบŠเบปเบ”เป€เบŠเบตเบเบ•เบทเปˆเบกเบญเบตเบเป€เบžเบทเปˆเบญเบชเบทเบšเบ•เปเปˆเบเบฒเบ™เบญเปˆเบฒเบ™.

เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบฎเบนเป‰โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบกเบฑเบ™, เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบ™เบฑเบšโ€‹เบ–เบทโ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบกเบฑเบ™, เปเบฅเบฐโ€‹เบ—เบฑเบ™โ€‹เบ—เบตโ€‹เบกเบฑเบ™โ€‹เป€เบเบตเบ”โ€‹เบ‚เบถเป‰เบ™. เปเบฅเบฐเบ™เบตเป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเป€เบซเบ”เบเบฒเบ™เปเบกเปˆเบ™เบ–เบทเบเบ•เป‰เบญเบ‡เบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ‚เบญเบ‡เป€เบซเบ”เบเบฒเบ™ -bus, เป€เบซเบ”เบเบฒเบ™เปเบกเปˆเบ™เบ–เบทเบเบ•เป‰เบญเบ‡เบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ‚เบญเบ‡เบœเบนเป‰เบเบงเบ”เบชเบญเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ, เปเบ•เปˆเบกเบฑเบ™เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ‚เบญเบ‡ PostgreSQL, เป€เบžเบฒเบฐเบงเปˆเบฒเปƒเบ™เบฅเบฐเบšเบปเบšเบ”เบฝเบงเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. MySQL เบเบฑเบš UNSIGNED INT, เปเบฅเบฐเปƒเบ™เบเบฒเบ™เบ‚เบฝเบ™เปƒเบซเบกเปˆเบฅเบฐเบšเบปเบšเบกเบต PostgreSQL เบžเบฝเบ‡เปเบ•เปˆเบเบฑเบš INT. เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบฅเบฒเบงเปเบกเปˆเบ™เบ™เป‰เบญเบเบเบงเปˆเบฒ, เปเบฅเบฐ Id เบšเปเปˆเป€เบซเบกเบฒเบฐ. Symfony เป„เบ”เป‰เป€เบชเบเบŠเบตเบงเบดเบ”เบ”เป‰เบงเบเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™. เบžเบงเบเป€เบฎเบปเบฒ, เปเบ™เปˆเบ™เบญเบ™, เบˆเบฑเบšเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบญเบตเบ‡เปƒเบชเปˆเบกเบฑเบ™, เปเบฅเบฐเบเปเบฒเบฅเบฑเบ‡เบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบŠเบปเบ”เป€เบŠเบตเบเบ™เบตเป‰, เปเบ•เปˆเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ—เบฐเบงเบตเบเบฒเบ™เบ•เป‰เบฒเบ™เบšเบฑเบ™เบซเบฒ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ‚เปเป‰เบ„เบงเบฒเบกเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบšเปเปˆเบชเปเบฒเป€เบฅเบฑเบ”. เป€เบ„เบปเบฒเป€เบ•เบตเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰เบเบฑเบ‡เบขเบนเปˆเปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เปเบฅเบฐ Symfony เป„เบ”เป‰เบ›เบดเบ”เบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™เบเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบฅเป‰เบง, เปเบฅเบฐเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบ—เบตเบชเบญเบ‡เป„เบ”เป‰เบ‚เป‰เบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป‚เบ”เบเบšเปเปˆเบกเบตเป‚เบญเบเบฒเบ”เบ—เบตเปˆเบˆเบฐเบŠเบปเบ”เป€เบŠเบตเบ.

เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบงเบฒเบ‡เบฅเบปเบ‡เบชเปเบฒเบฅเบฑเบšเบšเบฒเบ‡เป€เบงเบฅเบฒ - เป‚เบŠเบเบ”เบต, เบเบฑเบš Kafka เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบšเปเปˆเบ”เบต, เป€เบžเบฒเบฐเบงเปˆเบฒเบ‚เปเป‰เบ„เบงเบฒเบกเบเบฑเบ‡เบ„เบปเบ‡เบขเบนเปˆ. เป€เบกเบทเปˆเบญเบงเบฝเบเบ–เบทเบเบŸเบทเป‰เบ™เบŸเบน, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เบžเบงเบเบกเบฑเบ™เปƒเบซเป‰เบˆเบปเบš. เบกเบฑเบ™เบชเบฐเบ”เบงเบเบชเบฐเบšเบฒเบ.

Kafka เบกเบตเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบŠเบปเบ”เป€เบŠเบตเบเป‚เบ”เบเบ•เบปเบ™เป€เบญเบ‡เป‚เบ”เบเบœเปˆเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบท. เปเบ•เปˆเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบขเบธเบ”เป€เบŠเบปเบฒเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบเบ—เบฑเบ‡เบซเบกเบปเบ” - เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบเบฒเบ™เบเบฐเบเบฝเบกเบเบฒเบ™เบ›เปˆเบญเบเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ—เบตเปˆเบˆเบฐเบšเปเปˆเบกเบตเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบ, redeployments. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เปƒเบ™ Kafka เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบเบฒเบ™เบŠเบปเบ”เป€เบŠเบตเบเบœเปˆเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบท, เปเบฅเบฐเบ‚เปเป‰เบ„เบงเบฒเบกเบˆเบฐเบœเปˆเบฒเบ™.

nuance เบญเบตเบโ€‹เบ›เบฐโ€‹เบเบฒเบ™โ€‹เบซเบ™เบถเปˆเบ‡ - เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เบ—เบฝเบšเบเบฑเบš rdkafka.so - เปเบกเปˆเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ PHP, เปเบฅเบฐเปƒเบ™ PHP, เบ•เบฒเบกเบเบปเบ”เบฅเบฐเบšเบฝเบš, เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ•เบดเบ”เบ•เปเปˆเบเบฑเบš Kafka เบœเปˆเบฒเบ™ repository rdkafka.so, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบตเบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ wrapper. เบšเบฒเบ‡เบ—เบตเบชเบดเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบชเปˆเบงเบ™เบ•เบปเบงเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เปเบ•เปˆเบกเบฑเบ™เป„เบ”เป‰เบซเบฑเบ™เบญเบญเบเบงเปˆเบฒเบเบฒเบ™เบญเปˆเบฒเบ™เบ„เบทเบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบญเปˆเบฒเบ™เปเบฅเป‰เบงเบšเปเปˆเปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เบ‡เปˆเบฒเบ. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบกเบตเบšเบฑเบ™เบซเบฒเบŠเบญเบšเปเบง.

เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒเบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบžเบฒเบ—เบดเบŠเบฑเบ™, เบกเบฑเบ™เบ–เบทเบเบ‚เบฝเบ™เป„เบงเป‰เปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™ เบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบ >= เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบซเบปเบงเบ‚เปเป‰. เปเบ•เปˆโ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป„เบ”เป‰โ€‹เบžเบปเบšโ€‹เป€เบซเบฑเบ™โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ™เบตเป‰โ€‹เบซเบผเบฒเบโ€‹เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ—เบตเปˆโ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบกเบฑเบ. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปเบฅเบฐเบกเบตเบชเบญเบ‡เบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบ, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบชเบญเบ‡เบชเปˆเบงเบ™. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบกเบตเบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆ 20 เบžเบฑเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเป„เบ”เป‰เบชเบฐเบชเบปเบก, เปเบฅเบฐเบ—เปˆเบฒเบ™เบชเป‰เบฒเบ‡เปƒเบซเบกเปˆ, เบˆเปเบฒเบ™เบงเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบˆเบฐเบšเปเปˆเป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™เปƒเบ™เป„เบงเป†เบ™เบตเป‰. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบตเบชเบญเบ‡เบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบเบ‚เบฐเบซเบ™เบฒเบ™, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™.

เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เบดเบ”เบ•เบฒเบกเบกเบฑเบ™เบˆเบฐเบŠเบฑเบ”เป€เบˆเบ™เบเบงเปˆเบฒเบงเปˆเบฒเบšเบฑเบ™เบซเบฒเปƒเบ”เบขเบนเปˆเปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆ.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เป„เบฅเปˆเบˆเปเบฒเบ™เบงเบ™เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบšเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเป€เบกเบทเปˆเบญเป„เบงเป†เบกเบฒเบ™เบตเป‰, เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบซเบ”เบเบฒเบ™เบ„เบงเบ™เบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบชเบปเปˆเบ‡เบ•เบปเบงเป€เบฅเบเบ™เบตเป‰เป„เบ›เบซเบฒเบฅเบฐเบšเบปเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบˆเบฒเบ Kafka เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบ•เบปเบงเป€เบฅเบเบ—เบตเบชเบญเบ‡, เบงเบดเบ—เบตเบเบฒเบ™เบซเบผเบฒเบเป€เบซเบ”เบเบฒเบ™เป„เบ”เป‰เบ–เบทเบเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰. เปเบ™เปˆเบ™เบญเบ™, เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบญเบ‡เบ•เบปเบงเป€เบฅเบเบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เบชเบนเบ™เบชเบฐเป€เปเบต.

เบ›เบฐเบชเบปเบšเบเบฒเบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบเบฑเบš API asynchronous เปƒเบ™ Kafka

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ•เบดเบ”เบ•เบฒเบกเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบœเบนเป‰เบœเบฐเบฅเบดเบ”เบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”, เบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™เป€เบซเบ”เบเบฒเบ™ - bus เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบก, เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบเบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰, เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰เบ”เบต, เปเบ•เปˆ BOB เบกเบตเบšเบฑเบ™เบซเบฒเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™ (เบˆเบธเบ”เบชเบนเบ‡เบชเบธเบ”เบชเบตเบŸเป‰เบฒ).

เบ›เบฐเบชเบปเบšเบเบฒเบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบเบฑเบš API asynchronous เปƒเบ™ Kafka

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบเปˆเบฒเบงเป€เบ–เบดเบ‡เบ„เบงเบฒเบกเบŠเบฑเบเบŠเป‰เบฒเบ‚เบญเบ‡เบเบธเปˆเบกเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบเปเบฅเป‰เบง. เป€เบงเบปเป‰เบฒเบ›เบฐเบกเบฒเบ™, เบ™เบตเป‰เปเบกเปˆเบ™เบˆเปเบฒเบ™เบงเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบเบฑเบ‡เบšเปเปˆเป„เบ”เป‰เบญเปˆเบฒเบ™. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบง, เบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เป„เบงเบงเบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ„เบงเบฒเบก lag เบกเบฑเบเบˆเบฐเป€เบ›เบฑเบ™ 0, เปเบ•เปˆเบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบเปเปˆเบชเบฒเบกเบฒเบ”เบกเบตเบˆเบธเบ”เบชเบนเบ‡เบชเบธเบ”เปƒเบ™เป„เบฅเบเบฐเบชเบฑเป‰เบ™. Kafka เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰เบญเบญเบเบˆเบฒเบเบเปˆเบญเบ‡, เปเบ•เปˆเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบเปเบฒเบ™เบปเบ”เบŠเปˆเบงเบ‡เป€เบงเบฅเบฒเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™.

เบกเบตเป‚เบ„เบ‡เบเบฒเบ™ Burrowเป€เบŠเบดเปˆเบ‡เบˆเบฐเปƒเบซเป‰เบ—เปˆเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบš Kafka. เบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเปƒเบŠเป‰ API เบ‚เบญเบ‡เบเบธเปˆเบกเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบเป€เบžเบทเปˆเบญเปƒเบซเป‰เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบเบธเปˆเบกเบ™เบตเป‰เป€เบฎเบฑเบ”. เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบเบฒเบ™เบ•เบปเบเบฅเบปเบ‡เปเบฅเบฐเบฅเบปเป‰เบกเป€เบซเบฅเบง, เบเบฑเบ‡เบกเบตเบ„เปเบฒเป€เบ•เบทเบญเบ™, เปเบฅเบฐเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบปเป‰เบ™เบžเบปเบšเบงเปˆเบฒเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบฎเบฑเบšเบกเบทเบเบฑเบšเบˆเบฑเบ‡เบซเบงเบฐเบเบฒเบ™เบœเบฐเบฅเบดเบ” - เบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเบกเบตเป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเบžเบดเบชเบนเบ”เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เบฝเบ™. เบฅเบฐเบšเบปเบšเปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบชเบฐเบซเบฅเบฒเบ”เปเบฅเบฐเบ‡เปˆเบฒเบเบ•เปเปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰.

เบ›เบฐเบชเบปเบšเบเบฒเบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบเบฑเบš API asynchronous เปƒเบ™ Kafka

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡ API เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ. เบ™เบตเป‰เปเบกเปˆเบ™เบเบธเปˆเบก bob-live-fifa, partition refund.update.v1, เบชเบฐเบ–เบฒเบ™เบฐ OK, lag 0 - เบชเบธเบ”เบ—เป‰เบฒเบ offset เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบฅเบฐเบญเบทเปˆเบ™เป†.

เบ›เบฐเบชเบปเบšเบเบฒเบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ„เบทเบ™เป€เบ‡เบดเบ™เบเบฑเบš API asynchronous เปƒเบ™ Kafka

เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก updated_at SLA (เบ•เบดเบ”เบขเบนเปˆ) เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบเปˆเบฒเบงเป€เบ–เบดเบ‡เปเบฅเป‰เบง. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เป„เบ”เป‰เบ›เปˆเบฝเบ™เบชเบฐเบ–เบฒเบ™เบฐเบ—เบตเปˆเบกเบฑเบ™เบเบฝเบกเบžเป‰เบญเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบฑเบšเบ„เบทเบ™. เบžเบงเบเป€เบฎเบปเบฒเบ•เบดเบ”เบ•เบฑเป‰เบ‡ Cron, เป€เบŠเบดเปˆเบ‡เบšเบญเบเบงเปˆเบฒเบ–เป‰เบฒเปƒเบ™ 5 เบ™เบฒเบ—เบตเบงเบฑเบ”เบ–เบธเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบ„เบทเบ™เป€เบ‡เบดเบ™ (เบžเบงเบเป€เบฎเบปเบฒเบชเบปเปˆเบ‡เบ„เบทเบ™เป€เบ‡เบดเบ™เบœเปˆเบฒเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เบˆเปˆเบฒเบเป€เบ‡เบดเบ™เบขเปˆเบฒเบ‡เป„เบงเบงเบฒ), เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบœเบดเบ”เบžเบฒเบ”เปเบ™เปˆเบ™เบญเบ™, เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เปเบ™เปˆเบ™เบญเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเป€เบญเบปเบฒ Cron, เป€เบŠเบดเปˆเบ‡เบญเปˆเบฒเบ™เบชเบดเปˆเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เปเบฅเบฐเบ–เป‰เบฒเบžเบงเบเบกเบฑเบ™เปƒเบซเบเปˆเบเบงเปˆเบฒ 0, เบกเบฑเบ™เบˆเบฐเบชเบปเปˆเบ‡เบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™.

เป€เบžเบทเปˆเบญเบชเบฐเบซเบผเบธเบš, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบซเบ”เบเบฒเบ™เปเบกเปˆเบ™เบชเบฐเบ”เบงเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ:

  • เบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบ”เบเบฅเบฐเบšเบปเบšเบซเบผเบฒเบ;
  • เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เปเบกเปˆเบ™เบšเปเปˆเบชเปเบฒเบ„เบฑเบ™;
  • เบกเบตเป€เบซเบ”เบเบฒเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบเบซเบผเบทเป€เบซเบ”เบเบฒเบ™เบ™เป‰เบญเบเป†.

เบกเบฑเบ™เบˆเบฐเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบšเบปเบ”เบ„เบงเบฒเบกเบกเบตเบซเบปเบงเบ‚เปเป‰เบชเบฐเป€เบžเบฒเบฐเบซเบผเบฒเบ - asynchronous API on Kafka, เปเบ•เปˆเปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบกเบฑเบ™เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบขเบฒเบเบˆเบฐเปเบ™เบฐเบ™เปเบฒเบซเบผเบฒเบเบชเบดเปˆเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™.
เบ—เปเบฒเบญเบดเบ”, เบ•เปเปˆเป„เบ› เป‚เบซเบผเบ”เบชเบนเบ‡ ++ เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฅเปเบ–เป‰เบฒเบˆเบปเบ™เบเปˆเบงเบฒเป€เบ”เบทเบญเบ™เบžเบฐเบˆเบดเบ; เปƒเบ™เป€เบ”เบทเบญเบ™เป€เบกเบชเบฒเบˆเบฐเบกเบตเบชเบฐเบšเบฑเบš St. Petersburg, เปเบฅเบฐเปƒเบ™เป€เบ”เบทเบญเบ™เบกเบดเบ–เบธเบ™เบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป‚เบซเบผเบ”เบชเบนเบ‡เปƒเบ™ Novosibirsk.
เบญเบฑเบ™เบ—เบตเบชเบญเบ‡, เบœเบนเป‰เบ‚เบฝเบ™เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™, Sergei Zaika, เป€เบ›เบฑเบ™เบชเบฐเบกเบฒเบŠเบดเบเบ‚เบญเบ‡เบ„เบฐเบ™เบฐเบเปเบฒเบกเบฐเบเบฒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบเบญเบ‡เบ›เบฐเบŠเบธเบกเปƒเบซเบกเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบ„เบงเบฒเบกเบฎเบนเป‰. KnowledgeConf. เบเบญเบ‡โ€‹เบ›เบฐโ€‹เบŠเบธเบกโ€‹เปเบกเปˆเบ™โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เบกเบทเป‰โ€‹, เบˆเบฐโ€‹เบˆเบฑเบ”โ€‹เบ‚เบถเป‰เบ™โ€‹เปƒเบ™โ€‹เบงเบฑเบ™โ€‹เบ—เบต 26 เป€เบกโ€‹เบชเบฒโ€‹, เปเบ•เปˆโ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹เปเบกเปˆเบ™โ€‹เป€เบ‚เบฑเป‰เบกโ€‹เปเบ‚เบ‡โ€‹.
เปเบฅเบฐเบกเบฑเบ™เบˆเบฐเบขเบนเปˆเปƒเบ™เป€เบ”เบทเบญเบ™เบžเบถเบ”เบชเบฐเบžเบฒ PHP เบฅเบฑเบ”เป€เบŠเบ ะธ RIT++ (เบกเบต DevOpsConf เบฅเบงเบก) - เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เปเบ™เบฐเบ™เปเบฒเบซเบปเบงเบ‚เปเป‰เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™, เบชเบปเบ™เบ—เบฐเบ™เบฒเบเปˆเบฝเบงเบเบฑเบšเบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเบˆเบปเปˆเบกเบเปˆเบฝเบงเบเบฑเบšเป‚เบเบ™ stuffed เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™