Как устроен Web
изнутри
Анна Тарасенко, 7bits,
генеральный директор
Что за паутина?
Web (World Wide Web, WWW) —
всемирная “паутина”, состоящая
из сотен миллионов серверов,
хранящих и обрабатывающих
документы
А что еще?
Пользовательские устройства
1. Персональные компьютеры и
ноутбуки
2. Планшеты и смартфоны
3. GSM-телефоны и навигаторы
4. Шлемы виртуальной реальности
Пользовательские устройства
5. Бытовая техника, автомобили,
медицинская техника
6. Банкоматы, кассы, POS-терминалы
7. Носимая электроника: умные часы,
фитнес-браслеты
8. …
Интернет вещей (Internet of Things)
Устройства могут:
1. Запускать программное
обеспечение (ПО)
○ с интерфейсом пользователя
■ графическим
■ консольным
■ сенсорным, кнопочным и т.д.
○ без интерфейса пользователя
Устройства могут:
2. Принимать и передавать данные по
сети
○ проводной
○ беспроводной (например, WiFi,
Bluetooth)
Устройства могут:
3. Обмениваться данными со спутниками
для позиционирования в пространстве
○ GPS
○ ГЛОНАСС
4. Обмениваться данными с сотовыми
вышками
○ GSM, CDMA (2G)
○ 3G, 4G
Устройства могут:
5. Собирать и хранить данные с датчиков
○ движения и углов наклона
○ температуры
○ света
○ прикосновения
○ давления
○ …
Устройства могут:
6. Взаимодействовать с контроллерами
аналоговых устройств:
○ моторов
○ светодиодов и лампочек
○ аудио и видео устройств
○ …
Клиент и сервер
Это деление очень условно
Роли могут меняться для каждого
взаимодействия
Мы рассмотрим таких клиентов
Они взаимодействуют с Интернет
1. Через браузер
2. Через мобильное приложение
3. Через десктопное приложение (иногда
это тоже браузер)
Адреса в сети
IP-address (Internet Protocol Address):
● Внешний: 93.158.134.3 (IPv4),
уникален в Интернет
● Внутренний: 192.168.0.1, уникален в
локальной сети
Определяется провайдером Интернет
Адреса в сети
Адреса в сети
Domain name:
● yandex.ru
● google.com
● wikipedia.org
Сайтом обычно называют то, что
скрывается за доменным именем
Адреса в сети
DNS — Domain Name System,
позволяет сопоставить доменному
имени IP-адрес и наоборот
Адреса в сети
Протоколы и уровни
Протокол — набор правил,
действий и их очередности,
позволяющий осуществлять
соединение и обмен данными
между устройствами в сети
Протоколы и уровни
Сетевая модель OSI (не вся):
● Прикладной уровень (7) — HTTP, FTP
(семантические данные)
● Транспортный уровень (4) — TCP, UDP
(сегменты, дейтаграммы)
● Сетевой уровень (3) — IPv4, IPv6 (пакеты)
● Физический (1) — USB, витая пара (биты)
Модель запрос-ответ
Модель запрос-ответ в HTTP
● HTTP-request посылается
клиентом, он ждет ответа в
рамках соединения с сервером
● HTTP-Response отправляется
сервером, либо соединение
рвется
Пример HTTP-request
Метод запроса Запрашиваемый ресурс Протокол
GET /wiki/Tim_Berners-Lee HTTP/1.1
Host: ru.wikipedia.org
……
еще заголовки
Пример HTTP-response
Протокол Код ответа
HTTP/1.1 200 OK
(далее следует запрошенная
страница в HTML)
Пример HTTP-request
Метод запроса Запрашиваемый ресурс Протокол
POST /addcomment HTTP/1.1
Host: youtube.com
comment=Hello
У этих запросов есть тело (body),
содержащее данные
Пример HTTP-response
Протокол Код ответа
HTTP/1.1 500 Internal Server Error
Сервер может прислать код ошибки
вместо страницы
Задачи сервера
1. Принимать запросы клиентов
2. Отправлять ответы клиентам
3. Хранить и обрабатывать данные
4. Искать и систематизировать данные по
запросу (иногда с других серверов)
Все это делает запущенное на сервере ПО
Типовая архитектура
Что умеет web-приложение
1. Чтение HTTP-запроса,
формирование HTTP-ответа
2. Взаимодействие с базой данных
3. Запуск процессов по расписанию
4. Обработка и генерация данных
5. …
Языки программирования в web
C++, C#, Clojure, Erlang, Java,
JavaScript, Haskell, Perl, PHP,
Python, Ruby, Scala, …
На самом деле любые — нужно
просто уметь читать и писать символы
:-)
Самые важные языки
Самые важные языки
● English
Самые важные языки
● English
● Русский
Libraries and Frameworks
Многие типовые задачи уже
решены и на большинстве языков
написаны библиотеки и/или
фреймворки
Фреймворк кроме инструментов
задает каркас приложения
Фреймворки в web
● C#: .NET framework
● Java: Spring и много непопулярных
● JavaScript: Node.js как платформа,
на ее основе Express, Sails
● PHP: Zend framework, symfony,
Cake, Cohana, Yii и много других
Фреймворки в web
● Python: Django, Pyramid, Flask
● Ruby: Ruby on Rails (RoR), Sinatra
● Scala: Play framework, Akka, Spark
Выбор языка не так важен, как выбор
фреймворка!
А еще важнее глубокое понимание
принципов работы сети и архитектуры
приложений, безотносительно языков
и фреймворков!
Базы данных (без подробностей)
● Реляционные: Oracle, Postgres,
MySQL, MS SQL, MariaDB
● Документо-ориентированные:
MongoDB, CouchDB
● Колоночные: Cassandra, HBase
● Графовые: Neo4j, OrientDB
Выбор базы данных едва ли не более
холиварная тема в ИТ, чем выбор
языка или фреймворка :-)
А что еще изучать?
1. Безопасность: шифрование данных,
атаки и защиты
2. Оптимизация поиска в базе данных
3. Масштабирование: подстройка системы
под увеличивающееся число запросов
4. Синхронизация данных между
несколькими серверами
А что еще изучать?
5. Многопоточность, параллельные и
распределенные вычисления
6. Модель акторов
7. Шаблоны (patterns) проектирования и
SOLID-принципы
8. Математическая логика, теория
алгоритмов, логика Хоара
Как лучше начать?
1. Курсы и стажировки для начинающих
2. Coursera, Khan academy, Hexlet
3. Книги от столпов индустрии: Роберт
Мартин, Стив МакКоннел, Кент Бек и
другие
Что почитать?
1. Р. Мартин “Идеальный программист”
2. Р. Мартин “Чистый код”
3. К. Бек “Разработка через тестирование”
4. С. МакКоннел “Совершенный код”
5. Д. Томас, Э. Хант “Программист-
прагматик. Путь от подмастерья к
мастеру”
Что почитать?
6. (*) Г. Эндрюс “Основы многопоточного,
параллельного и распределенного
программирования”
7. (*) Э. Таненбаум, М. Ван Стеен
“Распределенные системы. Принципы и
парадигмы”
Спасибо! Вопросы?
Email: at@7bits.it
Site: http://7bits.ru

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

  • 1.
    Как устроен Web изнутри АннаТарасенко, 7bits, генеральный директор
  • 2.
    Что за паутина? Web(World Wide Web, WWW) — всемирная “паутина”, состоящая из сотен миллионов серверов, хранящих и обрабатывающих документы
  • 3.
  • 4.
    Пользовательские устройства 1. Персональныекомпьютеры и ноутбуки 2. Планшеты и смартфоны 3. GSM-телефоны и навигаторы 4. Шлемы виртуальной реальности
  • 5.
    Пользовательские устройства 5. Бытоваятехника, автомобили, медицинская техника 6. Банкоматы, кассы, POS-терминалы 7. Носимая электроника: умные часы, фитнес-браслеты 8. …
  • 6.
  • 7.
    Устройства могут: 1. Запускатьпрограммное обеспечение (ПО) ○ с интерфейсом пользователя ■ графическим ■ консольным ■ сенсорным, кнопочным и т.д. ○ без интерфейса пользователя
  • 8.
    Устройства могут: 2. Приниматьи передавать данные по сети ○ проводной ○ беспроводной (например, WiFi, Bluetooth)
  • 9.
    Устройства могут: 3. Обмениватьсяданными со спутниками для позиционирования в пространстве ○ GPS ○ ГЛОНАСС 4. Обмениваться данными с сотовыми вышками ○ GSM, CDMA (2G) ○ 3G, 4G
  • 10.
    Устройства могут: 5. Собиратьи хранить данные с датчиков ○ движения и углов наклона ○ температуры ○ света ○ прикосновения ○ давления ○ …
  • 11.
    Устройства могут: 6. Взаимодействоватьс контроллерами аналоговых устройств: ○ моторов ○ светодиодов и лампочек ○ аудио и видео устройств ○ …
  • 12.
    Клиент и сервер Этоделение очень условно Роли могут меняться для каждого взаимодействия
  • 13.
  • 14.
    Они взаимодействуют сИнтернет 1. Через браузер 2. Через мобильное приложение 3. Через десктопное приложение (иногда это тоже браузер)
  • 15.
    Адреса в сети IP-address(Internet Protocol Address): ● Внешний: 93.158.134.3 (IPv4), уникален в Интернет ● Внутренний: 192.168.0.1, уникален в локальной сети Определяется провайдером Интернет
  • 16.
  • 17.
    Адреса в сети Domainname: ● yandex.ru ● google.com ● wikipedia.org Сайтом обычно называют то, что скрывается за доменным именем
  • 18.
    Адреса в сети DNS— Domain Name System, позволяет сопоставить доменному имени IP-адрес и наоборот
  • 19.
  • 20.
    Протоколы и уровни Протокол— набор правил, действий и их очередности, позволяющий осуществлять соединение и обмен данными между устройствами в сети
  • 21.
    Протоколы и уровни Сетеваямодель OSI (не вся): ● Прикладной уровень (7) — HTTP, FTP (семантические данные) ● Транспортный уровень (4) — TCP, UDP (сегменты, дейтаграммы) ● Сетевой уровень (3) — IPv4, IPv6 (пакеты) ● Физический (1) — USB, витая пара (биты)
  • 22.
  • 23.
    Модель запрос-ответ вHTTP ● HTTP-request посылается клиентом, он ждет ответа в рамках соединения с сервером ● HTTP-Response отправляется сервером, либо соединение рвется
  • 24.
    Пример HTTP-request Метод запросаЗапрашиваемый ресурс Протокол GET /wiki/Tim_Berners-Lee HTTP/1.1 Host: ru.wikipedia.org …… еще заголовки
  • 25.
    Пример HTTP-response Протокол Кодответа HTTP/1.1 200 OK (далее следует запрошенная страница в HTML)
  • 26.
    Пример HTTP-request Метод запросаЗапрашиваемый ресурс Протокол POST /addcomment HTTP/1.1 Host: youtube.com comment=Hello У этих запросов есть тело (body), содержащее данные
  • 27.
    Пример HTTP-response Протокол Кодответа HTTP/1.1 500 Internal Server Error Сервер может прислать код ошибки вместо страницы
  • 28.
    Задачи сервера 1. Приниматьзапросы клиентов 2. Отправлять ответы клиентам 3. Хранить и обрабатывать данные 4. Искать и систематизировать данные по запросу (иногда с других серверов) Все это делает запущенное на сервере ПО
  • 29.
  • 30.
    Что умеет web-приложение 1.Чтение HTTP-запроса, формирование HTTP-ответа 2. Взаимодействие с базой данных 3. Запуск процессов по расписанию 4. Обработка и генерация данных 5. …
  • 31.
    Языки программирования вweb C++, C#, Clojure, Erlang, Java, JavaScript, Haskell, Perl, PHP, Python, Ruby, Scala, … На самом деле любые — нужно просто уметь читать и писать символы :-)
  • 32.
  • 33.
  • 34.
    Самые важные языки ●English ● Русский
  • 35.
    Libraries and Frameworks Многиетиповые задачи уже решены и на большинстве языков написаны библиотеки и/или фреймворки Фреймворк кроме инструментов задает каркас приложения
  • 36.
    Фреймворки в web ●C#: .NET framework ● Java: Spring и много непопулярных ● JavaScript: Node.js как платформа, на ее основе Express, Sails ● PHP: Zend framework, symfony, Cake, Cohana, Yii и много других
  • 37.
    Фреймворки в web ●Python: Django, Pyramid, Flask ● Ruby: Ruby on Rails (RoR), Sinatra ● Scala: Play framework, Akka, Spark Выбор языка не так важен, как выбор фреймворка!
  • 38.
    А еще важнееглубокое понимание принципов работы сети и архитектуры приложений, безотносительно языков и фреймворков!
  • 39.
    Базы данных (безподробностей) ● Реляционные: Oracle, Postgres, MySQL, MS SQL, MariaDB ● Документо-ориентированные: MongoDB, CouchDB ● Колоночные: Cassandra, HBase ● Графовые: Neo4j, OrientDB
  • 40.
    Выбор базы данныхедва ли не более холиварная тема в ИТ, чем выбор языка или фреймворка :-)
  • 41.
    А что ещеизучать? 1. Безопасность: шифрование данных, атаки и защиты 2. Оптимизация поиска в базе данных 3. Масштабирование: подстройка системы под увеличивающееся число запросов 4. Синхронизация данных между несколькими серверами
  • 42.
    А что ещеизучать? 5. Многопоточность, параллельные и распределенные вычисления 6. Модель акторов 7. Шаблоны (patterns) проектирования и SOLID-принципы 8. Математическая логика, теория алгоритмов, логика Хоара
  • 43.
    Как лучше начать? 1.Курсы и стажировки для начинающих 2. Coursera, Khan academy, Hexlet 3. Книги от столпов индустрии: Роберт Мартин, Стив МакКоннел, Кент Бек и другие
  • 44.
    Что почитать? 1. Р.Мартин “Идеальный программист” 2. Р. Мартин “Чистый код” 3. К. Бек “Разработка через тестирование” 4. С. МакКоннел “Совершенный код” 5. Д. Томас, Э. Хант “Программист- прагматик. Путь от подмастерья к мастеру”
  • 45.
    Что почитать? 6. (*)Г. Эндрюс “Основы многопоточного, параллельного и распределенного программирования” 7. (*) Э. Таненбаум, М. Ван Стеен “Распределенные системы. Принципы и парадигмы”
  • 46.