Skip to content

Desenvolvimento de um sistema em Go para consultar e armazenar a cotação do dólar em tempo real, utilizando APIs, banco de dados e boas práticas de programação.

Notifications You must be signed in to change notification settings

Guilherme-G-Cadilhe/Go-USDBRLExchange_Client-Server-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

Consulta e Armazenamento de Cotação do Dólar

Sobre   |    Features   |    Tecnologias   |    Instalação   |    O que eu aprendi?   |    Author


📌 Sobre

Desenvolvimento de um sistema em Go para consultar e armazenar a cotação do dólar em tempo real, utilizando APIs, banco de dados, manipulação de arquivos, e gestão de contextos em Go, aplicando as melhores práticas de desenvolvimento para garantir robustez e segurança.

Descrição do Projeto

Este repositório contém dois programas em Go (client.go e server.go) que trabalham juntos para pegar a cotação do dólar e salvar essa informação. Praticando habilidades avançadas com Go.

⚙️ Features

  • Consumo de API: O server.go consulta a cotação do dólar na AwesomeAPI e retorna apenas o valor que interessa (bid). O tempo de resposta da requisição HTTP é gerenciada com um timeout a 200ms para garantir que tudo aconteça rapidamente.

  • Gerenciamento de Tempo (Timeouts): Foi utilizado o pacote context para definir limites de tempo em diferentes partes do sistema. com 200ms para a requisição à API de câmbio, 10ms para operações de banco de dados e 300ms para o cliente obter a resposta do servidor. Em caso de timeout, logs de erros detalhados são gerados, facilitando o rastreamento de problemas.

  • Salvando Dados: Cada cotação que o server.go recebe é armazenada em um banco de dados SQLite. Utilizando SQL preparado (PrepareContext) para prevenir SQL injection e garantir maior segurança.

  • Comunicação HTTP: O client.go faz uma requisição ao server.go, pega a cotação e salva no arquivo cotacao.txt. Por padrão, ele sobrescreve o arquivo, mas o código pode ser ajustado para adicionar novas cotações em linhas separadas, se necessário.

  • Tratamento de Erros: Implementamos funções específicas para lidar com erros de tempo limite e problemas HTTP. Isso garante que o sistema seja robusto e que mensagens de erro claras sejam enviadas ao usuário.

  • Logs e Monitoramento: Todos os erros críticos, como falhas de tempo limite, são registrados em logs. Isso facilita bastante na hora de identificar e corrigir problemas.

💻 Tecnologias

Neste projeto foram utilizadas as seguintes tecnologias:

  • Go - A espinha dorsal do sistema, lidando com tudo, desde solicitações HTTP até interações de banco de dados e criação de arquivos.
  • SQLite - Um banco de dados leve embutido para armazenar dados.

📦 Instalação

Para inicializar, faça fork deste repositorio e rode os comandos:

  1. Instale o GO e CGO
  2. Ligue o servidor go run server.go
  3. Execute o Client go run client.go
  4. Se tiver algum problema para inicializar, tente executar go mod tidy

☕ O que eu aprendi?

Este projeto me permitiu aprofundar meus conhecimentos técnicos em Go, especialmente na gestão de Contextos e Timeouts para garantir operações seguras e eficientes. Aprendi a importância de limitar tempos de execução em diferentes camadas da aplicação, evitando gargalos e melhorando a performance geral.
Tive a oportunidade de trabalhar com SQLite, reforçando minhas habilidades em manipulação de bancos de dados e segurança com o uso de SQL preparado para evitar injeção de SQL.
Além disso, este projeto me ajudou a melhorar minha compreensão sobre comunicação entre sistemas via HTTP, desde a consulta de APIs até o tratamento de erros e logging detalhado utilizando o Go.
O desenvolvimento também reforçou a importância de manter o código organizado e limpo, seguindo as melhores práticas de programação, o que facilita a manutenção e escalabilidade do sistema.

Autor

Feito com 💜 e dedicação por mim Guilherme G Cadilhe Aka: Bobnini.

Agradecimentos

  • Pós-graduação Lato Sensu, Desenvolvimento Avançado em Golang - Goexpert

About

Desenvolvimento de um sistema em Go para consultar e armazenar a cotação do dólar em tempo real, utilizando APIs, banco de dados e boas práticas de programação.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages