Как стать автором
Обновить
1
0
Олексій @Assada

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

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

Трассировка сервисов, OpenTracing и Jaeger

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

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

Для минимизации ручного труда мы решили воспользоваться одним из инструментов трассировки. О том, как и для чего можно использовать трассировку и как это делали мы, и пойдет речь в этой статье.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии7

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

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

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

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

Google Dorking или используем Гугл на максимум

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

Вступление


Google Dorks или Google Hacking — техника, используемая СМИ, следственными органами, инженерами по безопасности и любыми пользователями для создания запросов в различных поисковых системах для обнаружения скрытой информации и уязвимостях, которые можно обнаружить на общедоступных серверах. Это метод, в котором обычные запросы на поиск веб-сайтов используются в полную меру для определения информации, скрытой на поверхности.
Читать дальше →
Всего голосов 30: ↑26 и ↓4+29
Комментарии7

Docker + php-fpm + PhpStorm + Xdebug

Время на прочтение8 мин
Количество просмотров64K
Не так давно тимлид нашей команды сказал: ребята я хочу, чтобы у всех была одинаковая среда разработки для наших боевых проектов + мы должны уметь дебажить всё — и web приложения, и api запросы, и консольные скрипты, чтобы экономить свои нервы и время. И поможет нам в этом docker.

Сказано — сделано. Подробности под катом.
Читать дальше →
Всего голосов 31: ↑27 и ↓4+23
Комментарии80

Семантика exactly-once в Apache Kafka

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


Всем привет! Меня зовут Юрий Лилеков, я работаю в Server Team Badoo. На днях мне попалась довольно интересная статья о новой семантике exactly-once в Apache Kafka, которую я с радостью для вас перевёл.

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

5 способов деплоя PHP-кода в условиях хайлоада

Время на прочтение14 мин
Количество просмотров21K
Если бы хайлоад преподавали в школе, в учебнике по этому предмету была бы такая задача. «У соцсети N есть 2 000 серверов, на которых 150 000 файлов объемом по 900 Мб PHP-кода и стейджинг-кластер на 50 машин. На серверы код деплоится 2 раза в день, на стейджинг-кластере код обновляется раз в несколько минут, а еще дополнительно есть „хотфиксы“ — небольшие наборы файлов, которые выкладываются вне очереди на все или на выделенную часть серверов, не дожидаясь полной выкладки. Вопрос: считаются ли такие условия хайлоадом и как в них деплоить? Напишите не менее 5 вариантов деплоя». Про задачник по хайлоаду можем только мечтать, но уже сейчас мы знаем, что Юрий Насретдинов (youROCK) точно бы решил эту задачу и получил «пятерку».


На простом решении Юрий не остановился, а дополнительно провел доклад, в котором раскрыл тему понятия «деплой кода», рассказал про классические и альтернативные решения масштабного деплоя кода на PHP, проанализировал их производительность и презентовал самописную систему деплоя MDK.
Всего голосов 48: ↑44 и ↓4+40
Комментарии19

О стримах и таблицах в Kafka и Stream Processing, часть 1

Время на прочтение16 мин
Количество просмотров60K
* Michael G. Noll — активный контрибьютор в Open Source проекты, в том числе в Apache Kafka и Apache Storm.

Статья будет полезна в первую очередь тем, кто только знакомится с Apache Kafka и/или потоковой обработкой [Stream Processing].


В этой статье, возможно, в первой из мини-серии, я хочу объяснить концепции Стримов [Streams] и Таблиц [Tables] в потоковой обработке и, в частности, в Apache Kafka. Надеюсь, у вас появится лучшее теоретическое представление и идеи, которые помогут вам решать ваши текущие и будущие задачи лучше и/или быстрее.

Содержание:

* Мотивация
* Стримы и Таблицы простым языком
* Иллюстрированные примеры
* Стримы и Таблицы в Kafka простым языком
* Пристальный взгляд на Kafka Streams, KSQL и аналоги в Scala
* Таблицы стоят на плечах гигантов (на стримах)
* Turning the Database Inside-Out
* Заключение
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии4

Производительность PHP: планируем, профилируем, оптимизируем

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


Привет, Хабр! Два года назад мы писали о том, как перешли на PHP 7.0 и сэкономили миллион долларов. На нашем профиле нагрузки новая версия оказалась в два раза более эффективной по использованию CPU: ту нагрузку, которую раньше у нас обслуживали ~600 серверов, после перехода начали обслуживать ~300. В результате на протяжении двух лет у нас был запас мощностей.

