Дипломная работа на тему "МОИ (МТИ) – Повышение производительности веб-приложения за счет обратного проксирования с помощью NGINX"

Работа Синергии на тему: Повышение производительности веб-приложения за счет обратного проксирования с помощью NGINX
Год сдачи: 2018
Оценка: Отлично.
Оригинальность работы на момент публикации 50+% на антиплагиат.ру.
Ниже прилагаю все данные для покупки.
https://studentu24.ru/list/suppliers/Anastasiya1---1326

Описание работы

Негосударственное образовательное учреждение высшего образования
Московский технологический институт

Факультет: техники и современных технологий Кафедра: информатики и автоматизации
Уровень образования: бакалавриат
Направление: Информатика и вычислительная техника Профиль: Вычислительные машины, комплексы, системы и сети

ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА
«Повышение производительности веб-приложения за счет обратного проксирования с помощью NGINX»

Москва 2018 г.

ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ 5
ГЛАВА 1. Введение в современные web-технологии 9
1.1. Обзор отрасли и современных требований и приложениям 9
1.1.1. Успех проекта зависит от производительности 9
1.1.2. Контейнеры, виртуализация, оркестрация 11
1.1.3. Микрокэширование и CDN 15
1.2. Возможности NGINX 16
1.2.1. Архитектура NGINX 16
1.2.2. Балансировка нагрузки 17
1.2.3. Кэширование контента 19
1.3. Основания для внедрения обратного прокси-сервера 21
1.3.1. Использование связки php и Apache 21
1.3.2. Одинаковое содержимое страниц 22
1.3.3. Повышение отказоустойчивости 23
ГЛАВА 2. Внедрение обратного прокси-сервера на базе NGINX 25
2.1. Цели существования оптимизируемого приложения и задачи, решаемые им 25
2.1.1 Приложение RMS 25
2.1.2. Особенности динамического содержимого 26
2.1.3. Статические файлы 28
2.2. Установка и настройка кэширующего прокси-сервера NGINX . 28
2.2.1. Установка контейнерного приложения 28
2.2.2. Подготовка приложения 30
2.2.3. Настройка NGINX 34
2.3. Анализ результатов внедрения 38
2.3.1. Анализ журналов доступа 38
2.3.2. Анализ нагрузки на бек-энд 41
2.3.3. Ошибки, через которые пришлось пройти 41
ГЛАВА 3. Дальнейшая оптимизация работы приложения 43
3.1. Оптимизация работы back-end сервера 43
3.1.1. Создание стека с тестовым приложением 43
3.1.2. Анализ производительности после изменений 48
3.1.3. Анализ устойчивости при сбоях 50
3.2. Отказ от слоя web-сервера apache 52
3.2.1. Конфигурирование тестового приложения 52
3.2.2. Анализ производительности при использовании SSI 56
3.2.3. Анализ доступности приложения 58
3.3. Возможности, предоставляемые NGINX Plus 60
3.3.1. Очистка кэша с помощью nginx-cache-purge 60
3.3.2. Анализ прироста производительности 64
3.3.3. Анализ устойчивости к сбоям 65
ЗАКЛЮЧЕНИЕ 69
СПИСОК ЛИТЕРАТУРЫ 72
ПРИЛОЖЕНИЯ 72
Приложение 1. Yml-файл приложения RMS 76
Приложение 2. Конфигурационный файл nginx 77
Приложение 3. Структура каталогов со стеком приложения RMS 82
Приложение 4. Программа для анализа журналов 88
Приложение 5. Файл docker-compose.yml финального тестового стенда 89
Приложение 6. Шаблон html тестового стенда 90
Приложение 7. Php-скрипт render.php 91
Приложение 8. Конфигурационный файл nginx v1 94
Приложение 9. Конфигурационный файл nginx v2 96
Приложение 10. Конфигурационный файл nginx v3 98
Приложение 11. Структура таблиц БД тестового стенда app 100
Приложение 12. Конфигурационные файлы mysql 100

ВВЕДЕНИЕ
Тема данной работы - «Повышение производительности веб- приложения за счет обратного проксирования с помощью NGINX».
Актуальность выбранной темы заключается в лавинообразном росте количества высоконагруженных веб-приложений в связи с ростом количества пользователей сети интернет. В течение последних нескольких лет с каждым днем появляются новые сервисы, количество посещений которых в сутки со временем начинает исчисляться в миллионах просмотров. Для того чтобы удовлетворить современные требования к производительности приложений, простого наращивания вычислительных мощностей за счет установки более «быстрого» оборудования недостаточно. Используются различные технологии, позволяющие распределять вычисления.
Олицетворением одной из таких технологий является высокопроизводительный веб-сервер Nginx. Он позволяет распределять нагрузку на несколько бек-энд серверов, реализовывать различное кэширование, в том числе многоуровневое и производить тонкую настройку процесса обработки запросов пользователей[18].
Автором веб-сервера Nginx является Игорь Сысоев. В 2011 году он основал компанию Nginx, Inc, призванную развивать и продвигать созданный им продукт.
Объектом исследования в работе являлось веб-приложение RMS. Это веб приложение для коллективной работы. Более подробно его назначение, устройство, достоинства и недостатки рассмотрены в первом разделе главы 2.
Вся практическая часть работы была построена вокруг приложения RMS (Requirements management system) и тестового приложения, на котором была продемонстрирована работа технологий.
Целью исследования являлось повышение производительности работы
веб-приложения за счет установки перед ним кэширующего прокси-сервера.

В работе была рассмотрена установка и настройка фронт-энд сервера Nginx после перемещения исследуемого веб-приложения в контейнерную среду, в которой им проще управлять. После того, как была выполнена настройка и проверена работа, были проанализированы журналы доступа. По ним был определен прирост производительности от использования кэширования, а также наглядно продемонстрирована работа механизма балансировки нагрузки при распределении запросов пользователей.
Задачами исследования в работе являлись:
1. Выполнение обзора современных веб-технологий и отрасли в целом. В работе активно используются технологии контейнеризации приложений, главным образом, Docker. Эта технология стала промышленным стандартом и будет подробно рассмотрена в первой главе.
2. Выполнение обзора возможностей Nginx как кэширующего прокси- сервера и как самостоятельного веб-сервера.
3. Проведен анализ, какие основания могут быть для внедрения обратного прокси-сервера перед уже работающим веб- приложением, какие возможности это дает.
4. Выполнен анализ существующего приложения, являющегося объектом исследования в работе, выполнена оценка, что даст кэширование контента и выявлены ограничения приложения РМС, которые необходимо было учесть при внедрении прокси.
5. Выполнена практическая часть работы – подготовлено приложение, установлен и настроен прокси-сервер.
6. Выполнен анализ результатов – собраны данные в журналы доступа во время использования веб-приложения через прокси, затем с помощью небольшой программы выведена статистика загрузки веб страниц и определен выигрыш от использования кэширования.
7. Подготовка стека тестового приложения, отражающего основное
приложение RMS, на примере которого было продемонстрировано использование более мощных технологий, чем простое кэширование. Это было необходимо в связи с дороговизной и сложностью модификации основного приложения, а также позволило выявить возможные риски во время анализа устойчивости к сбоям.
8. Внесение изменений в стек тестового приложения, позволивших избавиться от промежуточного веб-сервера Apache. Переделано тестовое приложение на использование технологии SSI. Это позволило дать оценку эффективности работы Nginx в качестве самостоятельного веб-сервера, на котором размещены статические файлы, а также эффективности его работы с fastcgi сервером, на который были перенесены php-сценарии. В ходе исследования также была проанализирована не только производительность работы приложения в таком стеке, но и устойчивость его к сбоям на бек-энд серверах.
9. Установлен модуль nginx cache purge, позволяющий очищать определенные страницы в кэше и внесены изменения в тестовое приложение, позволяющие выполнять очистку кэша при отправке запросов, изменяющих данные. Также был выполнен анализ производительности и устойчивости к сбоям на бек-энд серверах.
Научная новизна данной работы заключается в применении технологий кэширования там, где они ранее не применялись из-за ненадобности. Это связано с постоянно возрастающей нагрузкой. Как будет отмечено в первой главе, ее разделу посвященному обзору отрасли, производительность сейчас крайне важна. Повышение нагрузки вызывает необходимость в модификации имеющихся приложений. Для того чтобы правильно ее выполнить необходимо правильно определить текущее состояние системы, желаемое состояние и пути его достижения.
Теоретическая и практическая значимость работы заключается в
наглядной демонстрации слабых и сильных сторон различных технологий,

которыми на сегодняшний день могут оперировать администраторы. На реальных примерах в работе рассматриваются различные состояния внешне одинаковых систем и пути их перевода из одного состояния в другое.

