company_banner
  • Патчинг Java кода на продакшене без анестезии

      image

      Здесь я расскажу об устройстве одного из многих инструментов, которые помогают в разработке различных сервисов для проекта Одноклассники. Внутри компании мы называем его «Hot Code Replace» (HCR), и предназначен данный инструмент для исправления критических и несложных багов в работающих продакшн сервисах без их остановки. Это чрезвычайно важная особенность, так как позволяет избежать достаточно занудного и трудоёмкого процесса выкладывания новой – исправленной версии барахлящего сервиса, избежать сопутствующей этому достаточно продолжительной паузы в доступности каждого хоста, избежать сброса кешей.

      В общем, экономит массу времени и уменьшает интервал от момента обнаружения ошибки до исправления с часов до минут. Чаще всего, как и было задумано, исправляют мелкие ошибки в коде, например, программист забыл проверить на null и у некоторых пользователей определённые действия на сайте приводят к ошибке. То есть когда исправление осуществляется изменением нескольких строчек внутри метода. И ради таких мелких изменений больше не нужно отвлекать коллег и ждать часами выкладки на продакшн.
      Читать дальше →
    • Миллион видеозвонков в сутки или «Позвони маме!»

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



        Далее текстовая версия доклада на HighLoad++ Siberia, из которой вы узнаете:

        • как работают сервисы видеозвонков под капотом;
        • как красиво пробить NAT — это будет интересно и специалистам из игровой сферы, которым необходимо peer-to-peer соединение;
        • как устроен WebRTC, какие протоколы в него входят;
        • как можно тюнить WebRTC через BigData.


        О спикере: Александр Тоболь руководит разработкой платформ Видео и Ленты в ok.ru.
        Читать дальше →
      • Разбор игры от Одноклассников на Joker 2018


          Всем привет! Несколько дней назад мы выкладывали пост про задачки, которые давали на конференции Joker 2018. Но это еще не всё! В этом году специально для Joker мы сделали целую игру с не менее интересными задачками по Java (и не только), про которую и расскажем сегодня.
          Читать дальше →
          • +30
          • 4,8k
          • 6
        • Разбор задачек Joker 2018



            Алоха!

            Вот и закончилась одна из самых хардкорных конференций в мире Java — Joker 2018, которая традиционно проходит в Санкт-Петербурге в «Экспофоруме». В этом году в конференции участвовало рекордное количество участников. «Одноклассники» традиционно предложили помочь нашим разработчикам решить нетривиальные задачи, которые возникают при создании одного из самых высоконагруженных проектов на Java.

            Те, кто хорошо ответил на вопросы, получили призы, а вам предлагаем краткий разбор наших задачек. Мы скрыли правильные ответы под спойлером, чур, открывать только после того, как сами додумались до решения ;-)

            Поехали!
            Читать дальше →
            • +35
            • 9,1k
            • 6
          • Особенности использования Druid на примере Одноклассников



              Меня зовут Юрий Невиницин, и я занимаюсь системой внутренней статистики в «ОК». Хочу рассказать о том, как 50-терабайтную аналитическую систему реального времени, в которой ежедневно журналируются миллиарды событий, мы переносили с Microsoft SQL на колоночную базу под названием Druid. И заодно вы узнаете несколько рецептов использования Druid’а.
              Читать дальше →
              • +25
              • 2,8k
              • 8
            • NewSQL = NoSQL+ACID


                До недавнего времени в Одноклассниках около 50 ТБ данных, обрабатываемых в реальном времени, хранилось в SQL Server. Для такого объема обеспечить быстрый и надежный, да еще и устойчивый к отказу ЦОД доступ, используя SQL СУБД, практически невозможно. Обычно в таких случаях используют одно из NoSQL-хранилищ, но не всё можно перенести в NoSQL: некоторые сущности требуют гарантий ACID-транзакций.

                Это подвело нас к использованию NewSQL-хранилища, то есть СУБД, предоставляющей отказоустойчивость, масштабируемость и быстродействие NoSQL-систем, но при этом сохраняющей привычные для классических систем ACID-гарантии. Работающих промышленных систем этого нового класса немного, поэтому мы реализовали такую систему сами и запустили ее в промышленную эксплуатацию.

                Как это работает и что получилось — читай под катом.
                Читать дальше →
              • Oh, My Code: Машинное обучение и аналитика в «Одноклассниках»



                  В чём разница между Machine Learning и анализом данных, кто сидит в «Одноклассниках» и как начать свой путь в машинном обучении — об этом мы беседуем в двенадцатом выпуске ток-шоу для программистов.


                  Видео на канале Технострим

                  Ведущий программы — технический директор медиапроектов Павел Щербинин, гость — инженер-аналитик «Одноклассников» Дмитрий Бугайченко.
                  Читать дальше →
                  • +30
                  • 6,3k
                  • 8
                • Разбор задачек от Одноклассников на JPoint 2018

                    Алоха!

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

                    Одиннадцать человек, лучше всех решивших эти задачки, уже получили от нас призы, ну а для остальных мы запилили этот пост с разбором решений.
                    Читать дальше →
                    • +32
                    • 10,6k
                    • 4
                  • Щи, или Распознавание 330 млн лиц на скорости 400 фото / сек

                      Распознаванием лиц в 2018 году никого не удивишь – каждый студент, может, даже школьник, его делал. Но всё становится немного сложнее, когда у вас не датасет на 1 млн пользователей, а:


                      • 330 миллионов пользовательских аккаунтов;
                      • ежедневно заливается 20 млн пользовательских фотографий;
                      • максимальное время на обработку одного фото не должно превышать 0.2 сек;
                      • ограниченные объемы оборудования для решения задачи.


                      В этой статье мы поделимся опытом разработки и запуска системы распознавания лиц на пользовательских фотографиях в социальной сети Одноклассники и расскажем про все ”от А до Я”:


                      • математический аппарат;
                      • техническую реализацию;
                      • результаты запуска;
                      • и акцию StarFace, которую мы использовали для PR-а нашего решения.

                      Распознавание лиц Одноклассников в деталях
                    • Лекции Технополиса. Проектирование высоконагруженных систем (осень 2017)



                        Мы начинаем публиковать курсы лекций Технополиса — образовательного проекта команды Одноклассников в Санкт-Петербургском Политехническом университете Петра Великого. Создание высоконагруженных приложений — это не только проектирование и написание кода, но и огромное количество других аспектов на всём протяжении жизненного цикла продукта. Мы пройдём по всему процессу создания и использования высоконагруженной системы. Особое внимание будет уделено особенностям эксплуатации, сетям, балансировке нагрузки, иерархии памяти, повседневным инструментам. Также поговорим о мониторинге, аудите и многом другом. Лекции курса читает команда экспертов под руководством ведущего разработчика в Одноклассниках Вадима Цесько.

                        Список лекций:

                        1. Введение (Вадим Цесько incubos)
                        2. Типовые архитектуры (Александр Христофоров)
                        3. Эксплуатация (Илья Щаников)
                        4. Сетевой стек (Дмитрий Самсонов dmitrysamsonov)
                        5. Балансировка (Андрей Домась)
                        6. Процессоры и память (Алексей Горбов)
                        7. Хранилища данных (Сергей Егоричев)
                        8. JVM (Андрей Паньгин apangin)
                        9. Мониторинг (Сергей Шарапов Sharapoff)
                        10. Облака (Леонид Талалаев)

                        Читать дальше →
                      • One-cloud — ОС уровня дата-центра в Одноклассниках


                          Алоха, пипл! Меня зовут Олег Анастасьев, я работаю в Одноклассниках в команде Платформы. А кроме меня, в Одноклассниках работает куча железа. У нас есть четыре ЦОДа, в них около 500 стоек более чем с 8 тысячами серверов. В определенный момент мы поняли, что внедрение новой системы управления позволит нам более эффективно загрузить технику, облегчить управление доступами, автоматизировать (пере)распределение вычислительных ресурсов, ускорить запуск новых сервисов, ускорить реакции на масштабные аварии.


                          Что же из этого получилось?

                          Читать дальше →
                          • +40
                          • 10,9k
                          • 7
                        • Как не положить тысячи серверов с помощью системы централизованного управления конфигурацией на примере CFEngine


                            Привет, Хабр! Меня зовут Дмитрий Самсонов, я работаю ведущим системным администратором в Одноклассниках. Основные сферы моей компетенции — Zabbix, CFEngine и оптимизация Linux. У нас более 8 тыс. серверов и 200 приложений, которые в различной конфигурации формируют 700 различных кластеров. Тема этой статьи исчерпывающе описана в заголовке.


                            Сразу хочу оговориться:


                            • Я буду предвзят, потому что участвовал во внедрении CFEngine в Одноклассниках.
                            • Я пользовался CFEngine только версий 3.3—3.4.
                            • Я не питаю никаких иллюзий по поводу CFEngine, это значимый игрок, но не лидер рынка и не его аутсайдер. В статье не будет сравнений работы CFEngine с другими системами.
                            • Из систем конфигурации у меня есть опыт использования только CFEngine и Ansible.
                            Читать дальше →
                          • Таргетирование приложения «Модератор Одноклассников»

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


                              Ежедневно в социальную сеть загружается более 20 миллионов картинок. Для того чтобы их проверить, наши инструменты на основе нейронных сетей автоматически фильтруют картинки определенных категорий. Однако часть контента мы пропускаем через ручную разметку, так как не всегда нейронная модель однозначно может определить, есть запрещенный контент на картинке или нет. Наш любимый пример пограничного контента — диван из разряда «показалось».


                              Читать дальше →
                            • Data Science: Про любовь, имена и не только. Часть II

                                Потому что во многой мудрости много печали;
                                И кто умножает познания, умножает скорбь.
                                • Екклесиаст 1:18

                                Кадры из фильма Казино Рояль (2006)


                                Данная статья не может служить поводом для выражения нетолерантности или дискриминации по какому-либо признаку.


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


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


                                На самом деле проблема сводится к другой ровно такой же: почему люди с одним именем едят яблок больше, чем другие? Однако объяснение этой корреляции может оказаться более простым.

                                Читать дальше →
                              • Data Science: Про любовь, имена и не только

                                Что значит имя? Роза пахнет розой,
                                Хоть розой назови ее, хоть нет.

                                • Шекспир "Ромео и Джульетта" (пер. Пастернака)

                                Ромео и Джульетта


                                Данная статья не может служить поводом для выражения нетолерантности или дискриминации по какому-либо признаку.


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


                                Это примерно все равно, что сказать: вероятность быть сбитым машиной, если тебя зовут Сережа, выше, чем если бы тебя звали Костя! Звучит довольно дико, не правда ли? Ну, как минимум, ненаучно. Однако социальные сети сделали возможным сравнительно просто проверить приведенное выше утверждение.


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

                                Читать дальше →
                              • SmartMonitoring — мониторинг бизнес-логики в Одноклассниках



                                  Сейчас у нас в Одноклассниках есть четыре географически распределённых дата-центра, 11 тыс. серверов, более 1 тыс. сетевых устройств, 180 сервисов. Под сервисами мы понимаем фото, видео, музыку, ленту и т. д. Ежедневно сайт посещают десятки миллионов уникальных пользователей. И за всем этим хозяйством необходимо следить, чем и занимаются:

                                  • команда инженеров, которая устанавливает оборудование, меняет диски, решает hardware-инциденты;
                                  • команда мониторинга, которая как раз ищет эти инциденты и отдаёт в работу другим командам;
                                  • сетевые администраторы, они работают с сетью, настраивают оборудование;
                                  • системные администраторы, они администрируют и настраивают портал;
                                  • разработчики.

                                  Мы сами устанавливаем и настраиваем наши серверы, но так как их очень много, то неизбежно, что каждый день что-то ломается. И наша самая главная задача в таком случае — увидеть поломку быстрее пользователей. Поэтому за работу всего портала отвечает целая команда мониторинга. Они просматривают графики, ищут в них аномалии, заводят инциденты, распределяют «автоинциденты», которые создаются при помощи связки Zabbix + JIRA. Мы не просто мониторим бизнес-логику, но и автоматически её анализируем. Подробнее об этом я и расскажу далее.
                                  Читать дальше →
                                • Анимации на GPU: делаем это правильно

                                    Думаю, все уже знают, что современные браузеры умеют рисовать некоторые части страницы на GPU. Особенно это заметно на анимациях. Например, анимация, сделанная с помощью CSS-свойства transform выглядит гораздо приятнее и плавнее, чем анимация, сделанная через top/left. Однако на вопрос «как правильно делать анимации на GPU?» обычно отвечают что-то вроде «используй transform: translateZ(0) или will-change: transform». Эти свойства уже стали чем-то вроде zoom: 1 для IE6 (если вы понимаете, о чём я ;) для подготовки слоя для анимации на GPU или композиции (compositing), как это предпочитают называть разработчики браузеров.


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

                                    Читать дальше →
                                  • Что случилось, когда мы устали смотреть на графики 5 000 серверов в мониторинге (и когда серверов стало более 10 000)



                                      Мы в Одноклассниках занимаемся поиском узких мест в инфраструктуре, состоящей более чем из 10 тысяч серверов. Когда мы слегка задолбались мониторить 5000 серверов вручную, нам понадобилось автоматизированное решение.

                                      Точнее, не так. Когда в седой древности появился примерно 20-й сервер, стали использовать Big Brother — простейший мониторинг, который просто собирает статистику и показывает её в виде мелких картинок. Всё очень, очень просто. Ни приблизить, ни как-то ввести диапазоны допустимых изменений нельзя. Только смотреть картинки. Вот такие:


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

                                      Поэтому мы сделали новую систему мониторинга — и сейчас на работу с 10 тысячами серверов тратим по 1-2 часа в неделю на обработку алертов. Расскажу, как это устроено.
                                      Читать дальше →
                                    • «Любое техническое изменение должно отвечать на вопрос «зачем?» — Одноклассники о Java и не только



                                        Как в Одноклассниках использование sun.misc.Unsafe сочетается с повышенными требованиями к надёжности? Почему там дорабатывали систему мониторинга Cacti? Как работа в ОК пересекается с научной деятельностью? Если соцсеть называется «Одноклассники», то состоит ли весь её Java-код из одного класса?

                                        Ответы на эти и другие вопросы — в нашем посте. В преддверии Joker, где сразу трое сотрудников ОК будут спикерами, а ещё один участвует в программном комитете, мы расспросили всех четверых — и не только их. На наши вопросы ответили:

                                        • Олег Анастасьев, ведущий разработчик (участник программного комитета Joker 2016)
                                        • Андрей Паньгин, ведущий разработчик (спикер Joker 2016)
                                        • Виталий Худобахшов, ведущий аналитик (спикер Joker 2016)
                                        • Дмитрий Бугайченко, инженер-аналитик (спикер Joker 2016)
                                        • Андрей Губа, заместитель технического директора
                                        • Кристина Штейнберга, руководитель отдела персонала

                                        Читать дальше →
                                        • +38
                                        • 11,1k
                                        • 3
                                      • Об охоте на «насекомых»: программа bug bounty в Одноклассниках

                                          Как известно, bug bounty — это программа вознаграждения за информацию о проблемах с безопасностью в продукте. С помощью вознаграждений разработчик стимулирует сообщать о найденных уязвимостях ему, а не продавать информацию на черном рынке, и выигрывает время на исправление проблемы прежде чем о ней станет известно широкой аудитории. Ведь чем более массовый и востребованный у вас продукт, тем больше найдётся желающих воспользоваться им в корыстных целях. Для социальных сетей наличие брешей в системе безопасности является крайне нежелательным, ведь это подрывает доверие пользователей. И если вы хотите, чтобы ваше творение жило долго и имело большую аудиторию, нужно уделять немало внимания поиску ошибок и своевременному исправлению.


                                          Поэтому год назад Одноклассники также запустили такую программу. Меня зовут Александра Сватикова, и как специалист по информационной безопасности я расскажу о том, с чем мы столкнулись и чего нам удалось добиться за время проведения программы поиска уязвимостей.

                                          Читать дальше →
                                          • +29
                                          • 9,6k
                                          • 9

                                        Самое читаемое