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


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

Работа №131771

Тип работы

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

Предмет

программирование

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

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


Введение 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).
...


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



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


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