HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный...

25
НЕТРИВИАЛЬНЫЙ ВЕБ Пашкевич Дмитрий «Тамтэк», директор

Transcript of HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный...

Page 1: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

НЕТРИВИАЛЬНЫЙ ВЕБ

Пашкевич Дмитрий«Тамтэк», директор

Page 2: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

Как устроен веб

Page 3: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

Части системы• Пользователь: человек или робот• Браузер: IE, Chrome, Safari, Opera• Страница: HTML, CSS, JavaScript• Сеть интернет: HTTP, DNS, TCP/IP• Веб-сервер: Apache, Nginx, IIS• Веб-приложение: PHP, Python, Java, .Net• База данных: MySQL, PostgreSQL, MongoDB• Кэш: Memcache, Redis, Varnish

Page 4: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

FRONTEND / САЙТ

Page 5: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

Браузеры

Page 6: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

На волнах Интернет• DNS преобразует имя сайта в IP адрес• HTTP – язык для общения браузера и веб-

сервера без установления постоянного соединения

• TCP/IP отвечает за гарантированную доставку документов и файлов

Page 7: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

DNS + HTTP + TCP/IP

1. Узнаем IP по имени сайта через DNS2. Отправляем HTTP запрос на веб-сервер3. Получаем HTTP ответ (страницу)4. Отображаем страницу пользователю

Page 8: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

Браузер. Frontend• HTML – язык разметки документа• CSS – стиль и красота• JavaScript – динамика, реакция на события

• Браузер загружает документ, стили, скрипты, картинку и «статику» с сервера через Интернет и отображает их во взаимодействии с пользователем

Page 9: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

Родом из мира модемов• HTTP– прост, как 3 копейки• GET http://thumbtack.ru HTTP/1.1

– каждый запрос – отдельное соединение• Большая страница – много элементов, много

соединенийБольшое количество запросов замедляет загрузку страницы

Инструмент разработчика позволяет проводить отладку в браузере

Page 10: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

Frontend: типичные проблемы• Долгая загрузка страницы– Много запросов– «Тяжелые» ресурсы

• Разная реализация стандартов браузерами• Высокая ресурсоемкость JavaScript• Плохо структурированный код

Page 11: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

Frontend: стратегия оптимизации• Быстрее начинать показывать контент• Минимизировать количество соединений• Уменьшать объем данных• Хранить данные близко к пользователю• Использовать кеш для статических ресурсов• Быть аккуратнее со скриптами

Page 12: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

Frontend: вредные советы• Верстайте «в таблицах»• Не включайте на сервере Keep-alive• Берите картинки в максимально доступном

разрешении• Не тратьте время на кеширование и CDN• Assets только для слабаков• Загружайте сразу весь контент. Не важно,

что 90% пользователь его не увидят• Тестируют только неуверенные в себе

Page 13: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

Рейтинг и рекомендации

Page 14: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб
Page 15: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

Инструменты диагностики сайтов• Встроенные инструменты браузеров• WebPageTest• Google PageSpeed

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

Page 16: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

Backend /СЕРВЕР

Page 17: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

Нескучный Backend

Page 18: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

Что происходит на Backend• Получение запроса пользователя• Сбор данных из разных источников• Обработка данных• Сборка страницы для показа пользователю• Оптимизация и отправка страницы• Длительные фоновые операции

Page 19: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

Backend: проблемы• Их очень много и они разные• Неоптимизированный код• Медленные запросы к базе данных– Нет индексов– Много запросов в цикле

• Отказ серверов• А что, если придет 1 млн пользователей?

Page 20: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

Масштабирование backend

Page 21: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

Масштабируемая архитектура

Page 22: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

Frontend vs. Backend

Frontend Backend

Можно показать бабушке + -

Низкий порог вхождения +/- -

Удовольствие от решения сложных задач

+ ++

Page 23: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

Работа мечты

Page 24: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

Обучение в «Тамтэк»• Школа Разработчика– Сервер + веб + мобайл– Набор весной, обучение с сентября

• Школа Тестировщиков– Следите за объявлениями!

• Больше подробностей на стенде «Тамтэк» и на сайте thumbtack.ru/training/

Page 25: HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб

Спасибо за внимание!

Пашкевич Дмитрий«Тамтэк», директор

Skype, vk.com: dmitrypashkevich