Executando verificação de segurança...
15

Você Tem Curisidade e Coragem. Mas Não Basta.

Parabéns, jovem padawan da nuvem! Reconstruir a AWS é como tentar escalar o Everest. Mas você esta de chinelos.

Seu “S3” atual? Um hello world glorificado. Um NGINX com autoindex on; e um formulário HTML de upload é mais robusto, escalável e seguro que seu código. Mas reconheço sua ambição. Você está no caminho certo… se aguentar a porrada que vem a seguir. Mas no final:

  1. Seu "S3" terá mais fundamento que 99% dos projetos no GitHub.
  2. Você vai rir de termos como "serverless" e "cloud-native".
  3. Recrutadores da AWS vão te mandar DM no LinkedIn.

Aula 1: C ou Morte – Onde a Infra Nasce (e Seus Sonhos Morrem?)

Verdade Cruel: Actix é um playground para crianças. Enquanto você brinca de route("/upload"), o kernel śo entende epoll.h sockets.h, pthreads.h para lidar com milhões de conexões. Seu código Rust é um disfarce bonito para a ignorância.

Lição: C te ensina o que Rust esconde: alocação de memória, syscalls, e o gosto amargo do fracasso.

Exercícios de Humilhação:

  1. Desafio Fácil: Escreva um servidor HTTP em C que responde 'Hello World'. Use socket(), bind(), listen(), accept().
    Vai travar na primeira conexão. Bem-vindo à vida real.

  2. Desafio Médio: Adicione suporte centenas de concorrentes com pthreads.h.

  3. Desafio Dificl: Suporte a milhares conexões concorrentes com um thread pool

  4. Desafio Hardcore: Escalone para dezenas de milhares de conexoes usando epoll e threads

Aula 2: Filesystems – Onde Seus Dados Choram (e Você Também)

Verdade Cruel: Seu “S3” salva arquivos em pastas como um estagiário bêbado. Você está usando uma vassoura para cavar um buraco.

Lição: Dados são sagrados. Se você não trata eles como tal, seu S3 é um sacrilégio.

Exercícios de Sadismo Criativo :

  1. Desafio Fácil: Configure ZFS numa VM. Crie um snapshot, corrompa um arquivo, e restaure.
  2. Desafio Médio: Crie um filesystem FUSE em Rust que representa arquivos e pastas como blobs e metadata no SQLite.
  3. Desafio Hardcore: Implemente Merkle Trees para detectar corrupção de arquivos. Divida um arquivo em chunks, gere hashes, e reconstrua como um quebra-cabeça.

Aula 3: Redes – Onde Pacotes Viram Pesadelos (e Você Vira Engenheiro de Infra)

Verdade Cruel: Seu S3 não sabe o que é uma ameaça. Enquanto isso, a AWS usa eBPF/XDP para filtrar ataques no kernel.

Lição: Rede é guerra. Se você não domina o kernel, é só um soldado de brinquedo.

Exercícios de Tortura Kerneliana:

  1. Desafio Fácil: Bloqueie IPs com mais de 100 reqs/segundo usando iptables.
  2. Desafio Hardcore: Use eBPF para medir o tempo entre accept() e write() no disco.
  3. Desafio Insano: Redirecione tráfego entre VMs com XDP.

Aula Final: Formatura do Jardim de Infância da Infra.

Você é um Diamante. Enquanto outros brincam de Kubernetes, você está cavando as camadas mais profundas.

A AWS começou com um servidor PHP e um sonho. Você começou com Rust e arrogância. Mas daqui a 10 anos, talvez eu trabalhe para você.

Projeto Final: Reescreva seu S3 com

  • hyper.rs
  • Rate limiting via eBPF
  • Sistema de arquivos em ZFS

Depois, volte aqui. Vou te ensinar como construir um hipervisor do zero.

Um abraço e bons estudos!

Carregando publicação patrocinada...
5

Muto obrigado pelas "pancadas", vou estudar mais sobre, vou fazer tipo uma série aqui no TabNews mostrando a evolução desse projeto, espero que me ajude com isso 👍.
Então quero estudar mais sobre C, porém ainda não me sinto seguro(é doideira isso mas sim), estou criando esse projeto para me OBRIGAR a entender de programação low-level, acho que Rust é uma porta de entrada MUIIITO melhor do que C/C++ pra isso, já que a sintaxe dele lembra bastante do JS por exemplo, diferente do C/C++, então quero ir devagar nisso, estou querendo usar coisas "prontas" tipo LXC, KVM, ZFS(como você mencionou para criar volumes de dados e distribuir isso em servidores diferentes), estou usando OVS(Open Virtual Switch) para criar adaptadores de rede virtual para usar VXLAN para conectar servidores em L2 passando por L3, acho que vai ficar muito bom, novamente muito obrigado por mostrar sobre estudar

2

Rust parece JS? Ilusão. JS foi inspirado em C. Rust é C++ disfarçado de moderno.

  1. C vs C++ vs Rust:

C (K&R): 150 páginas. Simples e Direto.

C++ (Stroustrup): 2000 páginas. Monstro cheio de bagagem legada.

Rust (Livro Oficial): 600 páginas. Nem cobre unsafe direito.

  1. Compilar para nativo sem GC ≠ Baixo nível:

Baixo nível: Escrever drivers, manipular page tables, criar um scheduler. Lidar com os bits na CPU e barramentos.

  1. C é o Passado e o Presente (Rust pode ser Futuro):
    Linux, ZFS, KVM, e 99% das infraestruturas globais são C. Ignorar isso é como querer ser chef sem saber fritar um ovo.

Verdade Final:

Rust é útil? Sim. Melhor que C para iniciar no low-level? Nunca. C é a base. Sem ela, você é um turista da computação.

P.S.: Quando seu código C der segfault pela 100ª vez, você vai entender por que Rust existe. Mas primeiro, entenda o problema.