Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/dionizio8/go-temppc-dist

go expert
https://github.com/dionizio8/go-temppc-dist

golang opentelemetry tracing

Last synced: 22 days ago
JSON representation

go expert

Awesome Lists containing this project

README

        

# Go Temppc Dist
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.

## 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:*
```json
{
"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**

---
## OTEL + Zipkin
Após a implementação dos serviços, adicione a implementação do OTEL + Zipkin:
- Implementar tracing distribuído entre **Serviço A** - **Serviço B**
- Utilizar span para medir o tempo de resposta do serviço de busca de CEP e busca de temperatura
---

# Arquivos de Testes (_.http_)
- [Request API Local](./api/api.http)

---

# Executando Docker Local
Será necessário inicializar com o comando:
```bash
docker compose up -d --build
```
E pode realizar os testes com arquivo [api.http](./api/api.http)

### zipkin docker: http://localhost:9411/zipkin/