46
Как устроен Web изнутри Анна Тарасенко, 7bits, генеральный директор

2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Embed Size (px)

Citation preview

Page 1: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Как устроен Web изнутри

Анна Тарасенко, 7bits,генеральный директор

Page 2: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Что за паутина?

Web (World Wide Web, WWW) — всемирная “паутина”, состоящая из сотен миллионов серверов, хранящих и обрабатывающих документы

Page 3: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

А что еще?

Page 4: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Пользовательские устройства

1. Персональные компьютеры и ноутбуки

2. Планшеты и смартфоны3. GSM-телефоны и навигаторы4. Шлемы виртуальной реальности

Page 5: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Пользовательские устройства

5. Бытовая техника, автомобили, медицинская техника

6. Банкоматы, кассы, POS-терминалы7. Носимая электроника: умные часы,

фитнес-браслеты8. …

Page 6: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Интернет вещей (Internet of Things)

Page 7: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Устройства могут:1. Запускать программное

обеспечение (ПО)○ с интерфейсом пользователя

■ графическим■ консольным■ сенсорным, кнопочным и т.д.

○ без интерфейса пользователя

Page 8: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Устройства могут:

2. Принимать и передавать данные по сети○ проводной○ беспроводной (например, WiFi,

Bluetooth)

Page 9: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Устройства могут:3. Обмениваться данными со спутниками

для позиционирования в пространстве○ GPS○ ГЛОНАСС

4. Обмениваться данными с сотовыми вышками○ GSM, CDMA (2G)○ 3G, 4G

Page 10: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Устройства могут:5. Собирать и хранить данные с датчиков

○ движения и углов наклона○ температуры○ света○ прикосновения○ давления○ …

Page 11: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Устройства могут:

6. Взаимодействовать с контроллерами аналоговых устройств:○ моторов○ светодиодов и лампочек○ аудио и видео устройств○ …

Page 12: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Клиент и сервер

Это деление очень условно

Роли могут меняться для каждого взаимодействия

Page 13: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Мы рассмотрим таких клиентов

Page 14: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Они взаимодействуют с Интернет

1. Через браузер

2. Через мобильное приложение3. Через десктопное приложение (иногда

это тоже браузер)

Page 15: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Адреса в сетиIP-address (Internet Protocol Address):

● Внешний: 93.158.134.3 (IPv4), уникален в Интернет

● Внутренний: 192.168.0.1, уникален в локальной сети

Определяется провайдером Интернет

Page 16: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Адреса в сети

Page 17: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Адреса в сетиDomain name:

● yandex.ru● google.com● wikipedia.org

Сайтом обычно называют то, что скрывается за доменным именем

Page 18: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Адреса в сети

DNS — Domain Name System, позволяет сопоставить доменному имени IP-адрес и наоборот

Page 19: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Адреса в сети

Page 20: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Протоколы и уровни

Протокол — набор правил, действий и их очередности, позволяющий осуществлять соединение и обмен данными между устройствами в сети

Page 21: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Протоколы и уровниСетевая модель OSI (не вся):● Прикладной уровень (7) — HTTP, FTP

(семантические данные)● Транспортный уровень (4) — TCP, UDP

(сегменты, дейтаграммы)● Сетевой уровень (3) — IPv4, IPv6 (пакеты)● Физический (1) — USB, витая пара (биты)

Page 22: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Модель запрос-ответ

Page 23: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Модель запрос-ответ в HTTP● HTTP-request посылается

клиентом, он ждет ответа в рамках соединения с сервером

● HTTP-Response отправляется сервером, либо соединение рвется

Page 24: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Пример HTTP-request

Метод запроса Запрашиваемый ресурс Протокол

GET /wiki/Tim_Berners-Lee HTTP/1.1Host: ru.wikipedia.org

……еще заголовки

Page 25: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Пример HTTP-response

Протокол Код ответа

HTTP/1.1 200 OK(далее следует запрошенная страница в HTML)

