Netty’s popularity continues to grow, and we’ll recall its main components, and walk along
WebSocket c Selectivity Compression as the main transport for web games, and Long-Polling is the key to saving stubborn old people.
HappyDev-lite-2016-осень, день 2 04 Михаил Колганов. Интерфейс пользователя ...HappyDev-lite
Важная часть современного веба - это фронтенд. Рассказ краткой истории фронтенд-разработки от истоков и до наших дней, что происходит на этой кухне сегодня и куда движется современный веб.
HappyDev-lite-2016-осень, день 2 04 Михаил Колганов. Интерфейс пользователя ...HappyDev-lite
Важная часть современного веба - это фронтенд. Рассказ краткой истории фронтенд-разработки от истоков и до наших дней, что происходит на этой кухне сегодня и куда движется современный веб.
How to run linux on atmel/microchip sama5d3 platform: selecting toolchain, building rootfs and boot components. Using NAND for data storage with hardware Error Correction Coding (MPECC module).
Непрерывная интеграция Python-проектов в ЯндексеAndrey Kazarinov
Рутинные операции тестирования, сборки и развёртывания заставляют в нервном ожидании толстеть на кофепоинте, а частый релизный цикл создаёт лёгкое головокружение? Чтобы помочь вам сохранить тело подтянутым, а голову светлой, я расскажу об организации и особенностях непрерывной интеграции в Python-проектах на примере популярных инструментов.
В скором времени, Unity получит поддержку еще одной платформы — WebGL, что позволит запускать игры в браузере без каких-либо плагинов. Валентин покажет, как работает процесс паблишинга, подробно остановится на IL2CPP — внутренней разработке Unity, которая и делает всю основную магию, а так же расскажет о дальнейших планах внедрения этой технологии на другие платформы.
Архитектура и особенности Cisco Nexus 5000, Fabric Extender (FEX), Virtual Po...Cisco Russia
Презентация с вебинара, организованного в рамках сообщества Cisco Support Community.
Приглашаем Вас на другие мероприятия Cisco Support Community, а также к участию в жизни нашего сообщества технической поддержки Cisco:
http://cs.co/CSCRu
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...Provectus
Aleksandr Matkovskiy – Head of IT Department lives and works with the motto "Scaling and load balancing is our all!". Therefore, he has 3 sons and dreams to find DEV for his OPS.
You will be able to see how the CI / CD was created and saved our lives. From concept to the final product.
Vladislav Anikin – Team Leader & Software Architect, specializing in SAAS flexible and scalable solutions for business. Driving DDD/TDD oriented squad of awesome SOLID developers.
You will be able to see how the CI / CD was created and saved our lives. From concept to the final product.
— Реальная история из жизни о том, как мы внедряли Docker;
— Хочешь чтобы все коллеги узнавали тебя? Займись внедрением Docker в своей компании!;
— Собрать все шишки? Легко… или «Даунтайм, как неотъемлемая часть внедрения»;
— Будь сильным и смелым, если уверен в перспективах и необходимости своего внедрения;
— «Делать новое не ломая старого» – основная цель любого внедрения;
— Чекпоинт, как инструмент промежуточной оценки результатов;
— Как растут наши аппетиты или о новых инфраструктурных идеях;
— Мы сделали это, значит это вполне осуществимо;
— Самое сложное позади или какие приятные результаты вас ожидают, если все пошло правильно.
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Yandex
Рассказ об основных принципах, которых придерживается Viber в длительной разработке приложения с большой кодовой базой — если разработкой занимается распределённая команда. Мы обсудим используемые технологии, библиотеки, работу с кодом и многое другое.
Модным ныне словом «виртуализация» сейчас называют различные обёртки аппаратной виртуализации, однако этот термин намного старше и более всеохватывающий. На уровне ознакомления с технологией мы поговорим о виртуализации ресурсов в кластере и на примере pacemaker.
Разработка декстопных приложений для linux (Владимир Яковлев)IT-Доминанта
Владимир Яковлев - Python Developer / Odesk / Россия, Санкт-Петербург
- выбор фреймворка: TkInter/PySide/PyQt/PyGI; - что делать если не хватает одного потока; - взаимодействие с системой и другими приложениями; - сборка и публикация пакетов.
http://www.it-sobytie.ru/events/2040
Когда проект делает один разработчик — все просто. Когда над ним работает небольшая команда, можно синхронизироваться и договориться. А вот когда проектов (сайтов и приложений) становится много, и над ними трудится множество команд с перекрестной функциональностью и смежными зонами ответственности, все становится сложным и запутанным.
Я расскажу о своем виденье архитектуры фронтенда, какой она должна быть, чтобы обеспечить её масштабируемость. На основе своего опыта и проблем, с которыми сталкиваются большие проекты.
Видео: https://www.youtube.com/watch?list=PLknJ4Vr6efQFtZmsXmGG64Rz_PHrcXCBL&v=z9y6PNC2FL0
How to run linux on atmel/microchip sama5d3 platform: selecting toolchain, building rootfs and boot components. Using NAND for data storage with hardware Error Correction Coding (MPECC module).
Непрерывная интеграция Python-проектов в ЯндексеAndrey Kazarinov
Рутинные операции тестирования, сборки и развёртывания заставляют в нервном ожидании толстеть на кофепоинте, а частый релизный цикл создаёт лёгкое головокружение? Чтобы помочь вам сохранить тело подтянутым, а голову светлой, я расскажу об организации и особенностях непрерывной интеграции в Python-проектах на примере популярных инструментов.
В скором времени, Unity получит поддержку еще одной платформы — WebGL, что позволит запускать игры в браузере без каких-либо плагинов. Валентин покажет, как работает процесс паблишинга, подробно остановится на IL2CPP — внутренней разработке Unity, которая и делает всю основную магию, а так же расскажет о дальнейших планах внедрения этой технологии на другие платформы.
Архитектура и особенности Cisco Nexus 5000, Fabric Extender (FEX), Virtual Po...Cisco Russia
Презентация с вебинара, организованного в рамках сообщества Cisco Support Community.
Приглашаем Вас на другие мероприятия Cisco Support Community, а также к участию в жизни нашего сообщества технической поддержки Cisco:
http://cs.co/CSCRu
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...Provectus
Aleksandr Matkovskiy – Head of IT Department lives and works with the motto "Scaling and load balancing is our all!". Therefore, he has 3 sons and dreams to find DEV for his OPS.
You will be able to see how the CI / CD was created and saved our lives. From concept to the final product.
Vladislav Anikin – Team Leader & Software Architect, specializing in SAAS flexible and scalable solutions for business. Driving DDD/TDD oriented squad of awesome SOLID developers.
You will be able to see how the CI / CD was created and saved our lives. From concept to the final product.
— Реальная история из жизни о том, как мы внедряли Docker;
— Хочешь чтобы все коллеги узнавали тебя? Займись внедрением Docker в своей компании!;
— Собрать все шишки? Легко… или «Даунтайм, как неотъемлемая часть внедрения»;
— Будь сильным и смелым, если уверен в перспективах и необходимости своего внедрения;
— «Делать новое не ломая старого» – основная цель любого внедрения;
— Чекпоинт, как инструмент промежуточной оценки результатов;
— Как растут наши аппетиты или о новых инфраструктурных идеях;
— Мы сделали это, значит это вполне осуществимо;
— Самое сложное позади или какие приятные результаты вас ожидают, если все пошло правильно.
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Yandex
Рассказ об основных принципах, которых придерживается Viber в длительной разработке приложения с большой кодовой базой — если разработкой занимается распределённая команда. Мы обсудим используемые технологии, библиотеки, работу с кодом и многое другое.
Модным ныне словом «виртуализация» сейчас называют различные обёртки аппаратной виртуализации, однако этот термин намного старше и более всеохватывающий. На уровне ознакомления с технологией мы поговорим о виртуализации ресурсов в кластере и на примере pacemaker.
Разработка декстопных приложений для linux (Владимир Яковлев)IT-Доминанта
Владимир Яковлев - Python Developer / Odesk / Россия, Санкт-Петербург
- выбор фреймворка: TkInter/PySide/PyQt/PyGI; - что делать если не хватает одного потока; - взаимодействие с системой и другими приложениями; - сборка и публикация пакетов.
http://www.it-sobytie.ru/events/2040
Когда проект делает один разработчик — все просто. Когда над ним работает небольшая команда, можно синхронизироваться и договориться. А вот когда проектов (сайтов и приложений) становится много, и над ними трудится множество команд с перекрестной функциональностью и смежными зонами ответственности, все становится сложным и запутанным.
Я расскажу о своем виденье архитектуры фронтенда, какой она должна быть, чтобы обеспечить её масштабируемость. На основе своего опыта и проблем, с которыми сталкиваются большие проекты.
Видео: https://www.youtube.com/watch?list=PLknJ4Vr6efQFtZmsXmGG64Rz_PHrcXCBL&v=z9y6PNC2FL0
2. • Инженер в компании Playtika
• Участник и докладчик митапов DevOWL
• Контрибьютор проекта Netty
2
Обо мне
3. 3
О чем доклад
• Разбор основных компонентов Netty
• Подходы и особенности при работе с Netty
• WebSocket основной транспорт для веб-игр
• Long-Polling как резервный транспорт для упрямых стариков
• Что такое “Selective Compression” и как она позволяет увеличить
пропускную способность
10. 10
Netty – EventLoop
• Никогда не блокируйте EventLoop !!!
Thread.sleep(), CountDownLatch.await() и другие блокирующие операции из
java.util.concurrent
• Используем отдельный EventLoop для обращения к внешним ресурсам
• Создаем метрики для мониторинга состояния EventLoop
12. 12
Netty – ChannelPipeline и ChannelHandler
• Удаляем неиспользуемые обработчики
• Выстраиваем пайплайн в логическом порядке
• Помечаем обработчики без состояния аннотацией @Shareble
• Используем ChannelHandlerContext для записи
• Добавляем в конец пайплайна обработчик ошибок
13. 13
Netty – ByteBuf
Абстракция для работы с данными (byte[], ByteBuffer)
https://en.wikipedia.org/wiki/Zero-based_numbering
14. 14
Netty – ByteBuf
• ByteBuf – это “reference-counted” объект, помним о release() и retain()
• Выставляем ResourceLeakDetector.Level в ADVANCED или PARANOID при
разработке и SIMPLE или DISABLED в продакшн
• Используем PooledByteBufAllocator по умолчанию
• Unpolled.wrappedBuffer() при работе с byte[]
15. 15
Netty – подытожим
• Используйте правильный транспорт
• Не блокируй свой EventLoop
• Держи ChannelPipeline в чистоте
• ByteBuf - я тебя породил, я тебя и убью
16. 16
Веб или браузерные игры
Игры, которые не требует установки и используют стандартные
технологии браузера или плагины.
18. 18
Обновляемся до WebSocket
• Full-Duplex коммуникация
• Одно соединение
• Легко определить разрыв соединения
• Поддерживает расширения (compression extension)
19. 19
WebSocket – минусы
• Не все браузеры поддерживают протокол
• Не все прокси поддерживают
• Нет поддержки автоматического переподключения
• К сожалению в мире много упрямых стариков
20. 20
Long-Polling - спасение для упрямых стариков
• Работает со всеми технологиях
• Поддерживается всеми балансировщиками и прокси
21. 21
Long-Polling – минусы
• Избыточность передаваемых данных
• Имитация дуплексного соединения
• Больше открытых соединений
• Нет поддержки автоматического переподключения
23. 23
“Selectivity Compression”
• Сжимаем только необходимое
• Уменьшаем расход ресурсов
• Увеличиваем пропускную способность
• Доступна в Netty c 4.1.35.Final
24. 24
Выводы
• Netty – быстро, асинхронно, производительно, но не просто
• WebSocket + “Selectivity Compression” – основной транспорт, только на
90%
• Long-Polling как резервный транспорт для оставшихся 10%
• Не бойтесь контрибьютить в open source проекты.