СПИСОК ЛИТЕРАТУРЫ
1. Бэрон Шварц, Петр Зайцев, Вадим Ткаченко. MySQL по максимуму. - Санкт-Петербург: Питер, 2018, 864
2. Димитрий Айвалиотис. Администрирование сервера NGINX. - Москва: ДМК, 2013, 288
3. Колисниченко Д., PHP 5/6 и MySQL 6. Разработка Web-приложений. 3-е изд. - Санкт-Петербург: «БХВ-Петербург», 2011, 528
4. Храмцов П.Б., Брик С.А., Русак А.М., Сурин А.И. Основы web-технологий.
- Москва: Изд-во "Интернет-университет информационных технологий - ИНТУИТ.ру", 2003, 512
5. Alex Kapranoff. Nginx Troubleshooting - Birmingham: Packt Publishing Ltd., 2016, 219
6. Clement Nedelcu. Nginx
7. Derek DeJonghe. Complete NGINX Cookbook Advanced Recipes for Operations. - USA: O’Reilly Media Inc., 2017, 181
8. Floyd Smith. HIGHPERFORMANCE CACHING with NGINX & NGINX Plus. - 2018, 47
9. Lee Calcote. The Enterprise Path to Service Mesh Architectures. - USA: O’Reilly Media Inc., 2017, 61
10. Lorna Jane Mitchell. PHP Web Services. - USA: O’Reilly Media, 2013, 117
11. Martin Fjordvald, Clement Nedelcu. Nginx
12. Nginx Inc. NGINX Plus Reference Guide. - Nginx, Inc., 2017, 422
13. Russ McKendrick, Scott Gallagher. Mastering Docker. - Birmingham: Publishing Ltd., 2017, 384
14. Tim Butler. NGINX Cookbook. - Birmingham: Packt Publishing Ltd., 2017, 480
15. Valery Kholodkov. Nginx Essentials. - Birmingham: Publishing Ltd., 2015, 151
16. Как скорость загрузки влияет на уровень отказов: мобильное исследование [Электронный ресурс]
17. Поддержка сессий [Электронный ресурс]
18. The Architecture of Open Source Applications (Volume 2) [Электронный ресурс]
19. Обработка запросов в Apache [Электронный ресурс]
20. MySQL :: MySQL 8.0 Reference Manual :: 17 Replication [Электронный ресурс]
21. HTML: HyperText Markup Language [Электронный ресурс]
22. Compose file version 3 reference | Docker Documentation [Электрjнный ресурс]
23. Overview of docker-compose CLI [Электронный ресурс]
24. Dockerfile reference [Электронный ресурс]
25. Use the Docker command line | Docker Documentation [Электронный ресурс]
26. GitHub - FRiCKLE/ngx_cache_purge: nginx module which adds ability to purge content from FastCGI, proxy, SCGI and uWSGI caches. [Электронный ресурс]
27. Using nginx as
28. Как nginx обрабатывает TCP/UDP-сессии [Электронный ресурс]
29. Docker — Википедия [Электронный ресурс]
30. SSI (программирование) — Википедия [Электронный ресурс]
31. Правда о том, насколько важна скорость загрузки сайта[Электронный ресурс]
32. The Benefits of Microcaching with NGINX - NGINX [Электронный ресурс]
33. Cache Placement Strategies for NGINX and NGINX Plus [Электронный ресурс]
34. Maximizing Drupal 8 performance with NGINX - NGINX [Электронный ресурс]
35. Maximizing PHP 7 performance with NGINX - NGINX [Электронный ресурс]
36. A Guide to Caching with NGINX and NGINX Plus [Электронный ресурс]
37. High-Performance Caching with NGINX and NGINX Plus [Электронный ресурс]
38. Shared Caches with NGINX Plus Cache Clusters, Part 1 [Электронный ресурс]
39. Shared Caches with NGINX Plus Cache Clusters, Part 2 [Электронный ресурс]
40. Smart and Efficient Byte-Range Caching with NGINX & NGINX Plus [Электронный ресурс]
41. SSI Commands [Электронный ресурс]
42. AJAX Introduction [Электронный ресурс]

НЕ НАШЛИ, ЧТО ИСКАЛИ? МОЖЕМ ПОМОЧЬ.

СТАТЬ ЗАКАЗЧИКОМ