Лекция 16. Веб-серверы

43
15.12.2020 Лекция 16. Веб-серверы Веб-серверы Облачные технологии Хостинг МГТУ им. Н.Э. Баумана, доц. каф. ИУ-6, к.т.н. Самарев Роман Станиславович [email protected] Языки Интернет-программирования

Upload: others

Post on 22-Apr-2022

27 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Лекция 16. Веб-серверы

15.12.2020

Лекция 16. Веб-серверы

● Веб-серверы

● Облачные технологии

● Хостинг

МГТУ им. Н.Э. Баумана, доц. каф. ИУ-6, к.т.н. Самарев Роман Станиславович

[email protected]

Языки Интернет-программирования

Page 2: Лекция 16. Веб-серверы

15.12.2020

2/38

Веб-серверы для Ruby

● Apache● nginx● Tomcat, jBoss, Glassfish● Ruby веб-серверы

WEBrick (только для отладки) Thin Unicorn Puma Phusion Passenger Standalone LiteSpeed Mongrel

Page 3: Лекция 16. Веб-серверы

15.12.2020

3/38

Apache Web-server

● CERN httpd – 1991 (Tim Berners-Lee,…)● NCSA httpd (Rob McCool)● Apache ("a patchy server") –

1995 (Brian Behlendorf)

● Apache Software Foundation● http://httpd.apache.org

● http://www.voneicken.com/courses/ucsb-cs290i-wi02/papers/Concrete_Apache_Arch.htm

● http://www.ibm.com/developerworks/ru/library/os-apache_3/ ● http://www.ibm.com/developerworks/ru/library/os-apache_4/ ● http://beyondj2ee.files.wordpress.com/2012/06/apache-architecture.ppt

Page 4: Лекция 16. Веб-серверы

15.12.2020

4/38

Ядро Apache 1.x

● http://www.voneicken.com/courses/ucsb-cs290i-wi02/papers/Concrete_Apache_Arch.htm

Page 5: Лекция 16. Веб-серверы

15.12.2020

5/38

Web-server nginx

● Автор Игорь Сысоев● Первая версия 4 октября 2004● NGINX, Inc.

● По данным Netcraft на ноябрь 2019Общая доля сайтов составляет 33%https://news.netcraft.com/archives/2019/11/27/november-2019-web-server-survey.html

● Предпосылки создания: http://kegel.com/c10k.html

Page 6: Лекция 16. Веб-серверы

15.12.2020

6/38

Архитектура nginx

● http://www.aosabook.org/en/nginx.html

Page 7: Лекция 16. Веб-серверы

15.12.2020

7/38

Коммерческие веб-серверы

● IBM WebSphere Application Server

● Oracle WebLogic Server

● Oracle GlassFish Server

● Oracle iPlanet Web Server

● Microsoft IIS

● …

Page 8: Лекция 16. Веб-серверы

15.12.2020

8/38

Технологии размещения Ruby-приложений

● Ruby веб-серверы● Apache/nginx + Phusion Passenger● nginx + Unicorn, nginx + Puma

● JRuby jBoss / WildFly Tomcat Glassfish Puma

Page 9: Лекция 16. Веб-серверы

15.12.2020

9/38

Thin server

● http://code.macournoyer.com/thin/

● Событийно управляемый однопроцессный веб-сервер.

● Легковесный

● Имеет собственную буферизацию запросов

● Масштабирование не предусмотрено

Page 10: Лекция 16. Веб-серверы

15.12.2020

10/38

Unicorn server

● http://unicorn.bogomips.org/

● Однопоточный, многопроцессный веб-сервер

● Одно приложение – один «worker» процесс● Порождает несколько «worker» процессов● Все «worker» прослушивают один unix

socket● Обычно используется в паре с nginx

Page 11: Лекция 16. Веб-серверы

15.12.2020

11/38

Gitlab: Nginx + Unicorn

● https://blue.cse.buffalo.edu/gitlab/help/development/architecture.md

Page 12: Лекция 16. Веб-серверы

15.12.2020

12/38

Puma server

● http://puma.io/

● Многопоточный однопроцессный веб-сервер

● Один запрос - один поток

● В кластерном варианте несколько процессов

● Требует наличия балансировщика

Page 13: Лекция 16. Веб-серверы

15.12.2020