Но Badoo растёт. Количество активных пользователей постоянно увеличивается. Мы совершенствуемся и развиваем нашу функциональность, благодаря чему пользователи проводят в приложении всё больше времени. А это, в свою очередь, отражается на количестве запросов, которое за два года увеличилось в 2—2,5 раза.

Мы оказались в ситуации, когда двукратный выигрыш в производительности нивелировался более чем двукратным ростом запросов, и мы опять стали приближаться к пределам нашего кластера. В ядре PHP снова ожидаются полезные оптимизации (JIT, предзагрузка), но они запланированы только на PHP 7.4, а эта версия выйдет не раньше, чем через год. Поэтому трюк с переходом сейчас повторить не удастся — нужно оптимизировать сам код приложения.

Под катом я расскажу, как мы подходим к таким задачам, какими пользуемся инструментами, и приведу примеры оптимизаций, идей и подходов, которые мы применяем и которые помогли нам в своё время.
Читать дальше →
Всего голосов 105: ↑105 и ↓0+105
Комментарии58

10 смертных грехов спикера

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


Прелюдия


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

Читать дальше →
Всего голосов 61: ↑51 и ↓10+41
Комментарии70

Создание карт из функций шума

Время на прочтение12 мин
Количество просмотров26K
Одна из самых популярных статей на моём сайте посвящена генерации полигональных карт (перевод на Хабре). Создание таких карт требует много усилий. Но начинал я не с этого, а с гораздо более простой задачи, которую опишу здесь. Эта простая техника позволяет создавать подобные карты меньше чем в 50 строках кода:


Я не буду объяснять, как отрисовывать такие карты: это зависит от языка, графической библиотеки, платформы и т.д. Я просто объясню, как заполнить массив данными карты.

Шум


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

image

Мы присваиваем каждой точке карты число от 0.0 до 1.0. В этом изображении 0.0 — это чёрный цвет, а 1.0 — белый.
Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии14

Что не так с популярными статьями, рассказывающими что foo быстрее чем bar?

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

Примечание переводчика: я тоже думал, что время статей "Что быстрее — двойные или одинарные кавычки?" прошло еще 10 лет назад. Но вот подобная статья ("What performance tricks actually work") недавно собрала на Реддите относительно большой рейтинг и даже попала в PHP дайджест на Хабре. Соответственно, я решил перевести статью с критическим разбором этих и подобных им "тестов".


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


Главная проблема


Такие тесты являются неверными по многим причинам, начиная с постановки вопроса и заканчивая ошибками реализации. Но что важнее всего — подобные тесты бессмысленны и в то же время вредны.


  • Бессмысленны потому, что никакой практической ценности не несут. Ни один реальный проект еще никогда не был ускорен с использованием методов, приводимых в таких статьях. Просто потому, что не различия в синтаксисе имеют значение для производительности, а обработка данных.
  • Вредны потому, что они приводят к появлению дичайших суеверий и — что еще хуже — побуждают ничего не подозревающих читателей писать плохой код, думая при этом что "оптимизируют" его.

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

Читать дальше →
Всего голосов 50: ↑44 и ↓6+38
Комментарии72

Отзывчивые изображения: CSS-приёмы, которые помогают экономить время

Время на прочтение3 мин
Количество просмотров29K
Если вы занимаетесь веб-разработкой, то высока вероятность того, что вам знакомы два чудовища, о которых пойдёт речь в статье, перевод которой мы сегодня публикуем. Речь идёт об изображениях и о дедлайнах. Иногда, по каким-то причинам, картинки никак не хотят помещаться в те места макетов страниц, которые для них предназначены, а вы не можете потратить несколько часов на то, чтобы с этим разобраться.



Автор этого материала говорит, что он часто сталкивался с подобной проблемой, и эти столкновения кое-чему его научили. Здесь он хочет рассказать о пяти подходах к управлению размерами изображений, которые нравятся ему больше всего.
Читать дальше →
Всего голосов 22: ↑19 и ↓3+16
Комментарии6

Простой API gateway на базе PHP и Lumen

Время на прочтение7 мин
Количество просмотров41K
Термин «микросервисы» сегодня у всех на слуху – внезапно это стало очень модно, и многие компании объявляют переход на этот архитектурный паттерн даже толком не разобравшись в нём. Впрочем, обсуждение полезности микросервисов оставим за пределами этой статьи.

