Клиентские приложения под нагрузкой (HighLoad 2014)Andrey Smirnov"Что там писать клиентское приложение - вот сервер, который выдерживает 10 тысяч запросов в секунду!"... "Да они там только API делают, вот бы хоть одно приложение под iOS написали!"
Подобный обмен претензиями частенько можно услышать в спорах клиентских и серверных разработчиков. В этом докладе я попробую примирить обе стороны. Только от успешного взаимодействия клиентского приложения и серверной части зависит успех высоконагруженного проекта в целом.
* Как сделать так, чтобы клиент не "завалил" сервер?
* Коммуникация ошибок от сервера к клиенту.
* Синхронизация, разрешение конфликтов.
* Работа в offline-режиме.
* Разработка эффективного и корректного API.
* Асинхронное взаимодействие.
* Почему клиент и сервер на самом деле очень похожи?
Курс высокие нагрузки: сеть (отрывок)Andrey SmirnovРазработка надёжных высоконагруженных систем
Москва, 24, 25 и 26 мая
http://smira.highload.ru/
Трехдневный мастер-класс с практическими заданиями
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...OnticoВсе мы знаем, что NGINX – отличный прокси, который может качественно и эффективно распределять нагрузку между бэкендами и фильтровать запросы по определенным условиям. Но при этом часто на практике возникают задачи, которые не решаются его декларативной моделью описания конфигурации: иногда для принятия решения нам нужно сходить в базу данных (в Redis или даже в MySQL), другой сервис или произвести какую-то более сложную обработку запроса/ответа. Именно здесь к нам на помощь приходит мощь Lua и OpenResty.
Из доклада вы узнаете:
* зачем нам Lua внутри NGINX, и почему из седьмого айфона убрали разъем под наушники;
* в каких ситуациях NGINX в паре с Lua справятся с задачей лучше вашего любимого PHP/NodeJS/Ruby/Python/Visual Basic и о прелестях асинхронного ввода-вывода без callback'ов;
* как залезть к NGINX под капот, используя только высокоуровневый язык;
* при чем здесь Openresty, или как упростить себе жизнь;
* примеры бизнес-кейсов: от "умного" прокси до самостоятельного веб-приложения;
* как оно ведет себя в продакшне под большой нагрузкой.
Архитектура хранения фотографий в BadooBadoo DevelopmentВ этом докладе я в подробностях расскажу о том, как устроено хранение фотографий в нашей компании (всего около ~1 Пб).
Наша система была устроена достаточно просто — сами фотографии хранятся на SAN Storages, которые подключены через Fiber Channel к отдельной группе серверов, "*photos". На photos-серверах смонтированы разделы на соответствующих сетевых блочных устройствах, которые с точки зрения пользователя выглядят, как обычная файловая система.
Мы не используем никакие «хитрые» системы для хранения фотографий и не храним всё в одном файле — каждый размер каждой фотографии представляет из себя обычный файл на файловой системе ext3/4. Фотографии отдаются через nginx напрямую из файловой системы.
Такой способ хранения больших объемов данных весьма дешев, но приводил к проблемам, когда соответствующие SAN «падали», вплоть до повреждения файловой системы с потерей части данных пользователей.
Поэтому, для решения этой проблемы, а также проблем с производительностью, мы решили сделать «софтверную репликацию» фотографий с кешированием данных на SSD.
Также, в качестве эксперимента, мы решили попробовать ещё один способ — хранение на локальных дисках вместо использования SAN. По стоимости решение значительно дороже, но зато надежнее и проще в поддержке. Также, для обеспечения устойчивости к выходу из строя любой машины из такого кластера, мы решили сделать возможной балансировку всех поступающих запросов на весь кластер, то есть, в современных терминах, сделать «распределенное, отказоустойчивое, высокодоступное облачное хранилище».
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)OnticoLua — высокоуровневый язык, похожий на Python/JS, но существенно более простой. Он гибкий и при этом очень быстрый.
Многие слышали про OpenResty. Это решение для разработки Nginx модулей на Lua. Cloudflare, крупнейший CDN/anti-DDOS провайдер, как раз работает на OpenResty.
У нас была задача валидации данных на соответствие схеме; мы переписали валидацию с Си на Lua и получили ускорение в 4 раза (за счет JIT-компиляции).
Что будет в докладе:
* краткое введение в язык Lua;
* как работает трассирующий JIT-компилятор Lua;
* как писать быстрый код, искать и устранять проблемы с производительностью;
* наш опыт: как мы ускорились в 4 раза, переписав валидацию с Си на Lua.
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...OnticoВ докладе я расскажу о проблемах роста, с которыми сталкивался проект как в плане доступа к БД, так и в целом. Как решали, что получалось, как (общетеоретически или практически) можно решать подобные проблемы в других проектах.
Разберем несколько реальных случаев, когда что-то шло не так.
Доклад можно рассматривать и как небольшой экскурс в развитие технической платформы ВК, и как собрание нескольких практических способов для проекта вырасти и стать надежнее.
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)OnticoДостаточно давно уже был какой-то доклад о том, что собой представляет Вконтакте изнутри. В своем докладе я хотел быть отчасти обновить те знания и рассказать, какие из общедоступных инструментов есть в руках системных администраторов социальной сети. Разумеется, кроме чистой головы и прямых рук (лишнее зачеркнуть).
Я намереваюсь коснуться таких вопросов, как:
- Управление конфигурацией на очень большом числе серверов.
- Разграничение доступа.
- Развертывание кода на рабочей площадке.
- Мониторинг.
- Как мы, вообще, справляемся с таким гигантом малым числом людей?
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)OnticoНекоторое время назад, когда в очередной раз встал вопрос о производительности большого парка mysql sharding серверов, мы не захотели покупать новые сервера и производить resharding. Мы обнаружили, что компания facebook выпустила в opensource большое количество своих разработок, в том числе и модуль ядра flashcache.
Flashcache — модуль для кэширования блоков блочного устройства, предоставляющий 4 разных режима кэширования.
В данном докладе я расскажу, как мы тестировали, поэтапно проверяя под нагрузкой, 3 из 4 режимов кэширования, сравнивая и выбирая оптимальный. Итогом данной работы стало внедрение данного модуля в нашу архитектуру (фотосервера, сервера БД).
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)OnticoBooking.com - популярный сервис по онлайн-бронированию отелей. Поиск отеля, отвечающего заданным характеристикам - это неотъемлемая часть бизнес-модели и основной инструмент для клиента.
При постоянном росте компании вопросу производительности и масштабируемости поиска уделяется много внимания. В результате за время своего существования архитектура поиска претерпела несколько глобальных переделок, начиная от простой базы в MySQL до многокомпонентного распределенного сервиса.
В своей текущей реинкарнации поиск в Booking.com состоит их трех подсистем:
1) сервис auto-complete и устранения неоднозначности (disambiguation) в геопозиции;
2) сервис поиска по отелям и проверки их доступности (availability);
3) система предрасчета цен.
Первые две системы - это высокопроизводительные приложения, написанные на Java. Сервис поиска хранит свои индексы в in-memory хранилище, а данные - во встраиваемой базе данных RocksDB. Логика системы предрасчета цен написана на Perl, а в качестве хранилища используется MySQL.
Приходите на мой доклад, и я расскажу вам, как эволюционировал поиск вместе с ростом компании. Мы подробно рассмотрим текущую архитектуру, и почему мы решили ее сделать именно такой. Ну и, конечно, с какими проблемами нам пришлось бороться и как мы это делали.
Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...FwdaysMarketing materials and documentation of AWS and other cloud providers do present their Serverless-services as a future of cloud computing, that ought to solve nearly all current problems. Is that so? Is there something marketers and documentation are hiding from us? What are costs and productivity?
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайOnticoНабирает обороты мода на парадигму noBackend (см., например, http://nobackend.org/). Название не стоит понимать буквально: backend никуда не делся, просто фокус разработки — особенно на начальном этапе развития нового проекта — сильно смещается в сторону «клиентской части». Это очень понятно и закономерно в эпоху Mobile First и React Ecosystem с её новомодными GraphQL и React Native.
Появляется большой соблазн взять что-то понятное для хранения данных и уже «обвязанное» REST API, максимально отказаться от PHP/Python/Ruby/Java/etc, писать 80% кода «на стороне клиента», минимально заботясь о возне «на стороне сервера». У некоторых возникает и настоящая эйфория — чувство приятное, но очень опасное (прежде всего, если в команде нет сильного backend-опыта).
Этот доклад — компиляция опыта ряда проектов, написанных на React, React Native и Swift и переходящих на парадигму (или же сразу стартанувших с неё) noBackend за счёт PostgreSQL+PostgREST.
Мы обсудим важные вопросы, которые обязан задавать себе каждый, выбравший noBackend-подход (и не обязательно на связке Postgres+PostgREST): безопасность (аутентификация/авторизация; ограничение чтения и — особенно! — модификации «чужих» данных), производительность (нетривиальные запросы а-ля «свежий контент от тех, на кого я подписан»; компромисс между сетевой сложностью и CPU; защита от «домашнего» ddos — ситуации, когда свои же, родные «фронтендеры» кладут «бэкэнд»), масштабируемость и асинхронная обработка задач.
Задача-минимум (для всех): у каждого слушателя остаётся список must-check-вопросов для работы с noBackend-подходом.
Задача-максимум (для тех, кто с Postgres-опытом): разворачивание безопасного, высокопроизводительного и годного для быстрого развития REST API — сегодня же, в день док
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)OnticoAVRO - система сериализации данных, созданная сообществом Apache Hadoop. Включает в себя различные структуры данных, компактный формат хранения в бинарном виде, язык описания схем данных и правила миграции данных между разными версиями схемы. С помощью инструментария AVRO можно валидировать данные по схеме, совершать преобразования из одной версии в другую и даже восстанавливать неполные данные при помощи значений по-умолчанию. Поддержка Apache AVRO была добавлена в Tarantool в этом году и уже используются в production.
Tarantool можно использовать как документо-ориентированную СУБД. В докладе я расскажу про подход к версионированию данных, разработанный командой tarantool: использование avro схемы для валидации входных данных, преобразования от одной версии к другой в runtime, оптимальное хранение версий документа, изменение схемы данных без избыточности и проблем в предыдущих версиях.
Также я расскажу, как применять этот подход для создания бэкендов restful api прямо в базе данных (без дополнительной разработки). Для наглядности мы сравним получившуюся систему с популярными веб-фреймворками: django-rest-framework, go-restful, node.js и посмотрим, кто окажется в лидерах по производительности. Кроме того, во время выступления я покажу live пример создания restful api на стеке технологий tarantool в облаке amazon.
Курс высокие нагрузки: очереди (отрывок)Andrey SmirnovРазработка надёжных высоконагруженных систем
Москва, 24, 25 и 26 мая
http://smira.highload.ru/
Трехдневный мастер-класс с практическими заданиями
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...OnticoСфера финансовых приложений и трейдинга выдвигает особые требования к системам обработки данных: ультракороткие задержки, конкурентные обновления (в т.ч. из разных процессов), репликация высокочастотных обновлений.
Существовавшие открытые key-value хранилища не справлялись, поэтому мы сделали свое — Chronicle Map.
В докладе я отвечу на вопросы:
+ Почему бывает эффективнее разбить систему, работающую с общим состоянием, на несколько отдельных процессов?
+ Зачем вам может захотеться распилить JVM на несколько частей?
+ Как добиться от key-value хранилища медианной latency меньше 1 микросекунды?
+ Как сделать репликацию, если она упирается в пропускную способность сети из-за слишком частых обновлений?
Развею миф о том, что Java — это медленно :)
Также, в докладе будет сравнение Chronicle Map с redis, one-nio и ConcurrentHashMap.
Архитектура хранения фотографий в BadooBadoo DevelopmentВ этом докладе я в подробностях расскажу о том, как устроено хранение фотографий в нашей компании (всего около ~1 Пб).
Наша система была устроена достаточно просто — сами фотографии хранятся на SAN Storages, которые подключены через Fiber Channel к отдельной группе серверов, "*photos". На photos-серверах смонтированы разделы на соответствующих сетевых блочных устройствах, которые с точки зрения пользователя выглядят, как обычная файловая система.
Мы не используем никакие «хитрые» системы для хранения фотографий и не храним всё в одном файле — каждый размер каждой фотографии представляет из себя обычный файл на файловой системе ext3/4. Фотографии отдаются через nginx напрямую из файловой системы.
Такой способ хранения больших объемов данных весьма дешев, но приводил к проблемам, когда соответствующие SAN «падали», вплоть до повреждения файловой системы с потерей части данных пользователей.
Поэтому, для решения этой проблемы, а также проблем с производительностью, мы решили сделать «софтверную репликацию» фотографий с кешированием данных на SSD.
Также, в качестве эксперимента, мы решили попробовать ещё один способ — хранение на локальных дисках вместо использования SAN. По стоимости решение значительно дороже, но зато надежнее и проще в поддержке. Также, для обеспечения устойчивости к выходу из строя любой машины из такого кластера, мы решили сделать возможной балансировку всех поступающих запросов на весь кластер, то есть, в современных терминах, сделать «распределенное, отказоустойчивое, высокодоступное облачное хранилище».
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)OnticoLua — высокоуровневый язык, похожий на Python/JS, но существенно более простой. Он гибкий и при этом очень быстрый.
Многие слышали про OpenResty. Это решение для разработки Nginx модулей на Lua. Cloudflare, крупнейший CDN/anti-DDOS провайдер, как раз работает на OpenResty.
У нас была задача валидации данных на соответствие схеме; мы переписали валидацию с Си на Lua и получили ускорение в 4 раза (за счет JIT-компиляции).
Что будет в докладе:
* краткое введение в язык Lua;
* как работает трассирующий JIT-компилятор Lua;
* как писать быстрый код, искать и устранять проблемы с производительностью;
* наш опыт: как мы ускорились в 4 раза, переписав валидацию с Си на Lua.
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...OnticoВ докладе я расскажу о проблемах роста, с которыми сталкивался проект как в плане доступа к БД, так и в целом. Как решали, что получалось, как (общетеоретически или практически) можно решать подобные проблемы в других проектах.
Разберем несколько реальных случаев, когда что-то шло не так.
Доклад можно рассматривать и как небольшой экскурс в развитие технической платформы ВК, и как собрание нескольких практических способов для проекта вырасти и стать надежнее.
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)OnticoДостаточно давно уже был какой-то доклад о том, что собой представляет Вконтакте изнутри. В своем докладе я хотел быть отчасти обновить те знания и рассказать, какие из общедоступных инструментов есть в руках системных администраторов социальной сети. Разумеется, кроме чистой головы и прямых рук (лишнее зачеркнуть).
Я намереваюсь коснуться таких вопросов, как:
- Управление конфигурацией на очень большом числе серверов.
- Разграничение доступа.
- Развертывание кода на рабочей площадке.
- Мониторинг.
- Как мы, вообще, справляемся с таким гигантом малым числом людей?
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)OnticoНекоторое время назад, когда в очередной раз встал вопрос о производительности большого парка mysql sharding серверов, мы не захотели покупать новые сервера и производить resharding. Мы обнаружили, что компания facebook выпустила в opensource большое количество своих разработок, в том числе и модуль ядра flashcache.
Flashcache — модуль для кэширования блоков блочного устройства, предоставляющий 4 разных режима кэширования.
В данном докладе я расскажу, как мы тестировали, поэтапно проверяя под нагрузкой, 3 из 4 режимов кэширования, сравнивая и выбирая оптимальный. Итогом данной работы стало внедрение данного модуля в нашу архитектуру (фотосервера, сервера БД).
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)OnticoBooking.com - популярный сервис по онлайн-бронированию отелей. Поиск отеля, отвечающего заданным характеристикам - это неотъемлемая часть бизнес-модели и основной инструмент для клиента.
При постоянном росте компании вопросу производительности и масштабируемости поиска уделяется много внимания. В результате за время своего существования архитектура поиска претерпела несколько глобальных переделок, начиная от простой базы в MySQL до многокомпонентного распределенного сервиса.
В своей текущей реинкарнации поиск в Booking.com состоит их трех подсистем:
1) сервис auto-complete и устранения неоднозначности (disambiguation) в геопозиции;
2) сервис поиска по отелям и проверки их доступности (availability);
3) система предрасчета цен.
Первые две системы - это высокопроизводительные приложения, написанные на Java. Сервис поиска хранит свои индексы в in-memory хранилище, а данные - во встраиваемой базе данных RocksDB. Логика системы предрасчета цен написана на Perl, а в качестве хранилища используется MySQL.
Приходите на мой доклад, и я расскажу вам, как эволюционировал поиск вместе с ростом компании. Мы подробно рассмотрим текущую архитектуру, и почему мы решили ее сделать именно такой. Ну и, конечно, с какими проблемами нам пришлось бороться и как мы это делали.
Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...FwdaysMarketing materials and documentation of AWS and other cloud providers do present their Serverless-services as a future of cloud computing, that ought to solve nearly all current problems. Is that so? Is there something marketers and documentation are hiding from us? What are costs and productivity?
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайOnticoНабирает обороты мода на парадигму noBackend (см., например, http://nobackend.org/). Название не стоит понимать буквально: backend никуда не делся, просто фокус разработки — особенно на начальном этапе развития нового проекта — сильно смещается в сторону «клиентской части». Это очень понятно и закономерно в эпоху Mobile First и React Ecosystem с её новомодными GraphQL и React Native.
Появляется большой соблазн взять что-то понятное для хранения данных и уже «обвязанное» REST API, максимально отказаться от PHP/Python/Ruby/Java/etc, писать 80% кода «на стороне клиента», минимально заботясь о возне «на стороне сервера». У некоторых возникает и настоящая эйфория — чувство приятное, но очень опасное (прежде всего, если в команде нет сильного backend-опыта).
Этот доклад — компиляция опыта ряда проектов, написанных на React, React Native и Swift и переходящих на парадигму (или же сразу стартанувших с неё) noBackend за счёт PostgreSQL+PostgREST.
Мы обсудим важные вопросы, которые обязан задавать себе каждый, выбравший noBackend-подход (и не обязательно на связке Postgres+PostgREST): безопасность (аутентификация/авторизация; ограничение чтения и — особенно! — модификации «чужих» данных), производительность (нетривиальные запросы а-ля «свежий контент от тех, на кого я подписан»; компромисс между сетевой сложностью и CPU; защита от «домашнего» ddos — ситуации, когда свои же, родные «фронтендеры» кладут «бэкэнд»), масштабируемость и асинхронная обработка задач.
Задача-минимум (для всех): у каждого слушателя остаётся список must-check-вопросов для работы с noBackend-подходом.
Задача-максимум (для тех, кто с Postgres-опытом): разворачивание безопасного, высокопроизводительного и годного для быстрого развития REST API — сегодня же, в день док
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)OnticoAVRO - система сериализации данных, созданная сообществом Apache Hadoop. Включает в себя различные структуры данных, компактный формат хранения в бинарном виде, язык описания схем данных и правила миграции данных между разными версиями схемы. С помощью инструментария AVRO можно валидировать данные по схеме, совершать преобразования из одной версии в другую и даже восстанавливать неполные данные при помощи значений по-умолчанию. Поддержка Apache AVRO была добавлена в Tarantool в этом году и уже используются в production.
Tarantool можно использовать как документо-ориентированную СУБД. В докладе я расскажу про подход к версионированию данных, разработанный командой tarantool: использование avro схемы для валидации входных данных, преобразования от одной версии к другой в runtime, оптимальное хранение версий документа, изменение схемы данных без избыточности и проблем в предыдущих версиях.
Также я расскажу, как применять этот подход для создания бэкендов restful api прямо в базе данных (без дополнительной разработки). Для наглядности мы сравним получившуюся систему с популярными веб-фреймворками: django-rest-framework, go-restful, node.js и посмотрим, кто окажется в лидерах по производительности. Кроме того, во время выступления я покажу live пример создания restful api на стеке технологий tarantool в облаке amazon.
Курс высокие нагрузки: очереди (отрывок)Andrey SmirnovРазработка надёжных высоконагруженных систем
Москва, 24, 25 и 26 мая
http://smira.highload.ru/
Трехдневный мастер-класс с практическими заданиями
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...OnticoСфера финансовых приложений и трейдинга выдвигает особые требования к системам обработки данных: ультракороткие задержки, конкурентные обновления (в т.ч. из разных процессов), репликация высокочастотных обновлений.
Существовавшие открытые key-value хранилища не справлялись, поэтому мы сделали свое — Chronicle Map.
В докладе я отвечу на вопросы:
+ Почему бывает эффективнее разбить систему, работающую с общим состоянием, на несколько отдельных процессов?
+ Зачем вам может захотеться распилить JVM на несколько частей?
+ Как добиться от key-value хранилища медианной latency меньше 1 микросекунды?
+ Как сделать репликацию, если она упирается в пропускную способность сети из-за слишком частых обновлений?
Развею миф о том, что Java — это медленно :)
Также, в докладе будет сравнение Chronicle Map с redis, one-nio и ConcurrentHashMap.
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...OnticoВ процессе рефакторинга архитектуры мы начали переделывать часть системы на микросервисы, и вышло настолько клево, что мы просто обязаны этим поделиться.
Микросервисы.
Зачем они вообще:
- В простых сервисах легче разбираться и локализовывать проблемы.
- В микросервисной архитектуре проще добиваться отказоустойчивости.
- Хотим выбирать лучший инструмент для каждой задачи. Получаем зоопарк технологий, которые в монолитные сервисы интегрировать сложнее.
- Независимое обновление компонентов.
- Тестирование частей системы.
Как:
- Docker-образы как основа.
- Rancher как система деплоя и оркестрации Docker-контейнеров. High availability.
- Простота сервиса - ключевой момент.
== Критерий: Разработчик должен иметь возможность быстро понять и переписать сервис при необходимости.
== Забавное следствие: такие сервисы пишутся не на века, а под текущие требования. Получается быстро и agile-но, ведь изменения легко сможет внести любой разработчик.
== PEP8.
- HTTP API и поддержка Swagger. Резко упрощают тестирование.
- RabbitMQ pipelines как отказоустойчивая система взаимодействий между сервисами:
== DLX помогает разбираться со врЕменными проблемами.
== HTTP RPC.
- Метрики, метрики и ещё раз метрики.
== service status API.
== Graphite, Zabbix. Может, к ноябрю еще OKmeter успеем попробовать.
- Структурированые логи: JSON stdout => Fluentd => ELK => счастье. Локализация багов и пр. Об этом подробнее в отдельной презентации.
- В любой непонятной ситуации...
== Сервис должен падать, а не зависать.
== Healthchecks.
- Стабильность архитектуры.
== Осознанная деградация! Любой сервис должен быть готов к падению другого. При этом в первом должно быть явно описано, как будет при этом ограничиваться его функциональность. Это ведет к отсутствию эффекта домино, когда один малозначащий сервис, упав, утягивает за собой всю систему.
- Документация.
== Степень критичности каждого сервиса.
== Краткий обзор функциональности (вспоминаем: сервисы _простые_).
== Конфиги.
== drawback: описание архитектуры обязано быть актуальным и полным, иначе беда.
Трудности: Допишу через пару дней.
Архитектура программных систем на Node.jsTimur ShemsedinovОбзор подходов к построению прикладных программных систем на Node.js, анализ и сравнение архитектурных принципов развертывания высоконагруженных прикладных облачных сервисов, масштабирование, тенденции и перспективы в разработке приложений, обзор проблем платформы Node.js и пути их решения.
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)OnticoHighLoad++ 2017
Зал «Рио-де-Жанейро», 8 ноября, 18:00
Тезисы:
http://www.highload.ru/2017/abstracts/2905.html
Прошло более года с того момента, как Microsoft выпустила первую версию своего нового фреймворка для разработки web-приложений ASP.NET Core, и с каждым днем он находит все больше поклонников. ASP.NET Core базируется на платформе .NET Core, кроссплатформенной версии платформы .NET c открытым исходным кодом. Теперь у С#-разработчиков появилась возможность использовать Mac в качестве среды разработки, и запускать приложения на Linux или внутри Docker-контейнеров.
...
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"GeeksLab Odessa28.03.15. Одесса. Impact Hub Odessa. Конференция JSLab.
Тимур Шемсединов. "Архитектура программных систем на Node.js"
Обзор подходов к построению прикладных программных систем на Node.js, анализ и сравнение архитектурных принципов развертывания высоконагруженных прикладных облачных сервисов, масштабирование приватных кластеров на Node.js за пределы нескольких физических машин, концепция прикладной виртуальной машины, примеры ее реализации и внедрения, тенденции и перспективы в разработке приложений, обзор проблем платформы Node.js и пути их решения.
Подробнее:
http://geekslab.co/
https://www.facebook.com/GeeksLab.co
https://www.youtube.com/user/GeeksLabVideo
Незаурядная Java как инструмент разработки высоконагруженного сервераodnoklassniki.ruАндрей Паньгин рассказывает о трюках, которые позволяют нам делать высоконагруженные сетевые серверы на Java
Remote HighloadAndrey SmirnovДоклад "Remote Highload" c Highload++-2016
Созданием еще одной высоконагруженной системы сегодня уже сложно кого-то удивить. Как насчет высоконагруженной системы, которая была создана и эксплуатируется 100% удаленной командой, работающей в 5 часовых поясах?
В докладе пойдет речь о команде Virtustream (Dell Technologies), которая отвечает за Virtustream Storage Cloud.
Экзабайты данных, десятки тысяч серверов, сотни гигабит в секунду, сотни тысяч и миллионы запросов в секунду, 20 датацентров по всему миру и, при этом, команда разработчиков из 15 человек, это возможно?
В докладе мы поговорим о разных аспектах - от культуры разработки и процесса найма до контейнерной платформы запуска микросервисов и выбора языка программирования.
Почему не работает Scrum, и плохо работает парное программирование? Как Mesos, Marathon, Consul и Calico делают возможным выкладывание нового сервиса за 5 минут? Почему каждый разработчик должен иметь доступ в production?
Вебинар "Разработка высоконагруженных и надежных систем": ВведениеAndrey SmirnovСлайды первого бесплатного вебинара из серии "Разработка высоконагруженных и надежных систем"
Подробнее: http://smira-webinar.highload.ru/
Курс высокие нагрузки и надежность: отрывокAndrey SmirnovРазработка надёжных высоконагруженных систем
Москва, 24, 25 и 26 мая
http://smira.highload.ru/
Трехдневный мастер-класс с практическими заданиями
aptly: Debian repository management toolAndrey Smirnovaptly is a swiss army knife for Debian repository management: it allows to mirror remote repositories, take snapshots, pull new versions of packages along with dependencies, publish snapshots.
http://www.aptly.info/
aptly - система управления Debian-репозиториями пакетовAndrey Smirnovaptly is a swiss army knife for Debian repository management: it allows to mirror remote repositories, take snapshots, pull new versions of packages along with dependencies, publish snapshots.
4. Чем
занят
backend?
• Склеивание
строк
• Сетевой
ввод-‐вывод
L1
cache
reference
0.5
ns
Main
memory
reference
100
ns
Read
1
MB
sequenRally
from
network
10,000,000
ns
Read
1
MB
sequenRally
from
disk
30,000,000
ns
5. Что
делает
backend
1. Принять
соединение
(обычно
от
proxy)
и
распарсить
HTTP-‐запрос
2. Аутенфикация
3. Авторизация
4. Сессия
6. Что
делает
backend
5. Распарсить
URL,
routing
6. Определение
формата
вывода,
rate
limiting,
…
7. Бизнес-‐логика,
выполнение
запроса,
кеширование
8. Формирование
ответа,
шаблоны
9. Блокирующийся
ввод-‐вывод
• accept(fd)
-‐
заблокируется,
пока
не
будет
нового
входящего
соединения
• read(fd,
buf)
-‐
заблокируется,
пока
не
прибудут
данные
в
сокет
• write(fd,
buf)
-‐
заблокируется,
пока
не
освободится
место
в
буфере
TCP
16. Нити
(ОС)
• Видны
планировщику
• Имеют
отдельный
стек
и
TLS
• Более
легковесные,
чем
процесс
• Отсутствует
изоляция
• Сложность
написания
корректных
программ
17. Синхронизация
• Любой
доступ
к
общим
данным
должен
быть
синхронизирован
• Атомарные
операции
(без
синхронизации)
• GIL
21. Кооперативная
многозадачность
• “Невидима”
для
ОС,
один
процесс
(нить)
• “Поток”
добровольно
передает
управление
другому
(проще
синхронизация)
• Явная:
callbackи
• Неявная:
green
threads
22. Реактор
• “Дай
мне
кучу
сокетов,
а
я
сделаю
callback,
когда
они
будут
готовы”
• Таймер:
“Вызови
меня
через
X
мс”
28. Соединение
• Соединение:
• на
один
запрос
• постоянное
TCP!
connect
Auth Send query Wait Result
Send query Wait Result Send query Wait Result
Disconnect