Biblioteca para Replicação Máquina de Estados em Elixir

Detalhes bibliográficos
Autor(a) principal: Krause, Peter Michael Claes
Data de Publicação: 2022
Tipo de documento: Trabalho de conclusão de curso
Idioma: por
Título da fonte: Repositório Institucional da UFSC
Texto Completo: https://repositorio.ufsc.br/handle/123456789/237986
Resumo: TCC(graduação) - Universidade Federal de Santa Catarina. Centro Tecnológico. Sistemas de Informação.
id UFSC_3f59acbb0c0aabf067fa0c46d11743ee
oai_identifier_str oai:repositorio.ufsc.br:123456789/237986
network_acronym_str UFSC
network_name_str Repositório Institucional da UFSC
repository_id_str 2373
spelling Universidade Federal de Santa CatarinaKrause, Peter Michael ClaesMendizabal, Odorico Machado2022-08-05T23:21:54Z2022-08-05T23:21:54Z2022-08-25https://repositorio.ufsc.br/handle/123456789/237986TCC(graduação) - Universidade Federal de Santa Catarina. Centro Tecnológico. Sistemas de Informação.Aplicações distribuídas, como servidores modernos, lidam com uma crescente demanda por disponibilidade e velocidade. Uma das maneiras de amplificarmos a disponibilidade de um serviço é a adoção da estratégia de Replicação Máquina de Estado. Paralelamente a estas exigências de tolerância a falhas e desempenho, presenciamos uma retomada do uso de linguagens de programação funcional no desenvolvimento de aplicações, por garantir tanto segurança quanto escalabilidade no processo de desenvolvimento. Neste cenário, identificou-se o Elixir, uma linguagem de programação funcional baseada na plataforma de desenvolvimento Erlang, cuja máquina virtual BEAM oferece recursos para a construção de aplicações de larga escala, altamente disponíveis, e tolerantes a falhas. Apesar de triunfarem em aplicações monolíticas, os componentes da BEAM oferecem um grau adicional de complexidade quando direcionados à montagem de sistemas distribuídos. O objetivo deste trabalho foi a codificação de uma biblioteca de código aberto que permita a adoção da estratégia de Replicação Máquina de Estado com simplicidade, ao passo que endereça as fraquezas apresentadas pela BEAM no âmbito de aplicações distribuídas tolerantes a falhas. A utilidade do presente projeto foi comprovada por testes com um benchmark artificial simulador de cargas. Este teste de desempenho comparou latência e vazão de um servidor simples, um servidor com réplicas em consenso manualmente configuradas e um servidor que utiliza a biblioteca para abstrair toda a configuração necessária na segunda aplicação. Ao agir como uma fina camada entre as réplicas e a implementação do protocolo de consenso, foi verificado que a adição da biblioteca não sacrificou o desempenho da aplicação replicada em consenso, ao passo que reduziu o labor da configuração das instâncias distribuídas e suas interações.Modern applications, such as web servers, face a growing demand for speed and availability. One way to address such challenges is the adoption of the State Machine Replication strategy, granting further availability to the target service. Alongside these demands, the functional programming paradigm is making a return to mainstream software development, for its scalable and safe nature. Amidst this scenario, comes Elixir, a functional programming language built on top of the Erlang development platform, whose underlying virtual machine offers powerful resources for the construction of highly-available and fault-tolerant applications that thrive while maintaining a high throughput. Although the out-of-the-box components offered by the BEAM virtual machine are battle-tested and reliable, they offer an additional level of complexity when configured to operate in a distributed environment. The purpose of this work was the the building of an easy-to-use library capable of abstracting the non-trivial work required to setup state machine replicas in a distributed Erlang environment. The library usage was verified through a synthetic benchmark test, where it was possible to see that the performance constraints imposed by the underlying consensus protocol were not increased nor decreased, proving that the library acted as a thin layer capable of reducing the configuration work it set out to do without greatly interferring in performance.61Florianópolis, SCSistemas DistribuídosTolerância à falhaReplicação Máquina de EstadosErlangProgramação FuncionalBiblioteca para Replicação Máquina de Estados em Elixirinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/bachelorThesisinfo:eu-repo/semantics/openAccessporreponame:Repositório Institucional da UFSCinstname:Universidade Federal de Santa Catarina (UFSC)instacron:UFSCLICENSElicense.txtlicense.txttext/plain; charset=utf-81383https://repositorio.ufsc.br/bitstream/123456789/237986/3/license.txt11ee89cd31d893362820eab7c4d46734MD53ORIGINALTCC.pdfTCC.pdfMonografiaapplication/pdf2174676https://repositorio.ufsc.br/bitstream/123456789/237986/1/TCC.pdf06b9ca846459f26b49b0314e8fe5ecfdMD51pistis.zippistis.zipCódigo fonteapplication/octet-stream12243837https://repositorio.ufsc.br/bitstream/123456789/237986/2/pistis.zip200cc050ef798777d85f0049b23b8e6eMD52123456789/2379862022-08-05 20:21:55.153oai:repositorio.ufsc.br:123456789/237986Vm9jw6ogdGVtIGEgbGliZXJkYWRlIGRlOiBDb21wYXJ0aWxoYXIg4oCUIGNvcGlhciwgZGlzdHJpYnVpciBlIHRyYW5zbWl0aXIgYSBvYnJhLiBSZW1peGFyIOKAlCBjcmlhciBvYnJhcyBkZXJpdmFkYXMuClNvYiBhcyBzZWd1aW50ZXMgY29uZGnDp8O1ZXM6IEF0cmlidWnDp8OjbyDigJQgVm9jw6ogZGV2ZSBjcmVkaXRhciBhIG9icmEgZGEgZm9ybWEgZXNwZWNpZmljYWRhIHBlbG8gYXV0b3Igb3UgbGljZW5jaWFudGUgKG1hcyBuw6NvIGRlIG1hbmVpcmEgcXVlIHN1Z2lyYSBxdWUgZXN0ZXMgY29uY2VkZW0gcXVhbHF1ZXIgYXZhbCBhIHZvY8OqIG91IGFvIHNldSB1c28gZGEgb2JyYSkuIFVzbyBuw6NvLWNvbWVyY2lhbCDigJQgVm9jw6ogbsOjbyBwb2RlIHVzYXIgZXN0YSBvYnJhIHBhcmEgZmlucyBjb21lcmNpYWlzLgpGaWNhbmRvIGNsYXJvIHF1ZTogUmVuw7puY2lhIOKAlCBRdWFscXVlciBkYXMgY29uZGnDp8O1ZXMgYWNpbWEgcG9kZSBzZXIgcmVudW5jaWFkYSBzZSB2b2PDqiBvYnRpdmVyIHBlcm1pc3PDo28gZG8gdGl0dWxhciBkb3MgZGlyZWl0b3MgYXV0b3JhaXMuIERvbcOtbmlvIFDDumJsaWNvIOKAlCBPbmRlIGEgb2JyYSBvdSBxdWFscXVlciBkZSBzZXVzIGVsZW1lbnRvcyBlc3RpdmVyIGVtIGRvbcOtbmlvIHDDumJsaWNvIHNvYiBvIGRpcmVpdG8gYXBsaWPDoXZlbCwgZXN0YSBjb25kacOnw6NvIG7Do28gw6ksIGRlIG1hbmVpcmEgYWxndW1hLCBhZmV0YWRhIHBlbGEgbGljZW7Dp2EuIE91dHJvcyBEaXJlaXRvcyDigJQgT3Mgc2VndWludGVzIGRpcmVpdG9zIG7Do28gc8OjbywgZGUgbWFuZWlyYSBhbGd1bWEsIGFmZXRhZG9zIHBlbGEgbGljZW7Dp2E6IExpbWl0YcOnw7VlcyBlIGV4Y2XDp8O1ZXMgYW9zIGRpcmVpdG9zIGF1dG9yYWlzIG91IHF1YWlzcXVlciB1c29zIGxpdnJlcyBhcGxpY8OhdmVpczsgT3MgZGlyZWl0b3MgbW9yYWlzIGRvIGF1dG9yOyBEaXJlaXRvcyBxdWUgb3V0cmFzIHBlc3NvYXMgcG9kZW0gdGVyIHNvYnJlIGEgb2JyYSBvdSBzb2JyZSBhIHV0aWxpemHDp8OjbyBkYSBvYnJhLCB0YWlzIGNvbW8gZGlyZWl0b3MgZGUgaW1hZ2VtIG91IHByaXZhY2lkYWRlLiBBdmlzbyDigJQgUGFyYSBxdWFscXVlciByZXV0aWxpemHDp8OjbyBvdSBkaXN0cmlidWnDp8Ojbywgdm9jw6ogZGV2ZSBkZWl4YXIgY2xhcm8gYSB0ZXJjZWlyb3Mgb3MgdGVybW9zIGRhIGxpY2Vuw6dhIGEgcXVlIHNlIGVuY29udHJhIHN1Ym1ldGlkYSBlc3RhIG9icmEuIEEgbWVsaG9yIG1hbmVpcmEgZGUgZmF6ZXIgaXNzbyDDqSBjb20gdW0gbGluayBwYXJhIGVzdGEgcMOhZ2luYS4KTGljZW7Dp2EgQ3JlYXRpdmUgQ29tbW9ucyAtIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5jLzMuMC9ici8KRepositório de PublicaçõesPUBhttp://150.162.242.35/oai/requestopendoar:23732022-08-05T23:21:55Repositório Institucional da UFSC - Universidade Federal de Santa Catarina (UFSC)false
dc.title.pt_BR.fl_str_mv Biblioteca para Replicação Máquina de Estados em Elixir
title Biblioteca para Replicação Máquina de Estados em Elixir
spellingShingle Biblioteca para Replicação Máquina de Estados em Elixir
Krause, Peter Michael Claes
Sistemas Distribuídos
Tolerância à falha
Replicação Máquina de Estados
Erlang
Programação Funcional
title_short Biblioteca para Replicação Máquina de Estados em Elixir
title_full Biblioteca para Replicação Máquina de Estados em Elixir
title_fullStr Biblioteca para Replicação Máquina de Estados em Elixir
title_full_unstemmed Biblioteca para Replicação Máquina de Estados em Elixir
title_sort Biblioteca para Replicação Máquina de Estados em Elixir
author Krause, Peter Michael Claes
author_facet Krause, Peter Michael Claes
author_role author
dc.contributor.pt_BR.fl_str_mv Universidade Federal de Santa Catarina
dc.contributor.author.fl_str_mv Krause, Peter Michael Claes
dc.contributor.advisor1.fl_str_mv Mendizabal, Odorico Machado
contributor_str_mv Mendizabal, Odorico Machado
dc.subject.por.fl_str_mv Sistemas Distribuídos
Tolerância à falha
Replicação Máquina de Estados
Erlang
Programação Funcional
topic Sistemas Distribuídos
Tolerância à falha
Replicação Máquina de Estados
Erlang
Programação Funcional
description TCC(graduação) - Universidade Federal de Santa Catarina. Centro Tecnológico. Sistemas de Informação.
publishDate 2022
dc.date.accessioned.fl_str_mv 2022-08-05T23:21:54Z
dc.date.available.fl_str_mv 2022-08-05T23:21:54Z
dc.date.issued.fl_str_mv 2022-08-25
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/bachelorThesis
format bachelorThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv https://repositorio.ufsc.br/handle/123456789/237986
url https://repositorio.ufsc.br/handle/123456789/237986
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv 61
dc.publisher.none.fl_str_mv Florianópolis, SC
publisher.none.fl_str_mv Florianópolis, SC
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFSC
instname:Universidade Federal de Santa Catarina (UFSC)
instacron:UFSC
instname_str Universidade Federal de Santa Catarina (UFSC)
instacron_str UFSC
institution UFSC
reponame_str Repositório Institucional da UFSC
collection Repositório Institucional da UFSC
bitstream.url.fl_str_mv https://repositorio.ufsc.br/bitstream/123456789/237986/3/license.txt
https://repositorio.ufsc.br/bitstream/123456789/237986/1/TCC.pdf
https://repositorio.ufsc.br/bitstream/123456789/237986/2/pistis.zip
bitstream.checksum.fl_str_mv 11ee89cd31d893362820eab7c4d46734
06b9ca846459f26b49b0314e8fe5ecfd
200cc050ef798777d85f0049b23b8e6e
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFSC - Universidade Federal de Santa Catarina (UFSC)
repository.mail.fl_str_mv
_version_ 1766805065498099712