Pull to refresh
0
@DFoozread⁠-⁠only

User

Send message

Без А/B результат XЗ, или Как построить высоконагруженную платформу А/B-тестов

Reading time17 min
Views20K

Один из важных вопросов как в нашей жизни, так и в бизнесе, и в IT — вопрос эффективности. Эффективно ли мы планируем наше время, те ли задачи решает бизнес, тот ли код мы оптимизируем? Чтобы ответить на эти вопросы, результат должен обладать главным критерием измеримостью. Измеримость результата новых фич для бизнеса и IT обеспечивает платформа А/B-тестов. О том, как её можно построить, выдерживать большой RPS и при этом не облажаться уронить прод, я расскажу в этой статье. 

В конце статьи вы узнаете, как мы задетектили проблемы инфраструктуры, оптимизация которых значительно повлияла на скорость всего Ozon. 

Читать далее
Total votes 93: ↑92 and ↓1+106
Comments7

Архитектура сервиса распределённых очередей сообщений в Яндекс.Облаке

Reading time13 min
Views27K
Привет, меня зовут Василий Богонатов. Я один из тех, кто приложил руку и голову и вложил свою душу в сервис распределённых персистентных очередей сообщений Yandex Message Queue. Сервис вышел в общий доступ в конце мая, но внутри Яндекса он уже давно и активно используется в разных продуктах.

Сегодня я хочу рассказать читателям Хабра об очередях сообщений вообще и о Yandex Message Queue в частности. Сначала я хочу объяснить, что такое «распределённая персистентная очередь сообщений» и зачем она нужна. Показать её практическую ценность, механику работы с сообщениями, поговорить про API и удобство использования. Во второй половине материала мы посмотрим на техническую сторону: как в наших очередях используется Yandex Database (это надежный фундамент нашего сервиса), как выглядят наивный и улучшенный подход к построению архитектуры, какие проблемы вызывает распределённость и как их можно решить.


Читать дальше →
Total votes 57: ↑55 and ↓2+53
Comments23

MPLS повсюду. Как устроена сетевая инфраструктура Яндекс.Облака

Reading time9 min
Views32K
Пост подготовили: Александр Вирилин xscrew — автор, руководитель службы сетевой инфраструктуры, Леонид Клюев — редактор

Мы продолжаем знакомить вас с внутренним устройством Яндекс.Облака. Сегодня поговорим о сетях — расскажем, как устроена сетевая инфраструктура, почему в ней активно применяется непопулярная для дата-центров парадигма MPLS, какие ещё сложные решения нам приходилось принимать в процессе построения облачной сети, как мы ей управляем и какие мониторинги используем.

Сеть в Облаке состоит из трёх слоёв. Нижний слой — уже упомянутая инфраструктура. Это физическая «железная» сеть внутри дата-центров, между дата-центрами и в местах присоединения к внешним сетям. Поверх сетевой инфраструктуры строится виртуальная сеть, а поверх виртуальной сети — сетевые сервисы. Эта структура не является монолитной: слои пересекаются, виртуальная сеть и сетевые сервисы напрямую взаимодействуют с сетевой инфраструктурой. Поскольку виртуальную сеть часто называют overlay, то сетевую инфраструктуру мы обычно называем underlay.
Читать дальше →
Total votes 50: ↑50 and ↓0+50
Comments26

Как в Яндекс.Облаке устроено Virtual Private Cloud и как наши пользователи помогают нам внедрять полезные функции

Reading time7 min
Views23K
Привет, меня зовут Костя Крамлих, я ведущий разработчик подразделения Virtual Private Cloud в Яндекс.Облаке. Я занимаюсь виртуальной сетью, и, как можно догадаться, в этой статье расскажу об устройстве Virtual Private Cloud (VPC) в целом и виртуальной сети в частности. А ещё вы узнаете, почему мы, разработчики сервиса, ценим обратную связь от наших пользователей. Но обо всём по порядку.



Читать дальше →
Total votes 22: ↑17 and ↓5+21
Comments13

Использование OAuth в интеграции API с помощью Python, REST и HL7 FHIR

Reading time4 min
Views2.4K

