Дипломна работа

Използване на принципите на реактивното и функционалното програмиране за изграждане на скалируеми и устойчиви софтуерни приложения | Защитена на: 27/10/2015

В последните години броят на Интернет потребителите и свързаните в Интернет устройства расте експоненциално, а с това натовареността към софтуерните системи и изискванията към тях се увеличават многократно. Най-популярните в днешно време сред разработчиците софтуерни архитектури от своя страна се базират на монолитен модел със синхронна комуникация и строга консистентност. Системите, базирани на тези архитектури, не се справят с това натоварване. Те не оползотворяват ефективно ресурсите, които са им предоставени, скалират трудно върху многоядрени и дистрибутирани системи и често биват събаряни от неочаквани грешки.

Тази дипломна работа разглежда различен модел — този на реактивното програмиране, чиято цял е да се справи с тези проблеми. Работата започва с обстоен преглед на монолитните архитектури, представяйки техните проблеми, както на концептуално, така и на имплементационно ниво. Тези проблеми биват съпоставени с принципите на реактивното програмиране и начините по които те по-добре моделират физическия свят чрез приемане на неговата същност на недетерминизъм и липса на тотална консистентност. Крайната цел на тези системи е отзивчивост към своите потребители, дори в случаите на грешки в някои техни части. Същевременно се разглежда функционалното програмиране и езиковите и концептуалните средства, които то предоставя за ограничаване на този недерминизъм и сложността, породена от него, чрез използване на неизменяеми данни и силно композиращи се абстракции.

Начините на имплементация на реактивни системи е чрез комбиниране на различни конкретни средства и подходи. Това са например шаблоните реактор и проактор, future и promise, актьорският модел, различни реализации на поточни данни и други. Всички те биват анализирани подробно за това как спазват реактивните принципи, кои части от едно реактивно приложение могат да подпомогнат, как се комбинират помежду си, както и как могат да бъдат реализирани ефективно, заедно с функционалните принципи. За някои от тях се предоставят и конкретни реализации.

Накрая работата предлага конкретна архитектура, реализирана чрез разгледаните реактивни средства, която е подходяща за до средно големи приложения. Тя предоставя възможност за използване скалируеми и устойчиви домейн агрегати и евентуално консистентни изгледи върху данните. След това архитектурата бива реализирана чрез конкретно примерно скалируемо и устойчиво приложение, представящо нейните различни характеристики.

Scroll to Top