Telegram Web Link
Довелось тут потрогать grpc-gateway https://grpc-ecosystem.github.io/grpc-gateway/ и оценить в работе на реальной задаче. Суть этой штуки в том, что она транслирует REST запросы в gRPC. То есть вы пишите protobuf а она генерирует вам HTTP сервис.
Для чего это может быть нужно? Например, если ваше приложение состоит из нескольких компонентов, которые должны общаться, и вам не хочется возиться с REST, ведь есть же gRPC с кодогенерацией. Но при этом один из компонентов должен таки REST предоставлять скажем для фронтента. GRPC-gateway поможет избавить от двойной работы.

Как это устроено?

Сначала вы описываете какой-то сервис в protobuf

syntax = "proto3";
package your.service.v1;
option go_package = "github.com/yourorg/yourprotos/gen/go/your/service/v1";

message StringMessage {
string value = 1;
}

service YourService {
rpc Echo(StringMessage) returns (StringMessage) {}
}

Затем запускаете генератор кода

protoc -I . \
--go_out ./gen/go/ --go_opt paths=source_relative \
--go-grpc_out ./gen/go/ --go-grpc_opt paths=source_relative \
your/service/v1/your_service.proto

Получается несколько файликов, которые содержат http сервис с хэндлерами, которые могут превращать ваши HTTP запросы в gRPC.
Далее используете этот сгенерированный код

mux := runtime.NewServeMux()
opts := []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())}
gw.RegisterYourServiceHandlerFromEndpoint(ctx, mux, *grpcServerEndpoint, opts)

http.ListenAndServe(":8081", mux)

Готово!

Тут же рядом можно нагенерить openAPI схему. REST реализован практически бесплатно. Приколы конечно есть свои у продукта, куда же без них, и куда стремиться тоже, но все равно это огромная польза и экономия времени.

В сочетании с kube generator можно еще
👉 Из гошной структуры сгенерить protobuf файлы
👉 Из гошной структуры генерить клиенты для CRD
👉 И даже сами CRD манифесты
То есть если один из компонентов приложения это кубовый контроллер, то вообще сказка. Описываем нашу апишку в структурах и генерим из нее вообще все. Ну почти, если не считать что куборгенератор может делать пока что только proto2 синтакс и надо все же сам сервис описать, но это все прям мелочи.

Нашел даже реальный пример - Argo продукты, которые используют всю эту машинерию, argo workflow и argocd точно. Так что в проде это используется. Рекомендую присмотреться подробнее, мне зашло.
👍121
Василий Романов выложил свой курс по Golang бесплатно в качестве новогоднего подарка. https://stepik.org/course/187490/promo
Помню как когда-то осваивал гошку по его курсам. Прекрасная подача по принципу коротко и по делу (только такое мне и заходит). А тут еще и бесплатно. Крайне рекомендую.
🔥19👍1💩1
Я представляю вам видезапись доклада с Highload++ 2023 https://www.youtube.com/watch?v=yyrAH7nl7RM о крупном и интересном проекте межсеврисной авторизации. Я был лидом и основным разработчиком этого проекта с самого начала и продолжаю работать над ним до сих пор. В течение 30 минут я расскажу о всех важных аспектах проекта, но, конечно, за это время невозможно охватить все детали. Я сосредоточусь на самом важном.

