Depository of News

Как засунуть Protobuf в CEL и выиграть (или проиграть): наш опыт в MWS Cloud Platform

newsdepo.com · world

<img src="https://habrastorage.org/getpro/habr/upload_files/e45/2be/424/e452be424bca34404eab62074005f6b2.jpg" /><p>Всем привет! Меня зовут Михаил Голубев, и я работаю в команде Kubernetes Security, <a href="https://mws.ru/cloud-platform/?utm_source=habr_hub&amp;utm_campaign=mwscloudplatform&amp;utm_term=article1078556">MWS Cloud Platform.</a> В этой статье я расскажу об одной попытке оптимизации: как мы залезли под капот CEL и Protobuf, чтобы научить интерпретатор читать данные из бинарного формата на лету без полной десериализации, и почему в итоге от этого кода пришлось отказаться.</p><p>Почему мы вообще этим озадачились: в одном из наших микросервисов реализовано сканирование приходящих событий по k8s-манифестам. Событий летит много, а обрабатывать их надо быстро, так что, чтобы минимизировать сетевой трафик и снизить нагрузку на инфраструктуру, в качестве основного формата передачи данных мы первоначально решили использовать Protobuf, он значительно компактнее JSON.</p><p>Далее эти данные проходят через различные валидации и проверки. Для описания и выполнения таких политик мы используем CEL — наподобие Kyverno или нативных k8s Validating (и Mutating) Admission Policies. Вот тут-то Protobuf и CEL встретились, и эта встреча оказалась не такой гладкой, как мы рассчитывали, — об этом подробнее ниже.</p> <a href="https://habr.com/ru/articles/1078556/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=1078556#habracut">Читать далее</a>

Read full article →