13/38

Phusion Passenger

● https://www.phusionpassenger.com/

● Веб-серверы Apache HTTP Server nginx

● Модули mod_rails mod_rack

Page 14: Лекция 16. Веб-серверы

15.12.2020

14/38

JRuby

● Реализация Ruby на языке Javahttp://jruby.org/

● Синтаксис Ruby 2.5

● Возможность использования классов Java

● Web: Warbler - https://github.com/jruby/warbler

● Проект Ruboto (приложения для Android на Ruby)

Page 15: Лекция 16. Веб-серверы

15.12.2020

15/38

Apache Tomcat

● http://tomcat.apache.org ● Веб-сервер и контейнер сервлетов

● Первая версия 3.0.x. - 1999На основе Sun Java Web Server, ASF,реализации Servlet 2.2 и спецификации JSP 1.1

Page 16: Лекция 16. Веб-серверы

15.12.2020

16/38

Java Servlet

● http://en.wikipedia.org/wiki/Java_Servlet

Page 17: Лекция 16. Веб-серверы

15.12.2020

17/38

GlassFish

● Oracle Corporation (initial code fromSun Microsystems)

● Использует код Apache Tomcat

● Первая версия 6 июня 2005

● Полностью удовлетворяет спецификации Java EE 6 JSR 316

● Интегрирован с NetBeans

● http://glassfish.java.net

Page 18: Лекция 16. Веб-серверы

15.12.2020

18/38

Архитектура Glassfish

● http://blog.tangcs.com/2011/09/21/glassfish/

Page 19: Лекция 16. Веб-серверы

15.12.2020

19/38

JBoss Application Server

● JavaBeans Open Source Software Application Server (jBoss)

● Разработчик Red Hat● Изначально использован Apache Tomcat 5.5

● Частично соответствует спецификации JavaEE

● Бесплатная версия переименована в WildFly● Последняя версия – WildFly 12

● http://www.jboss.org/ http://www.wildfly.org/

Page 20: Лекция 16. Веб-серверы

15.12.2020

20/38

Архитектура jBoss

● http://docs.jboss.org/jbossas/docs/Server_Configuration_Guide/beta500/html/JBoss_AS5_Architecture.html

Page 21: Лекция 16. Веб-серверы

15.12.2020

21/38

Improving Website reliability with Nginx timeout configuration / Jairo Diaz

● http://blog.codescrum.com/2013/02/05/improving_website_reliability_with_nginx_timeout_configuration/

Page 22: Лекция 16. Веб-серверы

15.12.2020

22/38

Размещение веб-приложений

● Хостинг-провайдеры

● Размещение выделенного сервера

● Размещение на общем сервере

● Размещение виртуальной машины

● Контейнеры

● Размещение приложения

● ...

Page 23: Лекция 16. Веб-серверы

15.12.2020

23/38

Web hosting control panel● Доступ к журналам операций● Сведения о доступности и используемом пространстве.

Квоты● Конфигурирование email● Управления пользователями FTP● Управление БД● Статистика посещаемости сайта с использованием средств

анализа● Файловый менеджер с доступом через браузер

● cPanel● H-Sphere● DirectAdmin● Webmin

● http://en.wikipedia.org/wiki/Comparison_of_web_hosting_control_panels

Page 24: Лекция 16. Веб-серверы

15.12.2020

24/38

Средства управления веб-сервером

● cPanel

● http://cpanel.net/

● Демонстрацияhttp://cpanel.net/demo/

Page 25: Лекция 16. Веб-серверы

15.12.2020

25/38

cPanelИнтерфейс хостинг-клиента

Page 26: Лекция 16. Веб-серверы

15.12.2020

26/38

Типы архитектур виртуализации

Page 27: Лекция 16. Веб-серверы

15.12.2020

27/38

Облачные вычисления

● http://synthesis.ipi.ac.ru/sigmod/seminar/s20131031.html

Page 28: Лекция 16. Веб-серверы

15.12.2020

28/38

Продукты для реализации сервисных архитектур

Тип сервисной архитектуры

OpenSource Коммерческие

IaaS OpenNebula

OpenStack

VMWare vCloud

Citrix Cloud Solutions

Eucalyptus Enterprise

PaaSPlatform-as-a-Service

RedHat OpenShift IBM WebSphere VMware Cloud Foundry

SaaSSoftware-as-a-Service

Gmail, Skype

Page 29: Лекция 16. Веб-серверы

15.12.2020

29/38

Infrastructure-as-a-ServiceExample: Eucalyptus Enterprise Edition

Page 30: Лекция 16. Веб-серверы

15.12.2020

30/38

Desktop-as-a-Service (частный случай IaaS)

● MokaFive Suite

Page 31: Лекция 16. Веб-серверы

15.12.2020

31/38

Контейнеры

● Изоляция библиотек и окружения для автономного выполнения приложения:https://www.docker.com/https://podman.io/...

● Развёртывание, масштабирование и управление контейнеризированными приложениями (оркестровка):

Kubernetes, Mesos, ...

● https://www.youtube.com/watch?v=0w6kXdHXxAA

Page 32: Лекция 16. Веб-серверы

15.12.2020

32/38

Kubernetes Components

● https://kubernetes.io/docs/concepts/overview/components/

Page 33: Лекция 16. Веб-серверы

15.12.2020

33/38

RedHat OpenshiftPlatform-as-a-Service

● RedHat OpenShift Express

PHP, Ruby Drupal, Wiki

Flex JBoss DBMS

Power Linux Apps

Page 34: Лекция 16. Веб-серверы

15.12.2020

34/38

Облачные провайдеры для Ruby-приложений

● http://programmingzen.com/the-best-ruby-on-rails-hosting-services/

Heroku Cloud Application Platform

http://www.heroku.com/

MORPH LABS http://Mor.ph

Shelly Cloud https://shellycloud.com/

The Engine Yard http://www.engineyard.com/

Digital Ocean (виртуальные машины от $5 / месяц)

https://www.digitalocean.com/

Amazon Web Services http://aws.amazon.com/ruby/

Google Apps Platform https://developers.google.com/google-apps/marketplace/tutorial_ruby

Microsoft Azure https://azure.microsoft.com/ru-ru/develop/ruby/

Page 35: Лекция 16. Веб-серверы

15.12.2020

35/38

Провайдер Heroku

● http://heroku.com

$ gem install heroku$ heroku keys:add$ heroku createCreated http://severe-fire-61.heroku.com/ | [email protected]:severe-fire-61.gitGit remote heroku added

$ git push heroku master$ heroku rename railstutorial

● http://railstutorial.ru/chapters/4_0/beginning#sec-heroku_setup

Page 36: Лекция 16. Веб-серверы

15.12.2020

36/38

Пример управления сайтом в Heroku

Page 37: Лекция 16. Веб-серверы

15.12.2020

37/38

Масштабированиеприложений в Heroku

● https://www.speedshop.co/2015/07/29/scaling-ruby-apps-to-1000-rpm.html ● http://habrahabr.ru/company/1cloud/blog/272471/

Scaling Ruby Apps to 1000 Requests per Minute – A Beginner's Guide

by Nate Berkopec

Page 38: Лекция 16. Веб-серверы

15.12.2020

38/38

Page 39: Лекция 16. Веб-серверы

15.12.2020

39/38

● Median Salary by Years Experience (2020)

● Median Salary by Years Experience - Skill: Ruby on Rails (United States)

● Median Salary by Years Experience - Skill: Java (United States)

* Налог ~20%, аренда жилья > $3k/month, стоимость жилья >> $500k …

https://www.payscale.com/research/US/Job=Ruby_Software_Developer_%2F_Programmer/Salary

Page 40: Лекция 16. Веб-серверы

15.12.2020

40/38

Компании в России

● https://evrone.com/

● https://level.travel/

● https://www.insales.ru/

● https://flussonic.com

● ЦЭКИ — https://www.цэки.рф/

● ...

Page 41: Лекция 16. Веб-серверы

15.12.2020

41/38

Summer of code

● Google Summer of Code / Ruby● https://github.com/rubygsoc/rubygsoc/wiki/Idea

s-List

● https://summerofcode.withgoogle.com/archive/2019/organizations/6496971961925632/

● Remote work:– https://stackoverflow.com/jobs?q=ruby&r=true – ...

Page 42: Лекция 16. Веб-серверы

15.12.2020

42/38

Вопросы по курсу?

Page 43: Лекция 16. Веб-серверы

15.12.2020

43/38