Skip to content

Commit

Permalink
Merge pull request #64 from ValchanOficial/chore/new-post
Browse files Browse the repository at this point in the history
chore: new post about observability and some fixes
  • Loading branch information
ValchanOficial authored Aug 11, 2024
2 parents 19f4cb4 + 8456b24 commit 794fc75
Show file tree
Hide file tree
Showing 2 changed files with 147 additions and 6 deletions.
12 changes: 6 additions & 6 deletions posts/2024-08-05-wsl2-localstack.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,22 @@ Se você é uma pessoa desenvolvedora que trabalha com a AWS, você sabe que o d
Para começar a usar o LocalStack, você precisará do Docker configurado em sua máquina. Veja como iniciar o LocalStack:

```bash
# Baixa a imagem do LocalStack
# Baixe a imagem do LocalStack
docker pull localstack/localstack

# Lista as imagens baixadas
# Lista das imagens baixadas
docker images

# Executa o container do LocalStack
# Execute o container do LocalStack
docker run --rm -d -p 4566:4566 -p 4510-4559:4510-4559 localstack/localstack
# rm: Remove o container após a execução
# d: Executa o container em background
# p: Mapeia as portas do container para a máquina host

# Lista os containers em execução e copia o containerId
# Liste os containers em execução, copie o containerId do localstack
docker ps

# Acessa o terminal do container
# Acesse o terminal do container
docker exec -it <containerId> /bin/bash
# it: Mantém o terminal aberto
```
Expand All @@ -40,7 +40,7 @@ docker exec -it <containerId> /bin/bash
Dentro do container do LocalStack, você pode usar o AWS CLI para interagir com os serviços da AWS. A configuração é simples:

