Arquitetura escalável de streaming de dados de API utilizando apache Kafka

Detalhes bibliográficos
Autor(a) principal: Oliveira, Isaac Gomes de
Data de Publicação: 2023
Tipo de documento: Trabalho de conclusão de curso
Idioma: por
Título da fonte: Repositório Institucional da UFRN
Texto Completo: https://repositorio.ufrn.br/handle/123456789/53384
Resumo: O streaming de dados se tornou patente diante do contexto de Big Data. A necessidade de lidar com a informação cada vez mais próxima ao tempo em que ela é produzida passou a ser elementar em diversos cenários diante das percepções que isso oferece. As ferramentas de implementação de streaming foram aperfeiçoadas e popularizadas nos últimos anos e o Apache Kafka se destaca entre elas por abranger garantias necessárias para a transmissão de informações num ambiente resiliente. Lidar com a ferramenta e dimensioná-la para as aplicações modernas é o ponto de partida para disponibilização de dados em tempo real. Somado a isso, tendo em vista a quantidade de informações disponibilizadas via Application Program Interface (API) atualmente, torna-se pertinente ter soluções que realizem a captura dessas informações e o streaming delas para usos diversos. O presente trabalho auxilia essa demanda através da exploração dos recursos do Kafka, construindo uma arquitetura resiliente e escalável que pode ser facilmente replicada por estar contêinerizada. A construção também explora a linguagem Go para desenvolvimento de serviços que buscam e tratam dados de APIs. Ao final do trabalho, realizam-se as validações de disponibilidade, durabilidade e tolerância à falhas da solução, expondo as circuntâncias às quais esse tipo de arquitetura pode vivenciar, bem como da escalabilidade fornecida por ela, que mostra-se suficiente para atender à demanda de processamento da API utilizada. Conclui-se com a apresentação de uma aplicação de exemplo que consome os dados em tempo real, demonstrando a utilização da solução e seu efeito prático no cenário de streaming de dados.
id UFRN_98ca4bb5648cdb70d653d92d2dee7f54
oai_identifier_str oai:https://repositorio.ufrn.br:123456789/53384
network_acronym_str UFRN
network_name_str Repositório Institucional da UFRN
repository_id_str
spelling Oliveira, Isaac Gomes dehttps://lattes.cnpq.br/3899870308114290http://lattes.cnpq.br/3134700668982522Oliveira, Luiz Affonso Henderson Guedes dehttp://lattes.cnpq.br/7987212907837941Silva, Ivanovitch Medeiros Dantas dahttp://lattes.cnpq.br/3608440944832201Viegas, Carlos Manuel Dias2023-07-14T11:59:51Z2023-07-14T11:59:51Z2023-07-10OLIVEIRA, Isaac Gomes de. Arquitetura Escalável de Streaming de Dados de API Utilizando Apache Kafka. Orientador: Carlos Manuel Dias Viegas. 2023. 56 f. Trabalho de Conclusão de Curso (Graduação em Engenharia de Computação) - Departamento de Computação e Automação, Universidade Federal do Rio Grande do Norte, Natal, 2023.https://repositorio.ufrn.br/handle/123456789/53384O streaming de dados se tornou patente diante do contexto de Big Data. A necessidade de lidar com a informação cada vez mais próxima ao tempo em que ela é produzida passou a ser elementar em diversos cenários diante das percepções que isso oferece. As ferramentas de implementação de streaming foram aperfeiçoadas e popularizadas nos últimos anos e o Apache Kafka se destaca entre elas por abranger garantias necessárias para a transmissão de informações num ambiente resiliente. Lidar com a ferramenta e dimensioná-la para as aplicações modernas é o ponto de partida para disponibilização de dados em tempo real. Somado a isso, tendo em vista a quantidade de informações disponibilizadas via Application Program Interface (API) atualmente, torna-se pertinente ter soluções que realizem a captura dessas informações e o streaming delas para usos diversos. O presente trabalho auxilia essa demanda através da exploração dos recursos do Kafka, construindo uma arquitetura resiliente e escalável que pode ser facilmente replicada por estar contêinerizada. A construção também explora a linguagem Go para desenvolvimento de serviços que buscam e tratam dados de APIs. Ao final do trabalho, realizam-se as validações de disponibilidade, durabilidade e tolerância à falhas da solução, expondo as circuntâncias às quais esse tipo de arquitetura pode vivenciar, bem como da escalabilidade fornecida por ela, que mostra-se suficiente para atender à demanda de processamento da API utilizada. Conclui-se com a apresentação de uma aplicação de exemplo que consome os dados em tempo real, demonstrando a utilização da solução e seu efeito prático no cenário de streaming de dados.Data streaming has become notorious in the context of Big Data. The need to deal with information near the time it is produced has become fundamental in several scenarios in view of the perceptions that this offers. Streaming tools implementation have been improved and popularized in recent years and Apache Kafka stands out among them for covering the necessary guarantees for the transmission of information in a resilient environment. Handling Kafka and scaling it for modern applications is the starting point for delivering real-time data. Added to this, whereas the amount of information currently available via Application Program Interfaces (APIs), it is pertinent to have solutions that capture this information and stream it for different purposes. This work supports this demand by exploiting Kafka's resources, building a resilient and scalable architecture that can be easily replicated because it is containerized. It also explores the Go language for developing services that fetch and process data from APIs. At the end of the work, validations of availability, durability and fault tolerance of the solution are carried out, exposing the circumstances to which this type of architecture can experience, as well as the scalability provided by it, which proves to be sufficient to meet the demand processing of the API used. It concludes with the presentation of an application that consumes and show data in real-time, demonstrating an use case of the solution and its practical effect in data streaming scenario.Universidade Federal do Rio Grande do NorteEngenharia de ComputaçãoUFRNBrasilEngenharia de Computação e AutomaçãoStreaming de dadosApache KafkaAPIsTempo realData streamingReal-TimeArquitetura escalável de streaming de dados de API utilizando apache Kafkainfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/bachelorThesisporreponame:Repositório Institucional da UFRNinstname:Universidade Federal do Rio Grande do Norte (UFRN)instacron:UFRNinfo:eu-repo/semantics/openAccessORIGINALTCC___Isaac_Gomes_de_Oliveira_p_deposito.pdfTCC___Isaac_Gomes_de_Oliveira_p_deposito.pdfapplication/pdf2345105https://repositorio.ufrn.br/bitstream/123456789/53384/1/TCC___Isaac_Gomes_de_Oliveira_p_deposito.pdf3d56900d4be98a0075d82d22a0caef1cMD51LICENSElicense.txtlicense.txttext/plain; charset=utf-81484https://repositorio.ufrn.br/bitstream/123456789/53384/2/license.txte9597aa2854d128fd968be5edc8a28d9MD52123456789/533842023-07-14 08:59:51.45oai:https://repositorio.ufrn.br:123456789/53384Tk9OLUVYQ0xVU0lWRSBESVNUUklCVVRJT04gTElDRU5TRQoKCkJ5IHNpZ25pbmcgYW5kIGRlbGl2ZXJpbmcgdGhpcyBsaWNlbnNlLCBNci4gKGF1dGhvciBvciBjb3B5cmlnaHQgaG9sZGVyKToKCgphKSBHcmFudHMgdGhlIFVuaXZlcnNpZGFkZSBGZWRlcmFsIFJpbyBHcmFuZGUgZG8gTm9ydGUgdGhlIG5vbi1leGNsdXNpdmUgcmlnaHQgb2YKcmVwcm9kdWNlLCBjb252ZXJ0IChhcyBkZWZpbmVkIGJlbG93KSwgY29tbXVuaWNhdGUgYW5kIC8gb3IKZGlzdHJpYnV0ZSB0aGUgZGVsaXZlcmVkIGRvY3VtZW50IChpbmNsdWRpbmcgYWJzdHJhY3QgLyBhYnN0cmFjdCkgaW4KZGlnaXRhbCBvciBwcmludGVkIGZvcm1hdCBhbmQgaW4gYW55IG1lZGl1bS4KCmIpIERlY2xhcmVzIHRoYXQgdGhlIGRvY3VtZW50IHN1Ym1pdHRlZCBpcyBpdHMgb3JpZ2luYWwgd29yaywgYW5kIHRoYXQKeW91IGhhdmUgdGhlIHJpZ2h0IHRvIGdyYW50IHRoZSByaWdodHMgY29udGFpbmVkIGluIHRoaXMgbGljZW5zZS4gRGVjbGFyZXMKdGhhdCB0aGUgZGVsaXZlcnkgb2YgdGhlIGRvY3VtZW50IGRvZXMgbm90IGluZnJpbmdlLCBhcyBmYXIgYXMgaXQgaXMKdGhlIHJpZ2h0cyBvZiBhbnkgb3RoZXIgcGVyc29uIG9yIGVudGl0eS4KCmMpIElmIHRoZSBkb2N1bWVudCBkZWxpdmVyZWQgY29udGFpbnMgbWF0ZXJpYWwgd2hpY2ggZG9lcyBub3QKcmlnaHRzLCBkZWNsYXJlcyB0aGF0IGl0IGhhcyBvYnRhaW5lZCBhdXRob3JpemF0aW9uIGZyb20gdGhlIGhvbGRlciBvZiB0aGUKY29weXJpZ2h0IHRvIGdyYW50IHRoZSBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkbyBSaW8gR3JhbmRlIGRvIE5vcnRlIHRoZSByaWdodHMgcmVxdWlyZWQgYnkgdGhpcyBsaWNlbnNlLCBhbmQgdGhhdCB0aGlzIG1hdGVyaWFsIHdob3NlIHJpZ2h0cyBhcmUgb2YKdGhpcmQgcGFydGllcyBpcyBjbGVhcmx5IGlkZW50aWZpZWQgYW5kIHJlY29nbml6ZWQgaW4gdGhlIHRleHQgb3IKY29udGVudCBvZiB0aGUgZG9jdW1lbnQgZGVsaXZlcmVkLgoKSWYgdGhlIGRvY3VtZW50IHN1Ym1pdHRlZCBpcyBiYXNlZCBvbiBmdW5kZWQgb3Igc3VwcG9ydGVkIHdvcmsKYnkgYW5vdGhlciBpbnN0aXR1dGlvbiBvdGhlciB0aGFuIHRoZSBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkbyBSaW8gR3JhbmRlIGRvIE5vcnRlLCBkZWNsYXJlcyB0aGF0IGl0IGhhcyBmdWxmaWxsZWQgYW55IG9ibGlnYXRpb25zIHJlcXVpcmVkIGJ5IHRoZSByZXNwZWN0aXZlIGFncmVlbWVudCBvciBhZ3JlZW1lbnQuCgpUaGUgVW5pdmVyc2lkYWRlIEZlZGVyYWwgZG8gUmlvIEdyYW5kZSBkbyBOb3J0ZSB3aWxsIGNsZWFybHkgaWRlbnRpZnkgaXRzIG5hbWUgKHMpIGFzIHRoZSBhdXRob3IgKHMpIG9yIGhvbGRlciAocykgb2YgdGhlIGRvY3VtZW50J3MgcmlnaHRzCmRlbGl2ZXJlZCwgYW5kIHdpbGwgbm90IG1ha2UgYW55IGNoYW5nZXMsIG90aGVyIHRoYW4gdGhvc2UgcGVybWl0dGVkIGJ5CnRoaXMgbGljZW5zZQo=Repositório de PublicaçõesPUBhttp://repositorio.ufrn.br/oai/opendoar:2023-07-14T11:59:51Repositório Institucional da UFRN - Universidade Federal do Rio Grande do Norte (UFRN)false
dc.title.pt_BR.fl_str_mv Arquitetura escalável de streaming de dados de API utilizando apache Kafka
title Arquitetura escalável de streaming de dados de API utilizando apache Kafka
spellingShingle Arquitetura escalável de streaming de dados de API utilizando apache Kafka
Oliveira, Isaac Gomes de
Streaming de dados
Apache Kafka
APIs
Tempo real
Data streaming
Real-Time
title_short Arquitetura escalável de streaming de dados de API utilizando apache Kafka
title_full Arquitetura escalável de streaming de dados de API utilizando apache Kafka
title_fullStr Arquitetura escalável de streaming de dados de API utilizando apache Kafka
title_full_unstemmed Arquitetura escalável de streaming de dados de API utilizando apache Kafka
title_sort Arquitetura escalável de streaming de dados de API utilizando apache Kafka
author Oliveira, Isaac Gomes de
author_facet Oliveira, Isaac Gomes de
author_role author
dc.contributor.authorLattes.pt_BR.fl_str_mv https://lattes.cnpq.br/3899870308114290
dc.contributor.advisorLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/3134700668982522
dc.contributor.referees1.none.fl_str_mv Oliveira, Luiz Affonso Henderson Guedes de
dc.contributor.referees1Lattes.pt_BR.fl_str_mv http://lattes.cnpq.br/7987212907837941
dc.contributor.referees2.none.fl_str_mv Silva, Ivanovitch Medeiros Dantas da
dc.contributor.referees2Lattes.pt_BR.fl_str_mv http://lattes.cnpq.br/3608440944832201
dc.contributor.author.fl_str_mv Oliveira, Isaac Gomes de
dc.contributor.advisor1.fl_str_mv Viegas, Carlos Manuel Dias
contributor_str_mv Viegas, Carlos Manuel Dias
dc.subject.por.fl_str_mv Streaming de dados
Apache Kafka
APIs
Tempo real
Data streaming
Real-Time
topic Streaming de dados
Apache Kafka
APIs
Tempo real
Data streaming
Real-Time
description O streaming de dados se tornou patente diante do contexto de Big Data. A necessidade de lidar com a informação cada vez mais próxima ao tempo em que ela é produzida passou a ser elementar em diversos cenários diante das percepções que isso oferece. As ferramentas de implementação de streaming foram aperfeiçoadas e popularizadas nos últimos anos e o Apache Kafka se destaca entre elas por abranger garantias necessárias para a transmissão de informações num ambiente resiliente. Lidar com a ferramenta e dimensioná-la para as aplicações modernas é o ponto de partida para disponibilização de dados em tempo real. Somado a isso, tendo em vista a quantidade de informações disponibilizadas via Application Program Interface (API) atualmente, torna-se pertinente ter soluções que realizem a captura dessas informações e o streaming delas para usos diversos. O presente trabalho auxilia essa demanda através da exploração dos recursos do Kafka, construindo uma arquitetura resiliente e escalável que pode ser facilmente replicada por estar contêinerizada. A construção também explora a linguagem Go para desenvolvimento de serviços que buscam e tratam dados de APIs. Ao final do trabalho, realizam-se as validações de disponibilidade, durabilidade e tolerância à falhas da solução, expondo as circuntâncias às quais esse tipo de arquitetura pode vivenciar, bem como da escalabilidade fornecida por ela, que mostra-se suficiente para atender à demanda de processamento da API utilizada. Conclui-se com a apresentação de uma aplicação de exemplo que consome os dados em tempo real, demonstrando a utilização da solução e seu efeito prático no cenário de streaming de dados.
publishDate 2023
dc.date.accessioned.fl_str_mv 2023-07-14T11:59:51Z
dc.date.available.fl_str_mv 2023-07-14T11:59:51Z
dc.date.issued.fl_str_mv 2023-07-10
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.citation.fl_str_mv OLIVEIRA, Isaac Gomes de. Arquitetura Escalável de Streaming de Dados de API Utilizando Apache Kafka. Orientador: Carlos Manuel Dias Viegas. 2023. 56 f. Trabalho de Conclusão de Curso (Graduação em Engenharia de Computação) - Departamento de Computação e Automação, Universidade Federal do Rio Grande do Norte, Natal, 2023.
dc.identifier.uri.fl_str_mv https://repositorio.ufrn.br/handle/123456789/53384
identifier_str_mv OLIVEIRA, Isaac Gomes de. Arquitetura Escalável de Streaming de Dados de API Utilizando Apache Kafka. Orientador: Carlos Manuel Dias Viegas. 2023. 56 f. Trabalho de Conclusão de Curso (Graduação em Engenharia de Computação) - Departamento de Computação e Automação, Universidade Federal do Rio Grande do Norte, Natal, 2023.
url https://repositorio.ufrn.br/handle/123456789/53384
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.publisher.none.fl_str_mv Universidade Federal do Rio Grande do Norte
dc.publisher.program.fl_str_mv Engenharia de Computação
dc.publisher.initials.fl_str_mv UFRN
dc.publisher.country.fl_str_mv Brasil
dc.publisher.department.fl_str_mv Engenharia de Computação e Automação
publisher.none.fl_str_mv Universidade Federal do Rio Grande do Norte
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFRN
instname:Universidade Federal do Rio Grande do Norte (UFRN)
instacron:UFRN
instname_str Universidade Federal do Rio Grande do Norte (UFRN)
instacron_str UFRN
institution UFRN
reponame_str Repositório Institucional da UFRN
collection Repositório Institucional da UFRN
bitstream.url.fl_str_mv https://repositorio.ufrn.br/bitstream/123456789/53384/1/TCC___Isaac_Gomes_de_Oliveira_p_deposito.pdf
https://repositorio.ufrn.br/bitstream/123456789/53384/2/license.txt
bitstream.checksum.fl_str_mv 3d56900d4be98a0075d82d22a0caef1c
e9597aa2854d128fd968be5edc8a28d9
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFRN - Universidade Federal do Rio Grande do Norte (UFRN)
repository.mail.fl_str_mv
_version_ 1802117633576796160