Как стать автором
Обновить
3
0

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

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

Внутри S3. Доклад Яндекса

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

Привет, я Паша, разработчик в Yandex Infrastructure, и я катаю гусей. С 2019 года я развиваю S3-хранилище как для внутренних пользователей Яндекса, так и для клиентов Yandex Cloud. А «гусём» называется наш бэкенд S3 API: он написан на Go, а из словосочетания Go + S3 получился goose. Возможно, вы также слышали про GeeseFS — это наш высокопроизводительный FUSE-клиент для S3. C его помощью вы можете на своём ноутбуке или виртуалке подмонтировать папку, которая будет работать с бакетом S3. 

Для чего нам «гуси» и прочая орнитология? Яндексовая инсталляция хранилища S3 хранит миллиарды файлов. Это огромные объёмы данных, а также метаданных. Для хранения метаданных мы научились использовать умное шардирование, и теперь сами управляем распределением занятого места и нагрузкой между шардами баз.

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

Читать далее
Всего голосов 82: ↑81 и ↓1+80
Комментарии52

Как я уронил прод на полтора часа (и при чем тут soft delete и partial index)

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

В жизни любого разработчика наступает момент, когда он роняет прод. Представьте: полдень, в Skyeng час пик, тысячи запланированных онлайн-уроков, а наша платформа лежит… 

Все упало из-за ошибки в процессе деплоя, которая связана с тонкостью PostgreSQL. К сожалению, на этом моменте у нас прокололась не одна команда. И чтобы такое больше не произошло ни у нас, ни в другой компании — велкам под кат.

Читать далее
Всего голосов 172: ↑168 и ↓4+164
Комментарии174

Как департамент утилизации CPU превратился в департамент экономии железа, выдерживающий нагрузку в 1 млн RPS

Уровень сложностиПростой
Время на прочтение26 мин
Количество просмотров33K

Привет, меня зовут Мария, когда-то я работала на шахте, потом на заводе, а 3.5 года назад пришла в Ozon Tech. Сейчас я старший Golang-разработчик в команде product-facade. Это самый высоконагруженный сервис маркетплейса, но так было не всегда.

Хотите узнать, что скрывается под витриной маркетплейса? Что держит нагрузку в 1 миллион запросов в секунду? Толстые кэши или нечто большее? Про то, как устроено наше кэширование и как мы к этому пришли, — рассказываю в статье.

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

Современные технологии обхода блокировок: V2Ray, XRay, XTLS, Hysteria, Cloak и все-все-все

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

Три месяца назад здесь на Хабре была опубликована статья “Интернет-цензура и обход блокировок: не время расслабляться”, в которой простыми примерами показывалось, что практически все популярные у нас для обхода блокировок VPN- и прокси-протоколы, такие как Wireguard, L2TP/IPSec, и даже SoftEther VPN, SSTP и туннель-через-SSH, могут быть довольно легко детектированы цензорами и заблокированы при должном желании. На фоне слухов о том, что Роскомнадзор активно обменивается опытом блокировок с коллегами из Китая и блокировках популярных VPN-сервисов, у многих людей стали возникать вопросы, что же делать и какие технологии использовать для получения надежного нефильтрованного доступа в глобальный интернет.

Мировым лидером в области интернет-цензуры является Китай, поэтому имеет смысл обратить на технологии, которые разработали энтузиасты из Китая и других стран для борьбы с GFW (“великим китайским файрволом”). Правда, для неподготовленного пользователя это может оказаться нетривиальной задачей: существует огромное количество программ и протоколов с похожими названиями и с разными не всегда совместимыми между собой версиями, огромное количество опций, плагинов, серверов и клиентов для них, хоть какая-то нормальная документация существует нередко только на китайском языке, на английском - куцая и устаревшая, а на русском ее нет вообще.

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

Читать далее
Всего голосов 157: ↑155 и ↓2+153
Комментарии136

Безопасность REST API от А до ПИ

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

Введение


