Как стать автором
Обновить
0
0
Усачёв Константин @DrVirtual

Пользователь

Отправить сообщение

Трудности перевода. Как научить микросервисы общаться и не ссориться

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров5.9K

Привет! Меня зовут Саша Сусиков. Я проверяю клавиатуры на прочность около 10 лет из  них последние 2 года с помощью Go. Сейчас я участвую в разработке платформы СберМаркета, где создаю инструменты, которые упрощают жизнь разработчикам. Эта статья для тех, кому предстоит настроить процесс взаимодействия сервисов в компании и вы ищете, как не наломать дров.

Читать далее
Всего голосов 11: ↑9 и ↓2+7
Комментарии4

Bigtech собесы дней минувших

Время на прочтение9 мин
Количество просмотров6.4K

В эпоху докризисной жизни, мне, как инженеру ориентировавшемуся на европейский и американский рынок, приходилось часто бывать на различных собеседованиях. Этот длиннотекст - краткое обобщение опыта общения с различными зарубежными компаниями в период 2021-2023 года в основном по профилю Software Engineer c редким вкраплением DevOps/SRE.

Читать далее
Всего голосов 14: ↑13 и ↓1+12
Комментарии7

Умещаем простую 16-битную VM в 125 строк Си

Время на прочтение21 мин
Количество просмотров23K

Это руководство предназначено для тех, кто только начинает изучение Си и хочет получить ценный опыт в области низкоуровневого программирования, а также понять внутреннее устройство виртуальных машин. К завершению статьи у нас будет рабочая регистровая виртуальная машина, способная интерпретировать и выполнять ограниченный набор инструкций ASM, плюс несколько дополнительных программ для тестирования ее работоспособности.
Читать дальше →
Всего голосов 75: ↑73 и ↓2+71
Комментарии21

PvP-шутер без даунтаймов: архитектура, аварийные режимы и сервера с рубильником

Время на прочтение6 мин
Количество просмотров6.8K

Мы уже рассказывали, почему первая версия архитектуры игры не была идеальной. Pixel Gun 3D изначально был прототипом в новом для команды жанре PvP-шутер. Хотели протестировать идею, чтобы собрать фидбек от игроков, но популярность игры начала расти достаточно быстро — писать ее заново было уже поздно. Сейчас подход к разработке новых проектов у нас сильно изменился, но зато тогда, без опыта, мы не потратили уйму времени на создание прототипа, который мог оказаться неинтересным для игроков.

С ростом функционала приходилось «на лету» менять архитектуру, делать ее масштабируемой, а также реализовать нашу идею — сделать шутер без даунтаймов даже во время технических работ или форс-мажора.

Далее сравним серверную архитектуру проекта несколько лет назад и сейчас, а также расскажу, как мы добивались дополнительной стабильности с помощью аварийных режимов с рубильниками для серверов.

Читать далее
Всего голосов 34: ↑34 и ↓0+34
Комментарии4

Как за день потерять 30% онлайна и за два месяца сделать батлрояль

Время на прочтение18 мин
Количество просмотров27K

Однажды в своем PvP-шутере мы за один день потеряли 30% от 60 тысяч одновременного онлайна. Это был 2018-й, в тот день на iOS вышел Fortnite. И хотя хайп был уже около года, а PUBG регулярно бил рекорды, без королевской битвы нам жилось вполне спокойно. Но тут стало очевидно, что батлрояль нельзя игнорировать, игрокам он нравится и нужно разрабатывать свой.

За два месяца мы проделали много интересной и сложной работы. Например, сделали свой редактор террейна, чтобы отрисовывать ландшафт не в 500 тысяч треугольников, как это делал Unity Terrain, а всего в 30 тысяч. Или написали мешбейкер, сократив количество запросов на отрисовку с 800 до 100, а освещение научились запекать за 5 минут вместо 30 часов. 

И это не говоря уже об огромном количестве разных оптимизаций ассетов, подгрузки объектов и так далее. Обо всем этом и многом другом подробно расскажу под катом.

Читать далее
Всего голосов 66: ↑66 и ↓0+66
Комментарии20

Cassandra в Yelp

Время на прочтение12 мин
Количество просмотров3.1K

image


Yelp — это крупнейшее в США приложение для заказа еды и услуг. Оно установлено более чем на 30 млн. уникальных устройств, в нём зарегистрировано более 5 млн. компаний. Для хранения и доступа к данным в Yelp используют Cassandra. Как и для каких задач применяется эта база данных, на конференции Cassandra Day Russia 2021 рассказал Александр Широков, Database Reliability Engineer в Yelp.

Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии1

Делаем страницу на React с базой сотрудников при помощи Airtable и Quarkly

Время на прочтение13 мин
Количество просмотров11K

Слышали про такой инструмент, как Airtable, но не знали, с чего начать? Тогда приглашаем в мир визуального программирования построения БД!


Этим постом мы начинаем цикл обучающих статей, в которых будем давать практические примеры работы с нашим инструментом Quarkly. В этом уроке мы сделаем простое веб-приложение, которое будет показывать сотрудников компании. При создании приложения ни один сотрудник РЖД не пострадал.


