Тип работы:
Предмет:
Язык работы:


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

Работа №70716

Тип работы

Бакалаврская работа

Предмет

информационные системы

Объем работы34
Год сдачи2016
Стоимость4750 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
23
Не подходит работа?

Узнай цену на написание


Введение 4
1. Подходы к созданию масштабируемых веб-приложений 6
1. Специфика масштабирования веб-приложений 6
2. Типовые архитектуры веб-приложений и их масштабируемость 7
3. Средства языка программирования Go для разработки
масштабируемых веб-приложений 9
2. Описание приложения «KtoZa» 11
3. Архитектура приложения «KtoZa» 13
4. Реализация программного комплекса 16
1. Реализация клиентской части 16
2. Реализация серверной части 23
5. Тестирование приложения 28
Заключение 32
Список литературы 33


На сегодняшний день совершенно очевидно, что с каждым годом число пользователей Интернета возрастает. В то же время, распространение сервисов потоковой передачи данных, социальных сетей, появление концепции Интернета вещей [1] (Internet of Things, IoT) лишь увеличило объем передаваемой информации. В современных условиях особо остро встаёт вопрос построения систем, способных обрабатывать сотни тысяч запросов в минуту и обладающих высокой степенью доступности. В то же время, затраты на разработку и развёртывание систем, ориентированных на 100, 10 000, 1 000 000 и 100 000 000 пользователей существенно различаются. Если в первом случае достаточно использовать для развёртывания веб-приложения бесплатный хостинг или недорогую виртуальную машину на одной из облачных платформ, то для работы таких огромных систем, как Youtube или Facebook, требуются много¬численные центры обработки данных по всему миру. Разработка и поддержка высокопроизводительной системы может не окупиться, если число её пользователей будет существенно меньше запланированного.
Аналогичным образом, различаются и подходы к реализации систем. Методы, применяемые при создании небольших приложений, ориентированных на небольшое число пользователей, например, интернет-магазина, могут быть неприменимы к созданию глобальных вычислительных систем. В то же время, технологии промышленной разработки и, в особенности, методы оптимизации, применяемые в разработке крупнейших веб-приложений, порождают избыточную сложность при создании малых приложений, и даже могут ухудшить их работу.
В связи с вышеперечисленными проблемами встаёт вопрос масштабирования веб-приложения, то есть изменения его производительности в зависимости от нагрузки. Различают вертикальное и горизонтальное направления масштабирования.
Вертикальное масштабирование. Данное направление предусматривает увеличение вычислительной мощности среды запуска приложения. В связи с высокой стоимостью высокопроизводительных серверов, техническими и временными ограничениями данный способ имеет ограниченную применимость. Тем не менее он может особенно успешно применяться в облачных средах, где вычислительную мощь среды можно изменить с минимальными временными и финансовыми затратами.
Горизонтальное масштабирование. Этот способ заключается в увеличении числа запущенных экземпляров приложения и распределении нагрузки между ними. Вместе с тем, архитектура приложения значительно усложняется, требуются дополнительные затраты на поддержание работы системы, а также необходимо внедрение дополнительных компонентов приложения, таких как служба балансировки нагрузки. Тем не менее, данный способ является основным методом повышения отказоустойчивости.
Таким образом, для создания масштабируемых приложений требуются особые архитектурные и технологические решения, способные обеспечить горизонтальную и вертикальную масштабируемость.

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В данной работе были рассмотрены основные принципы построения масштабируемых приложений. Также реализовано приложение опросов «KtoZa», отвечающее заданным требованиям к масштабируемости, отказоустойчивости и производительности. Разработка данного приложения основана на использовании современных методов построения высоконагруженных веб-приложений.
Для данного приложения разработана архитектура, наиболее точно со¬ответствующая специфике работы приложения. Реализована клиентская часть приложения на основе AngularJS, с учетом принципов построения одностраничных приложений. Создана серверная часть, разделяющая функциональность между M- и R- сервером, с учетом различий в нагрузке между этими серверами. Разработка серверной части осуществлена с помощью средств языка Go, ориентированного на построение веб-сервисов и многопоточную обработку данных. Взаимодействие частей приложения осуществляется по протоколам HTTP 1.1 и WebSocket. Возможна компиляция и запуск приложения как на серверах с операционной системой Windows, так и на Linux- серверах. Для серверной части реализован WebAPI, что позволяет использовать сторонние клиенты приложения. Объем реализации составил около 3000 строк кода, из них около 2000 — серверная часть приложения. Исходный код программы доступен по адресу: https://github.com/VeselovAlex/KtoZa .
Проведено тестирование отказоустойчивости и производительности приложения в различных конфигурациях запуска и при различной нагрузке. Результаты тестирования соответствуют ожидаемым и демонстрируют выполнение требований по производительности и отказоустойчивости.


1. International Telecommunication Union. Overview of the Internet of things // Internet of Things Global Standards Initiative. 2012. URL: http:// handle.itu.int/11.1002/1000/11559 (дата обращения: 06.05.2016).
2. Fowler M., Lewis J. Microservices // Martin Fowler's blog. 2014. URL: http:// martinfowler.com/articles/microservices.html (дата обращения: 28.03.2016).
3. Wagner T. Microservices without the Servers // AWS Compute Blog. 2015. URL: http://aws.amazon. com/ru/blogs/compute/microservices-without-the- servers/ (дата обращения: 11.04.2016).
4. Coskun M. Introduction to Reliable Collections in Azure Service Fabric stateful services // Microsoft Azure. 2016. URL: https://azure.microsoft.com/ en-in/documentation/articles/service-fabric-reliable-services-reliable- collections/ (дата обращения: 05.04.2016).
5. The Go Programming Language [Электронный ресурс] // The Go Programming Language: [сайт]. [2016]. URL: https://golang.org (дата обращения: 27.04.2016).
6. Hoare C.A.R. Communicating sequential processes. Springer, 1978.
7. Gerrand A. Share Memory By Communicating // The Go Blog. 2010. URL: http://blog.golang.org/share-memory-by-communicating (дата обращения: 12.04.2014).
8. Ньюмен С. Создание микросервисов. Спб.: Питер, 2016. 304 с.
9. Greiner R. CAP Theorem: Revisited // Robert Greiner Blog. 2014. URL: http:/ /robertgreiner.com/2014/08/cap-theorem-revisited/ (дата обращения: 27.04.2016).
10. Richardson L., Amundsen M. RESTful Web APIs. CA, Sebastopol: O'Reilly, 2013. 404 pp.
11. Бейтс М. CoffeeScript. Второе дыхание JavaScript. М.: ДМК Пресс, 2012. 312 с.
12. AngularJS — Superheroic JavaScript MVW Framework [Электронный ресурс] // AngularJS: [сайт]. [2016]. URL: https://angularjs.org (дата обращения: 27.04.2016).
13. About - Bootstrap [Электронный ресурс] // Bootstrap - The world's most popular mobile-first and responsive front-end framework.: [сайт]. [2016]. URL: http://getbootstrap.com/about (дата обращения: 27.04.2016).
14. IETF. The WebSocket Protocol // IETF Tools. 2011. URL: https:// tools.ietf.org/html/rfc6455 (дата обращения: 27.04.2016).
15. Angular Websocket [Электронный ресурс] // GitHub: [сайт]. [2016]. URL: https://github.com/AngularClass/angular-websocket (дата обращения: 06.05.2016).
16. Donovan A., Kernighan B. The Go Proramming Language. Addison-Wesley, 2016. 400 pp.
17. Simple Cloud Computing, Built for Developers. [Электронный ресурс] // DigitalOcean: [сайт]. [2016]. URL: https://www.digitalocean.com (дата обращения: 07.05.2016).


Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2025 Cервис помощи студентам в выполнении работ