Всем привет! Поделюсь с вами знаниями по OAuth для интеграции систем через API. Расскажу вам, как это можно сделать на Python с бэкенд-системами, использующими REST и HL7 FHIR.

OAuth часто используется в процессах, требующих предоставления разрешений внешним приложениям и конечным пользователям. Однако при интеграции систем через API нам обычно нужен способ обеспечения безопасности соединения между интеграционным слоем и бэкенд-системами без необходимости постоянного взаимодействия с человеком.

В этом случае OAuth может стать хорошим выбором. В этой статье показано, как его можно применять в Python при работе с бэкенд-системами, используя REST и HL7 FHIR.

Что бы нам хотелось получить

Допустим, у нас есть типичный вариант интеграции, как показано на схеме ниже.

Читать далее
Total votes 3: ↑2 and ↓1+1
Comments1

Как Discord прокачивает сетевые диски, сводя задержки к минимуму

Reading time9 min
Views5.5K

Не секрет, что именно в Discord сейчас принято вести беседы; каждый день через эту платформу проходит 4 миллиарда сообщений от миллионов людей. На наш взгляд — убедительно. Но текстовый чат — лишь малая толика тех возможностей, что поддерживает Discord. Здесь предусмотрены серверные роли, пользовательские эмодзи, видеозвонки и многое другое. Вся эта информация складывается в терабайты данных, которые Discord доставляет клиентам.

Для предоставления такого колоссального объёма данных эксплуатируется набор кластеров NoSQL-баз данных (на основе ScyllaDB), и каждый из этих кластеров является источником истины для соответствующего множества данных. Поскольку Discord — это платформа для чатов в реальном времени, требуется, чтобы базы данных справлялись с плотным потоком запросов настолько быстро, насколько возможно.

Читать далее
Total votes 23: ↑23 and ↓0+23
Comments8

Формальное описание менеджера пакетов

Reading time11 min
Views2.1K
image

Однажды автор решил помочь Грэму Кристенсену в сборе средств на проект Great Slate – и подарил ему два технических поста на выбор самого Кристенсена. Затем Грэм купил у него еще один текст и попросил написать.

Что-нибудь, касающееся Nix или NixOS.


Далее – от автора.

Для меня это был тот еще вызов, ведь на тот момент я еще даже не знал, что такое Nix. Я им никогда не пользовался, до сих пор не пользуюсь и не собираюсь переходить в обозримом будущем – так как единственный компьютер, которым я сейчас пользуюсь, работает под Windows.(1) К счастью, формулировка «что-нибудь» дает некоторое поле для маневра, и я быстро сориентировался, о чем могу написать. Nix позиционируется как «полнофункциональный» менеджер пакетов. В самом деле, что же это означает? Мужайтесь, ниже речь пойдет о формализации. Я опишу некоторое множество «теоретически возможных» менеджеров пакетов, и мы обсудим, какие достоинства (и, возможно, недостатки) есть у «полнофункционального» менеджера пакетов.
Читать дальше →
Total votes 7: ↑6 and ↓1+7
Comments0

Шардированный кэш на базе Memcached

Reading time11 min
Views8.1K

Привет! Меня зовут Андрей Барболин, я Senior Software Engineer в команде Order Management System. Сегодня я расскажу вам, как мы сделали шардированный кэш и под стресс-тестами добились 30 миллионов операций в секунду, а также про первую open source библиотеку от AliExpress Россия.

Читать далее
Total votes 19: ↑18 and ↓1+20
Comments27

Автоматизация системных тестов на базе QEMU (Часть 1/2)

Reading time12 min
Views6.7K

Эта статья посвящена автоматизации системного (end-to-end) тестирования с использованием виртуальных машин. В статье рассматриваются такие вопросы, как автоматизация развертывания и настройки виртуальных стендов, а также автоматизация запуска процессов внутри виртуальных машин с последующим контролем полученных результатов. В конце статьи мы получим пусть неидеальный (к этому мы ещё вернемся), но простой и понятный скрипт, с помощью которого вы сможете запускать системные тесты одной кнопкой, даже не имея у себя на компьютере ни одной виртуальной машины.


