Any project passes “we need more features” and “omg why is everything so slow” phases during its life. They intertwine, they are not always pronounced, but they are there. Weirdly enough Kasta gets phase #2 regularly; few times a year. Some of the iterations are especially remarkable. This story is going to tell you how we quickly (heh) discover them and, for the lack of a better word - solve them.
Project Jigsaw in JDK 9: Modularity Comes To JavaC4Media
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1WCnj0v.
Simon Ritter looks at the fundamentals of how modularity in Java works. He explains the impact project Jigsaw has on developers in terms of building their applications, as well as helping them to understand how things like encapsulation will change in JDK 9. Filmed at qconlondon.com.
Simon Ritter is the Deputy CTO at Azul and was previously a Java Technology Evangelist at Oracle Corporation. He continues to develop demonstrations that push the boundaries of Java for applications like gestural interfaces.
There are many ways to manage whether a service can talk to another service. It can be tempting to over-use one segmentation mechanism to implement policy when the real problem is how to coordinate and manage many mechanisms in the physical, cloud and container spaces. This talk summarizes the problem space and opportunities rather than offers solutions.
Presented at the Docker Palo Alto meetup Feb 16th 2016 http://www.meetup.com/Docker-Palo-Alto/events/228277181/
Production debugging is hard, and it’s getting harder. With architectures becoming more distributed and code more asynchronous and reactive, pinpointing and resolving errors that happen in production is no child’s game. This session covers some essential tools and more advanced techniques Scala developers can use to debug live applications and resolve errors quickly. It explores crucial techniques for distributed debugging - and some of the pitfalls that make resolution much harder, and can lead to downtime. The talk also touches on some little-known JVM tools and capabilities that give you super-deep visibility at high scale without making you restart it or attach debuggers.
Any project passes “we need more features” and “omg why is everything so slow” phases during its life. They intertwine, they are not always pronounced, but they are there. Weirdly enough Kasta gets phase #2 regularly; few times a year. Some of the iterations are especially remarkable. This story is going to tell you how we quickly (heh) discover them and, for the lack of a better word - solve them.
Project Jigsaw in JDK 9: Modularity Comes To JavaC4Media
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1WCnj0v.
Simon Ritter looks at the fundamentals of how modularity in Java works. He explains the impact project Jigsaw has on developers in terms of building their applications, as well as helping them to understand how things like encapsulation will change in JDK 9. Filmed at qconlondon.com.
Simon Ritter is the Deputy CTO at Azul and was previously a Java Technology Evangelist at Oracle Corporation. He continues to develop demonstrations that push the boundaries of Java for applications like gestural interfaces.
There are many ways to manage whether a service can talk to another service. It can be tempting to over-use one segmentation mechanism to implement policy when the real problem is how to coordinate and manage many mechanisms in the physical, cloud and container spaces. This talk summarizes the problem space and opportunities rather than offers solutions.
Presented at the Docker Palo Alto meetup Feb 16th 2016 http://www.meetup.com/Docker-Palo-Alto/events/228277181/
Production debugging is hard, and it’s getting harder. With architectures becoming more distributed and code more asynchronous and reactive, pinpointing and resolving errors that happen in production is no child’s game. This session covers some essential tools and more advanced techniques Scala developers can use to debug live applications and resolve errors quickly. It explores crucial techniques for distributed debugging - and some of the pitfalls that make resolution much harder, and can lead to downtime. The talk also touches on some little-known JVM tools and capabilities that give you super-deep visibility at high scale without making you restart it or attach debuggers.
HighLoad++ 2017
Зал Дели + Калькутта, 7 ноября, 13:00
Тезисы:
http://www.highload.ru/2017/abstracts/2867.html
Последние несколько лет в продуктовой разработке проблемы масштабирования решаются через переход на микросервисную архитектуру. На эту тему было сказано много про подходы, плюсы и минусы, но мало кто рассматривал эту проблематику со стороны фронтенда.
В ЦИАН мы идем по пути перехода от монолита к микросервисам, в том числе и на фронтенде. Задачи и проблемы, с которыми мы сталкиваемся, очень близки к аналогичным на бэкенде, но в то же время совершенно другие.
Последние несколько лет в продуктовой разработке проблемы масштабирования решаются через переход на микросервисную архитектуру. На эту тему было сказано много про подходы, плюсы и минусы, но мало кто рассматривал эту проблематику со стороны фронтенда.
В ЦИАН мы идем по пути перехода от монолита к микросервисам, в том числе и на фронтенде. Задачи и проблемы, с которыми мы сталкиваемся, очень близки к аналогичным на бэкенде, но в то же время совершенно другие.
В своем докладе я расскажу про архитектуру фронтенда (и так называемого миддленда) в ЦИАН: какие задачи перед нами стояли, что мы решили, где мы находимся сейчас и с какими проблемами мы столкнулись.
Історія декількох проектів та що в них пішло не так - UA Mobile 2019UA Mobile
У середовищі розробників існує думка про те, що сучасні проекти, зокрема - Android проекти, - всього лише пазл з бібліотек та невеликої кількості бізнес-логіки. В рамках моєї презентації ми розглянемо кілька проектів, на прикладі яких я покажу деякі проблеми та приховану вартість використання деяких бібліотек, про яку мало хто замислюється.
В якості бонуса ми подивимося на деякі приклади очевидного (і не дуже) поганого коду та поганої архітектури.
Під час презентації ми розглядаємо як деякі відомі бібліотеки (RxAndroid, Dagger, Android Architecture Components) використовуються в занадто широкому сенсі або на занадто ранній стадії, і як це заважає проекту, викликаючи вельми неочевидні проблеми як для розробника, так і для кінцевого користувача.
http://uamobile.org/uk/topics/istoriya-dekilkoh-proektiv-ta-shcho-v-nyh-pishlo-ne-tak
Картинки к моему рассказу о том, как мы делаем Банки.ру. Некоторые слайды очень неоднозначны без текста. Тезисы тут: http://nastachku.ru/lectures?lecture_id=630#lecture_630
Видео тут https://www.youtube.com/watch?v=m5QuiTZwMrU
Как упростить жизнь системному администратору с помощью Python – Андрей Васил...Yandex
В наши времена облаков и Big Data трудно представить себе проект без хранилища данных. И сложностей с ним вроде бы нет — поставил, настроил и забыл. Но как быть, если хранилище живёт одновременно в нескольких дата-центрах, в нём лежит 4 петабайта данных, качество железа и сети оставляет желать лучшего, а количество системных администраторов ограничено?
В докладе я расскажу о нашем решении этой проблемы, которое мы назвали Mastermind, о том, как работает фантазия сисадминов, когда в их руки попадает удобный инструмент, и о том, с какими проблемами мы столкнулись в распределённой среде.
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...Ontico
С того момента, как было принято решение использовать язык Lua в качестве языка описания бизнес-логики в нашей платформе, прошло уже больше восьми лет. Проекты росли, данных становилось больше, возрастала нагрузка на сервера приложений. Со временем у нас накопился солидный багаж знаний о том, как устроен LuaJIT, с какими проблемами можно столкнуться при его использовании и как эти проблемы можно решать.
Я расскажу про то...
* Почему при миграции с x86 на x64 доступной памяти в LuaJIT становится меньше, и как мы с этим боролись.
* Как загрузить в LuaJIT несколько миллионов объектов и не умереть в тормозах от сборщика мусора.
* Насколько ужасна встроенная функция хеширования строк и почему иногда надо жертвовать производительностью в пользу качества.
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...Ontico
РИТ++ 2017, Backend Conf
Зал Сан-Паулу, 6 июня, 17:00
Тезисы:
http://backendconf.ru/2017/abstracts/2777.html
В сложной ситуации хорошо иметь под рукой детали: сообщения об ошибках, статистику времени выполнения запросов, данные о производительности операционной системы и железа. Много деталей! Современные версии MySQL позволяют собрать информацию практически обо всём. Однако любой включённый мониторинг имеет свою цену: производительность. Именно поэтому универсального решения "всё включено", подходящего для любого MySQL-приложения, не существует. Даже при использовании инструментов с графическим интерфейсом у вас всегда есть выбор: что отслеживать и что нет.
В докладе я хочу обсудить, какие опции должны быть включены всегда, какие опциональны и при каких обстоятельствах их включать. Мы рассмотрим встроенные возможности MySQL, Percona-серверов и внешние решения.
Алексей Романчук «Реактивное программирование»DevDay
Старые подходы к построению программных систем не так актуальны для создания современных решений. В дополнение к масштабируемости добавляются требования отзывчивости, отказоустойчивости и событийности. Пытаться работать на родном старом или посмотреть в сторону новых технологий? В своем выступлении я расскажу про концепцию reactive programming. Какие технологии реализуют концепцию и как сделать первые шаги в этом новом прекрасном мире.
В «Одноклассниках» логируются любые действия пользователей, любой вызов классов и методов, любые взаимодействия компонентов системы. Через несколько минут эти данные уже видны на графиках системы статистики. Данные собирает, хранит и обрабатывет хранилище данных, построенное на базе MS SQL Server.
Для адмистраторов, разработчиков и менеджеров построены универсальные интерактивные графики. Эти графики можно настроить так, чтобы они показывали любую подвыборку данных, агрегированных по периодам, начиная с 5 минут и заканчивая годом. Из графиков составлены тематические страницы (дэшборды), которые наглядно показывают состояние всего сайта или его отдельного компонента.
В докладе будут рассмотрены архитектура, основные компоненты и примененные алгоритмы обработки данных.
Картинки к моему рассказу о том, что такое фреймворки и с чем их едят, что лучше не есть и как выбрать приправы для приготовления. Тезисы тут: http://backendconf.ru/2016/abstracts/2123.html
HighLoad++ 2017
Зал Дели + Калькутта, 7 ноября, 13:00
Тезисы:
http://www.highload.ru/2017/abstracts/2867.html
Последние несколько лет в продуктовой разработке проблемы масштабирования решаются через переход на микросервисную архитектуру. На эту тему было сказано много про подходы, плюсы и минусы, но мало кто рассматривал эту проблематику со стороны фронтенда.
В ЦИАН мы идем по пути перехода от монолита к микросервисам, в том числе и на фронтенде. Задачи и проблемы, с которыми мы сталкиваемся, очень близки к аналогичным на бэкенде, но в то же время совершенно другие.
Последние несколько лет в продуктовой разработке проблемы масштабирования решаются через переход на микросервисную архитектуру. На эту тему было сказано много про подходы, плюсы и минусы, но мало кто рассматривал эту проблематику со стороны фронтенда.
В ЦИАН мы идем по пути перехода от монолита к микросервисам, в том числе и на фронтенде. Задачи и проблемы, с которыми мы сталкиваемся, очень близки к аналогичным на бэкенде, но в то же время совершенно другие.
В своем докладе я расскажу про архитектуру фронтенда (и так называемого миддленда) в ЦИАН: какие задачи перед нами стояли, что мы решили, где мы находимся сейчас и с какими проблемами мы столкнулись.
Історія декількох проектів та що в них пішло не так - UA Mobile 2019UA Mobile
У середовищі розробників існує думка про те, що сучасні проекти, зокрема - Android проекти, - всього лише пазл з бібліотек та невеликої кількості бізнес-логіки. В рамках моєї презентації ми розглянемо кілька проектів, на прикладі яких я покажу деякі проблеми та приховану вартість використання деяких бібліотек, про яку мало хто замислюється.
В якості бонуса ми подивимося на деякі приклади очевидного (і не дуже) поганого коду та поганої архітектури.
Під час презентації ми розглядаємо як деякі відомі бібліотеки (RxAndroid, Dagger, Android Architecture Components) використовуються в занадто широкому сенсі або на занадто ранній стадії, і як це заважає проекту, викликаючи вельми неочевидні проблеми як для розробника, так і для кінцевого користувача.
http://uamobile.org/uk/topics/istoriya-dekilkoh-proektiv-ta-shcho-v-nyh-pishlo-ne-tak
Картинки к моему рассказу о том, как мы делаем Банки.ру. Некоторые слайды очень неоднозначны без текста. Тезисы тут: http://nastachku.ru/lectures?lecture_id=630#lecture_630
Видео тут https://www.youtube.com/watch?v=m5QuiTZwMrU
Как упростить жизнь системному администратору с помощью Python – Андрей Васил...Yandex
В наши времена облаков и Big Data трудно представить себе проект без хранилища данных. И сложностей с ним вроде бы нет — поставил, настроил и забыл. Но как быть, если хранилище живёт одновременно в нескольких дата-центрах, в нём лежит 4 петабайта данных, качество железа и сети оставляет желать лучшего, а количество системных администраторов ограничено?
В докладе я расскажу о нашем решении этой проблемы, которое мы назвали Mastermind, о том, как работает фантазия сисадминов, когда в их руки попадает удобный инструмент, и о том, с какими проблемами мы столкнулись в распределённой среде.
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...Ontico
С того момента, как было принято решение использовать язык Lua в качестве языка описания бизнес-логики в нашей платформе, прошло уже больше восьми лет. Проекты росли, данных становилось больше, возрастала нагрузка на сервера приложений. Со временем у нас накопился солидный багаж знаний о том, как устроен LuaJIT, с какими проблемами можно столкнуться при его использовании и как эти проблемы можно решать.
Я расскажу про то...
* Почему при миграции с x86 на x64 доступной памяти в LuaJIT становится меньше, и как мы с этим боролись.
* Как загрузить в LuaJIT несколько миллионов объектов и не умереть в тормозах от сборщика мусора.
* Насколько ужасна встроенная функция хеширования строк и почему иногда надо жертвовать производительностью в пользу качества.
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...Ontico
РИТ++ 2017, Backend Conf
Зал Сан-Паулу, 6 июня, 17:00
Тезисы:
http://backendconf.ru/2017/abstracts/2777.html
В сложной ситуации хорошо иметь под рукой детали: сообщения об ошибках, статистику времени выполнения запросов, данные о производительности операционной системы и железа. Много деталей! Современные версии MySQL позволяют собрать информацию практически обо всём. Однако любой включённый мониторинг имеет свою цену: производительность. Именно поэтому универсального решения "всё включено", подходящего для любого MySQL-приложения, не существует. Даже при использовании инструментов с графическим интерфейсом у вас всегда есть выбор: что отслеживать и что нет.
В докладе я хочу обсудить, какие опции должны быть включены всегда, какие опциональны и при каких обстоятельствах их включать. Мы рассмотрим встроенные возможности MySQL, Percona-серверов и внешние решения.
Алексей Романчук «Реактивное программирование»DevDay
Старые подходы к построению программных систем не так актуальны для создания современных решений. В дополнение к масштабируемости добавляются требования отзывчивости, отказоустойчивости и событийности. Пытаться работать на родном старом или посмотреть в сторону новых технологий? В своем выступлении я расскажу про концепцию reactive programming. Какие технологии реализуют концепцию и как сделать первые шаги в этом новом прекрасном мире.
В «Одноклассниках» логируются любые действия пользователей, любой вызов классов и методов, любые взаимодействия компонентов системы. Через несколько минут эти данные уже видны на графиках системы статистики. Данные собирает, хранит и обрабатывет хранилище данных, построенное на базе MS SQL Server.
Для адмистраторов, разработчиков и менеджеров построены универсальные интерактивные графики. Эти графики можно настроить так, чтобы они показывали любую подвыборку данных, агрегированных по периодам, начиная с 5 минут и заканчивая годом. Из графиков составлены тематические страницы (дэшборды), которые наглядно показывают состояние всего сайта или его отдельного компонента.
В докладе будут рассмотрены архитектура, основные компоненты и примененные алгоритмы обработки данных.
Картинки к моему рассказу о том, что такое фреймворки и с чем их едят, что лучше не есть и как выбрать приправы для приготовления. Тезисы тут: http://backendconf.ru/2016/abstracts/2123.html
Картинки к моему рассказу о том, что не всегда круто спешить и бежать впереди паровоза при оптимизации и внедрении новых модных решений. Тезисы тут: http://junior.highload.ru/2016/abstracts/2221.html
Как мы помогаем тестировщикам делать их работу лучшеRoman Ivliev
Картинки к моему рассказу на QAMeetUp в нижегородском mail.ru про то, как мы помогаем тестировщикам и мешаем одновременно.
Тезисно: есть куча способов привлечь других членов команды (админов, саппорт, разработчиков) к тестированию и выявлению дефектов, но не всегда это здорово, потому что де-факто получается огромное количество наведённых эффектов, борьба с которыми перекрывает по затратам нормальный процесс тестирования. Доклад больше менеджерский, но и остальным он будет полезен имхо. Видео и аудио не снимали. В слайдах есть контакты - с удовольствием отвечу на вопросы и расскажу про то, как и что у нас.
28. ПРОФИЛИ НА САЙТЕ ЗНАКОМСТВ
Спроектируем систему хранения пользователей на сайте знакомств
28
29. Сайт знакомств, профили / #1
1. Пользователь заполняет анкету;
2. Получает логин пароль для доступа к
своему личному кабинету;
3. Пользователи могут смотреть профили
друг друга;
29
30. Сайт знакомств, профили / #2
1. Пользователей 200 миллионов;
2. Каждая анкета занимает 10 килобайт, то
есть всего 2 000 гигабайт;
3. Хитов в день 5 миллиардов;
30
32. Сайт знакомств, профили / #4
1. Данные часто читаются, но редко
меняются;
2. Все анкеты примерно одного размера;
3. У анкеты есть уникальный идентификатор;
4. Нет ярко выраженных лидеров;
32
39. Сайт знакомств, профили /
результат
• Разбиваем весь массив пользователей на
виртуальные шарды;
• Маппим виртуальные шарды на реальные
шарды;
• Внутри каждого шарда реплицируем
информацию для отказоустойчивости
39
42. Новости / #2
• Каждая новость примерно 10 килобайт;
• Мы вечно храним архив с даты основания
СМИ – 2000 год;
• В день публикуется около 10 тысяч различных
региональных и федеральных новостей;
• Итого в год 3 миллиона 500 тысяч новостей, в
год 35 гигабайт, за 20 лет – 700 гигабайт;
• Это крупнейшее СМИ, посещаемость – 10
миллионов человек в сутки;
42
44. Новости / #4
• Количество чтений на несколько порядков
превышает количество записей;
• 99% запросов касаются последнего дня;
• 99,99% запросов касаются последней
недели.
44
51. Новости / результат
• Кеширование для горячих новостей;
• Партиционирование новостей по дате –
последние новости в быстрой таблице;
• Избыточное хранение новостей – новость
пишется сразу и в горячую таблицу и в
архивную, горячая раз в какое-то время
чистится;
51
53. Просмотр френдленты / #1
• У пользователя может быть сколько угодно
друзей;
• Френдленту храним бесконечно долго;
53
54. Просмотр френдленты / #2
• В среднем у пользователя 100 друзей;
• Каждый пользователь в среднем пишет 3
поста в день;
• Каждый пост занимаем около 1 килобайта;
• Пользователей – 10 миллионов в сутки, но
каждый пользователь делает 100 хитов. Итого
– миллиард запросов к френдленте в сутки;
• В сутки генерируется 30 миллионов постов, 10
миллиардов записей в год;
54
55. Просмотр френдленты / #3
• Допустимо, что пользователь увидит запись
своего друга не моментально, а с
небольшой задержкой;
• Допустимо, что порядок записей не будет
строго совпадать с хронологическим;
55
56. Просмотр френдленты / #4
• 99% запросов приходятся на голову
френдленты;
• У нас есть пользователи, которые в друзьях
у миллионов пользователей;
56
58. Просмотр френдленты / #5
Избыточность?
Каждому пользователю свой список записей
в его френдленте? Это же очень много – один
триллион записей за год!
58
59. Просмотр френдленты / #5
Храним для каждого
пользователя ленту
идентификаторов постов!
59
61. Просмотр френдленты / #5
Пользователь и его
посты лежат рядом
Сделайте составной идентификатор поста,
пусть в него входит идентификатор
пользователя
61
62. Просмотр френдленты / #5
Достали список
идентификаторов
постов
Как собрать ленту?
62
64. Просмотр френдленты / #5
Если вы круты, то можете попробовать
Параллельные
вычисления
64
65. Просмотр френдленты / результаты
• Пользователи шардируются, рядом с
пользователями лежат его посты и его френдлента;
• В френдленте пользователя уже записаны
идентификаторы постов его друзей в порядке,
близком к хронологическому;
• В идентификатор поста зашит ID пользователя, по
которому мы быстро определяем шард и забираем
с него текст поста;
• За текстом поста у нас будет ходить JS-машина,
работающая на клиенте.
65
66. Запись френдленты / #5
А как посты попадают
в френдленту?
У нас ведь есть пользователи, которые в
друзьях у миллионов?
66