Традиционно перед коллекцией микросервисов предлагается дополнительный слой – так называемый API gateway, который решает сразу несколько проблем (они будут перечислены позже). На момент написания этой статьи open source реализаций таких gateway почти нет, поэтому я решил написать свой на PHP с использованием микрофреймворка Lumen (часть Laravel).

В этой статье я покажу насколько это простая задача для современного PHP!
Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии12

Как физика принизила значение массы

Время на прочтение10 мин
Количество просмотров55K
Современная физика учит нас тому, что масса не является внутренним свойством материи



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

Но что такое материя? Представьте себе кубик льда с ребром длиной в 2,7 см. Представьте, что вы держите его в ладони. Он холодный и немного скользкий. Он мало что весит, но какой-то вес у него всё же есть.

Давайте уточним вопрос. Из чего состоит кубик льда? И второй важный вопрос: что отвечает за его массу?

Чтобы понять, из чего состоит кубик льда, нам нужно обратиться к знаниям, полученным химиками. Согласно давней традиции, основанной ещё алхимиками, эти учёные различают отдельные химические элементы — водород, углерод, кислород. Исследования относительных весов таких элементов и комбинация объёмов газов привели Джона Дальтона и Луи Гей-Люссака к заключениям о том, что различные химические элементы состоят из атомов различного веса, комбинирующихся по правилам, в которых участвует целое количество атомов.
Читать дальше →
Всего голосов 47: ↑42 и ↓5+37
Комментарии135

Физические итоги 2017 года

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


Привет, Гиктаймс! Настало время подвести научные итоги 2017 года вместе с Американским физическим сообществом. На этот раз редакция APS постаралась на славу и подготовила крайне занимательную подборку новейших достижений фундаментальной науки. Сегодня поговорим о них поподробнее.

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

GitHub Flow

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

Увидев в очередной раз базворд GitFlow я психанул и решил перевести описание более простой и менее проблемной схемы работы с ветками под названием GitHub Flow. Именно её имеет смысл использовать по умолчанию, переходя к какой-то другой лишь в случае непреодолимых обстоятельств.


Создайте ветвь



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

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

Параллельная сортировка данных в GPU

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


В этой статье я познакомлю вас с концепцией параллельной сортировки. Мы обсудим теорию и реализацию шейдера, сортирующего пиксели.

GIF

Введение


Если вы изучали теорию вычислительных машин в 80-х или 90-х, есть вероятность, что вы упорно пытались понять, что же некоторые разработчики находят восхитительного в алгоритмах сортировки. То, что поначалу кажется незначительной задачей, оказывается краеугольным камнем Computer Science.

Но что же такое «алгоритм сортировки»? Представьте, что у вас есть список чисел. Алгоритм сортировки — это программа, получающая этот список и изменяющая порядок чисел в нём. Понятие алгоритмов сортировки часто вводится при изучении вычислительной сложности — ещё одной обширной области знания, которую я подробно рассмотрю в будущих статьях. Существует бесконечное количество способов сортировки списка элементов, и каждая стратегия обеспечивает свой собственный уникальный компромисс между затратами и скоростью.
Всего голосов 54: ↑54 и ↓0+54
Комментарии20

Рак: мифы и заблуждения

Время на прочтение5 мин
Количество просмотров25K
Перевод материала с сайта Национального института онкологических заболеваний США NIH National Cancer Institute.

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

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

REST — это новый SOAP

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

Несколько лет назад я разрабатывал для одного большого телекома новую информационную систему. Нам приходилось взаимодействовать со всё нарастающим количеством веб-сервисов, открываемых более старыми системами или бизнес-партнёрами. Как вы понимаете, мы получили добрую порцию SOAP-ада. Заумные WSDL, несовместимые библиотеки, странные баги… Где только возможно мы старались продвинуть — и использовать — простые RPC-протоколы: XMLRPC или JSONRPC.

Читать дальше →
Всего голосов 106: ↑103 и ↓3+100
Комментарии153

Непрерывная интеграция и развертывание Docker в GitLab CI

Время на прочтение20 мин
Количество просмотров73K
В этом руководстве рассмотрим вариант настройки непрерывной интеграции и развертывания Flask приложения на Docker Swarm через GitLab CI.

Сначала мы рассмотрим настройку рабочей среды, включая создание серверов для нодов Docker Swarm. Затем создадим простое приложение Flask с Redis и подготовим GitLab CI для непрерывной доставки.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии7
1
23 ...

Информация

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