```bash
# Configura o AWS CLI
# Configure o AWS CLI
aws configure

# Chave de acesso, aqui você pode colocar qualquer valor
Expand Down
141 changes: 141 additions & 0 deletions posts/2024-08-10-observability.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
---
date: 2024-08-10
title: "Observabilidade"
description: "O segredo para manter sistemas complexos sob controle"
category: "Observabilidade"
image: "/assets/img/cover.png"
---

Nos dias de hoje, as empresas dependem cada vez mais de sistemas complexos e distribuídos para atender às demandas do mercado. Nesse cenário, a observabilidade se torna essencial para garantir o desempenho e a confiabilidade desses sistemas. Vamos explorar o que é observabilidade, por que é importante e como aplicá-la de forma eficaz.

## O que é Observabilidade?

Observabilidade é a capacidade de entender o comportamento interno de um sistema com base em seus outputs(saídas), como logs, métricas e traces. Em outras palavras, é monitorar, medir e analisar os dados de um sistema em tempo real, a fim de obter insights, identificar e corrigir problemas de forma eficiente.

## Por que isso é importante?

A observabilidade é fundamental para garantir a confiabilidade e a estabilidade de um sistema. Ela permite que os desenvolvedores identifiquem e resolvam problemas rapidamente, minimizando o impacto sobre os usuários finais. Com uma boa observabilidade, as equipes de desenvolvimento e operações podem agir proativamente para evitar interrupções e melhorar continuamente a performance dos sistemas.

## Logs, Métricas e Traces

Existem três tipos principais de dados que são essenciais para a observabilidade de um sistema:

- Logs: são os registros de eventos ou mensagens que ocorrem dentro do sistema. Eles ajudam a rastrear o que aconteceu e em que ordem ao longo do tempo.

- Métricas: são dados quantitativos que descrevem o desempenho do sistema, como uso de CPU, uso de memória, tempo de resposta e taxas de erro. As métricas são úteis para monitorar o estado atual do sistema e identificar tendências ao longo do tempo.

- Traces: são os rastreamentos de transações individuais através do sistema, mostrando como os diferentes componentes do sistema interagem entre si. Os traces são úteis para identificar gargalos de desempenho e entender fluxos de arquiteturas distribuídas.

## Observabilidade vs Monitoramento

Muitas vezes os termos observabilidade e monitoramento são usados de forma equivocada, porém eles não são a mesma coisa, vamos entender as diferenças:

- Monitoramento: refere-se ao processo de coletar dados predefinidos sobre o desempenho e a disponibilidade de um sistema. Geralmente é mais reativo e focado em alertas e dashboards.

- Observabilidade: vai além do monitoramento, ela refere-se à capacidade de buscar entender o comportamento interno de um sistema com base em seus outputs. A observabilidade é mais proativa e permite uma análise mais profunda focada em insights, ajudando a identificar problemas desconhecidos e complexos.

**Resumindo:** Enquanto o monitoramento te diz quando algo está errado, a observabilidade é sobre entender o "porquê" algo está errado.

## Ferramentas de Observabilidade

Existem diversas ferramentas no mercado que ajudam as empresas a implementarem observabilidade em seus sistemas.
Aqui estão algumas das mais populares:

- Prometheus e Grafana
- New Relic
- Jaeger
- Elastic Stack (ELK Stack): Elasticsearch, Logstash, Kibana
- Datadog
- Zipkin
- Kiali
- Dynatrace
- Splunk

## Como Implementar a Observabilidade

Implementar a observabilidade de forma eficaz requer planejamento, e envolve uma combinação de práticas técnicas, mudanças culturais e estratégias organizacionais além da escolha das ferramentas certas para atender às necessidades específicas do sistema.
Aqui estão algumas melhores práticas para garantir uma implementação bem-sucedida da observabilidade:

- Defina Indicadores-Chave de Desempenho - KPIs(Key Performance Indicators): estabeleça KPIs que estejam alinhados com seus objetivos de observabilidade, isso pode incluir alertas sobre o tempo de resposta, uso de CPU, taxas de erro, entre outros.

- Defina objetivos claros: estabeleça o que você deseja alcançar com a observabilidade, como melhorar a confiabilidade do sistema, reduzir o MTTR ou aprimorar a experiência do usuário.

- Escolha as ferramentas adequadas: com base nos KPIs, instrumente suas aplicações e infraestrutura que melhor atendem às suas necessidades para coletar dados de observabilidade de forma consistente em todo o sistema para obter uma visão completa, utilizando bibliotecas, agentes e código personalizado para capturar logs, métricas e rastreamentos relevantes.

- Configure alertas e dashboards: configure alertas para ser notificado quando os KPIs atingirem limites críticos. Crie dashboards para visualizar os dados em tempo real e tomar decisões informadas.

- Automatize processos: use scripts e automações para coletar e analisar dados continuamente, garantindo que sua equipe esteja sempre preparada para lidar com qualquer problema.

- Promova uma cultura de trabalho em equipe: incentive a colaboração entre desenvolvimento, operações e outras equipes relevantes.

- Centralize dados e correlacione informações: centralize os dados de observabilidade de várias fontes em uma única plataforma, permitindo a correlação e análise de logs, métricas e rastreamentos para obter insights mais profundos.

- Crie dashboards abrangentes: configure dashboards personalizáveis que forneçam visibilidade em tempo real sobre o desempenho e a saúde do sistema, exibindo métricas e alertas relevantes para diferentes equipes e partes interessadas.

- Implemente alertas automatizados: configure alertas automatizados, baseados em limites pré-definidos e detecção de anomalias, que sejam acionáveis e forneçam contexto sobre a gravidade e o impacto do problema.

- Pratique resposta a incidentes e postmortems: estabeleça processos de resposta a incidentes que utilizem dados de observabilidade para diagnosticar e resolver problemas rapidamente, bem como a utilização de postmortems para analisar as causas raízes dos incidentes e implementar medidas preventivas.

- Monitore o comportamento do usuário: incorpore a observabilidade no monitoramento do comportamento do usuário para entender como os usuários interagem com suas aplicações e melhorar a experiência do usuário.

- Eduque e treine as equipes: ofereça treinamentos para as equipes de engenharia sobre as melhores práticas de observabilidade, ferramentas e interpretação de dados. Assegure-se de que os membros da equipe compreendam o valor e a importância da observabilidade no seu trabalho diário.

## Benefícios da Observabilidade

Adotar uma estratégia de observabilidade traz diversos benefícios, tais como:

- Detecção rápida de problemas: permite o monitoramento em tempo real dos componentes do sistema. Essa abordagem proativa ajuda a detectar e resolver problemas à medida que ocorrem, reduzindo o tempo de inatividade e minimizando o impacto para os usuários finais.

- Melhoria contínua: ao monitorar e analisar constantemente o desempenho do sistema, sua equipe pode identificar áreas de melhoria e otimizar o funcionamento geral.

- Redução de custos: a capacidade de detectar e resolver problemas antes que se tornem críticos reduz os custos associados a downtime e a necessidade de intervenção manual.

- Solução de problemas eficiente: fornece contexto valioso através de dados ao diagnosticar problemas. As equipes podem identificar rapidamente as causas raiz dos problemas, agilizar o processo de depuração e reduzir o tempo médio de resolução (MTTR).

- Oportunidades de otimização: ajuda a identificar gargalos de desempenho, ineficiências e áreas para otimização. Dessa forma, as equipes podem ajustar os sistemas de software para melhorar a eficiência e reduzir custos.

- Melhoria da experiência do usuário: permite que as equipes monitorem interações e comportamentos dos usuários dentro de uma aplicação. As equipes podem usar essas informações para otimizar a experiência do usuário, melhorar a usabilidade e resolver pontos problemáticos.

- Melhoria na tomada de decisões: fornece dados de desempenho em tempo real, permitindo que as equipes façam boas escolhas sobre melhorias no sistema, alocação de recursos e estratégias de escalabilidade.

- Escalabilidade: detalha a utilização de recursos e identifica gargalos de desempenho. As equipes podem planejar e implementar soluções escaláveis.

- Resiliência e confiabilidade: ajuda as equipes a entender padrões de falhas para que possam implementar estratégias como failover automatizado, degradação graciosa e tolerância a falhas para aumentar a confiabilidade do sistema.

- Colaboração: promove a colaboração e o compartilhamento de conhecimento, ajudando os envolvidos a entenderem o comportamento do sistema e a tomar decisões informadas.

- Conformidade e auditoria: fornece um registro de atividades e eventos, permitindo apoiar os requisitos de conformidade e processos de auditoria baseados em padrões e regulamentos da indústria.

## Desafios da Observabilidade

Embora a observabilidade possa ser uma prática poderosa, ela também apresenta desafios que as empresas e equipes precisam enfrentar:

- Volume de dados, ruído e custos: grandes quantidades de dados que não têm o mesmo valor podem ser difíceis de gerenciar, avaliar e analisar. A amostragem pode ser útil para reduzir o tempo e os custos financeiros da telemetria.

- Variedade de dados: combinar e correlacionar dados de logs, métricas e rastreamentos pode ser complexo, especialmente quando diferentes componentes usam tipos de dados, formatos, estruturas ou padrões distintos. Frameworks como o OpenTelemetry podem aliviar esse problema.

- Processamento em tempo real: alcançar o processamento de dados de observabilidade em baixa latência e em grande escala pode ser tecnicamente difícil e exige muitos recursos.

- Privacidade e segurança dos dados: proteger os dados de observabilidade, que podem conter informações sensíveis, como dados de usuários ou logs de acesso, requer investimento e planejamento.

- Complexidade de sistemas distribuídos: garantir práticas consistentes de observabilidade em múltiplos serviços pode ser complexo e difícil de gerenciar.

- Sobrecarga de instrumentação: adicionar instrumentação de observabilidade às aplicações pode introduzir sobrecarga, impactando o desempenho.

- Habilidades e treinamento: usar ferramentas de observabilidade de forma eficaz e interpretar dados pode exigir treinamento para adquirir as habilidades necessárias e aproveitar todo o potencial da observabilidade.

- Mudança cultural: adotar a observabilidade pode exigir a superação da resistência à mudança para uma tomada de decisões baseada em dados e colaboração entre equipes.

- Políticas de retenção de dados: determinar por quanto tempo reter os dados de observabilidade para fins de análise e conformidade pode exigir um investimento jurídico.

Nem todos esses desafios se aplicam a todas as empresas, mas aqueles que se aplicam podem ser enfrentados por meio de uma combinação de soluções técnicas, melhores práticas e mudanças organizacionais.

## Conclusão

A observabilidade é uma peça-chave para o sucesso de qualquer sistema moderno. Implementando as ferramentas e práticas corretas, sua empresa pode garantir que seus sistemas estejam sempre funcionando da melhor forma, proporcionando uma experiência de usuário consistente e de alta qualidade.

***Fontes:***

- <a href="https://newrelic.com/blog/best-practices/what-is-observability" target="_blank" rel="nofollow, noreferrer,noopener,external">New Relic Blog: What is observability? By Yoram Mireles</a>

- <a href="https://www.honeycomb.io/blog/what-is-observability-key-components-best-practices" target="_blank" rel="nofollow, noreferrer,noopener,external">What Is Observability? Key Components and Best Practices By Emil Protalinski</a>

0 comments on commit 794fc75

Please sign in to comment.