Умение реализовать грамотное REST API — полезный навык в наше время, т.к. все больше сервисов предоставляют свои возможности с помощью API. Но разработка REST API не ограничивается реализацией HTTP запросов в определенном стиле и формированием ответов в соответствии со спецификацией. Задача обеспечения безопасности REST API не так очевидна, как, например, обеспечение безопасности баз данных, но ее необходимость не менее важна.
В настоящее время многие онлайн системы с помощью API передают приватные данные пользователей, такие как медицинские или финансовые. Текущая же ситуация с безопасностью в веб-приложениях весьма печальна: по данным Comnews порядка 70% содержат кри­тичес­кие уязвимости. Поэтому всем, кто участвует в проектировании, реализации и тестировании онлайн систем, важно иметь общую картину по существующим угрозам и способам обеспечения безопасности как всей системы, так и используемого REST API.

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

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

Подпись на эллиптических кривых: всё, что нужно знать, чтобы подписать транзакцию в Bitcoin с полного нуля

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

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

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

Как Data Scientist переехал в Германию в разгар мобилизации

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

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

Разрушим стереотипы по поводу немецкой бюрократии и педантичности.

Ну и конечно посчитаем сколько денег, времени и седых волос на это ушло.

Запрыгнуть на трактор
Всего голосов 67: ↑51 и ↓16+35
Комментарии58

Realtime-матчинг: находим матчи за считанные минуты вместо 24 часов

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

Задача матчинга в последнее время набирает всё большую популярность и используется во многих сферах: банки матчат транзакции, маркетплейсы – товары, а Google и другие IT-гиганты проводят соревнования по решению таких задач на Kaggle.

Для маркетплейса матчинг – очень важный процесс, который решает сразу несколько задач:

1. При поисковом ранжировании из множества товаров показывать сначала самые выгодные предложения.

2. Объединять множество товаров в одну сущность и показывать предложения одного и того же товара от разных селлеров.

3. Понимать, как предложения селлеров выглядят относительно друг друга, и поощрять их дополнительными бонусами.

Сегодня мы поговорим не только о решении этой задачи, но и о способах её реализации: offline (batch) vs online (realtime). Также обсудим, как и зачем переходить от первого ко второму.

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

Гайд по межсетевому экранированию (nftables)

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


Все говорят, что для защиты сети нужно применять межсетевые экраны, но никто не говорит, как это нужно делать. Что ж, исправим ситуацию, рассмотрим типовые сценарии применения межсетевых экранов и то, как их при этом настраивать.

В качестве межсетевого экрана будем использовать nftables, функционирующий под управлением ОС Debian GNU Linux.
Читать дальше →
Всего голосов 30: ↑29 и ↓1+28
Комментарии15

Миграция приложения из Docker Compose в Kubernetes. Как, зачем и с какими проблемами я столкнулся

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

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

Стоявшая передо мной задача: улучшить инфраструктуру и качество работы приложения, успевшего вырасти из MVP и стенда для одного клиента в популярный SaaS. Отсутствие отказоустойчивости и масштабируемости компонентов сервиса начало ощутимо мешать пользователям. Настала пора адаптировать приложение под кластерный режим.

Приложение работало в контейнерах, а оркестрация осуществлялась с помощью Docker Compose. Компоненты приложения не задумывались готовыми к запуску в кластерном режиме, что, разумеется, нормальная ситуация для раннего этапа многих проектов: бизнес требует быстрой доставки новых функций, и на преждевременную оптимизацию не всегда можно и нужно тратить время. Но в какой-то момент именно стабильность и быстродействие становятся самыми важными функциями. 

Каково мигрировать приложение с уже сформированным техническим стеком и базой пользователей? Какие есть варианты решения, подводные камни? Как оценить есть ли смысл в таких трудозатратах? В этой статье я поделюсь своим опытом переноса приложения из Docker Compose в Kubernetes.

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

Что лучше: Spark Structured Streaming или полное прекращение работы прода?

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

Правильное построение ETL-процессов (преобразования данных) — сложная задача, а при большом объёме обрабатываемых данных неизбежно возникают проблемы с ресурсами. Поэтому нам требуется выискивать новые архитектурные решения, способные обеспечить стабильность расчётов и доступность данных, а при необходимости и масштабируемость — с минимальными усилиями.

Когда я пришел в Ozon, мне пришлось столкнуться с огромным количеством ETL-джоб. Прежде чем применить модель машинного обучения, сырые данные проходят множество этапов обработки. А само применение модели (то, ради чего существует команда) занимает всего 5% времени.

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

Ужасы японского языка. Письменность

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

Четыре года назад я совершил один из самых безрассудных поступков в своей жизни: начал учить японский язык. Разумеется, прежде чем решиться на такое приключение, я тщательно все продумал и провел подробное исследование на тему. Т.е. погуглил, что другие люди думают об этом экзотическом языке. Отзывы меня весьма приободрили. В них говорилось, что нужны годы и годы тяжелого учения. Люди писали, что, если тебе кажется, что язык очень тяжелый, то ты все еще недооцениваешь опасность раз в десять. Интернет пестрит предупреждениями, что тебе это не нужно; что это тяжело; что "не лезь оно тебя сожрет".

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

В этой статье начну с самого очевидного препятствия на пути изучающего: письменности. Если вам интересно, как в японском соотносится написанное с произношением и значением, сколько требуется выучить иероглифов для понимания японских книг и какие совершенно неожиданные подводные камни есть в этом языке, то прошу пожаловать под кат!

Читать далее
Всего голосов 213: ↑210 и ↓3+207
Комментарии331

Как оплачивать зарубежные сервисы?

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

Как известно, 10 марта Visa и Mastercard официально прекратили транзакции в РФ. Наши соотечественники, срочно выехавшие или уже проживающие в других странах попали в ситуацию, когда российские карты перестали работать (с них нельзя снять наличные, ими нельзя расплатиться). Внутри России, будут работать до конца срока действия, благодаря Национальной системе платежных карт, но платить с использованием Apple Pay и Google Pay нельзя. Банки предлагают альтернативу: кобейджинговые карты МИР / UnionPay, но с ними все так просто и оформление таких карт - еще тот бег с препятствиями. Как итог, проблема с оплатой зарубежных сервисов стоит остро, мы уже привыкли к удобным и доступным сервисам и теперь очень не хочется отвыкать...

Как же теперь оплачивать зарубежные сервисы?

Читать далее
Всего голосов 74: ↑62 и ↓12+50
Комментарии215

Никогда такого не было и вот опять. Почему нужно использовать self-hosted VPN. Релиз Amnezia

Время на прочтение11 мин
Количество просмотров154K
Вот и пришло время для релиза VPN-клиента, родившегося благодаря хакатону DemHack, и выращенного при поддержке РосКомСвободы, PrivacyAccelerator и Теплицы социальных технологий.

Спустя полгода с того момента, как идея была впервые озвучена, мы презентуем готовый продукт — бесплатный опенсорсный клиент для self-hosted VPN, с помощью которого вы сможете установить VPN на свой сервер в несколько кликов.

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

image
Читать дальше →
Всего голосов 130: ↑128 и ↓2+126
Комментарии168

Kubernetes и другие оркестраторы

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

Привет! Меня зовут Леонид, я DevOps-инженер в компании KTS. 

В этой статье я рассмотрю различные оркестраторы и объясню, почему Kubernetes — лучший выбор.

Нашей компании уже 6 лет, и 4 из них мы живем с Kubernetes. До этого мы испытали все варианты деплоя приложений на серверах: начиная от простого git pull до ci/cd на нескольких серверах. 

За небольшой срок в 4 года мы набрали много опыта. Начинали с вопроса, который, возможно, стоит сейчас перед вами: «Какой оркестратор выбрать?» Мы рассмотрели разные варианты, и в итоге остановились на Kubernetes. В статье расскажу, почему.

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

«Оптимизируем» функции на уровне AST

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

Python предоставляет программисту огромное пространство свободы. Увы, обычно это довольно дорогая в плане производительности свобода, зато при правильном применении иногда она позволяет творить сущую магию. Но сегодня мы поговорим не о таких вот «богоугодных» применениях свободы, а о том, что никогда не стоит использовать в прикладном программировании — о модификациях кода на уровне AST.

Запутаться
Всего голосов 54: ↑54 и ↓0+54
Комментарии7

Как Hadoop-кластер помогает нам выполнять триллионы вычислений в день и выводить аналитику на новый уровень

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

Всем привет! Меня зовут Сергей Орешкин, я CDO Московской Биржи. Вместе с моими коллегами – Петром Лукьянченко (бизнес), Владимиром Молостовым и Федором Темнохудом (ИТ) – мы расскажем об опыте поиска, выбора решения и запуска платформы ресурсоемких вычислений на большом объёме данных на базе Hadoop.

