SlideShare une entreprise Scribd logo
1  sur  61
Производительность
Промышленное программирование
Границы возможностей ЭВМ
Ресурсы машины
Процессорная мощность
Оперативная память
Дисковый ввод/вывод
Сетевой ввод/вывод
На что расходуются ресурсы
Получение запросов по сети, отдача
ответов - сеть
Поддержание соединений и управление
ими - процессор, память
Обработка запроса и формирование
ответа (т.е. логика) - процессор, память
Отдача статического контента - диск
На что расходуются ресурсы
Чтение и запись в БД и ФС - диск
Кеши БД и ФС - память
Сложные запросы к БД (filter, aggregate,
join) - диск, память, процессор
Запросы к другим процессам - процессор
Запросы к другим машинам - сеть
Телеметрия - диск, сеть
Чем меряют производительность
Нагрузка (load) - число запросов в секунду
(Requests per second, RPS)
Пропускная способность (throughput) -
максимальное значение нагрузки, которое
выдерживает сервис, RPS
Задержка (latency) - время выполнения
одного запроса, мс.
latency = f(load)
Из чего складывается задержка
Передача по сети в обе стороны (RTT)
Установление TCP соединения (SYN+ACK)
Получение и разбор запроса
Обращение к базам данных
Обращение к другим сервисам
Вычисления, построение ответа
Обработка (рендеринг) ответа на клиенте
Приемлемая задержка
RTT внутри ДЦ <1мс
RTT из Москвы до Нью-Йорка - 120 мс
RTT из Москвы до южного Китая - 250 мс
Get в Redis - 0,3 мс
Prepared query by PK в MySQL - 5 мс
Ответ от Web-сервера - 50-200 мс
Рендеринг на клиенте - 50-100 мс
Незаметное для человека время - 400 мс
Деградация сервиса
Ошибки взаимодействия (протокола)
Утрата функциональности
В т.ч. переход в Read-Only
Таймаут - чрезмерная задержка
Ошибки, блокирующие выполнение
Потеря или рассогласование данных
Последствия нехватки ресурсов
Если не хватает процессора
За момент времени обрабатывается
запросов меньше, чем принимается
Запросы встают в очередь
Очередь не уменьшается
Запросы не успевают выполниться
Очередь сжирает всю память
Клиент фиксирует таймауты
Если не хватает объема памяти
Выполнение запроса может спонтанно
прерваться в любое время
Может спонтанно прерваться сервисный
тред или сторонняя служба
Система коллапсирует, пока не будет
остановлен расходующий память процесс
Клиент фиксирует всевозможные ошибки
Если не хватает скорости сети
Некоторые запросы фрагментируются,
засоряют очередь и отбрасываются
Некоторые ответы теряются
Нарушается связь с другими узлами
Отвалившиеся соединения образуют
очереди и расходуют память и процессор
Клиент фиксирует таймауты
Клиент фиксирует ошибки протоколов
Если не хватает скорости дисков
Дисковые операции долго висят в
ожидании, блокируют друг друга или
теребят контроллер диска
Существенно увеличивается время
обработки запросов
За момент времени обрабатывается
запросов меньше, чем принимается…
См. нехватку процессора
Если не хватает объема дисков
Прекращается сбор телеметрии (логи,
мониторинг) - оператор системы слепнет
Спонтанно прекращается запись на диск,
возможно, с утратой целостности данных
Фатально деградирует функциональность
систем, пишущих на диск
Клиент фиксирует ошибки сервиса
Система может жить в Read-Only
Чего еще может не хватать
Файловых и сокетных дескрипторов
Дескрипторов потоков и процессов
Скорости северного моста (можно считать,
что процессора)
Скорости южного моста - связки между
процессором и I/O
Мощности отдельных устройств - сетевой
карты, дисковых контроллеров и т.п.
Увеличение доступных ресурсов
Оптимизация расхода ресурсов
Рефакторинг кодовой базы
Асимптотческая оптимизация алгоритмов
Дедупликация данных, устранение
избыточности, рефакторинг моделей
Упорядочивание запросов к диску
Кеширование расчетов и данных с диска
Переход на NIO, бинарные протоколы,
внедрение сжатия
Разделение ролей
Вынос баз данных на отдельные машины
Разнесение автономных модулей на
разные машины
Создание дополнительных проксирующих
прослоек на других машинах
+ Вышли за пределы одной машины
- Повысили расходы на коммуникацию
Вертикальное масштабирование
Заменить в сервере процессоры
Воткнуть туда больше памяти
Вставить быстрый RAID-контроллер
Заменить диски на SSD
Обновить сетевой адаптер
Переехать на новый сервер…
Весело. Но дорого.
Горизонтальное масштабирование
Распараллелить выполнение программы
Убрать критические секции
Облегчить работу с общими ресурсами
Обеспечить запуск на нескольких машинах
Равномерно распределить нагрузку
Минимизировать связь между машинами
Получать прирост пропускной способности
при росте числа машин
Эластичное масштабирование
Линейная пропорция между пропускной
способностью и объемом ресурсов
Возможность подключения и отключения
машин к кластеру без его остановки
Отсутствие единой точки отказа
Распределенные системы
Промышленное программирование
Архитектура распределенных систем
Клиент-сервер
Клиент-сервер
Монопольный контроль над БД
Просто программировать
Отрисовка данных на клиенте (опц)
Кросс-платформенность с помощью
портирования клиентов
Единая точка отказа
Нельзя горизонтально масштабировать
Толстый VS Тонкий клиенты
Тонкий клиент только посылает запросы и
отображает ответы
Толстый клиент проводит некоторые расчеты
без запросов к серверу
Тонкий клиент проще в реализации
Толстый клиент сложнее, но быстрее
На толстом клиенте данные могут устареть
Толстый клиент плохо портируется
Web-приложения
Web-приложения
Стандартный протокол - HTTP
Стандартный клиент - браузер
Стандартные client-side средства
Тяжелый, избыточный трафик*
Слабая client-side производительность
Почти кросс-платформенно
Проблемы с портируемостью графики
Backend - Frontend - Client
Backend - Frontend - Client
Разделение server-side на слои
Масштабирование каждого слоя отдельно
Возможность дробить систему на части
Очень большой трафик внутри кластера
Значительно сложнее разработка
Узкая специализация разработчиков
Service-Oriented Architecture (SOA)
Service-Oriented Architecture (SOA)
Физическое выделение отдельных
компонентов на отдельную машину
Уменьшение связности между
компонентами - упрощение разработки
Возможность регулировать работу каждого
сервиса отдельно
Значительное усложнение адресации
внутри кластера
Role-based адресация
Закрепление за машиной роли - запуск на
ней определенных сервисов
Всегда ясно, где подняты инстансы сервиса
Легкая стартовая конфигурация со сложным
“горячим” изменением
Возможно оптимально подобрать железо
под нужды конкретного сервиса
Cloud-based адресация
Выделение пула машин, на которых могут
быть запущены разные сервисы
Гибкое переключение и оперативное
реагирование на нагрузку и сбои
Приходится абстрагироваться от железа
Необходима отдельная инфраструктура
для учета и управления кластером
Межпроцессное взаимодействие
Способы передачи данных
Передача файлов
Общая база данных
Разделяемая память
Потоки и каналы данных
Общение через брокер
Организация потоков данных
Transport-level потоки:
UNIX Socket
TCP Socket
UDP Stream
Protocol-level потоки:
Binary
Plain text
Прикладные протоколы
Telnet - clear plain text over TCP
HTTP - convention over plain text over TCP
CORBA - binary, configurable
SOAP, REST, XML-RPC - over HTTP
Apache Avro, Apache Thrift - binary over TCP
…
HTTP
HyperText Transfer Protocol, 1992
Plain Text, line-based
Различные типы запросов - GET, POST,
PUT, HEAD, …
Коды ответа - 200 ОК, 404 Not Found, …
Заголовки - Content-Type:text/html, …
Blobs via Base64
REST
Representational State Transfer, 2000
Over HTTP
Client-Server
Stateless (no sessions)
Cacheable
Uniform interface
Layered
REST: трактовка HTTP запросов
GET /collection - получить всю коллекцию
PUT /collection - заменить всю коллекцию
POST /collection - добавить элемент в
коллекцию
DELETE /collection - очистить коллекцию
GET /collection/item - получить элемент по ID
PUT /collection/item - заменить элемент по ID
DELETE /collection/item - удалить элемент
Промышленное программирование
Пользовательские
интерфейсы
Web-интерфейсы
Здесь должны быть слайды про
реализацию Web UI средствами Java,
Thymeleaf и Spring Web MVC
Но нет
Промышленное программирование
Угрозы безопасности
Ахтунг!
Эта лекция не дает исчерпывающего
списка возможных угроз
Лекция призвана только лишь обратить
внимание на проблему, но не дает сколь-
нибудь приемлемого решения
Tl;dr: кругом враги, приложения полны дыр,
уделяйте внимание безопасности
Терминология
Угроза
Уязвимость
Атака
Подробнее: Т.Иващенко, Яндекс ШРИ
Виды угроз
Отказ в обслуживании (DoS)
Перехват данных пользователя
Подмена действий пользователя
Утечка данных приложения
Модификация данных приложения
Перехват управления
Проникновение в незащищенную зону
…
Отказ в обслуживании (DoS)
Генерация множества одновременных
запросов к приложению
Эксплуатация чувствительных к нагрузке
участков кода и методов API
Исчерпание аппаратных ресурсов
Деградация сервиса вплоть до отказа
Перехват данных пользователя
Средства прослушки:
Незащищенные публичные сети
Снифферы трафика
Прокси (HTTP Proxy, NAT, анонимайзеры, …)
Спуфинг (подмена) ARP, IP, DNS, …
Атаки Man-In-The-Middle
Фишинг
Социальная инженерия
Подмена действий пользователя
Кража учетной записи
Кража сессии (авторизационной куки)
Атаки MITM с модификацией запросов
Cross-Site Request Forgery (CSRF)
Cross-Site Scripting (XSS)
Утечка и модификация данных
Инъекции SQL, JS, Shell, XPath, …
Неустойчивые к перебору идентификаторы
(пользователей, сессий, ресурсов, …)
Служебные страницы без авторизации
Уязвимости в серверном ПО
Перехват управления
Безумные служебные страницы
Инъекции исполняемого кода
Shell-инъекции
Уязвимости в бинарном коде ПО
Недостаточно защищенные средства
удаленного администрирования
Уровни угрозы
Внешняя угроза
Инъекции
Внутренняя угроза
Перехват управления системным пользователем
Перехват управления суперпользователем
Получение доступа к базам данных (R, W)
Компрометация системы внутридоменной
аутентификации
Промышленное программирование
Защита приложения
Защита транспортного уровня
SSL/TLS: HTTPS
DSA для аутентификации
RSA+DH для обмена шифрами
AES/3DES/… для обмена трафиком
Защищает от:
прослушки трафика
подмены ARP, IP, DNS
атак MITM
Аутентификация и авторизация
Аутентификация - определение личности:
Учетные записи
Пользовательские сессии
Подписывание (digesting) запросов
Авторизация - проверка уровня доступа:
Роли пользователей
Группы и разрешения (Groups & Permissions)
Раздельный доступ к ресурсам
Защита аутентификации
Шифрование учетных данных по пути от
клиента к серверу (сеансовым ключом)
Хеширование идентификатора сессии
Соленое хеширование паролей в БД
Многофакторная аутентификация
Осложняет кражу учетной записи или сессии
Валидация запросов
Защита от инъекций - экранирование,
prepared-запросы, отказ от exec()
Совершение действий только на POST
CSRF-токены для веб-форм
Request Digesting для REST API
Защита ресурсов
Обязательная авторизация всех запросов
Маскировка идентификаторов ресурсов
Вынос служебных ресурсов в интранет
Сокрытие средств удаленного
администрирования в интранете
Защита от (D)DoS и роботов
Поиск подозрительной активности
(некорректные, неестественные запросы)
Выявление типового поведения (краулеры,
накрутчики)
Ограничение подозрительных подсетей
(интенсивный однотипный трафик)
Сетевое оборудование с возможностью
анализа и ограничения трафика

Contenu connexe

Tendances

Web and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard LebedyukWeb and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard LebedyukInterSystems
 
Oracle Timesten
Oracle TimestenOracle Timesten
Oracle TimestenOntico
 
RESTful Architechture (Highload++ 2008)
RESTful Architechture (Highload++ 2008)RESTful Architechture (Highload++ 2008)
RESTful Architechture (Highload++ 2008)Sergey Skvortsov
 
!2hl++2008 Restful Architechture
!2hl++2008 Restful Architechture!2hl++2008 Restful Architechture
!2hl++2008 Restful ArchitechtureOntico
 
Разработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для CachéРазработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для CachéInterSystems CEE
 
Отказоустойчивые решения SQL
Отказоустойчивые решения SQLОтказоустойчивые решения SQL
Отказоустойчивые решения SQLAndrey Korshikov
 
Архитектура веб-приложений на примере Zend Framework и Magento
Архитектура веб-приложений  на примере Zend Framework и MagentoАрхитектура веб-приложений  на примере Zend Framework и Magento
Архитектура веб-приложений на примере Zend Framework и MagentoMagecom Ukraine
 
Модуль межфилиального обмена
Модуль межфилиального обменаМодуль межфилиального обмена
Модуль межфилиального обменаDocsvision
 
Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...
Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...
Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...Ontico
 
Dv pres2013 og
Dv pres2013 ogDv pres2013 og
Dv pres2013 ogDocsvision
 
Лёгкий клиент Docsvision
Лёгкий клиент DocsvisionЛёгкий клиент Docsvision
Лёгкий клиент DocsvisionDocsvision
 

Tendances (20)

Web and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard LebedyukWeb and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard Lebedyuk
 
Oracle Timesten
Oracle TimestenOracle Timesten
Oracle Timesten
 
RESTful Architechture (Highload++ 2008)
RESTful Architechture (Highload++ 2008)RESTful Architechture (Highload++ 2008)
RESTful Architechture (Highload++ 2008)
 
!2hl++2008 Restful Architechture
!2hl++2008 Restful Architechture!2hl++2008 Restful Architechture
!2hl++2008 Restful Architechture
 
Управление данными. Основы проектирования БД
Управление данными. Основы проектирования БДУправление данными. Основы проектирования БД
Управление данными. Основы проектирования БД
 
Разработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для CachéРазработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для Caché
 
Управление данными (распределенная обработка)
Управление данными (распределенная обработка)Управление данными (распределенная обработка)
Управление данными (распределенная обработка)
 
Управление данными (дополнительно)
Управление данными (дополнительно)Управление данными (дополнительно)
Управление данными (дополнительно)
 
Отказоустойчивые решения SQL
Отказоустойчивые решения SQLОтказоустойчивые решения SQL
Отказоустойчивые решения SQL
 
REST
RESTREST
REST
 
Управление данными (sql)
Управление данными (sql)Управление данными (sql)
Управление данными (sql)
 
Архитектура веб-приложений на примере Zend Framework и Magento
Архитектура веб-приложений  на примере Zend Framework и MagentoАрхитектура веб-приложений  на примере Zend Framework и Magento
Архитектура веб-приложений на примере Zend Framework и Magento
 
Управление данными (литература)
Управление данными (литература)Управление данными (литература)
Управление данными (литература)
 
Управление данными (Введение в СУБД)
Управление данными (Введение в СУБД)Управление данными (Введение в СУБД)
Управление данными (Введение в СУБД)
 
Управление данными (модели данных)
Управление данными (модели данных)Управление данными (модели данных)
Управление данными (модели данных)
 
Модуль межфилиального обмена
Модуль межфилиального обменаМодуль межфилиального обмена
Модуль межфилиального обмена
 
Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...
Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...
Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...
 
Управление данными (реляционная модель)
Управление данными (реляционная модель)Управление данными (реляционная модель)
Управление данными (реляционная модель)
 
Dv pres2013 og
Dv pres2013 ogDv pres2013 og
Dv pres2013 og
 
Лёгкий клиент Docsvision
Лёгкий клиент DocsvisionЛёгкий клиент Docsvision
Лёгкий клиент Docsvision
 

En vedette

Programming Java - Lection 01 - Basics - Lavrentyev Fedor
Programming Java - Lection 01 - Basics - Lavrentyev FedorProgramming Java - Lection 01 - Basics - Lavrentyev Fedor
Programming Java - Lection 01 - Basics - Lavrentyev FedorFedor Lavrentyev
 
Programming Java - Lecture 02 - Objects - Lavrentyev Fedor
Programming Java - Lecture 02 - Objects - Lavrentyev FedorProgramming Java - Lecture 02 - Objects - Lavrentyev Fedor
Programming Java - Lecture 02 - Objects - Lavrentyev FedorFedor Lavrentyev
 
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Fedor Lavrentyev
 
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...Fedor Lavrentyev
 
Programming Java - Lection 03 - Classes - Lavrentyev Fedor
Programming Java - Lection 03 - Classes - Lavrentyev FedorProgramming Java - Lection 03 - Classes - Lavrentyev Fedor
Programming Java - Lection 03 - Classes - Lavrentyev FedorFedor Lavrentyev
 
Programming Java - Lection 07 - Puzzlers - Lavrentyev Fedor
Programming Java - Lection 07 - Puzzlers - Lavrentyev FedorProgramming Java - Lection 07 - Puzzlers - Lavrentyev Fedor
Programming Java - Lection 07 - Puzzlers - Lavrentyev FedorFedor Lavrentyev
 
Programming Java - Lection 04 - Generics and Lambdas - Lavrentyev Fedor
Programming Java - Lection 04 - Generics and Lambdas - Lavrentyev FedorProgramming Java - Lection 04 - Generics and Lambdas - Lavrentyev Fedor
Programming Java - Lection 04 - Generics and Lambdas - Lavrentyev FedorFedor Lavrentyev
 
Programming Java - Lection 06 - Multithreading - Lavrentyev Fedor
Programming Java - Lection 06 - Multithreading - Lavrentyev FedorProgramming Java - Lection 06 - Multithreading - Lavrentyev Fedor
Programming Java - Lection 06 - Multithreading - Lavrentyev FedorFedor Lavrentyev
 
Arquitectura del microprocesador
Arquitectura del microprocesadorArquitectura del microprocesador
Arquitectura del microprocesadornoemirojasramos
 
Ventajas de bdd expo
Ventajas de bdd expoVentajas de bdd expo
Ventajas de bdd expogerardd98
 
Computer and information technology occupations
Computer and information technology occupationsComputer and information technology occupations
Computer and information technology occupationsM Mueller
 
Instalacion y-connf-de-ltsp
Instalacion y-connf-de-ltspInstalacion y-connf-de-ltsp
Instalacion y-connf-de-ltspgerardd98
 
Proyecto servicio-social
Proyecto servicio-socialProyecto servicio-social
Proyecto servicio-socialLauraSilva8989
 

En vedette (13)

Programming Java - Lection 01 - Basics - Lavrentyev Fedor
Programming Java - Lection 01 - Basics - Lavrentyev FedorProgramming Java - Lection 01 - Basics - Lavrentyev Fedor
Programming Java - Lection 01 - Basics - Lavrentyev Fedor
 
Programming Java - Lecture 02 - Objects - Lavrentyev Fedor
Programming Java - Lecture 02 - Objects - Lavrentyev FedorProgramming Java - Lecture 02 - Objects - Lavrentyev Fedor
Programming Java - Lecture 02 - Objects - Lavrentyev Fedor
 
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
 
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
 
Programming Java - Lection 03 - Classes - Lavrentyev Fedor
Programming Java - Lection 03 - Classes - Lavrentyev FedorProgramming Java - Lection 03 - Classes - Lavrentyev Fedor
Programming Java - Lection 03 - Classes - Lavrentyev Fedor
 
Programming Java - Lection 07 - Puzzlers - Lavrentyev Fedor
Programming Java - Lection 07 - Puzzlers - Lavrentyev FedorProgramming Java - Lection 07 - Puzzlers - Lavrentyev Fedor
Programming Java - Lection 07 - Puzzlers - Lavrentyev Fedor
 
Programming Java - Lection 04 - Generics and Lambdas - Lavrentyev Fedor
Programming Java - Lection 04 - Generics and Lambdas - Lavrentyev FedorProgramming Java - Lection 04 - Generics and Lambdas - Lavrentyev Fedor
Programming Java - Lection 04 - Generics and Lambdas - Lavrentyev Fedor
 
Programming Java - Lection 06 - Multithreading - Lavrentyev Fedor
Programming Java - Lection 06 - Multithreading - Lavrentyev FedorProgramming Java - Lection 06 - Multithreading - Lavrentyev Fedor
Programming Java - Lection 06 - Multithreading - Lavrentyev Fedor
 
Arquitectura del microprocesador
Arquitectura del microprocesadorArquitectura del microprocesador
Arquitectura del microprocesador
 
Ventajas de bdd expo
Ventajas de bdd expoVentajas de bdd expo
Ventajas de bdd expo
 
Computer and information technology occupations
Computer and information technology occupationsComputer and information technology occupations
Computer and information technology occupations
 
Instalacion y-connf-de-ltsp
Instalacion y-connf-de-ltspInstalacion y-connf-de-ltsp
Instalacion y-connf-de-ltsp
 
Proyecto servicio-social
Proyecto servicio-socialProyecto servicio-social
Proyecto servicio-social
 

Similaire à Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor

Быстрое масштабирование систем
Быстрое масштабирование системБыстрое масштабирование систем
Быстрое масштабирование системMedia Gorod
 
Протоколы уровня приложения в браузере, Илья Кутуков (Parallels)
Протоколы уровня приложения в браузере, Илья Кутуков (Parallels)Протоколы уровня приложения в браузере, Илья Кутуков (Parallels)
Протоколы уровня приложения в браузере, Илья Кутуков (Parallels)Ontico
 
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...CocoaHeads
 
2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложений2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложенийYandex
 
разработка бизнес приложений (9)
разработка бизнес приложений (9)разработка бизнес приложений (9)
разработка бизнес приложений (9)Alexander Gornik
 
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)Ontico
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Media Gorod
 
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...Ontico
 
New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)Sergey Skvortsov
 
Android Telegram S Optimizations
Android Telegram S OptimizationsAndroid Telegram S Optimizations
Android Telegram S OptimizationsStepan Korshakov
 
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутриHappyDev-lite
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXMLSlach
 
Пост-эксплуатация веб-приложений в тестах на проникновение
Пост-эксплуатация веб-приложений в тестах на проникновениеПост-эксплуатация веб-приложений в тестах на проникновение
Пост-эксплуатация веб-приложений в тестах на проникновениеbeched
 
Web весна 2013 лекция 1
Web весна 2013 лекция 1Web весна 2013 лекция 1
Web весна 2013 лекция 1Technopark
 
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)Ontico
 
Оптимизация производительности среды VDI
Оптимизация производительности среды VDIОптимизация производительности среды VDI
Оптимизация производительности среды VDIKhamzet Shogenov
 
владивосток форум производительность_ha
владивосток форум производительность_haвладивосток форум производительность_ha
владивосток форум производительность_haElena Ometova
 
мониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBAмониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBASlach
 
Сергей Фирстов "Построение системы анализа производительности"
Сергей Фирстов "Построение системы анализа производительности"Сергей Фирстов "Построение системы анализа производительности"
Сергей Фирстов "Построение системы анализа производительности"Expolink
 

Similaire à Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor (20)

Быстрое масштабирование систем
Быстрое масштабирование системБыстрое масштабирование систем
Быстрое масштабирование систем
 
Протоколы уровня приложения в браузере, Илья Кутуков (Parallels)
Протоколы уровня приложения в браузере, Илья Кутуков (Parallels)Протоколы уровня приложения в браузере, Илья Кутуков (Parallels)
Протоколы уровня приложения в браузере, Илья Кутуков (Parallels)
 
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
 
2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложений2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложений
 
разработка бизнес приложений (9)
разработка бизнес приложений (9)разработка бизнес приложений (9)
разработка бизнес приложений (9)
 
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169
 
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
 
New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)
 
Android Telegram S Optimizations
Android Telegram S OptimizationsAndroid Telegram S Optimizations
Android Telegram S Optimizations
 
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри
 
DATA CLUSTER
DATA CLUSTERDATA CLUSTER
DATA CLUSTER
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXML
 
Пост-эксплуатация веб-приложений в тестах на проникновение
Пост-эксплуатация веб-приложений в тестах на проникновениеПост-эксплуатация веб-приложений в тестах на проникновение
Пост-эксплуатация веб-приложений в тестах на проникновение
 
Web весна 2013 лекция 1
Web весна 2013 лекция 1Web весна 2013 лекция 1
Web весна 2013 лекция 1
 
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
 
Оптимизация производительности среды VDI
Оптимизация производительности среды VDIОптимизация производительности среды VDI
Оптимизация производительности среды VDI
 
владивосток форум производительность_ha
владивосток форум производительность_haвладивосток форум производительность_ha
владивосток форум производительность_ha
 
мониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBAмониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBA
 
Сергей Фирстов "Построение системы анализа производительности"
Сергей Фирстов "Построение системы анализа производительности"Сергей Фирстов "Построение системы анализа производительности"
Сергей Фирстов "Построение системы анализа производительности"
 

Industrial Programming Java - Lection Pack 02 - Distributed applications - Lavrentyev Fedor

  • 3. Ресурсы машины Процессорная мощность Оперативная память Дисковый ввод/вывод Сетевой ввод/вывод
  • 4. На что расходуются ресурсы Получение запросов по сети, отдача ответов - сеть Поддержание соединений и управление ими - процессор, память Обработка запроса и формирование ответа (т.е. логика) - процессор, память Отдача статического контента - диск
  • 5. На что расходуются ресурсы Чтение и запись в БД и ФС - диск Кеши БД и ФС - память Сложные запросы к БД (filter, aggregate, join) - диск, память, процессор Запросы к другим процессам - процессор Запросы к другим машинам - сеть Телеметрия - диск, сеть
  • 6. Чем меряют производительность Нагрузка (load) - число запросов в секунду (Requests per second, RPS) Пропускная способность (throughput) - максимальное значение нагрузки, которое выдерживает сервис, RPS Задержка (latency) - время выполнения одного запроса, мс. latency = f(load)
  • 7. Из чего складывается задержка Передача по сети в обе стороны (RTT) Установление TCP соединения (SYN+ACK) Получение и разбор запроса Обращение к базам данных Обращение к другим сервисам Вычисления, построение ответа Обработка (рендеринг) ответа на клиенте
  • 8. Приемлемая задержка RTT внутри ДЦ <1мс RTT из Москвы до Нью-Йорка - 120 мс RTT из Москвы до южного Китая - 250 мс Get в Redis - 0,3 мс Prepared query by PK в MySQL - 5 мс Ответ от Web-сервера - 50-200 мс Рендеринг на клиенте - 50-100 мс Незаметное для человека время - 400 мс
  • 9. Деградация сервиса Ошибки взаимодействия (протокола) Утрата функциональности В т.ч. переход в Read-Only Таймаут - чрезмерная задержка Ошибки, блокирующие выполнение Потеря или рассогласование данных
  • 11. Если не хватает процессора За момент времени обрабатывается запросов меньше, чем принимается Запросы встают в очередь Очередь не уменьшается Запросы не успевают выполниться Очередь сжирает всю память Клиент фиксирует таймауты
  • 12. Если не хватает объема памяти Выполнение запроса может спонтанно прерваться в любое время Может спонтанно прерваться сервисный тред или сторонняя служба Система коллапсирует, пока не будет остановлен расходующий память процесс Клиент фиксирует всевозможные ошибки
  • 13. Если не хватает скорости сети Некоторые запросы фрагментируются, засоряют очередь и отбрасываются Некоторые ответы теряются Нарушается связь с другими узлами Отвалившиеся соединения образуют очереди и расходуют память и процессор Клиент фиксирует таймауты Клиент фиксирует ошибки протоколов
  • 14. Если не хватает скорости дисков Дисковые операции долго висят в ожидании, блокируют друг друга или теребят контроллер диска Существенно увеличивается время обработки запросов За момент времени обрабатывается запросов меньше, чем принимается… См. нехватку процессора
  • 15. Если не хватает объема дисков Прекращается сбор телеметрии (логи, мониторинг) - оператор системы слепнет Спонтанно прекращается запись на диск, возможно, с утратой целостности данных Фатально деградирует функциональность систем, пишущих на диск Клиент фиксирует ошибки сервиса Система может жить в Read-Only
  • 16. Чего еще может не хватать Файловых и сокетных дескрипторов Дескрипторов потоков и процессов Скорости северного моста (можно считать, что процессора) Скорости южного моста - связки между процессором и I/O Мощности отдельных устройств - сетевой карты, дисковых контроллеров и т.п.
  • 18. Оптимизация расхода ресурсов Рефакторинг кодовой базы Асимптотческая оптимизация алгоритмов Дедупликация данных, устранение избыточности, рефакторинг моделей Упорядочивание запросов к диску Кеширование расчетов и данных с диска Переход на NIO, бинарные протоколы, внедрение сжатия
  • 19. Разделение ролей Вынос баз данных на отдельные машины Разнесение автономных модулей на разные машины Создание дополнительных проксирующих прослоек на других машинах + Вышли за пределы одной машины - Повысили расходы на коммуникацию
  • 20. Вертикальное масштабирование Заменить в сервере процессоры Воткнуть туда больше памяти Вставить быстрый RAID-контроллер Заменить диски на SSD Обновить сетевой адаптер Переехать на новый сервер… Весело. Но дорого.
  • 21. Горизонтальное масштабирование Распараллелить выполнение программы Убрать критические секции Облегчить работу с общими ресурсами Обеспечить запуск на нескольких машинах Равномерно распределить нагрузку Минимизировать связь между машинами Получать прирост пропускной способности при росте числа машин
  • 22. Эластичное масштабирование Линейная пропорция между пропускной способностью и объемом ресурсов Возможность подключения и отключения машин к кластеру без его остановки Отсутствие единой точки отказа
  • 26. Клиент-сервер Монопольный контроль над БД Просто программировать Отрисовка данных на клиенте (опц) Кросс-платформенность с помощью портирования клиентов Единая точка отказа Нельзя горизонтально масштабировать
  • 27. Толстый VS Тонкий клиенты Тонкий клиент только посылает запросы и отображает ответы Толстый клиент проводит некоторые расчеты без запросов к серверу Тонкий клиент проще в реализации Толстый клиент сложнее, но быстрее На толстом клиенте данные могут устареть Толстый клиент плохо портируется
  • 29. Web-приложения Стандартный протокол - HTTP Стандартный клиент - браузер Стандартные client-side средства Тяжелый, избыточный трафик* Слабая client-side производительность Почти кросс-платформенно Проблемы с портируемостью графики
  • 30. Backend - Frontend - Client
  • 31. Backend - Frontend - Client Разделение server-side на слои Масштабирование каждого слоя отдельно Возможность дробить систему на части Очень большой трафик внутри кластера Значительно сложнее разработка Узкая специализация разработчиков
  • 33. Service-Oriented Architecture (SOA) Физическое выделение отдельных компонентов на отдельную машину Уменьшение связности между компонентами - упрощение разработки Возможность регулировать работу каждого сервиса отдельно Значительное усложнение адресации внутри кластера
  • 34. Role-based адресация Закрепление за машиной роли - запуск на ней определенных сервисов Всегда ясно, где подняты инстансы сервиса Легкая стартовая конфигурация со сложным “горячим” изменением Возможно оптимально подобрать железо под нужды конкретного сервиса
  • 35. Cloud-based адресация Выделение пула машин, на которых могут быть запущены разные сервисы Гибкое переключение и оперативное реагирование на нагрузку и сбои Приходится абстрагироваться от железа Необходима отдельная инфраструктура для учета и управления кластером
  • 37. Способы передачи данных Передача файлов Общая база данных Разделяемая память Потоки и каналы данных Общение через брокер
  • 38. Организация потоков данных Transport-level потоки: UNIX Socket TCP Socket UDP Stream Protocol-level потоки: Binary Plain text
  • 39. Прикладные протоколы Telnet - clear plain text over TCP HTTP - convention over plain text over TCP CORBA - binary, configurable SOAP, REST, XML-RPC - over HTTP Apache Avro, Apache Thrift - binary over TCP …
  • 40. HTTP HyperText Transfer Protocol, 1992 Plain Text, line-based Различные типы запросов - GET, POST, PUT, HEAD, … Коды ответа - 200 ОК, 404 Not Found, … Заголовки - Content-Type:text/html, … Blobs via Base64
  • 41. REST Representational State Transfer, 2000 Over HTTP Client-Server Stateless (no sessions) Cacheable Uniform interface Layered
  • 42. REST: трактовка HTTP запросов GET /collection - получить всю коллекцию PUT /collection - заменить всю коллекцию POST /collection - добавить элемент в коллекцию DELETE /collection - очистить коллекцию GET /collection/item - получить элемент по ID PUT /collection/item - заменить элемент по ID DELETE /collection/item - удалить элемент
  • 44. Web-интерфейсы Здесь должны быть слайды про реализацию Web UI средствами Java, Thymeleaf и Spring Web MVC Но нет
  • 46. Ахтунг! Эта лекция не дает исчерпывающего списка возможных угроз Лекция призвана только лишь обратить внимание на проблему, но не дает сколь- нибудь приемлемого решения Tl;dr: кругом враги, приложения полны дыр, уделяйте внимание безопасности
  • 48. Виды угроз Отказ в обслуживании (DoS) Перехват данных пользователя Подмена действий пользователя Утечка данных приложения Модификация данных приложения Перехват управления Проникновение в незащищенную зону …
  • 49. Отказ в обслуживании (DoS) Генерация множества одновременных запросов к приложению Эксплуатация чувствительных к нагрузке участков кода и методов API Исчерпание аппаратных ресурсов Деградация сервиса вплоть до отказа
  • 50. Перехват данных пользователя Средства прослушки: Незащищенные публичные сети Снифферы трафика Прокси (HTTP Proxy, NAT, анонимайзеры, …) Спуфинг (подмена) ARP, IP, DNS, … Атаки Man-In-The-Middle Фишинг Социальная инженерия
  • 51. Подмена действий пользователя Кража учетной записи Кража сессии (авторизационной куки) Атаки MITM с модификацией запросов Cross-Site Request Forgery (CSRF) Cross-Site Scripting (XSS)
  • 52. Утечка и модификация данных Инъекции SQL, JS, Shell, XPath, … Неустойчивые к перебору идентификаторы (пользователей, сессий, ресурсов, …) Служебные страницы без авторизации Уязвимости в серверном ПО
  • 53. Перехват управления Безумные служебные страницы Инъекции исполняемого кода Shell-инъекции Уязвимости в бинарном коде ПО Недостаточно защищенные средства удаленного администрирования
  • 54. Уровни угрозы Внешняя угроза Инъекции Внутренняя угроза Перехват управления системным пользователем Перехват управления суперпользователем Получение доступа к базам данных (R, W) Компрометация системы внутридоменной аутентификации
  • 56. Защита транспортного уровня SSL/TLS: HTTPS DSA для аутентификации RSA+DH для обмена шифрами AES/3DES/… для обмена трафиком Защищает от: прослушки трафика подмены ARP, IP, DNS атак MITM
  • 57. Аутентификация и авторизация Аутентификация - определение личности: Учетные записи Пользовательские сессии Подписывание (digesting) запросов Авторизация - проверка уровня доступа: Роли пользователей Группы и разрешения (Groups & Permissions) Раздельный доступ к ресурсам
  • 58. Защита аутентификации Шифрование учетных данных по пути от клиента к серверу (сеансовым ключом) Хеширование идентификатора сессии Соленое хеширование паролей в БД Многофакторная аутентификация Осложняет кражу учетной записи или сессии
  • 59. Валидация запросов Защита от инъекций - экранирование, prepared-запросы, отказ от exec() Совершение действий только на POST CSRF-токены для веб-форм Request Digesting для REST API
  • 60. Защита ресурсов Обязательная авторизация всех запросов Маскировка идентификаторов ресурсов Вынос служебных ресурсов в интранет Сокрытие средств удаленного администрирования в интранете
  • 61. Защита от (D)DoS и роботов Поиск подозрительной активности (некорректные, неестественные запросы) Выявление типового поведения (краулеры, накрутчики) Ограничение подозрительных подсетей (интенсивный однотипный трафик) Сетевое оборудование с возможностью анализа и ограничения трафика