Этот проект не только технический и связан с борьбой за миллисекунды. Интеграция в работающие сервисы - это настоящее испытание, не говоря уже об интеграции в головы пользователей. В целом проект оказался успешным, хотя и не без ошибок. Я уверен, что те, кто стоит перед подобной задачей, смогут извлечь из него полезные уроки.
🔥9
В продолжение темы изучающих гошку (или углубляющихся), я мог бы дополнительно порекомендовать Go101 https://go101.org/article/101.html. Как оказывается, не все видели или знают об этом материале. Читал по диагонали и останавливался только на своих пробелах. Инженеры самых разных уровней смогут для себя найти что-то новое.
👍102💩1
Продолжаю делиться накопившимися полезными источниками информации. На этот раз еще один достойный труд (и даже на русском) на тему проектирования API. Автор делает упор на API-first подход частенько, и можно к этому подходу относиться по-разному, но это не отменяет полезности остального материла. https://twirl.github.io/The-API-Book/API.ru.html
👍7🔥4
А вот и видео с GopherCon 2023 подъехало https://www.youtube.com/@GopherAcademy/videos
👍3🔥1🐳1
Еще один инструмент для работы с внутренними (и не только) TLS сертами. Можно использовать для реализации CA куба или автоматизированной выдачи сертификатов для mutual TLS, пользователеям и прочего. https://github.com/smallstep/certificates
Отличная книжка для желающих получить базовые или первоначальные знания в ИИ и тоже быть на хайпе и больше понимать. Много положительных отзывов от коллег и знакомых.
👍6👎1
This media is not supported in your browser
VIEW IN TELEGRAM
👎1
Маэстро возвращается. Андрей Созыкин, автор самого крутейшего на мой взгляд курса по сетям https://www.asozykin.ru/courses/networks_online (писал о нем ранее), выпустил вступительное видео к продолжению этого курса! Вернее обновлению и актуализации. Все это он делает бесплатно и весьма качественно. Ждем с нетерпением выхода лекций. Спасибо за труд!
👍16👎1🔥1
Оказывается не все еще успели узнать о возможности обрезать capacity слайса в гошке. Когда занимаешься оптимизациями бывает и такое нужно. В новом пакете slices есть такой метод https://cs.opensource.google/go/x/exp/+/master:slices/slices.go;l=419
👍2👎1
Давненько ничего не писал, а уже набралось много интересного. Пора это исправлять. А пока для разминки вот вам анонс на первую конфу от Авито.
👍1💩1
Forwarded from AvitoTech
Avito All Day Long
#avitoteam

У нас накопилось столько решений, технологий и кейсов, что можно устроить свою собственную конференцию. Что мы и делаем.

20 июля в 11:00 мск приглашаем на нашу первую конференцию AvitoTech.
Место встречи: Центр событий РБК, Космодамианская набережная, 52, стр. 7 (м. Павелецкая)

В пространстве:
1️⃣ зона для дискуссий — обсуждаем тренды рынка и актуальные решения;
2️⃣ зона для тест-драйва наших технопродуктов — демо-станции с AvitoPlato, Trisigma, Emcee;
3️⃣ зона знакомства с Вертикалями Авито — Недвижимость, Авто, Работа, Товары и Услуги;
4️⃣ зона отдыха и игр.

В программе:
– инструменты платформенных команд, которые делают пользователей счастливыми;
– Low Code + Backend Driven UI;
– MLOps с нуля;
– продуктовая разработка от платформенных команд;
– техстратегии, инженерная культура, взаимоотношения разработчиков и дизайнеров.

И многое другое, через что мы прошли, нашли эффективные решения и готовы рассказать, как вы можете применить это всё у себя.

Увидимся на Avito All Day Long! Регистрация обязательна :)

Вам понравится эта встреча! ❤️

в начало поста ⬅️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6💩3👍1
Плагинизация и расширение возможностей envoy

Envoy - это действительно стандарт на сегодняшний день для использования в качестве сайдкаров, и не только. Одно из главных его преимуществ - это xDS протокол для конфигурации прокси на лету. Именно на этом построена работа таких инструментов, как Istio. Общая механика такова - пишем yaml манифесты с правилами роутинга, безопасности и прочим, а Istio конфигурирует нужные сайдкары в нужных подах.

Принцип обработки запроса у Envoy - это цепочка фильтров, которые по сути являются middleware. Из коробки доступны множество различных фильтров на любой вкус. Однако, все равно рано или поздно их может не хватить. Это произошло и со мной, когда потребовалось накрутить кэширование для авторизационных запросов для снижения latency. Существует несколько способов создания собственного фильтра:

➡️ C++ - это максимально эффективный способ с точки зрения возможностей, но также и максимально травмирующий :). Однако, если в вашей команде есть c++ разработчики, то проблем возникнуть не должно.
➡️ Golang - наша любимая "гошечка". Все достаточно просто: пишем код на основе предоставленных интерфейсов, собираем so, добавляем в образ - готово. Ограничений в функциональности не встретил.
➡️ Wasm - там тоже есть go, но только tiny-go. Это уже ограничение, например, в сетевых запросах, дополнительный latency до 6мс (по заверениям авторов Istio, но надо тестировать самостоятельно), что может быть достаточно заметно для нагруженных частей проекта. Находил тесты производительности, которые также заставляли сомневаться.
➡️ Lua - простой как палка, есть все что необходимо в плане функционала, код работает из коробки, даже не надо образ дополнять. Но Envoy буферизует запрос перед тем как отдать его в lua код (перед сетевыми запросами). Можно столкнуться, например, с проблемой "too large body".

Эти методы расширения - те, с которыми мне пришлось столкнуться ближе всего. Для простых задач я буду продолжать использовать Lua, но если логика чуть сложнее, чем изменение заголовков, то я буду смотреть в сторону Golang.
👍3👎1
📖 Наглядные и подробные интерактивные руководства об устройстве TLS протоколов:
- версия 1.2 https://tls12.xargs.org/
- версия 1.3 https://tls13.xargs.org/

И рядом также лежит аналогичный гайд по QUIC https://quic.xargs.org/
👍7🤡1
Авито запартнерилось с GetMentor и Solvery

Теперь можно сразу посмотреть всех доступных менторов с Авито и обратиться за помощью. Я на GetMentor тоже есть . Помогаю готовиться к собеседованиям, и составлять индивидуальные планы развития как по тех части, так и по софт скиллам, включая и компетенции лида. Но бывают и консультации по конкретным проектам, и даже непосредственная помощь в качестве исполнителя.
Ни разу про это не писал раньше, но раз уж пошло такое дело, то почему бы и да 🙂
🔥4
Forwarded from AvitoTech
Запустили менторскую программу, и теперь нас можно найти на Getmentor и Solvery.

Наши опытные инженеры помогут подтянуть харды, объяснят сложную задачу и посоветуют ресурсы для развития. С софтами тоже разберутся — от первого собеседования до планирования карьерного пути 🚀

В общем, любой вопрос за ваши деньги: их можно отдать непосредственно за сессию, а можно перечислить взнос на благотворительность — такое мы ценим 🐞

#avitoteam
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🤡1
Наткнулся на классную штуку. Визуализация алгоритмов https://www.cs.usfca.edu/~galles/visualization/Algorithms.html Я как сторонник понимать, а не зубрить очень такое ценю.
👍7🔥2
Наткнулся на шикарный гайд по профилированию go приложений от Dave Cheney. Все понятно и разложено по полочкам. Ну а если 40 минут на английском тяжелова-то, то есть неплохая статья на русском по этой же теме (и много еще других). Эту тему кстати часто затрагивают на собесах, когда все простые и средние вопросы успешно отвечены. Если претендуете на высокие грейды, то в таких вещах хорошо бы ориентироваться.
👍1711🤝1
Всем привет. Знаю, что поиск работы в так называемом "бигтехе" для многих вопрос актуальный. Делаю такой вывод в первую очередь из характера обращений ко мне на менторство, а так же из обсуждений в различных чатиках. Поэтому информация ниже как раз для таких инженеров.
В эти выходные Авито проводит Weekend Offer для go инженеров (рефералка). Это когда за выходные вы проходите все секции интервью и получаете офер. Конечно же секции идут не подряд, с перерывом минимум час между подходами. Как по мне это гораздо удобнее чем 2-3 недели мариноваться в обычном формате.
Я конечно позднова-то написал, многие предпочитают много времени уделять подготовке. Многие, но не все 🙂 Я вот ни разу не готовился ни к одному собесу, потому что
- все равно вопросы потом другие попадуются
- сейчас большая часть собесов это формат решения практических задач, и там может помочь только имеющийся опыт.
Рекомендую попробовать сходить, проверить свои силы. Может вы их недооцениваете 🙂 В любом случае получите полезный опыт, а кто-то вероятно и офер. Удачи!
🔥9👍21👎1
2025/10/24 13:57:10
Back to Top
HTML Embed Code: