Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

github.com/aleroxac/goexpert-weather-api-otel

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/aleroxac/goexpert-weather-api-otel

  • v0.0.0-20240610114422-c7f653911628
  • Source
  • Go
  • Socket score

Version published
Created
Source

goexpert-weather-api-otel

Projeto do Laboratório "Tracing distribuído e span" do treinamento GoExpert(FullCycle).

O desafio

Desenvolver um sistema em Go que receba um CEP, identifica a cidade e retorna o clima atual (temperatura em graus celsius, fahrenheit e kelvin) juntamente com a cidade. Esse sistema deverá implementar OTEL(Open Telemetry) e Zipkin.

Basedo no cenário conhecido "Sistema de temperatura por CEP" denominado Serviço B, será incluso um novo projeto, denominado Serviço A.

Como rodar o projeto: manual

## 1. Clone o repo

## 2. Crie o .env
cp .env.example .env

## 3. Coloque sua api-key como valor na variável OPEN_WEATHERMAP_API_KEY no .env
## ----- ATENÇÃO: estou usando a API https://openweathermap.org/
## 3.1. Se ainda não tiver uma conta, crie uma.
## 3.2. Passe o cursor do mouse sobre o teu nome de usuário, no menu superior à direita
## 3.3. Clique em "My API keys", 
## 3.4. No bloco "Create key", defina um nome para a key e clique em "Generate"

## 4. Baixe compose, se estiver up
docker-compose down

## 5. Remover as imagens antigas, se existirem
docker image rm -f aleroxac/input-api:v1
docker image rm -f aleroxac/orchestrator-api:v1

## 6. Suba o compose 
docker-compose up -d

## 7. Faça uma chamada no input-api para gerar os traces
echo -e -----------------" input-api -----------------"
echo -n "200: "; curl -s "http://localhost:8080/cep" -d '{"cep": "13330250"}'

## 8. Veja os traces via Zipkin: http://localhost:9411
## DICA: clique sobre o span do input-api para poder ver os spans aninhados do orchestrator-api também

Como rodar o projeto: make

## 1. Clone o repo

## 2. Crie o .env
cp .env.example .env

## 3. Coloque sua api-key como valor na variável OPEN_WEATHERMAP_API_KEY no .env
## ----- ATENÇÃO: estou usando a API https://openweathermap.org/
## 3.1. Se ainda não tiver uma conta, crie uma.
## 3.2. Passe o cursor do mouse sobre o teu nome de usuário, no menu superior à direita
## 3.3. Clique em "My API keys", 
## 3.4. No bloco "Create key", defina um nome para a key e clique em "Generate"

## 4. Baixe compose, se estiver up
make down

## 5. Remover as imagens antigas, se existire,
make clean

## 6. Suba o compose 
make up

## 7. Faça uma chamada no input-api para gerar os traces
make call-input-api

## 8. Veja os traces via Zipkin: http://localhost:9411
## DICA: clique sobre o span do input-api para poder ver os spans aninhados do orchestrator-api também

Funcionalidades da Linguagem Utilizadas

  • configs: spf13/viper
  • graceful-shutdown: os/signal
  • tests: stretchr/testify
  • web-framework: go-chi
  • tracing: opentelemetry
  • metrics: prometheus

Requisitos - Serviço A (responsável pelo input):

  • O sistema deve receber um input de 8 dígitos via POST, através do schema: { "cep": "29902555" }
  • O sistema deve validar se o input é valido (contem 8 dígitos) e é uma STRING
  • Caso seja válido, será encaminhado para o Serviço B via HTTP
  • Caso não seja válido, deve retornar:
    • Código HTTP: 422
    • Mensagem: invalid zipcode

Requisitos - Serviço B (responsável pela orquestração):

  • O sistema deve receber um CEP válido de 8 digitos
  • O sistema deve realizar a pesquisa do CEP e encontrar o nome da localização, a partir disso, deverá retornar as temperaturas e formata-lás em: Celsius, Fahrenheit, Kelvin juntamente com o nome da localização.
  • O sistema deve responder adequadamente nos seguintes cenários:
    • Em caso de sucesso:
      • Código HTTP: 200
      • Response Body: { "city: "São Paulo", "temp_C": 28.5, "temp_F": 28.5, "temp_K": 28.5 }
    • Em caso de falha, caso o CEP não seja válido (com formato correto):
      • Código HTTP: 422
      • Mensagem: invalid zipcode
    • ​​​Em caso de falha, caso o CEP não seja encontrado:
      • Código HTTP: 404
      • Mensagem: can not find zipcode

Requisitos - Entrega

  • O código-fonte completo da implementação.
  • Documentação explicando como rodar o projeto em ambiente dev.
  • Utilize docker/docker-compose para que possamos realizar os testes de sua aplicação.

Traces: Zipkin

zipkin-traces

Referências

FAQs

Package last updated on 10 Jun 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc