Рассказали, как мы в команде SLA учились измерять надёжность сначала отдельных микросервисов в архитектуре Авито, а затем всей системы в целом. Подробно опишем, что входит в понятие надёжности сервиса, что такое бюджет ошибок и как его считать. А в конце поделимся способами измерения надёжности, которые помогли нам сформулировать понятную и удобную в подсчётах метрику для бизнеса.
Backend developer
Как реализовать ролевую систему доступа через Open Policy Agent. Опыт PaaS Авито
Антон Губарев, инженер в команде Platform as a Service (PaaS) Авито, рассказал, как они с командой внедряли политики авторизации с помощью Open Policy Agent (OPA), и с какими проблемами столкнулись на пути.
Монолит или микросервисы — это не вопрос технологических предпочтений, это про time-to-market
На конференциях эта тема (монолит vs микросервисы) обсуждается с завидной регулярностью, но обычно в техническом ключе. Кто-то любит консистентность монолита, кто-то гибкость микросервисов, какие-то инструменты удобнее, какие-то нет.
Очень мало обсуждается вопрос команд и их взаимодействия, а ведь это самое главное при выборе. Я написал небольшую заметку в одном телеграм-канале, и в результате последующих обсуждений незаметно выросла целая статья на Хабр.
Поехали.
Итак, главное — это организационная структура компании и процессы взаимодействия команд. Да-да, как всегда, не технологии, а люди. Сейчас я работаю в Каруне, до этого работал в компаниях поменьше, видел, как набивались шишки, поэтому могу сравнить.
Одна команда
Когда команда одна, не очень большая (two pizza team), то никто никому не мешает. Код ревью, рефакторинг, деплой проходят быстро и весело. Бизнес сфокусирован на цели и работает как единое целое. Целью, кстати, зачастую является проверка гипотезы, нужен ли вообще этот проект кому-то или нет.
В Go 1.21 существенно расширяется стандартная библиотека
// теперь в Go так можно!
slices.Contains(s, v)
Год назад в блоге Каруны мы писали про дженерики в Go, и там упоминалось, что гошное сообщество разделилось на две части. Не всем это нововведение было нужно, особенно в простом продуктовом коде. И надо сказать, это до сих пор так, дженерики по-прежнему используют далеко не все проекты.
Однако для стандартной библиотеки Go это было по-настоящему царским подарком. Появились новые стандартные обобщенные функции, и, отстоявшись в экспериментальном репозитории golang.org/x/exp, теперь появятся в Go 1.21. Релиз буквально через месяц.
TLDR: появилось множество функций по работе со слайсами, мапами, а также новый логгер с (почти) всеми нужными фишечками.
Лично для меня знаковым событием стало появление возможности поиска элемента в слайсе и получение ключей мапы, потому что ну давно пора, 10 лет языку.
Но давайте обо всём по порядку.
Яндекс выводит за границу заработанные в России деньги, пока это возможно
Яндекс отчитался за 2 квартал (и первое полугодие) 2023 года, и в отчете я обнаружил много интересного. Я уже на протяжении 4 лет разбираю каждый квартал отчетность Яндекса, и это 16-й по счёту отчет (и, возможно, это последний разбор в общем доступе). Так что я уже знаю, куда смотреть и что там можно увидеть.
Что порой кроется за «успехом»
Хочу рассказать вам свой путь в поиске новой работы в 2023 году и поддержать тех, кто сейчас проходит через это. За 6 месяцев я собеседовался в 25 компаний, прошел 54 этапа (а какие-то не прошел), получил 2 оффера и в итоге один из них принял. Если вы сейчас в поиске работы, эта статья будет для вас глотком свежего воздуха. Если же вы матерый специалист, устраивающий процессы онбординга в своей компании, вам это может быть интересно с другой стороны.
May the Code Review be with you
Этот материал — краткая выжимка моего опыта, накопленного за несколько лет работы в крупных командах мобильной разработки. Опыт по большей части в мобильной разработке, что оказало влияние на используемые примеры и ссылки. Для тех, кто предпочитает не читать, а смотреть, в течение пары месяцев должно появиться видео с конференции Mobius, где я рассказываю доклад на эту же тему, но с кучей подробных практических примеров.
Работаем с PostgreSQL в Go. Опыт Авито
Привет! Меня зовут Дима Вагин, я бэкенд-инженер в Авито. Сегодня расскажу, как мы работаем с БД PostgreSQL из Go. Покажу, какие библиотеки и пулеры соединений мы используем для доставки в код параметров подключения и как мы их настраиваем. А ещё расскажу про проблемы, к которым приводит отмена контекста, и о том, как мы с ними справляемся.
HP Vertica, проектирование хранилища данных, больших данных
О чем статья
Незаметно пролетел год, как начались работы по разработке и внедрению хранилища данных на платформе Вертика.
На хабре уже есть статьи про саму СУБД Вертика, особенно рекомендую эту: HP Vertica, первый запущенный проект в РФ, ведь ее автор очень помог нам на начальном этапе. Алексей, спасибо еще раз.
Хотелось бы рассказать о том, какая методология применялась для проектирования физической структуры хранилища, чтобы наиболее полно использовать возможности HP Vertica.
Эту статью хотел бы посветить обоснованию оптимальности выбранной методологии, а в следующей — рассказать о том, какие техники позволяют анализировать данные, содержащие десятки млрд.
Постановка задачи
Рассмотрим высоконагруженный сайт крупной российской интернет-компании (теперь можно — это Авито ;)).
Деятельность компании описывается следующими цифрами: ~ 10 млн. активных пользователей, ~100 млн. просмотров страниц в день, около 1 тыс. новых объектов, размещенных пользователями на сайте в течение 1 минуты, ~10 тыс. поисковых запросов пользователей в минуту.
Грубая оценка количества действий, подлежащих сохранению в хранилище, составляет 100 млн. новых записей в сутки (~100 GB новых данных в сутки).
Т.е. при построении классического хранилища данных с отказом от стирания поступивших ранее данных, объем хранилища через 3 месяца эксплуатации составит 10TB сырых данных. Big Data как она есть.
Нужно построить хранилище, которое хранило бы не меньше 6 месяцев данных, позволяло их анализировать, визуализировать, и отставало бы от реальной жизни настолько мало, насколько это возможно (в худшем случае — отставало бы на день, в лучшем — на минуты).
Вынося сразу за скобки вопрос выбора платформы — хранилище должно работать на HP Vertica, MPP базе колоночного хранения, см. вводную статью в заголовке.
Vertica+Anchor Modeling = запусти рост своей грибницы
Из того, что поменялось — теперь я могу не просто написать статью, а сделать это в блоге компании. И, надеюсь, не один раз. Самопиар окончен, теперь к делу.
Canary Deployment в Kubernetes #1: Gitlab CI
Мы будем использовать Gitlab CI и ручной GitOps для внедрения и использования Canary-деплоя в Kubernetes
Статьи из этого цикла:
- (эта статья)
- Canary Deployment при помощи ArgoCI
- Canary Deployment при помощи Istio
- Canary Deployment с Jenkins-X, Istio и Flagger
Выполнять Canary-деплой мы будем руками через GitOps и создание/изменение основных ресурсов Kubernetes. Эта статья предназначена в первую очередь для знакомства с тем, как работает в Kubernetes Canary деплой, так как есть более эффективные способы автоматизации, которые мы рассмотрим в следующих статьях.
Создаём репозиторий в Go через менеджер транзакций
Всем привет, я Илья Сергунин, веб-разработчик из продуктовой команды Авито. Мы пишем на Go сервис для трейд-ин мобильных телефонов. На его примере покажу, как устроен наш менеджер транзакций.
Как заонбордиться тимлиду — первые 90 дней на новой работе
В этой статье обсуждаем, что и как делать тимлиду в новой команде. Расскажем, как поймать коннект с коллегами, поможем составить план на первые три месяца работы, дадим примеры и шаблоны документов.
Ещё дадим несколько советов на тот случай, если всё-таки не удаётся показать результат за отведённое время.
Как я перестал тревожиться из-за читабельности и… все
Всем привет.
Давно читаю хабр, давно и регулярно читаю статьи про правильное программирование.
В большинстве из них так же регулярно проявляется удивительная забота программистов об эстетической стороне программирования; мол, писать необходимо красиво, читабельно и выразительно. Сочетание этих трех добродетелей обычно вызывает у меня смех, и я объясню почему.
TLDR: забейте на читабельность и выразительность. Стремитесь сделать ваш код хорошо работающим..
Шпаргалка по SQL (postgres), которая выручает меня на собесах
Привет, Хабр!
Я решил посвятить свою первую статью SQL. Вопросы, рассмотренные ниже мне задавали на собеседованиях на позицию python-разработчика. Естественно отвечать правильно получалось не всегда, а если точнее то чаще не правильно, однако проведя N часов в рефлексии я составил перечень ответов, которыми пользуюсь до сих пор.
Данная информация предполагает знание основ языка запросов и я надеюсь, она окажется полезной для разработчиков, которые сейчас активно ищут работу а также, что ты прочитаешь этот текст до конца и добавишь свой вопрос к перечню (ну или поправишь неточности в существующих)
Практическое руководство по HashiCorp Consul — Часть 1
Это часть 1 из серии 2 частей практического руководства по HashiCorp Consul. Эта часть в первую очередь ориентирована на понимание проблем, которые решает Consul и как он их решает. Вторая часть больше ориентирована на практическое применение Consul в реальном примере и будет опубликована на следующей неделе. Давайте начнем.
Разбираемся с пакетом Context в Golang
Пакет context в Go полезен при взаимодействиях с API и медленными процессами, особенно в production-grade системах, которые занимаются веб-запросами. С его помощью можно уведомить горутины о необходимости завершить свою работу.
Ниже небольшое руководство, которое поможет использовать этот пакет в ваших проектах, а также расскажет о некоторых лучших практиках и подводных камнях.
(Прим. пер.: Контекст используется во многих пакетах, например, в работе с Docker).
Основы компьютерных сетей. Тема №5. Понятие IP адресации, масок подсетей и их расчет
Приветствую вас на очередном выпуске. И сегодня речь пойдет о том, какие бывают IP-адреса, и как ими пользоваться. Что такое маска подсети, как она считается, и для чего она нужна. Как делить сети на подсети и суммировать их. Заинтересовавшихся приглашаю к прочтению.
Что делает ChatGPT… и почему это работает?
То, что ChatGPT может автоматически генерировать что-то, что хотя бы на первый взгляд похоже на написанный человеком текст, удивительно и неожиданно. Но как он это делает? И почему это работает? Цель этой статьи - дать приблизительное описание того, что происходит внутри ChatGPT, а затем исследовать, почему он может так хорошо справляться с созданием более-менее осмысленного текста. С самого начала я должен сказать, что собираюсь сосредоточиться на общей картине происходящего, и хотя я упомяну некоторые инженерные детали, но не буду глубоко в них вникать. (Примеры в статье применимы как к другим современным "большим языковым моделям" (LLM), так и к ChatGPT).
Байки погромиста. Если кто-то скажет, что программирование — это скучно
Вообще я, как правило, нормально программирую. Иногда даже такое заворачиваю, что сам тащусь весь день.
Но если б я писал, какой я красавчик, то никому не было бы интересно. Поэтому сегодня — очередная партия программистских историй от меня любимого, с косяками, багами и болью. Иногда это происходило по запарке, или когда я торопился, или после нудной работы, когда мозг уже плавился, а иногда просто я тупил, потому что я человек. В общем, такие вот типичные будни кодера. Наслаждайтесь!
Information
- Rating
- Does not participate
- Location
- Йошкар-Ола, Марий Эл, Россия
- Date of birth
- Registered
- Activity