Skip to content

Instantly share code, notes, and snippets.

View gbzarelli's full-sized avatar
Coding...

Guilherme Biff Zarelli gbzarelli

Coding...
View GitHub Profile
@gbzarelli
gbzarelli / Comparação dos Principais Garbage Collectors da JVM.md
Last active February 4, 2025 19:30
Comparação dos Principais Garbage Collectors da JVM #helpdev-blog

Comparação dos Principais Garbage Collectors da JVM

Garbage Collector Compactação e Fragmentação STW (Stop-The-World) Uso recomendado Estrutura da Heap Processos do GC Trade-offs Recursos Recomendados Outros detalhes
Serial GC Compacta após Major GC
Pode sofrer fragmentação antes da compactação
🔴 Alto (pausa total na coleta). Aplicações pequenas com pouca alocação de memória. Young Gen (Eden + Survivor) + Old Gen Mark → Sweep → Compact Baixo consumo de memória
STW muito longo
🔹 1 CPU Core
🔹 ≤ 1GB RAM
Usa uma única thread, causando longas pausas.
Parallel GC Compacta após Major GC ou Full GCPode sofrer fragmentação antes da compactação 🔴 Alto (mas usa múlt
@gbzarelli
gbzarelli / cpu-limit-kubernates-jvm.md
Last active February 4, 2025 19:33
Configurações de containers para aplicações JVM #helpde-blog
Configuração de Limit de CPU Vantagens Desvantagens Quando Usar
Sem Limit de CPU Permite que a JVM utilize todos os recursos disponíveis do nó, melhorando o desempenho e reduzindo contenção de CPU. Pode causar concorrência com outras cargas de trabalho no cluster, levando a variações imprevisíveis de desempenho. Recomendado para aplicações que requerem máximo desempenho e não competem por CPU com outras workloads.
Limit de CPU Definido Garante que a aplicação não utilize mais CPU do que o estipulado, proporcionando maior previsibilidade e controle. Pode causar throttling e reduzir a eficiência da JVM, especialmente para workloads de alto desempenho. Útil para clusters compartilhados onde a CPU precisa ser alocada de forma controlada entre diferentes aplicações.
@gbzarelli
gbzarelli / 0001-database-choise.md
Last active February 4, 2025 19:31
Exemplo de ADR #helpdev-blog

Escolha do Banco de Dados para o Serviço de Catálogo

Data: 07/01/2025
Status: Aprovado

Contexto:

Precisamos de um banco de dados para armazenar informações de produtos, incluindo descrições, preços e categorias. O sistema deve suportar um alto volume de consultas e permitir buscas eficientes.

Decisão:

@gbzarelli
gbzarelli / ingress-forward.yaml
Last active January 6, 2025 20:21
Forward http requests between services with AWS ALB Ingress - Redirect http request method between services #helpdev-blog
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-my-services
namespace: my-services
annotations:
alb.ingress.kubernetes.io/actions.ssl-redirect: >
{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-east-1:xxxx:xxxxx
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
@gbzarelli
gbzarelli / install-gitlab-with-runners.md
Last active November 19, 2024 16:20
GitLab - Como instalar o GitLab e configurar um Runner para CI/CD #helpdev-blog

(artigo recuperado do helpdev.com.br - criado em 08/2019)

Esse post vou abordar como realizar a instalação e configurações basicas do GitLab - CE , também como criar os executores de CI/CD para seu ambiente e mostrarei um caso prático de execução de uma pipeline . Não entrarei em detalhes sobre todas as coisas, pois a intenção é de uma documentação simples dos processos de instalação dessa ferramenta incrível;

É necessário para a execução do processo como um todo um ambiente linux com o Docker e docker-compose préviamente instalado, não vou abordar como realizar esses procedimentos nesse tutorial.

A instalação do Gitlab - CE é relativamente simples quando utilizamos o Docker, a seguir segue o compose já com algumas configurações de mapeamento de volumes e configuração de endereços, note que o IP representado no arquivo é da maquina local que estou realizando a configuração, caso tenha um domínio próprio basta subistituir, caso não tenha insira seu IP local.

@gbzarelli
gbzarelli / webhook.md
Last active October 27, 2024 20:58
Arquitetura - Distribuição de eventos com Kafka e Webhook #helpdev-blog

Distribuição de eventos com Kafka e Webhook

(o projeto: https://github.com/gbzarelli/events-distribution-platform)

O projeto events-distribution-platform tem como intuito validar uma arquitetura que seja capaz de distribuir eventos utilizando o Kafka como plataforma de Streamming e notificar clientes via Webhooks.

Os webhooks serão cadastrados em uma base NoSQL baseado em filtros de tipo de eventos, assim cada usuário (associado a uma organização) poderia ter diferentes tipos de filtros para notificar diferentes endereços.

Arquitetura

@gbzarelli
gbzarelli / gas_detect_mq2.c
Created August 28, 2024 14:39
[Gas detect] Detector de Gás com Arduino + MQ2
// Definição dos pinos
const int gasSensorPin = A3; // Pino analógico do sensor MQ-2
const int buzzerPin = 8; // Pino digital para o buzzer
// Definição do valor limite para acionar o buzzer (ajuste conforme necessário)
const int gasThreshold = 100;
const int maxGasLevel = 1023; // Valor máximo que o sensor pode ler (10 bits)
// Frequência mínima e máxima para o buzzer
const int minFrequency = 100; // Frequência mínima do buzzer em Hz
@AllArgsConstructor
public class ReshippingOrderUseCase {
private final OrderRepository orderRepository;
private final CustomerRepository customerRepository;
private final OrderRepository orderRepository;
private final ShippingProviderClient shippingProviderClient;
private final LogisticClient logisticsClient;
@gbzarelli
gbzarelli / ArquiteturaHexagonal.md
Last active October 26, 2024 20:16
Exemplo de implementação da Arquitetura Hexagonal com garantias por testes unitários #helpdev-blog

Arquitetura Hexagonal

A Arquitetura Hexagonal promove a modularidade, flexibilidade e manutenibilidade do código, permitindo que as mudanças nos componentes externos não afetem diretamente a lógica de negócios. Essa abordagem é especialmente útil em sistemas nos quais a evolução das regras de negócio é frequente, e a capacidade de adaptação a mudanças é crucial.

Estrutura

A estrutura proposta por Alister Cockburn em seu artigo, visa o isolamento da camada de aplicação (core do negócio) fornecendo portas para as implementações de entrada e saída da aplicação, para atender os padrões propostos pela arquitetura, usamos o seguinte modelo de estrutura para implementação

image