Arquitetura escalável de streaming de dados de API utilizando apache Kafka
Autor(a) principal: | |
---|---|
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 |