Page 26: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Пример HTTP-requestМетод запроса Запрашиваемый ресурс Протокол

POST /addcomment HTTP/1.1Host: youtube.comcomment=Hello

У этих запросов есть тело (body), содержащее данные

Page 27: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Пример HTTP-response

Протокол Код ответа

HTTP/1.1 500 Internal Server Error

Сервер может прислать код ошибки вместо страницы

Page 28: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Задачи сервера

1. Принимать запросы клиентов2. Отправлять ответы клиентам3. Хранить и обрабатывать данные4. Искать и систематизировать данные по

запросу (иногда с других серверов)

Все это делает запущенное на сервере ПО

Page 29: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Типовая архитектура

Page 30: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Что умеет web-приложение

1. Чтение HTTP-запроса, формирование HTTP-ответа

2. Взаимодействие с базой данных3. Запуск процессов по расписанию4. Обработка и генерация данных5. …

Page 31: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Языки программирования в webC++, C#, Clojure, Erlang, Java, JavaScript, Haskell, Perl, PHP, Python, Ruby, Scala, …

На самом деле любые — нужно просто уметь читать и писать символы :-)

Page 32: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Самые важные языки

Page 33: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Самые важные языки

● English

Page 34: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Самые важные языки

● English● Русский

Page 35: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Libraries and FrameworksМногие типовые задачи уже решены и на большинстве языков написаны библиотеки и/или фреймворки

Фреймворк кроме инструментов задает каркас приложения

Page 36: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Фреймворки в web

● C#: .NET framework● Java: Spring и много непопулярных● JavaScript: Node.js как платформа,

на ее основе Express, Sails● PHP: Zend framework, symfony,

Cake, Cohana, Yii и много других

Page 37: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Фреймворки в web

● Python: Django, Pyramid, Flask● Ruby: Ruby on Rails (RoR), Sinatra● Scala: Play framework, Akka, Spark

Выбор языка не так важен, как выбор фреймворка!

Page 38: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

А еще важнее глубокое понимание принципов работы сети и архитектуры приложений, безотносительно языков и фреймворков!

Page 39: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Базы данных (без подробностей)● Реляционные: Oracle, Postgres,

MySQL, MS SQL, MariaDB● Документо-ориентированные:

MongoDB, CouchDB● Колоночные: Cassandra, HBase● Графовые: Neo4j, OrientDB

Page 40: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Выбор базы данных едва ли не более холиварная тема в ИТ, чем выбор языка или фреймворка :-)

Page 41: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

А что еще изучать?1. Безопасность: шифрование данных,

атаки и защиты2. Оптимизация поиска в базе данных3. Масштабирование: подстройка системы

под увеличивающееся число запросов4. Синхронизация данных между

несколькими серверами

Page 42: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

А что еще изучать?5. Многопоточность, параллельные и

распределенные вычисления6. Модель акторов7. Шаблоны (patterns) проектирования и

SOLID-принципы8. Математическая логика, теория

алгоритмов, логика Хоара

Page 43: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Как лучше начать?

1. Курсы и стажировки для начинающих2. Coursera, Khan academy, Hexlet3. Книги от столпов индустрии: Роберт

Мартин, Стив МакКоннел, Кент Бек и другие

Page 44: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Что почитать?1. Р. Мартин “Идеальный программист”2. Р. Мартин “Чистый код”3. К. Бек “Разработка через тестирование”4. С. МакКоннел “Совершенный код”5. Д. Томас, Э. Хант “Программист-

прагматик. Путь от подмастерья к мастеру”

Page 45: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Что почитать?

6. (*) Г. Эндрюс “Основы многопоточного, параллельного и распределенного программирования”

7. (*) Э. Таненбаум, М. Ван Стеен “Распределенные системы. Принципы и парадигмы”

Page 46: 2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри

Спасибо! Вопросы?

Email: [email protected]

Site: http://7bits.ru