0
respostas

System Design: O divisor de águas para a carreira internacional Senior

Para quem almeja o mercado internacional, o System Design não é apenas uma habilidade técnica; é o critério que diferencia um desenvolvedor Pleno de um Senior ou Staff Engineer, enfim, já tenho essa consciência formada, só tenho que concretizá-la de forma plena.

Nas Big Techs, assume-se que você domina a escrita de código. O teste real está na sua capacidade de desenhar sistemas resilientes e, acima de tudo, justificar seus trade-offs.

A pergunta é, na carreira de "Backend" engloba todos os pilares abaixo? Ao finalizar a carreira estarei confortável para enfrentar uma entrevista técnica de alto nível?

**Eu sei que existem diversos livros que tratam bem do tema, contudo, no primeiro instante preciso de obter a visão de um professor, sobretudo que tenha vivência na prática com desafios constantes em fintech's, foodtech's e etc. Atualmente presto serviços com JAVA, microservices, framewoks, SOLID, Clean Arch, Cache Aside, cloud em uma instituição financeira de grande porte há quase 4 anos. Mas sinto que para subir para o próximo nível, tenho que evoluir nesse sentido, já que pretendo está inserido em times que lidam com esse tipo de cenário constantemente. **

Grato!


systemdesign

1. Escalabilidade e Disponibilidade
Vertical vs. Horizontal Scaling: Decidir entre aumentar o hardware de uma instância ou distribuir a carga em um cluster de máquinas menores.

Load Balancers: O papel do Nginx ou AWS ELB na distribuição de tráfego e terminação TLS.

2. Estratégias de Dados e Persistência
SQL vs. NoSQL: Quando priorizar a consistência ACID (PostgreSQL) versus a escalabilidade horizontal e flexibilidade de esquema (Cassandra, DynamoDB).

Caching Strategy: Uso de Redis ou Memcached não apenas para velocidade, mas para reduzir o throughput direto no banco de dados (Write-through vs. Cache-aside).

3. Comunicação e Desacoplamento
Síncrona (REST, gRPC): Ideal para baixa latência e comunicação direta.

Assíncrona (Event-Driven): Uso de Message Brokers (RabbitMQ, Kafka) para garantir que picos de carga não derrubem o sistema e para permitir o processamento em background.

4. Consistência e Teorema CAP
Teorema CAP: Entender que em um sistema distribuído, sob uma partição de rede, você deve escolher entre Consistência ou Disponibilidade.

Database Sharding & Replication: Como dividir dados para ganhar performance e como a replicação (Leader-Follower) ajuda na leitura e tolerância a falhas.