Статья предполагает наличие следующих навыков у читателя:


  • Уверенное пользование ОС семейства Linux;
  • Базовое понимание принципов виртуализации;
  • Знакомство с гипервизором QEMU и графическим клиентом virt-manager

Статья разбита на две части: в первой части мы познакомимся с основными инструментами, которые позволят нам создавать, развертывать и управлять виртуальными машинами используя исключительно командную строку. Эти знания нам пригодятся для второй части статьи (которую можно найти здесь: https://habr.com/ru/post/520648/), где мы соединим эти инструменты вместе и попробуем автоматизировать тесты конкретного сетевого приложения.

Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments11

Генерация трафика в юзерспейсе

Reading time11 min
Views10K

Генерация трафика посредством MoonGen + DPDK + Lua в представлении художника

Нейтрализация DDoS-атак в реальных условиях требует предварительных тестирования и проверки различных техник. Сетевое оборудование и ПО должно быть протестировано в искусственных условиях близких к реальным — с интенсивными потоками трафика, имитирующего атаки. Без таких экспериментов крайне затруднительно получить достоверную информацию о специфических особенностях и ограничениях, имеющихся у любого сложного инструмента.

В данном материале мы раскроем некоторые методы генерации трафика, используемые в Qrator Labs.

ПРЕДУПРЕЖДЕНИЕ

Мы настойчиво рекомендуем читателю не пытаться использовать упомянутые инструменты для атак на объекты реальной инфраструктуры. Организация DoS-атак преследуется по закону и может вести к суровому наказанию. Qrator Labs проводит все тесты в изолированном лабораторном окружении.
Читать дальше →
Total votes 37: ↑37 and ↓0+37
Comments3

Введение в DPDK: архитектура и принцип работы

Reading time11 min
Views57K
DPDK

За последние несколько лет тема производительности сетевого стека Linux обрела особую актуальность. Это вполне понятно: объёмы передаваемых по сети данных и соответствующие нагрузки растут не по дням, а по часам.

И даже широкое распространение сетевых карт 10GE не решает проблемы: в самом ядре Linux имеется множество «узких мест», которые препятствуют быстрой обработке пакетов.
Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments14

Изучаем инструменты для работы с ARP протоколом

Reading time5 min
Views9.5K

Статья расскажет об очень простом протоколе, который может быть использован для атак на сети. Рассмотрим из чего состоит протокол и какие инструменты есть для работы с ним.

Читать далее
Total votes 13: ↑10 and ↓3+8
Comments1

Самый по-человечески написанный учебник компьютерной архитектуры наконец-то выходит на русском языке и для RISC-V

Reading time9 min
Views75K

В 2015 году скачивания первого русского издания учебника Харрис & Харрис завалили сайт британской компании Imagination Technologies. Книгу стали использовать в МФТИ, ВШЭ МИЭМ, МГУ, МИЭТ, ИТМО и других вузах. С тех пор вышло еще два издания - для ARM и для MIPS, и вот в январе 2022 года выходит новое - для RISC-V и оно уже доступно для предзаказа.

"Цифровая схемотехника и архитектура компьютера: RISC-V" вероятно станет стандартным учебником в российских вузах, как и источником информации для тех, кто хочет попроектировать процессоры на ПЛИС. Ничего лучшего на рынке нет. Паттерсон-Хеннесси не привязан к курсам по языкам описания аппаратуры и не обсуждает тайминг цифровой логики, а Таненбаум устарел.

Кроме этого, архитектура RISC-V становится билетом в будущее для российских процессорных компаний - Ядро купило Syntacore, Байкал Электроникс инвестировал в CloudBear, Миландр выпустил микроконтроллер с архитектурой RISC-V.

Если же вы не хотите работать в российских компаниях, а хотите пройти интервью на проектировщика чипа в Apple, Intel, NVidia, то и в таком случае учебник Харрисов - это самый эффективный способ начать этот путь.

О Харрисах, содержание и почему RISC-V
Total votes 39: ↑33 and ↓6+36
Comments41

Недостатки RISC-V

Reading time6 min
Views29K
Изначально я написала этот документ несколько лет назад, будучи инженером по проверке ядра исполнения команд (execution core verification engineer) в ARM. Конечно, на моё мнение повлияла углублённая работа с исполнительными ядрами разных процессоров. Так что делайте на это скидку, пожалуйста: может, я слишком категорична.

Однако я по-прежнему считаю, что создатели RISC-V могли справиться гораздо лучше. С другой стороны, если бы я сегодня проектировала 32-или 64-разрядный процессор, то, вероятно, реализовала бы именно такую архитектуру, чтобы воспользоваться существующим инструментарием.

Статья изначально описывала набор команд RISC-V 2.0. Для версии 2.2 в ней сделаны некоторые обновления.
Читать дальше →
Total votes 42: ↑39 and ↓3+36
Comments53

Работа с SD-картой по интерфейсу SPI. Реализация на VHDL

Reading time17 min
Views31K
Привет, Habr! Однажды на работе мне досталась задача оценить возможность реализации хранения данных на SD-карте при подключении ее к FPGA. В качестве интерфейса взаимодействия предполагалось использование SPI, так как он проще в реализации. Полученным опытом хотелось бы поделиться.


Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments39

Пишем файловую систему в ядре Linux

Reading time10 min
Views58K

Для кого эта статья


image

Данная статья составлена по материалам практики по курсу операционных систем в Академическом университете . Материал готовился для студентов, и ничего сложного здесь не будет, достаточно базового знания командной строки, языка C, Makefile и общих теоретических знаний о файловых системах.

Весь материал разбит на несколько частей, в данной статье будет описана вводная часть. Я коротко расскажу о том, что понадобится для разработки в ядре Linux, затем мы напишем простейший загружаемый модуль ядра, и наконец напишем каркас будущей файловой системы — модуль, который зарегистрирует довольно бесполезную (пока) файловую систему в ядре. Люди уже знакомые (пусть и поверхностно) с разработкой в ядре Linux не найдут здесь ничего интересного.
Читать дальше →
Total votes 113: ↑110 and ↓3+107
Comments9

Python vs Ruby

Reading time5 min
Views137K
Данная флеймообразующая статья призвана собрать в одном месте актуальную информацию по преимуществам Python над Ruby и Ruby над Python. Основываясь на собственном многолетнем опыте использования обоих языков, я постарался ограничить сравнение языками как таковыми и их стандартными библиотеками — сравнение web фреймворков, сред разработки и доступных библиотек не включены в статью, так как здесь и без меня немало копий сломано.
Читать дальше →
Total votes 201: ↑163 and ↓38+125
Comments349

Абстрактные анонимные сети

Reading time27 min
Views5.5K

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

Читать далее
Total votes 13: ↑11 and ↓2+12
Comments11

Не обновлениями едиными: как получить привилегии администратора домена без эксплуатации уязвимостей

Reading time7 min
Views10K

Всем привет. Я чуть больше полутора лет занимаюсь внутренним пентестом. И вроде бы уже многое знаю, но всегда кажется, что этого недостаточно и хочется знать больше. Когда часто делаешь похожую работу, привыкаешь к одним и тем же действиям, инструментам, и нет идей, что бы еще попробовать. Иногда я черпаю вдохновение в отчетах своих коллег, но всегда интересно почитать о том, как работают и что используют другие команды. А раз это интересно мне, может, это интересно кому-то еще. Мы c командой решили тоже поделиться несколькими интересными киллчейнами. В этой статье я расскажу о последовательности шагов, которая привела к получению привилегий администратора домена в компании, в которой «почти все безопасно».

Подробнее — под катом.

Читать далее
Total votes 22: ↑22 and ↓0+22
Comments5

Разбираемся с EXCEPTION_CONTINUE_EXECUTION

Reading time6 min
Views3K

Механизм структурированной обработки исключений (Structured Exception Handling, SEH) позволяет не только "отловить" сгенерированное исключение, но и вернуться к инструкции, вызвавшей сбой и попробовать выполнить ее заново.

В данной статье разбирается использование механизма SEH для возврата к инструкции, вызвавшей исключение.

Читать далее
Total votes 12: ↑12 and ↓0+12
Comments9

Information

Rating
Does not participate
Registered
Activity