Лекция 16. Веб-серверы. -...
TRANSCRIPT
19.12.2017
1/37
Лекция 16. Веб-серверы.
Веб-серверы Облачные технологии Хостинг
МГТУ им. Н.Э. Бауманадоц. каф. ИУ-6, к.т.н. Самарев Роман Станиславович [email protected]
19.12.2017
2/37
Веб-серверы для Ruby
Apache nginx Tomcat, jBoss, Glassfish Ruby веб-серверы
WEBrick (только для отладки) Thin Unicorn Puma Phusion Passenger Standalone LiteSpeed Mongrel
19.12.2017
3/37
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
19.12.2017
4/37
Ядро Apache 1.x
http://www.voneicken.com/courses/ucsb-cs290i-wi02/papers/Concrete_Apache_Arch.htm
19.12.2017
5/37
Web-server nginx
Автор Игорь Сысоев Первая версия 4 октября 2004 NGINX, Inc.
По данным Netcraft на ноябрь 2017Общая доля сайтов составляет 18.40%https://news.netcraft.com/archives/2017/11/21/november-2017-web-server-survey.html
Предпосылки создания: http://kegel.com/c10k.html
19.12.2017
6/37
Архитектура nginx
http://www.aosabook.org/en/nginx.html
19.12.2017
7/37
Коммерческие веб-серверы
IBM WebSphere Application Server Oracle WebLogic Server Oracle GlassFish Server Oracle iPlanet Web Server Microsoft IIS …
19.12.2017
8/37
Технологии размещения Ruby-приложений
Ruby веб-серверы Apache/nginx + Phusion Passenger nginx + Unicorn, nginx + Puma
JRuby jBoss / WildFly Tomcat Glassfish Puma
19.12.2017
9/37
Thin server
http://code.macournoyer.com/thin/
Событийно управляемый однопроцессный веб-сервер.
Легковесный
Имеет собственную буферизацию запросов
Масштабирование не предусмотрено
19.12.2017
10/37
Unicorn server
http://unicorn.bogomips.org/
Однопоточный, многопроцессный веб-сервер
Одно приложение – один «worker» процесс Порождает несколько «worker» процессов Все «worker» прослушивают один unix socket Обычно используется в паре с nginx
19.12.2017
11/37
Gitlab: Nginx + Unicorn
https://blue.cse.buffalo.edu/gitlab/help/development/architecture.md
19.12.2017
12/37
Puma server
http://puma.io/ Многопоточный однопроцессный
веб-сервер Один запрос - один поток. В кластерном варианте несколько
процессов. Требует наличия балансировщика.
19.12.2017
13/37
Phusion Passenger
https://www.phusionpassenger.com/ Веб-серверы
Apache HTTP Server nginx
Модули mod_rails mod_rack
19.12.2017
14/37
JRuby
Реализация Ruby на языке Javahttp://jruby.org/
Синтаксис Ruby 2.3
Возможность использования классов Java
Проект Ruboto (приложения для Android на Ruby)
19.12.2017
15/37
Apache Tomcat
http://tomcat.apache.org Веб-сервер и контейнер сервлетов
Первая версия 3.0.x. - 1999На основе Sun Java Web Server, ASF,реализации Servlet 2.2 и спецификации JSP 1.1
19.12.2017
16/37
Java Servlet
http://en.wikipedia.org/wiki/Java_Servlet
19.12.2017
17/37
GlassFish
Oracle Corporation (initial code from Sun Microsystems)
Использует код Apache Tomcat
Первая версия 6 июня 2005
Полностью удовлетворяет спецификации Java EE 6 JSR 316
Интегрирован с NetBeans
http://glassfish.java.net
19.12.2017
18/37
Архитектура Glassfish
http://blog.tangcs.com/2011/09/21/glassfish/
19.12.2017
19/37
JBoss Application Server
JavaBeans Open Source Software Application Server (jBoss)
Разработчик Red Hat Изначально использован Apache Tomcat 5.5
Частично соответствует спецификации JavaEE
Бесплатная версия переименована в WildFly Последняя версия – WildFly 11
http://www.jboss.org/ http://www.wildfly.org/
19.12.2017
20/37
Архитектура jBoss
http://docs.jboss.org/jbossas/docs/Server_Configuration_Guide/beta500/html/JBoss_AS5_Architecture.html
19.12.2017
21/37
Improving Website reliability with Nginx timeout configuration/Jairo Diaz
http://blog.codescrum.com/2013/02/05/improving_website_reliability_with_nginx_timeout_configuration/
19.12.2017
22/37
Размещение веб-приложений
Хостинг-провайдеры
Размещение выделенного сервера Размещение на общем сервере Размещение виртуальной машины Размещение приложения
19.12.2017
23/37
Web hosting control panel
Доступ к журналам операций. Сведения о доступности и используемом пространстве.
Квоты. Конфигурирование email. Управления пользователями FTP. Управление БД. Статистика посещаемости сайта с использованием средств
анализа. Файловый менеджер с доступом через браузер.
cPanel H-Sphere DirectAdmin Webmin
http://en.wikipedia.org/wiki/Comparison_of_web_hosting_control_panels
19.12.2017
24/37
Средства управления веб-сервером
cPanel
http://cpanel.net/
Демонстрацияhttp://cpanel.net/demo/
19.12.2017
27/37
Облачные вычисления
http://synthesis.ipi.ac.ru/sigmod/seminar/s20131031.html
19.12.2017
28/37
Продукты для реализации сервисных архитектур
Тип сервисной архитектуры
OpenSource Коммерческие
IaaS OpenNebula
OpenStack
VMWare vCloudCitrix Cloud SolutionsEucalyptus Enterprise…
PaaSPlatform-as-a-Service
RedHat OpenShift IBM WebSphere VMware Cloud Foundry
SaaSSoftware-as-a-Service
Gmail, Skype
19.12.2017
31/37
RedHat OpenshiftPlatform-as-a-Service
RedHat OpenShift Express
PHP, Ruby Drupal, Wiki
Flex JBoss DBMS
Power Linux Apps
19.12.2017
32/37
Облачные провайдеры Heroku Cloud Application Platform
http://www.heroku.com/
MORPH LABShttp://Mor.ph
Shelly Cloudhttps://shellycloud.com/
The Engine Yard http://www.engineyard.com/
Digital Ocean (виртуальный машины от $5 / месяц)https://www.digitalocean.com/
Amazon Web Serviceshttp://aws.amazon.com/ruby/
Google Apps Platformhttps://developers.google.com/google-apps/marketplace/tutorial_ruby
http://programmingzen.com/the-best-ruby-on-rails-hosting-services/
19.12.2017
33/37
Провайдер 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
19.12.2017
35/37
Масштабированиеприложений в 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
19.12.2017
36/37
Median Salary by Years Experience (2016)
Median Salary by Years Experience - Skill: Ruby on Rails (United States)
Median Salary by Years Experience - Skill: Java (United States)
* Налог ~20%, аренда жилья > $3k/month, стоимость жилья >> $500k …
http://www.payscale.com/research/US/Skill=Ruby_on_Rails/Salary#by_Years_Experience