Фронт будем делать при помощи Quarkly, а данные подтягивать из базы в Airtable. На выходе получим react-приложение, синхронизированное с базой данных.


Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии3

Android Bluetooth Low Energy (BLE) — готовим правильно, часть #2 (connecting/disconnecting)

Время на прочтение13 мин
Количество просмотров19K

Подключение, отключение и обнаружение BLE сервисов.

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Опыт использования gRPC в Почте Mail.ru

Время на прочтение8 мин
Количество просмотров8.8K

Привет, Хабр! Я работаю в команде Антиспама Почты Mail.ru. В этой статье я бы хотел рассказать про наш опыт запуска сервиса с пропускной способностью около 3 миллионов запросов в минуту на базе технологии gRPC. Это современная технология передачи данных по сети, которая реализует подход к удаленному вызову процедур. Разберу, с каким проблемами мы столкнулись при использовании этой технологии под высокой нагрузкой. Все описанное в статье касается реализации gRPC для языка С++.
Читать дальше →
Всего голосов 44: ↑43 и ↓1+42
Комментарии19

Kubernetes или с чего начать, чтобы понять что это и зачем он нужен

Время на прочтение5 мин
Количество просмотров36K

Данная статья рассчитана на новичков. Если вы опытный ниндзя, просто вспомните о том, как когда-то подобная информация могла быть полезной и для вас.

Kubernetes
был создан Google на основе собственного опыта работы с контейнерами в производственной среде, и своим успехом он во многом обязан именно Google.

Так что же такое Kubernetes и для чего мы в принципе хотим использовать именно его, а не обычные контейнеры, например Docker.

Читать далее
Всего голосов 14: ↑8 и ↓6+2
Комментарии7

CI/CD для проекта в GitHub с развертыванием на AWS EC2

Время на прочтение6 мин
Количество просмотров11K

Имеем: проект web API на .net core с исходниками в GitHub.

Хотим: авторазвертывание на виртуалке AWS EC2 после завершения работы с кодом (для примера push в develop ветку).

Инструментарий: GitHub Actions, AWS CodeDeploy, S3, EC2.

Ниже flow процесса, который будем реализовывать, погнали.

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии0

Так ли токсичен синтаксис Rust?

Время на прочтение19 мин
Количество просмотров49K
fn main() {
  println!("Hello, Rust!");
  println!("... Goodbye!");
}

Синтаксис — это первое, на что обращают внимание разработчики, впервые столкнувшись с кодом на Rust. И сложно найти что-то другое, что вызывало бы больше негодования у новичков, и при этом такое, к чему совершенно спокойно относятся уже "понюхавшие пороха" Rust-программисты. Посмотрите, например, сколько эмоций вызывает синтаксис Rust у комментаторов одной из типичных новостей про Rust на OpenNET:

Читать дальше →
Всего голосов 152: ↑136 и ↓16+120
Комментарии737

Хранение данных в кластере Kubernetes

Время на прочтение5 мин
Количество просмотров33K

Настроить хранение данных приложений, запущенных в кластере Kubernetes, можно несколькими способами. Одни из них уже устарели, другие появились совсем недавно. В этой статье рассмотрим концепцию трёх вариантов подключения СХД, в том числе самый последний — подключение через Container Storage Interface.


Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Комментарии5

Собираем C++ с bazel

Время на прочтение7 мин
Количество просмотров20K

Введение и мотивация


В последнее время на Хабре появляются посты про то, что cmake и c++ — друзья, приводятся примеры, как собирать header-only библиотеки и не только, но нет обзора хоть сколько-нибудь новых систем сборки — bazel, buck, gn и других. Если вы, как и я, пишете на C++ в 2к20, то предлагаю вам познакомиться с bazel как системой сборки c++ проекта.

Оставим вопросы, чем плохи cmake и другие существующие системы, и сконцентрируемся на том, что может сам bazel. Решать, что лучше конкретно для вас, я оставляю конкретно вам.

Начнем с определения и мотивации. Bazel это мультиязычная система сборки от гугла, которая умеет собирать c++ проекты. Почему мы вообще должны смотреть на еще одну систему сборки? Во первых, потому что ей уже собираются некоторые большие проекты, например Tensorflow, Kubernetes и Gtest, и соответственно чтобы интегрироваться с ними уже нужно уметь пользоваться bazel. Во вторых, кроме гугла bazel еще использует spaceX, nvidia и другие компании судя по их выступлениям на bazelcon. И наконец, bazel это довольно популярный open-source проект на github, так что он определенно стоит того чтобы на него взглянуть и попробовать.
Читать дальше →
Всего голосов 22: ↑20 и ↓2+18
Комментарии15

Как сервера договариваются друг с другом: алгоритм распределённого консенсуса Raft

Время на прочтение9 мин
Количество просмотров30K
Когда кластеры достигают размеров в сотни, а иногда и тысячи машин, возникает вопрос о согласованности состояний серверов относительно друг друга. Алгоритм распределённого консенсуса Raft даёт самые строгие гарантии консистентности из возможных. В этой статье мы рассмотрим Raft с точки зрения инженера и постараемся ответить на вопросы «Как?» и «Почему?» он работает.