Каждый день только на рынке акций Мосбиржи почти 100 тысяч частных инвесторов совершает более 20 млн транзакций объемом от 40 млрд рублей. Один из ключевых параметров, которыми оперируют инвесторы, принимая решения о сделке, – это ликвидность бумаги. Бумага считается ликвидной, если её можно купить или продать по желаемой цене за минимальное время. По малоликвидным бумагам инвестору приходится ждать, прежде чем найдется другой инвестор, готовый заключить сделку на взаимовыгодных условиях. Для инвестора такое ожидание – это издержки, а вероятность образования таких издержек называется риском ликвидности.

Для Биржи риск ликвидности – тоже явление нежелательное, в результате его реализации резко падает объем торгов, и клиент не может продать/купить бумагу по комфортной для него цене. А задача биржи обеспечить такую возможность для клиента в любой момент – причем по хорошей цене. Чтобы минимизировать риск ликвидности во всем мире работает институт маркетмейкерства: брокеры и банки наполняют стаканы заявками на покупку и продажу бумаг, за что получают вознаграждение от биржи. И, конечно же, мы хотим платить маркетмейкерам только тогда, когда их услуги действительно нужны – а это значит, что мы должны точно знать, что происходит с инструментами, которые представлены на том или ином рынке, и насколько велик риск ликвидности по каждому из них. Учитывая, что количество торгуемых бумаг крайне велико, и торгуются они высокочастотно и супербыстро, нам нужен инструмент, который позволит обсчитать огромный объем данных «на лету».

Говоря «биржевым» языком, перед нами встала задача расчета метрик ликвидности и метрик маркетмейкерских программ. Для её решения нам потребовалась система, выполняющая большой объем расчетов на торговых данных, которая позволила бы на основе данных об изменениях рыночных заявок рассчитывать сотни аналитических показателей в различных разрезах, а также моделировать поведение рынка, оценивая вклад конкретного участника. Чтобы создать ядро этой системы, мы разработали прототип горизонтально масштабируемой платформы для массово-параллельных вычислений на базе кластера Hadoop. В целевой конфигурации платформа способна эффективно обрабатывать огромные массивы информации – десятки триллионов вычислений в день.

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

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

Сказ о полукольцах

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

Привет, Хабр! Предлагаю вашему вниманию перевод статьи "A tale on Semirings" автора Luka Jacobowitz.


Когда-нибудь задумывались, почему сумма типов называется суммой типов. Или, может, вы всегда хотели узнать, почему оператор <*> записывается именно так? И что это имеет общего с полукольцами? Заинтересовавшихся прошу под кат!

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

Финансовое latency critical приложение на Java и Akka

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

Всем привет! В своей статье я поделюсь опытом разработки одного из финансовых приложений на Java в ТехЦентре Дойче Банка, расскажу про стек технологий, который мы используем, и каких результатов достигаем

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

Доступно о криптографии на эллиптических кривых

Время на прочтение37 мин
Количество просмотров242K
image


Тем, кто знаком с криптографией с открытым ключом, наверно известны аббревиатуры ECC, ECDH и ECDSA. Первая — это сокращение от Elliptic Curve Cryptography (криптография на эллиптических кривых), остальные — это названия основанных на ней алгоритмов.

Сегодня криптосистемы на эллиптических кривых используются в TLS, PGP и SSH, важнейших технологиях, на которых базируются современный веб и мир ИТ. Я уже не говорю о Bitcoin и других криптовалютах.

До того, как ECC стала популярной, почти все алгоритмы с открытым ключом основывались на RSA, DSA и DH, альтернативных криптосистемах на основе модулярной арифметики. RSA и компания по-прежнему популярны, и часто используются вместе с ECC. Однако несмотря на то, что магия, лежащая в фундаменте RSA и подобных ей алгоритмов легко объяснима и понятна многим, а грубые реализации пишутся довольно просто, основы ECC всё ещё являются для большинства людей загадкой.

В этой серии статей я познакомлю вас с основами мира криптографии на эллиптических кривых. Моя цель — не создание полного и подробного руководства по ECC (в Интернете полно информации по этой теме), а простой обзор ECC и объяснение того, почему её считают безопасной. Я не буду тратить время на долгие математические доказательства или скучные подробности реализации. Также я представлю полезные примеры с визуальными интерактивными инструментами и скриптами.
Читать дальше →
Всего голосов 127: ↑125 и ↓2+123
Комментарии72
1

Информация

В рейтинге
4 315-й
Зарегистрирован
Активность