Читать дальше →
Всего голосов 35: ↑33 и ↓2+31
Комментарии23

Дирижируя контейнерами: как работает связка Kubernetes и Istio

Время на прочтение7 мин
Количество просмотров11K
Наша конференция по DevOps инструментам и подходам уже завтра, а это значит, что пришло время для последнего интервью! В этот раз мы задали несколько вопросов одному из руководителей групп разработчиков в Google про работу связки Kubernetes и Istio, релиз которой намечен на начало следующего года.

Крейг расскажет, почему стоит деплоить в контейнерах даже на одну машину, когда подключать систему оркестрации, какие есть альтернативы у Kubernetes и что нас ждет в будущем. Подробности — под катом.


Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии0

Дрон-съемка, «грабли», лайфхаки, саморазвитие и карьера фотографа / видеографа: новый подкаст «GLPH»

Время на прочтение9 мин
Количество просмотров6.5K
Это — передача с теми, кто пишет, редактирует, снимает фото, видео и руководит созданием контента. Здесь мы обсуждаем профессиональное развитие и лайфхаки для специалистов.

Сегодня мы представляем вашему вниманию текстовый транскрипт второго выпуска подкаста [первый про IT-редакцию нового типа — здесь], в котором с нами согласился пообщаться Вадим Щербаковпрофессиональный аэровидеограф, фотограф и независимый арт-директор.

Мы обсудили ход карьеры Вадима и его подходы к саморазвитию:


Всего голосов 18: ↑17 и ↓1+16
Комментарии9

Целостность данных в микросервисной архитектуре — как её обеспечить без распределенных транзакций и жёсткой связности

Время на прочтение9 мин
Количество просмотров62K

Всем привет. Как вы, возможно, знаете, раньше я все больше писал и рассказывал про хранилища, Vertica, хранилища больших данных и прочие аналитические вещи. Сейчас в область моей ответственности упали и все остальные базы, не только аналитические, но и OLTP (PostgreSQL), и NOSQL (MongoDB, Redis, Tarantool).


Эта ситуация позволила мне взглянуть на организацию, имеющую несколько баз данных, как на организацию, имеющую одну распределенную гетерогенную (разнородную) базу. Единую распределенную гетерогенную базу, состоящую из кучи PostgreSQL, Redis-ов и Монг… И, возможно, из одной-двух баз Vertica.


Работа этой единой распределенной базы порождает кучу интересных задач. Прежде всего, с точки зрения бизнеса важно, чтобы с данными, движущимися по такой базе, все было нормально. Я специально не использую здесь термин целостность, consistency, т.к. термин это сложный, и в разных нюансах рассмотрения СУБД (ACID и CAP теорема) он имеет разный смысл.


Ситуация с распределенной базой обостряется, если компания пытается перейти на микросервисную архитектуру. Под катом я рассказываю, как обеспечить целостность данных в микросервисной архитектуре без распределенных транзакций и жесткой связности. (А в самом конце объясняю, почему выбрал для статьи такую иллюстрацию).


Всего голосов 77: ↑76 и ↓1+75
Комментарии73

Бэкендеры всех стран объединились. Рассказываем, как прошел Backend United #2

Время на прочтение3 мин
Количество просмотров5K

22 сентября мы провели Backend United #2: Фарш — встречу, посвященную тестированию бэкенда. Говорили о приемах тестирования бэкенда, его отличиях в разных языках. Обсуждали CDC-подход к тестированию микросервисов — почему в Авито используют нативные тесты, написанные на языках сервисов-потребителей. Рассказали о механике и сложностях внедрения Pact — наборе библиотек, которые реализуют Consumer-Driven Contract подход в тестировании API. И узнали, как в микросервисной архитектуре создать честные и эффективные изоляционные тесты.


Под катом делимся впечатлениями, фото, видео, презентациями со встречи и отзывами слушателей.


Про Фарш
Всего голосов 29: ↑28 и ↓1+27
Комментарии0

Оркестрируемая сага или как построить бизнес-транзакции в сервисах с паттерном database per service

Время на прочтение16 мин
Количество просмотров32K

Привет! Меня зовут Константин Евтеев, я работаю в Авито руководителем юнита DBA. Наша команда развивает системы хранения данных Авито, помогает в выборе или выдаче баз данных и сопутствующей инфраструктуры, поддерживает Service Level Objective для серверов баз данных, а еще мы отвечаем за эффективность использования ресурсов и мониторинг, консультируем по проектированию, а возможно и разрабатываем микросервисы, сильно завязанные на системы хранения, или сервисы для развития платформы в контексте хранилищ.


Я хочу рассказать, как мы решили один из вызовов микросервисной архитектуры — проведение бизнес-транзакций в инфраструктуре сервисов, построенных с помощью паттерна Database per service. С докладом на эту тему я выступал на конференции Highload++ Siberia 2018.


image
Узнать про саги
Всего голосов 44: ↑44 и ↓0+44
Комментарии19

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность