VOLUME 06
The everhere System Design
A Infraestrutura
da Experiência

A arquitetura tecnológica que transforma uma visão em um sistema vivo

Como construir uma plataforma capaz de conectar milhões de pessoas a experiências reais — com segurança, escalabilidade e integridade — durante décadas.

Volume 06
Capítulos 12
Autor Fernando Vieira
Parte I — Fundamentos

Introdução

Construindo a infraestrutura por trás da experiência

Existe uma diferença fundamental entre imaginar uma grande experiência e construir uma plataforma capaz de entregá-la para milhões de pessoas.

Uma visão pode nascer de uma ideia simples:

Ajudar pessoas a viverem mais experiências significativas.

Mas transformar essa ideia em realidade exige algo muito maior.

Exige um sistema.

Um sistema capaz de conectar pessoas, experiências, comunidades, pagamentos, inteligência, recomendações, confiança e memórias em uma única estrutura tecnológica.

A everhere não será apenas uma aplicação.

Ela será uma infraestrutura de experiências humanas.

E toda infraestrutura precisa de decisões fundamentais.

Como os dados serão armazenados?

Como as informações serão protegidas?

Como a plataforma crescerá de milhares para milhões de usuários?

Como garantiremos velocidade sem perder qualidade?

Como criaremos inteligência sem comprometer privacidade?

Como construiremos uma tecnologia capaz de evoluir durante décadas?

Essas perguntas não são detalhes técnicos.

Elas definem o futuro da empresa.

Durante muito tempo, empresas digitais foram construídas com uma lógica simples:

Criar uma solução.Colocar no mercado.Corrigir problemas conforme aparecem.

Essa abordagem funcionou para muitos produtos.

Mas a everhere nasce com uma ambição diferente.

Ela não pretende apenas resolver uma necessidade pontual.

Ela pretende criar uma nova categoria:

A infraestrutura que conecta pessoas às experiências que tornam a vida mais significativa.

Por isso, a arquitetura precisa ser pensada desde o início para suportar essa visão.

Não devemos construir apenas aquilo que funciona hoje.

Devemos construir aquilo que permitirá a everhere continuar funcionando quando for muito maior.

Uma decisão tecnológica errada no início pode limitar uma empresa durante anos.

Escolher uma arquitetura difícil de escalar.

Escolher ferramentas inadequadas para o tipo de dado que manipulamos.

Criar sistemas frágeis que não suportam crescimento.

Ignorar segurança até que aconteça um problema.

Construir funcionalidades isoladas sem uma visão integrada.

Tudo isso pode gerar uma dívida tecnológica que impede a evolução do produto.

Grandes plataformas digitais não cresceram apenas porque tiveram boas ideias.

Elas cresceram porque construíram sistemas capazes de acompanhar suas ideias.

A tecnologia por trás da everhere precisa respeitar alguns princípios fundamentais.

Primeiro:

Confiabilidade antes de velocidade.

Uma plataforma que conecta pessoas, experiências e comunidades precisa ser confiável.

Uma reserva não pode desaparecer.

Um pagamento não pode falhar.

Uma memória criada por um usuário não pode ser perdida.

Uma informação pessoal não pode ser exposta.

A confiança será um dos maiores ativos da everhere.

Segundo:

Segurança desde a origem.

Segurança não será uma camada adicionada depois.

Ela precisa estar presente na arquitetura.

Dados pessoais.

Informações financeiras.

Localização.

Histórico de experiências.

Preferências.

Relacionamentos.

Tudo aquilo que torna a plataforma poderosa também torna esses dados extremamente valiosos.

A everhere precisa ser construída com o mesmo nível de responsabilidade esperado das maiores plataformas digitais do mundo.

Terceiro:

Escalabilidade sem perder simplicidade.

Uma das maiores armadilhas tecnológicas é criar complexidade antes da necessidade.

Sistemas extremamente complexos podem parecer preparados para o futuro, mas muitas vezes dificultam a evolução.

A melhor arquitetura não é a mais sofisticada.

É aquela que permite crescer mantendo clareza.

Começar simples.

Construir corretamente.

E evoluir conforme a necessidade real.

Quarto:

Tecnologia a serviço da experiência humana.

A arquitetura da everhere não existe para criar um aplicativo mais rápido.

Ela existe para permitir melhores experiências.

Cada decisão técnica precisa responder a uma pergunta maior:

Isso ajuda uma pessoa a viver algo mais significativo?

Porque uma plataforma de experiências não pode ser avaliada apenas por métricas tradicionais.

Tempo de tela.

Cliques.

Sessões.

Visualizações.

Esses números podem ser importantes.

Mas não são o objetivo final.

O objetivo final é gerar vida vivida.

A arquitetura da everhere será construída observando os maiores sistemas digitais do mundo.

Empresas como redes sociais globais, plataformas de streaming, marketplaces, aplicativos de mobilidade e sistemas de inteligência artificial enfrentaram problemas semelhantes:

Milhões de usuários.

Grandes volumes de dados.

Necessidade de personalização.

Alta disponibilidade.

Segurança.

Escalabilidade.

Mas a everhere também possui desafios próprios.

Ela não é apenas uma rede social.

Não é apenas um marketplace.

Não é apenas uma plataforma de eventos.

Não é apenas uma comunidade.

Ela combina diversos mundos:

Pessoas.

Experiências.

Criadores.

Comunidades.

Pagamentos.

Recomendações.

Memórias.

Relacionamentos.

Por isso, não devemos copiar arquiteturas existentes.

Devemos aprender com elas.

Entender seus princípios.

Avaliar suas escolhas.

E construir aquilo que faz sentido para a nossa realidade.

Este livro existe para tomar essas decisões.

Não como um documento técnico isolado.

Mas como a constituição tecnológica da everhere.

Aqui definiremos:

A arquitetura geral da plataforma.

Os princípios de engenharia.

A escolha das tecnologias.

O modelo de dados.

O armazenamento das informações.

A infraestrutura.

Os sistemas de segurança.

A escalabilidade.

A inteligência artificial.

As integrações.

Os fluxos internos.

As decisões que permitirão transformar uma visão em uma plataforma real.

Cada escolha será avaliada considerando quatro perguntas fundamentais:

1. Isso é seguro?Protege pessoas, dados e confiança?

2. Isso escala?Consegue acompanhar o crescimento da plataforma?

3. Isso é sustentável?Permite evolução sem criar uma estrutura impossível de manter?

4. Isso melhora a experiência?Ajuda a everhere a cumprir sua missão?

A tecnologia muda rapidamente.

Linguagens evoluem.

Ferramentas desaparecem.

Novas arquiteturas surgem.

Por isso, este livro não será construído sobre modismos.

Ele será construído sobre princípios.

Porque uma tecnologia específica pode mudar.

Mas a necessidade de criar sistemas confiáveis, seguros e escaláveis continuará existindo.

A maior parte das pessoas nunca verá a arquitetura por trás da everhere.

Elas não verão bancos de dados.

Não verão servidores.

Não verão APIs.

Não verão filas de processamento.

Não verão sistemas distribuídos.

Elas verão algo muito mais simples:

Uma experiência encontrada.

Uma pessoa conhecida.

Uma memória criada.

Uma história que passou a existir.

E esse é o verdadeiro propósito da arquitetura.

Desaparecer.

A melhor tecnologia é aquela que permite que as pessoas parem de pensar na tecnologia.

Porque quando um sistema funciona perfeitamente, ele deixa de ser percebido.

Ele simplesmente permite que algo maior aconteça.

A vida.

A everhere não será construída apenas como um software.

Será construída como uma infraestrutura para experiências humanas.

E este livro define a fundação que permitirá essa visão existir.

1
Parte I — Fundamentos

Princípios Arquiteturais Fundamentais

As decisões que nunca mudam

Por que este capítulo existe?

Antes de escolher uma linguagem, um banco de dados ou um provedor de nuvem, precisamos definir algo muito mais importante: os princípios que orientarão todas as decisões técnicas da everhere.

Tecnologias evoluem.

Frameworks mudam.

Linguagens deixam de ser populares.

Infraestruturas são substituídas.

Mas uma boa arquitetura permanece porque foi construída sobre princípios sólidos, e não sobre modismos.

Este capítulo define esses princípios.

Eles serão a referência para todas as decisões apresentadas ao longo deste livro.

Toda arquitetura é uma coleção de escolhas

Não existe uma arquitetura perfeita.

Existe apenas uma arquitetura adequada para um determinado problema.

O erro mais comum de muitas empresas de tecnologia é começar perguntando:

"Qual linguagem vamos usar?"

"Qual banco de dados é melhor?"

"Qual framework está em alta?"

Essas perguntas são importantes.

Mas elas vêm depois.

A pergunta correta é:

Que tipo de produto estamos construindo?

A everhere não é apenas uma rede social.

Também não é apenas um marketplace.

Nem apenas um aplicativo de eventos.

Ela reúne elementos de todos esses modelos ao mesmo tempo.

Precisamos suportar:

  • milhões de usuários
  • relacionamentos complexos entre pessoas
  • criação e descoberta de experiências
  • geolocalização
  • recomendações inteligentes
  • conteúdo multimídia
  • mensagens
  • pagamentos
  • IA
  • comunidades

crescimento internacional.

Isso exige uma arquitetura extremamente sólida.

Princípio 1 — Simplicidade antes da complexidade

Existe uma tendência muito comum em empresas de tecnologia:

Construir sistemas pensando em problemas que talvez nunca existam.

Isso gera arquiteturas enormes.

Difíceis de manter.

Difíceis de evoluir.

Difíceis de entender.

Na everhere seguiremos o princípio oposto.

Toda complexidade precisa ser conquistada.

Se um problema pode ser resolvido de forma simples, essa será a solução escolhida.

Isso significa:

  • menos serviços
  • menos infraestrutura
  • menos componentes

menos pontos de falha.

Arquitetura elegante não é aquela que possui mais tecnologias.

É aquela que resolve mais problemas com menos complexidade.

Princípio 2 — Escalar somente quando necessário

Existe um mito muito comum:

"Precisamos construir como Google, Netflix ou Uber."

Não precisamos.

Essas empresas possuem centenas de milhões de usuários.

A everhere começará com centenas.

Depois milhares.

Depois dezenas de milhares.

Depois milhões.

Cada fase exige uma arquitetura diferente.

Por isso adotaremos uma estratégia progressiva.

A arquitetura deve crescer junto com o produto.

Jamais antes dele.

Isso reduz:

  • custo
  • tempo de desenvolvimento
  • manutenção

risco técnico.

Escalabilidade será construída por etapas.

Nunca por antecipação.

Princípio 3 — Segurança desde o primeiro dia

Segurança não é um recurso.

É um requisito fundamental.

A everhere armazenará informações extremamente sensíveis.

Localização.

Relacionamentos.

Histórico de experiências.

Conversas.

Fotografias.

Preferências.

Dados financeiros.

Essas informações pertencem aos usuários.

Nossa responsabilidade é protegê-las.

Por isso adotaremos o princípio de Security by Design.

Toda funcionalidade deverá nascer considerando:

  • autenticação
  • autorização
  • criptografia
  • auditoria
  • privacidade

rastreabilidade.

Não existirá um momento futuro para "adicionar segurança".

Ela fará parte da arquitetura desde a primeira linha de código.

Princípio 4 — Privacidade como vantagem competitiva

Muitas empresas tratam dados como um ativo comercial.

A everhere fará o contrário.

Trataremos dados como uma responsabilidade.

O objetivo da plataforma não é explorar o comportamento das pessoas.

É ajudá-las a viver melhores experiências.

Isso muda completamente diversas decisões técnicas.

Sempre perguntaremos:

Precisamos realmente armazenar esse dado?

Se a resposta for não, ele não será armazenado.

Se puder ser anonimizado, será.

Se puder ser criptografado, será.

Se puder permanecer apenas no dispositivo do usuário, essa possibilidade será considerada primeiro.

A melhor informação protegida é aquela que nunca precisou ser coletada.

Princípio 5 — Disponibilidade permanente

Experiências acontecem no mundo real.

Um usuário pode precisar da everhere:

  • durante uma viagem
  • ao chegar em um evento
  • procurando um grupo

encontrando uma experiência próxima.

O sistema precisa estar disponível.

Sempre.

Isso exige uma arquitetura preparada para:

  • redundância
  • recuperação automática
  • monitoramento constante

atualização sem interrupção.

Nosso objetivo será atingir disponibilidade compatível com aplicações globais modernas.

Cada minuto de indisponibilidade representa experiências que deixam de acontecer.

Princípio 6 — Performance é parte da experiência

As pessoas não avaliam apenas funcionalidades.

Elas avaliam sensações.

Aplicativos rápidos parecem inteligentes.

Aplicativos lentos parecem quebrados.

Milissegundos importam.

Por isso performance não será tratada apenas como otimização.

Ela será considerada parte do design do produto.

Toda decisão técnica será avaliada considerando:

  • tempo de carregamento
  • tempo de resposta
  • consumo de bateria
  • consumo de rede

uso de memória.

A melhor funcionalidade é aquela que quase não faz o usuário esperar.

Princípio 7 — Arquitetura preparada para evolução

Nenhuma versão da everhere será definitiva.

Novas funcionalidades surgirão continuamente.

Novos mercados.

Novos idiomas.

Novos modelos de negócio.

Novas integrações.

Novas inteligências artificiais.

A arquitetura precisa aceitar mudanças.

Isso significa evitar dependências rígidas.

Cada componente deverá poder evoluir sem exigir a reconstrução completa do sistema.

Uma boa arquitetura não é aquela que prevê o futuro.

É aquela que consegue adaptar-se quando o futuro chega.

Princípio 8 — Inteligência Artificial como infraestrutura

Muitas empresas tratam IA como uma funcionalidade.

Na everhere ela será parte da arquitetura.

Desde o primeiro dia assumiremos que modelos inteligentes participarão de diversos processos:

  • recomendação de experiências
  • descoberta de comunidades
  • busca semântica
  • tradução automática
  • moderação
  • personalização

assistência ao usuário.

Isso significa construir um sistema preparado para integrar diferentes modelos de IA ao longo dos anos.

A arquitetura nunca dependerá de um único fornecedor.

Modelos evoluem rapidamente.

Nossa infraestrutura também precisa evoluir.

Princípio 9 — O mundo real é o centro do sistema

Este talvez seja o princípio mais importante de todos.

A everhere não existe para aumentar tempo de tela.

Ela existe para aumentar tempo vivido.

Toda decisão técnica será analisada sob uma pergunta simples:

Esta funcionalidade aproxima ou afasta a pessoa da experiência real?

Se aumentar dependência digital, ela precisa ser revista.

Se gerar mais distração do que presença, ela precisa ser redesenhada.

Se competir com a vida, perdeu seu propósito.

Nossa arquitetura servirá às experiências.

Nunca o contrário.

Princípio 10 — Arquitetura construída para décadas

A everhere não está sendo desenvolvida para um lançamento.

Está sendo construída para existir por muitos anos.

Isso exige decisões conservadoras.

Preferiremos tecnologias:

  • amplamente utilizadas
  • maduras
  • estáveis
  • bem documentadas
  • sustentadas por grandes comunidades

adotadas pelas maiores empresas do mundo.

Nem sempre a tecnologia mais nova é a melhor.

Na maioria das vezes, a melhor escolha é aquela que continuará sendo excelente daqui a dez anos.

A decisão mais importante

Ao longo deste livro discutiremos:

  • linguagens
  • bancos de dados
  • APIs
  • filas
  • mensageria
  • infraestrutura
  • nuvem
  • segurança
  • observabilidade

inteligência artificial.

Mas nenhuma dessas decisões será tomada apenas porque uma tecnologia é popular.

Cada escolha responderá a uma única pergunta:

Ela ajuda a everhere a cumprir sua missão de conectar pessoas ao mundo real da forma mais segura, escalável, confiável e sustentável possível?

Se a resposta for sim, ela fará parte da arquitetura.

Se não, por mais moderna que seja, ficará de fora.

Porque a melhor arquitetura nunca é a mais complexa.

É aquela que desaparece para que a experiência apareça.

2
Parte I — Fundamentos

A Arquitetura Oficial da everhere

Como o sistema será organizado

Por que este capítulo existe?

Depois de definir os princípios que orientam nossa engenharia, precisamos responder à primeira grande decisão técnica da plataforma:

Como a everhere será construída?

Essa pergunta parece simples.

Mas dela dependem praticamente todas as demais decisões deste livro.

Uma arquitetura mal escolhida gera sistemas difíceis de evoluir, lentos para desenvolver, caros para operar e frágeis para crescer.

Uma arquitetura bem escolhida cria exatamente o oposto.

Ela permite que a plataforma evolua continuamente sem perder estabilidade.

Por isso, este capítulo define a arquitetura oficial da everhere.

A primeira decisão

Durante muitos anos, existiu uma ideia que dominou o desenvolvimento de software.

Quanto maior a empresa, mais microsserviços ela deveria ter.

Essa ideia fez inúmeras empresas criarem arquiteturas extremamente complexas muito antes de precisarem delas.

Na prática, muitas startups passaram anos resolvendo problemas de infraestrutura que nunca deveriam ter existido.

A everhere seguirá um caminho diferente.

Não construiremos uma arquitetura para parecer moderna.

Construiremos uma arquitetura para durar.

O que a everhere precisa resolver

Antes de escolher qualquer modelo arquitetural, precisamos entender a natureza do produto.

A everhere não executa apenas uma função.

Ela reúne diversos domínios altamente conectados.

Entre eles:

  • usuários
  • autenticação
  • perfis
  • amizades
  • comunidades
  • experiências
  • organizadores
  • participantes
  • recomendações
  • mapas
  • pagamentos
  • mensagens
  • notificações
  • inteligência artificial
  • avaliações
  • mídia
  • histórico

administração.

Todos esses módulos compartilham informações constantemente.

Separá-los prematuramente aumentaria a complexidade sem trazer benefícios reais.

A arquitetura escolhida

Após analisar o tipo de produto que estamos construindo, a decisão oficial da everhere será:

Modular Monolith

Essa será a arquitetura da plataforma durante toda sua fase inicial de crescimento.

O que é um Modular Monolith?

É um único sistema.

Mas organizado internamente em módulos completamente independentes.

Cada módulo possui:

  • responsabilidades claras
  • regras próprias
  • interfaces bem definidas

baixo acoplamento.

Para quem desenvolve, a sensação é semelhante à de trabalhar com microsserviços.

Para quem opera, existe apenas uma aplicação.

Isso reduz drasticamente a complexidade.

Por que essa arquitetura?

Porque ela oferece o melhor equilíbrio entre simplicidade e escalabilidade.

Ela permite:

  • desenvolvimento rápido
  • deploy simples
  • baixo custo operacional
  • facilidade para testes
  • maior produtividade da equipe
  • menor número de falhas distribuídas

evolução gradual.

Ao mesmo tempo, mantém uma separação clara entre os diferentes domínios do sistema.

Os módulos da everhere

A arquitetura será organizada em módulos independentes.

Entre eles:

Identity

Responsável por:

  • autenticação
  • autorização
  • contas
  • segurança

sessões.

User

Responsável por:

  • perfil
  • preferências
  • configurações

histórico.

Social

Responsável por:

  • amizades
  • seguidores
  • conexões

relacionamentos.

Community

Responsável por:

  • comunidades
  • grupos
  • pertencimento

administração.

Experience

O núcleo da plataforma.

Gerencia:

  • experiências
  • inscrições
  • participantes
  • capacidade
  • agenda

localização.

Discovery

Responsável por:

  • busca
  • recomendações
  • geolocalização
  • ranking

personalização.

Messaging

Mensagens privadas.

Chats.

Comunicação entre participantes.

Media

Fotos.

Vídeos.

Uploads.

Processamento de mídia.

Payment

Pagamentos.

Repasses.

Comissões.

Assinaturas.

Notification

Push.

E-mail.

SMS.

WhatsApp.

Alertas.

AI

Toda inteligência artificial ficará isolada em um módulo próprio.

Isso permitirá trocar modelos de IA futuramente sem impactar o restante do sistema.

Admin

Ferramentas internas.

Suporte.

Moderação.

Backoffice.

Auditoria.

Comunicação entre módulos

Existe outro princípio importante.

Nenhum módulo poderá acessar diretamente a estrutura interna de outro.

Toda comunicação ocorrerá através de interfaces públicas.

Isso gera diversas vantagens.

Baixo acoplamento.

Maior segurança.

Facilidade de testes.

Maior previsibilidade.

Evolução independente.

Cada módulo conhece apenas aquilo que precisa conhecer.

Nada mais.

A regra da dependência

A arquitetura seguirá uma regra simples.

As dependências sempre apontam para o centro do domínio.

Nunca para detalhes de implementação.

Isso significa que:

  • o negócio nunca dependerá do banco de dados
  • o negócio nunca dependerá do framework

o negócio nunca dependerá da nuvem.

As regras da everhere continuarão funcionando mesmo que tecnologias sejam substituídas no futuro.

E os microsserviços?

A resposta é simples.

Ainda não.

Microsserviços resolvem problemas reais.

Mas também criam novos problemas.

Mais infraestrutura.

Mais monitoramento.

Mais deploys.

Mais redes.

Mais filas.

Mais sincronização.

Mais observabilidade.

Mais custo.

Mais pessoas.

No estágio atual da everhere, esses custos superam os benefícios.

Quando a arquitetura poderá evoluir?

O Modular Monolith foi escolhido justamente porque permite crescimento gradual.

Se, no futuro, algum módulo exigir escala muito superior aos demais, ele poderá ser extraído como um serviço independente.

Por exemplo.

O módulo de Mensagens.

Ou o módulo de Inteligência Artificial.

Ou o mecanismo de Busca.

Ou o sistema de Recomendações.

Nenhuma dessas mudanças exigirá reconstruir toda a plataforma.

A arquitetura já nascerá preparada para isso.

Essa é uma evolução natural, baseada em necessidade real, e não em antecipação.

API First

Toda comunicação externa ocorrerá através de APIs.

A API será tratada como um produto.

Isso significa:

  • documentação
  • versionamento
  • padronização
  • consistência

segurança.

A interface da aplicação nunca dependerá diretamente do banco de dados.

Ela dependerá das APIs oficiais da plataforma.

Essa decisão facilita futuras integrações.

Aplicativos.

Web.

Parceiros.

IA.

Serviços externos.

Tudo conversará através da mesma camada.

Cloud Native

A everhere será construída como uma aplicação Cloud Native.

Isso significa que a arquitetura assume, desde o início, que o sistema será executado na nuvem.

Não haverá dependências de servidores físicos.

Nem configurações específicas de máquinas.

Toda infraestrutura poderá ser reproduzida automaticamente.

Isso facilita:

  • deploy
  • escalabilidade
  • backup
  • recuperação
  • automação

alta disponibilidade.

Eventos quando fizerem sentido

Nem toda comunicação precisa acontecer imediatamente.

Algumas tarefas podem ocorrer em segundo plano.

Por exemplo:

  • envio de e-mails
  • processamento de imagens
  • geração de notificações
  • atualização de recomendações

treinamento de modelos de IA.

Essas operações utilizarão processamento assíncrono.

Isso torna a plataforma mais rápida para o usuário e reduz o impacto de tarefas pesadas.

Mas adotaremos esse modelo apenas onde ele gerar benefícios claros.

A comunicação síncrona continuará sendo a regra para operações críticas do negócio.

Uma arquitetura preparada para crescer

O maior objetivo desta arquitetura não é apenas suportar milhões de usuários.

É permitir que a equipe continue desenvolvendo rapidamente durante muitos anos.

Uma arquitetura excelente não é aquela que impressiona engenheiros.

É aquela que torna o desenvolvimento previsível.

Que facilita manutenção.

Que reduz erros.

Que simplifica decisões.

Que continua compreensível mesmo depois de milhares de funcionalidades.

A decisão oficial da everhere

A arquitetura oficial da plataforma será baseada em um Modular Monolith, organizado por domínios de negócio, com comunicação por interfaces bem definidas, APIs como ponto único de integração e infraestrutura preparada para evoluir gradualmente para serviços independentes quando houver justificativa técnica.

Não escolhemos essa arquitetura porque ela é a mais moderna.

Escolhemos porque ela representa o melhor equilíbrio entre simplicidade, produtividade, segurança, custo operacional e capacidade de crescimento.

Ela permitirá que a everhere evolua por muitos anos sem que a engenharia se torne um obstáculo para a missão da plataforma: aproximar pessoas de experiências que transformam suas vidas.

3
Parte II — A Stack Tecnológica

O Backend da everhere

Escolhendo a tecnologia que sustentará toda a plataforma

Por que este capítulo existe?

A arquitetura define como o sistema é organizado.

Agora precisamos definir com o que ele será construído.

Essa decisão influencia diretamente:

  • velocidade de desenvolvimento
  • facilidade de contratação de engenheiros
  • estabilidade
  • segurança
  • escalabilidade
  • custo de infraestrutura

capacidade de evolução durante os próximos dez anos.

Uma escolha errada pode obrigar uma empresa a reescrever todo o sistema no futuro.

Uma escolha correta pode sustentar décadas de crescimento.

Por isso, este capítulo estabelece oficialmente quais tecnologias serão utilizadas no backend da everhere e por quê.

A decisão mais importante

A primeira escolha é a linguagem principal da plataforma.

Hoje existem excelentes opções:

Java

Kotlin

Go

Rust

C#

Python

Node.js (TypeScript)

Todas podem construir grandes sistemas.

Mas a everhere não precisa apenas de desempenho.

Ela precisa de equilíbrio.

Nosso backend deverá atender simultaneamente:

  • rede social
  • marketplace
  • geolocalização
  • pagamentos
  • mensagens
  • inteligência artificial
  • recomendações
  • APIs públicas
  • administração

milhões de usuários.

Poucas linguagens conseguem fazer tudo isso mantendo alta produtividade.

A linguagem oficial

A linguagem oficial da everhere será:

TypeScript

Mais especificamente:

Node.js + TypeScript

Essa será a base oficial do backend.

Por que TypeScript?

Porque ele oferece o melhor equilíbrio entre produtividade e robustez.

Seus principais benefícios são:

  • tipagem forte
  • grande comunidade
  • ecossistema gigantesco
  • excelente integração com IA
  • desenvolvimento extremamente rápido
  • facilidade para contratar desenvolvedores

baixo custo de manutenção.

Mas Node não é lento?

Essa crítica era comum há alguns anos.

Hoje ela não representa mais a realidade.

Node.js é extremamente eficiente para aplicações baseadas em:

  • requisições HTTP
  • APIs
  • I/O
  • banco de dados
  • mensageria
  • streaming

tempo real.

E esse é exatamente o perfil da everhere.

O perfil da plataforma

A everhere não executa cálculos científicos.

Não renderiza filmes.

Não faz simulações físicas.

O sistema passa a maior parte do tempo:

  • consultando banco
  • enviando respostas
  • recebendo eventos
  • armazenando informações

comunicando serviços.

Node.js foi criado exatamente para esse tipo de aplicação.

Por que TypeScript e não JavaScript?

Porque projetos grandes precisam de previsibilidade.

TypeScript adiciona:

  • tipagem
  • interfaces
  • contratos
  • autocompletar
  • refatoração segura

detecção antecipada de erros.

Quanto maior o sistema, maior o benefício.

Para uma plataforma do tamanho da everhere, TypeScript deixa de ser uma opção.

Ele passa a ser uma necessidade.

O framework oficial

Depois da linguagem vem outra decisão.

Qual framework utilizar?

Após analisar as alternativas disponíveis, a decisão oficial será:

NestJS

Por que NestJS?

Porque ele resolve praticamente todos os problemas de organização de projetos grandes.

Entre eles:

  • injeção de dependência
  • arquitetura modular
  • controllers
  • middlewares
  • interceptors
  • pipes
  • autenticação
  • validação
  • testes
  • documentação
  • integração com filas
  • WebSockets
  • GraphQL

microserviços.

Tudo já faz parte do framework.

Organização

NestJS força uma organização consistente.

Isso é extremamente importante.

Projetos que crescem durante anos normalmente falham por falta de estrutura.

Nest reduz esse risco.

Ele faz milhares de arquivos continuarem organizados.

Mesmo depois de muitos anos.

Integração com IA

Outro ponto decisivo.

A nova geração de ferramentas de Inteligência Artificial produz código em TypeScript com enorme qualidade.

Isso acelera desenvolvimento.

Revisões.

Refatorações.

Documentação.

Testes.

Escolher TypeScript significa também aproveitar melhor a evolução das ferramentas de IA.

Estrutura oficial

Todo backend seguirá uma estrutura semelhante:

apps/

modules/

shared/

infra/

database/

config/

tests/

Cada domínio permanecerá isolado.

Isso mantém organização mesmo quando a plataforma atingir centenas de funcionalidades.

APIs

Toda comunicação ocorrerá através de APIs REST.

REST continua sendo o padrão mais simples, estável e universal para aplicações dessa natureza.

A documentação será gerada automaticamente utilizando OpenAPI (Swagger).

Isso garante:

  • padronização
  • facilidade para parceiros
  • integração entre aplicações

e documentação sempre atualizada.

GraphQL?

A decisão oficial é:

Não.

Pelo menos inicialmente.

GraphQL resolve problemas específicos.

Mas também aumenta bastante a complexidade.

Hoje REST atende perfeitamente às necessidades da everhere.

Se no futuro houver justificativa técnica real, GraphQL poderá ser adotado em módulos específicos.

Não será a arquitetura principal.

WebSockets

Algumas funcionalidades exigem comunicação em tempo real.

Por exemplo:

  • chat
  • presença online
  • atualizações instantâneas

notificações em tempo real.

Esses recursos utilizarão WebSockets.

Todo o restante continuará utilizando APIs REST.

Essa combinação oferece excelente desempenho sem aumentar a complexidade do sistema inteiro.

Processamento assíncrono

Nem toda tarefa precisa acontecer imediatamente.

Diversas operações serão executadas em background.

Exemplos:

  • envio de e-mails
  • processamento de imagens
  • geração de miniaturas
  • notificações
  • indexação
  • treinamento de IA

atualização de recomendações.

Essas tarefas utilizarão filas de processamento.

Isso reduz tempo de resposta para o usuário.

Containerização

Todo backend será executado em containers Docker.

Isso elimina diferenças entre:

  • desenvolvimento
  • testes
  • homologação

produção.

O código funcionará exatamente da mesma maneira em qualquer ambiente.

Isso reduz drasticamente problemas de deploy.

Padrões obrigatórios

Todo código seguirá alguns princípios.

SOLID

Para manter baixo acoplamento.

Clean Architecture

As regras de negócio nunca dependerão da infraestrutura.

Domain Driven Design (DDD)

Os módulos seguirão os domínios naturais do negócio.

Não serão organizados por tecnologia.

Testabilidade

Todo módulo deverá ser facilmente testável.

Observabilidade

Logs.

Métricas.

Tracing.

Tudo será considerado parte da aplicação.

Não um complemento.

O que não utilizaremos

Algumas tecnologias foram avaliadas e descartadas como padrão principal.

PHP

Apesar de extremamente maduro, sua arquitetura tradicional não oferece as vantagens organizacionais que buscamos para um produto dessa complexidade.

Python

Excelente para IA.

Mas menos eficiente para um backend de alta concorrência.

Python continuará presente apenas nos serviços especializados de Machine Learning quando necessário.

Java

Extraordinariamente robusto.

Mas aumenta significativamente a complexidade e o tempo de desenvolvimento para o perfil de equipe que pretendemos formar.

Go

Excelente desempenho.

Provavelmente será utilizado futuramente em componentes muito específicos de alta performance.

Mas não como linguagem principal.

Rust

Uma das linguagens mais seguras existentes.

Entretanto, sua curva de aprendizado é alta e sua produtividade não compensa para o tipo de produto que estamos construindo.

Engenharia para a próxima década

A decisão por Node.js, TypeScript e NestJS não foi tomada porque são tecnologias populares.

Foi tomada porque elas oferecem o melhor equilíbrio entre:

  • velocidade de desenvolvimento
  • confiabilidade
  • facilidade de manutenção
  • integração com inteligência artificial
  • escalabilidade
  • disponibilidade de profissionais

custo operacional.

Nosso objetivo não é construir o backend mais sofisticado do mundo.

É construir um backend que continue sólido quando a everhere crescer para dezenas de milhões de usuários.

A decisão oficial da everhere

O backend oficial da everhere será desenvolvido em Node.js com TypeScript, utilizando NestJS como framework principal, seguindo os princípios de Clean Architecture, Domain-Driven Design (DDD) e SOLID, com APIs REST como padrão, WebSockets para recursos em tempo real e processamento assíncrono para tarefas de longa duração.

Essa combinação representa, hoje, a melhor relação entre produtividade, segurança, escalabilidade e sustentabilidade para o tipo de plataforma que a everhere está construindo.

4
Parte II — A Stack Tecnológica

A Base de Dados da everhere

Escolhendo onde a memória da plataforma viverá

Por que este capítulo existe?

Toda plataforma pode ser reconstruída.

O código pode ser reescrito.

A interface pode mudar.

A arquitetura pode evoluir.

Mas existe um ativo que precisa sobreviver a todas essas transformações:

os dados.

Na everhere, os dados não representam apenas registros técnicos.

Eles representam histórias.

Experiências.

Relações.

Comunidades.

Memórias.

Confiança.

Escolher o banco de dados correto significa decidir onde toda essa história será preservada.

Essa é uma das decisões técnicas mais importantes de toda a arquitetura.

A primeira pergunta

Durante muitos anos, existiu uma falsa disputa entre bancos relacionais e bancos NoSQL.

Diversas empresas acreditaram que bancos relacionais não seriam capazes de escalar.

Hoje sabemos que essa conclusão estava errada.

Os maiores sistemas do mundo continuam utilizando bancos relacionais como núcleo de suas operações.

Não porque sejam antigos.

Mas porque continuam sendo a melhor solução para dados complexos.

O perfil da everhere

Antes de escolher um banco de dados, precisamos entender a natureza das informações que armazenaremos.

A everhere possui dados altamente relacionados.

Usuários possuem:

  • amizades
  • comunidades
  • inscrições
  • mensagens
  • avaliações
  • pagamentos

experiências.

Experiências possuem:

  • organizadores
  • participantes
  • localização
  • regras
  • comentários
  • fotos
  • agenda

disponibilidade.

Comunidades possuem:

  • membros
  • eventos
  • moderadores

permissões.

Tudo está conectado.

Isso torna a consistência extremamente importante.

A decisão oficial

O banco de dados principal da everhere será:

PostgreSQL

Por que PostgreSQL?

Porque hoje ele representa o estado da arte entre bancos relacionais de código aberto.

Ele reúne:

  • confiabilidade
  • desempenho
  • estabilidade
  • segurança
  • escalabilidade
  • enorme comunidade

excelente documentação.

Além disso, é utilizado por milhares de empresas de grande porte em produção.

Um banco para durar décadas

Nossa preocupação não é apenas atender aos próximos dois anos.

Queremos construir uma plataforma que possa evoluir durante décadas.

PostgreSQL possui mais de trinta anos de evolução contínua.

É extremamente estável.

Recebe melhorias constantes.

E mantém compatibilidade entre versões de forma exemplar.

Isso reduz enormemente riscos futuros.

Consistência antes da velocidade

Na everhere, perder dados não é aceitável.

Imagine:

  • uma inscrição duplicada
  • um pagamento inconsistente
  • uma comunidade corrompida
  • uma amizade perdida

um histórico alterado.

Esses problemas não afetam apenas software.

Afetam pessoas.

Por isso priorizamos consistência.

PostgreSQL segue rigorosamente as propriedades ACID:

  • Atomicidade
  • Consistência
  • Isolamento

Durabilidade.

Essas garantias são fundamentais para uma plataforma baseada em confiança.

Relacionamentos complexos

Grande parte das consultas da everhere envolve múltiplas entidades.

Por exemplo:

"Mostrar experiências próximas organizadas por comunidades das quais meus amigos participam."

Ou:

"Mostrar eventos recomendados considerando histórico, localização, interesses e disponibilidade."

Essas consultas dependem de relacionamentos complexos.

PostgreSQL foi construído exatamente para esse tipo de cenário.

Geolocalização

A everhere é uma plataforma baseada em lugares.

Experiências possuem localização.

Usuários descobrem atividades próximas.

Comunidades ocupam territórios.

Mapas fazem parte da experiência.

Isso torna consultas geográficas extremamente importantes.

Por isso utilizaremos:

PostGIS

PostGIS é uma extensão oficial do PostgreSQL.

Ela transforma o banco em um dos sistemas geoespaciais mais poderosos do mundo.

Com ela será possível realizar consultas como:

  • experiências em um raio de 5 km
  • atividades próximas ao usuário
  • buscas por cidade
  • rotas
  • regiões
  • polígonos

áreas de cobertura.

Tudo diretamente dentro do banco de dados.

Sem necessidade de soluções externas.

JSON quando fizer sentido

Embora PostgreSQL seja relacional, ele também oferece excelente suporte a documentos JSON.

Isso permite armazenar estruturas flexíveis quando necessário.

Exemplos:

  • preferências
  • configurações
  • metadados
  • logs estruturados

informações específicas de integrações.

Assim evitamos criar dezenas de tabelas desnecessárias.

O modelo principal continuará relacional.

Mas teremos flexibilidade onde ela fizer sentido.

Full Text Search

A everhere permitirá pesquisar:

  • experiências
  • comunidades
  • lugares
  • organizadores

descrições.

PostgreSQL já possui mecanismos extremamente eficientes para busca textual.

Eles atenderão muito bem a fase inicial da plataforma.

No futuro, quando a escala justificar, adicionaremos mecanismos especializados de busca.

Mas não antes.

Escalabilidade

Existe um mito de que PostgreSQL não escala.

Na prática, isso é falso.

Antes de trocar de banco, é possível crescer enormemente utilizando:

  • índices
  • cache
  • replicação
  • particionamento
  • otimização de consultas

leitura distribuída.

Empresas atendendo milhões de usuários utilizam PostgreSQL diariamente.

O banco raramente será o primeiro gargalo.

Na maioria das vezes, a arquitetura da aplicação limita antes do banco.

Alta disponibilidade

O banco será configurado para operar com redundância.

Nossa arquitetura incluirá:

  • replicação
  • backup contínuo
  • failover automático
  • restauração por ponto no tempo (Point-in-Time Recovery)

monitoramento constante.

O objetivo é minimizar qualquer risco de perda de dados.

Segurança

Todos os dados serão protegidos utilizando múltiplas camadas.

Entre elas:

  • criptografia em repouso
  • criptografia em trânsito
  • controle granular de permissões
  • rotação de credenciais
  • auditoria

logs de acesso.

Além disso, dados extremamente sensíveis poderão receber criptografia adicional na própria aplicação.

Mesmo um administrador do banco não deverá conseguir visualizar determinadas informações em texto puro.

Versionamento do banco

Toda alteração estrutural será controlada por migrações.

Nenhuma modificação será realizada manualmente em produção.

Isso garante:

  • reprodutibilidade
  • histórico
  • controle de mudanças

rollback seguro.

A estrutura do banco será tratada exatamente como o código da aplicação.

O que não utilizaremos como banco principal

MongoDB

MongoDB é excelente para determinados cenários.

Mas a everhere depende de relacionamentos consistentes.

Optar por um banco orientado a documentos aumentaria significativamente a complexidade das regras de negócio.

Ele poderá ser utilizado futuramente em módulos específicos.

Nunca como banco principal.

Cassandra

Projetado para volumes gigantescos de escrita distribuída.

Excelente para alguns tipos de aplicações.

Mas complexo demais para o perfil da everhere.

DynamoDB

Muito eficiente dentro do ecossistema AWS.

Entretanto, aumenta o acoplamento com um único provedor de nuvem.

Nossa arquitetura buscará manter maior independência.

MySQL

É um excelente banco de dados.

Entretanto, PostgreSQL oferece recursos mais avançados para:

  • consultas complexas
  • geolocalização
  • tipos de dados
  • extensões
  • consistência

flexibilidade.

Por isso ele será nossa escolha oficial.

Quando utilizaremos outros bancos?

Embora PostgreSQL seja o coração da plataforma, ele não será o único banco.

Uma arquitetura moderna utiliza a ferramenta certa para cada problema.

Nos próximos capítulos veremos soluções especializadas para:

  • cache
  • busca
  • filas
  • analytics

vetores para IA.

Cada tecnologia terá uma responsabilidade específica.

Mas nenhuma substituirá o PostgreSQL como fonte oficial da verdade.

A memória da everhere

Quando alguém participa de uma experiência, cria uma amizade ou encontra uma comunidade, isso deixa de ser apenas um registro técnico.

Passa a fazer parte da história daquela pessoa.

Nossa base de dados precisa tratar essas informações com o mesmo cuidado com que tratamos a missão da empresa.

Segurança.

Integridade.

Confiabilidade.

Longevidade.

Esses serão os pilares da nossa estratégia de dados.

A decisão oficial da everhere

O banco de dados principal da everhere será o PostgreSQL, utilizando a extensão PostGIS para geolocalização e explorando recursos nativos como JSON, busca textual e replicação. Ele será a única fonte oficial de verdade da plataforma, responsável por armazenar todas as informações críticas do negócio com máxima consistência, segurança e capacidade de evolução.

Essa decisão não foi tomada apenas por desempenho.

Foi tomada porque acreditamos que as experiências das pessoas merecem ser armazenadas sobre uma base sólida o suficiente para acompanhá-las durante toda a vida da plataforma.

5
Parte II — A Stack Tecnológica

A ARQUITETURA DE DADOS

Como todas as informações da everhere circulam pelo sistema

CAPÍTULO 6

A ARQUITETURA DE DADOS

Como todas as informações da everhere circulam pelo sistema

Por que este capítulo existe?

No capítulo anterior definimos onde os dados mais importantes da everhere serão armazenados.

A resposta foi clara:

PostgreSQL será a fonte oficial de verdade da plataforma.

Mas um sistema moderno não vive apenas de um banco de dados.

Nenhuma grande plataforma utiliza uma única tecnologia para armazenar todas as informações.

Instagram.

Uber.

Netflix.

Spotify.

Airbnb.

Todas adotam uma arquitetura especializada.

Cada componente resolve um problema específico.

Essa é exatamente a estratégia que seguiremos.

Este capítulo não trata da escolha das tecnologias.

Trata de como elas trabalham juntas para construir uma plataforma rápida, confiável e preparada para crescer durante décadas.

Um sistema, várias responsabilidades

Existe um princípio fundamental em arquitetura de software:

Nenhuma tecnologia é excelente para tudo.

Um banco relacional é extraordinário para transações.

Mas não é a melhor solução para cache.

Um mecanismo de busca é excelente para pesquisa textual.

Mas não deve armazenar pagamentos.

Um armazenamento de arquivos suporta bilhões de imagens.

Mas não deve guardar relacionamentos entre usuários.

Quando tentamos utilizar uma única ferramenta para resolver todos os problemas, criamos sistemas mais lentos, mais caros e mais difíceis de manter.

Na everhere, cada tecnologia terá uma responsabilidade clara.

Essa especialização é um dos principais motivos pelos quais a plataforma poderá crescer sem perder desempenho.

PostgreSQL

A fonte oficial da verdade

Toda informação permanente da everhere viverá no PostgreSQL.

Ele será responsável por armazenar tudo aquilo que representa o estado oficial da plataforma.

Entre esses dados estão:

  • usuários
  • perfis
  • experiências
  • comunidades
  • inscrições
  • pagamentos
  • avaliações
  • amizades
  • permissões
  • configurações
  • organizadores
  • empresas

categorias.

Sempre que existir dúvida sobre uma informação, a resposta estará no PostgreSQL.

Ele será a única fonte oficial de verdade.

Todos os demais componentes trabalharão a partir dele.

Redis

A memória de curto prazo da plataforma

Nem toda informação precisa ser consultada no banco principal.

Alguns dados mudam constantemente.

Outros precisam ser acessados milhares de vezes por segundo.

Consultar o PostgreSQL para essas operações seria um desperdício de recursos.

Por isso utilizaremos Redis.

Redis funcionará como a memória de curto prazo da everhere.

Entre suas responsabilidades estarão:

  • sessões de usuários
  • tokens de autenticação
  • cache de consultas frequentes
  • contadores
  • presença online
  • rate limiting
  • bloqueios distribuídos

resultados temporários.

Imagine que milhares de usuários estejam visualizando a mesma experiência.

O conteúdo principal continuará no PostgreSQL.

Mas as informações mais consultadas poderão permanecer temporariamente em Redis.

Isso reduz drasticamente a carga do banco principal.

E torna toda a plataforma mais rápida.

OpenSearch

A inteligência das pesquisas

A busca é uma das funcionalidades centrais da everhere.

Os usuários procurarão experiências utilizando linguagem natural.

Por exemplo:

"Trilhas perto de mim."

"Workshop de fotografia."

"Eventos para famílias."

"Passeios românticos."

"Experiências gastronômicas."

Embora PostgreSQL possua busca textual eficiente, ele não foi criado para competir com mecanismos especializados.

Por isso utilizaremos OpenSearch.

Ele será responsável por:

  • pesquisa textual
  • autocomplete
  • relevância
  • filtros
  • correção ortográfica
  • sinônimos
  • indexação geográfica

preparação para busca semântica.

A busca da everhere deverá se aproximar da experiência oferecida por plataformas como Spotify, Airbnb e Amazon.

Rápida.

Precisa.

Inteligente.

Amazon S3

Onde vivem os arquivos

Fotos.

Vídeos.

Documentos.

Ingressos.

Avatares.

Nenhum desses arquivos será armazenado dentro do PostgreSQL.

Arquivos binários ocupam muito espaço.

Dificultam backups.

Reduzem desempenho.

Por isso utilizaremos Amazon S3 como armazenamento oficial de objetos.

O S3 oferece:

  • durabilidade extremamente elevada
  • escalabilidade praticamente ilimitada
  • versionamento
  • replicação automática
  • integração com CDN

baixo custo operacional.

O banco armazenará apenas as referências para esses arquivos.

O conteúdo permanecerá no armazenamento especializado.

CloudFront

Aproximando o conteúdo das pessoas

Uma fotografia enviada em São Paulo pode ser acessada segundos depois por alguém em Lisboa.

Isso só é possível porque utilizaremos uma rede global de distribuição de conteúdo.

Nossa escolha será Amazon CloudFront.

A CDN armazenará cópias temporárias dos arquivos próximos aos usuários.

Isso reduz:

  • latência
  • consumo do servidor principal

tempo de carregamento.

O objetivo é que uma experiência carregue rapidamente em qualquer lugar do mundo.

Como os dados circulam

Toda informação seguirá um fluxo bem definido.

Quando um usuário publica uma experiência:

  • o backend valida as informações
  • o PostgreSQL registra o dado oficial
  • as imagens são enviadas ao S3
  • a experiência é indexada no OpenSearch
  • os caches relevantes são atualizados no Redis

um evento é enviado para os serviços de analytics e inteligência artificial.

Cada componente recebe apenas aquilo de que realmente precisa.

Nenhum serviço assume responsabilidades que pertencem a outro.

Essa separação torna o sistema mais organizado e mais resiliente.

Eventos como forma de comunicação

Nem todas as informações precisam ser processadas imediatamente.

Muitas ações acontecerão de forma assíncrona.

Por exemplo:

Quando alguém cria uma experiência, diversas tarefas podem ocorrer depois:

  • enviar notificações
  • atualizar recomendações
  • recalcular rankings
  • gerar estatísticas

indexar buscas.

Essas atividades não precisam atrasar a resposta ao usuário.

Por isso utilizaremos arquitetura orientada a eventos.

Inicialmente, utilizaremos os recursos nativos da própria infraestrutura para publicação de eventos.

Quando o volume justificar, a plataforma evoluirá para um barramento dedicado de mensageria, preservando o baixo acoplamento entre os serviços.

Dados para Inteligência Artificial

A inteligência artificial não trabalhará diretamente sobre o banco principal.

Isso preserva desempenho e segurança.

Os modelos receberão apenas os dados necessários para cada tarefa.

Entre eles:

  • histórico de participação
  • interesses
  • categorias favoritas
  • padrões de navegação

preferências explícitas.

Sempre respeitando as regras de privacidade definidas pela plataforma.

No futuro, utilizaremos armazenamento vetorial para permitir recomendações semânticas, descoberta inteligente de experiências e busca baseada em significado.

Essa camada será totalmente independente da base transacional.

Analytics

Os dados operacionais e os dados analíticos possuem objetivos diferentes.

O PostgreSQL existe para executar a plataforma.

Já a camada analítica existe para compreender a plataforma.

Ela responderá perguntas como:

Quantas experiências aconteceram este mês?

Qual categoria cresce mais?

Qual cidade possui maior engajamento?

Como evolui a retenção dos usuários?

Essas análises utilizarão uma infraestrutura própria, evitando qualquer impacto sobre o funcionamento do sistema principal.

Evolução da arquitetura

A arquitetura de dados crescerá de forma progressiva.

Primeira fase

PostgreSQL

Redis

Amazon S3

Segunda fase

OpenSearch

Analytics dedicado

Terceira fase

armazenamento vetorial para IA

arquitetura orientada a eventos em larga escala

Essa evolução acontecerá apenas quando houver necessidade real.

Não construiremos complexidade antes do tempo.

O ecossistema de dados da everhere

Nenhuma tecnologia sustentará a everhere sozinha.

Cada componente terá uma missão específica.

Responsabilidade

Tecnologia oficial

Dados transacionais

PostgreSQL

Geolocalização

PostGIS

Cache e sessões

Redis

Pesquisa

OpenSearch

Arquivos

Amazon S3

Distribuição global

CloudFront

Eventos

Arquitetura orientada a eventos

Inteligência Artificial

Base vetorial (quando necessária)

Analytics

Plataforma analítica dedicada

Essa arquitetura segue um princípio simples.

Cada tecnologia deve fazer apenas aquilo em que é excelente.

Quando cada componente possui uma responsabilidade clara, todo o sistema se torna mais simples de evoluir, mais seguro de operar e mais preparado para crescer.

É exatamente essa especialização que permitirá à everhere acompanhar milhões de pessoas, bilhões de interações e incontáveis experiências sem perder aquilo que mais importa: a confiança de quem escolheu viver através da plataforma.

6
Parte II — A Stack Tecnológica

A Arquitetura da Aplicação

Escolhendo a tecnologia que sustentará a everhere pelos próximos vinte anos

Por que este capítulo existe?

Depois de definir onde os dados viverão, precisamos responder uma pergunta igualmente importante:

Como construiremos a aplicação?

Essa decisão define:

  • velocidade de desenvolvimento
  • facilidade de manutenção
  • escalabilidade
  • contratação de novos desenvolvedores
  • custo operacional
  • segurança

capacidade de evolução.

Uma escolha inadequada pode prender a empresa a uma tecnologia difícil de manter.

Uma escolha sólida permite que o software evolua continuamente sem precisar ser reescrito.

Nosso objetivo não é escolher a tecnologia da moda.

É escolher aquela que continuará sendo uma excelente decisão daqui a dez ou vinte anos.

O primeiro princípio

A everhere não será construída para impressionar desenvolvedores.

Ela será construída para durar.

Existe uma tendência comum em startups de adotar arquiteturas extremamente complexas logo no início.

Microsserviços.

Dezenas de linguagens.

Vários frameworks.

Eventos distribuídos.

Filas para tudo.

Containers em excesso.

Na maioria das vezes isso não acelera.

Apenas aumenta a complexidade.

A everhere seguirá outro caminho.

Começaremos simples. Evoluiremos quando houver necessidade real.

A decisão oficial

A arquitetura principal da everhere utilizará:

Backend

TypeScript + NestJS

Frontend Web

React + Next.js

Aplicativos Mobile

Flutter

Essas três tecnologias formarão a base oficial da plataforma.

Por que TypeScript?

JavaScript venceu a guerra do desenvolvimento web.

Hoje praticamente todo o ecossistema da internet gira ao seu redor.

Mas JavaScript possui um problema conhecido.

Sua tipagem dinâmica aumenta a probabilidade de erros em projetos grandes.

Por isso utilizaremos TypeScript.

TypeScript oferece:

  • tipagem estática
  • autocompletar inteligente
  • refatorações seguras
  • redução de bugs
  • melhor documentação

maior produtividade.

À medida que o sistema cresce, esses benefícios se tornam enormes.

Por que NestJS?

Existem muitos frameworks excelentes.

Express.

Fastify.

Hono.

Adonis.

Koa.

Entretanto, a everhere precisa de algo além de velocidade.

Precisamos de organização.

NestJS foi criado justamente para aplicações grandes.

Ele fornece uma arquitetura extremamente estruturada.

Módulos.

Injeção de dependência.

Separação de responsabilidades.

Testabilidade.

Escalabilidade.

Tudo isso já faz parte da estrutura do framework.

Outro ponto importante:

NestJS utiliza TypeScript nativamente.

Isso reduz inconsistências em todo o projeto.

Por que não Java?

Java continua sendo excelente.

Mas apresenta maior complexidade para equipes menores.

Além disso, o desenvolvimento costuma ser mais lento.

Para uma startup que precisa evoluir rapidamente, o custo dessa escolha não compensa.

Por que não .NET?

.NET é extremamente robusto.

Especialmente em ambientes corporativos.

Entretanto, a comunidade global de JavaScript e TypeScript é muito maior.

Isso facilita:

  • contratação
  • integrações
  • bibliotecas

crescimento da equipe.

Por que não Go?

Go é fantástico.

Provavelmente será utilizado futuramente em alguns serviços específicos.

Mas não como linguagem principal.

Go privilegia simplicidade e desempenho.

Entretanto, para um sistema com regras de negócio extremamente complexas como a everhere, TypeScript oferece maior produtividade.

Por que React?

O React tornou-se praticamente um padrão mundial.

Seu ecossistema é gigantesco.

A quantidade de bibliotecas disponíveis é incomparável.

Isso reduz muito o tempo de desenvolvimento.

Além disso:

Instagram.

Facebook.

WhatsApp Web.

Airbnb.

Uber.

Netflix.

Utilizam React em partes importantes de seus produtos.

Por que Next.js?

A everhere possui áreas públicas.

Experiências.

Comunidades.

Páginas institucionais.

Resultados de busca.

Perfis públicos.

Tudo isso precisa aparecer bem em mecanismos de busca.

Next.js oferece:

Server Side Rendering.

Static Generation.

Streaming.

Excelente SEO.

Otimização automática.

Divisão inteligente de código.

Ele representa hoje uma das arquiteturas mais maduras para aplicações React.

Por que Flutter?

Essa foi uma das decisões mais analisadas.

As opções principais eram:

React Native.

Flutter.

Desenvolvimento nativo.

React Native

Vantagens:

Grande comunidade.

Compartilha conhecimento com React.

Entretanto:

Depende da ponte JavaScript.

Maior inconsistência entre plataformas.

Mais dependência de bibliotecas externas.

Desenvolvimento nativo

Maior desempenho possível.

Mas exige:

  • duas equipes
  • duas bases de código
  • dobro do tempo

dobro do custo.

Não faz sentido para o estágio da everhere.

Flutter

Flutter oferece:

  • uma única base de código
  • excelente desempenho
  • interface consistente
  • compilação nativa

ótima produtividade.

Além disso, seu ecossistema amadureceu muito nos últimos anos.

Hoje é utilizado em produção por empresas de grande porte.

Por isso será nossa escolha oficial.

Arquitetura em módulos

O backend será dividido por domínios.

Não por camadas técnicas.

Exemplo:

Usuários.

Experiências.

Comunidades.

Mensagens.

Pagamentos.

Recomendações.

Administração.

Cada domínio possuirá:

  • controllers
  • services
  • repositories
  • entidades

casos de uso.

Essa organização reduz dependências e facilita manutenção.

APIs

Toda comunicação ocorrerá através de APIs.

Inicialmente utilizaremos:

REST.

Por quê?

Porque é simples.

Bem documentado.

Amplamente conhecido.

Extremamente estável.

No futuro, alguns módulos poderão utilizar:

GraphQL.

gRPC.

WebSockets.

Cada tecnologia será utilizada apenas onde fizer sentido.

Tempo real

Algumas funcionalidades exigem atualização imediata.

Mensagens.

Notificações.

Presença online.

Status de experiências.

Para isso utilizaremos:

WebSockets.

Não faz sentido realizar consultas repetidas ao servidor quando podemos manter uma conexão aberta.

Organização do código

Todo o projeto seguirá princípios de arquitetura limpa.

Separação clara entre:

  • negócio
  • infraestrutura
  • persistência

interface.

Isso garante que regras importantes não dependam do framework utilizado.

Frameworks mudam.

Regras de negócio permanecem.

Testes

A arquitetura será construída considerando testes desde o primeiro dia.

Teremos:

  • testes unitários
  • testes de integração

testes end-to-end.

O objetivo não é atingir 100% de cobertura.

O objetivo é proteger aquilo que realmente importa.

Fluxos críticos.

Pagamentos.

Autenticação.

Experiências.

Comunidades.

Permissões.

Observabilidade

Um sistema moderno precisa ser observável.

Não basta funcionar.

Precisamos entender seu comportamento.

A aplicação será preparada para fornecer:

  • logs estruturados
  • rastreamento distribuído
  • métricas
  • monitoramento de erros

telemetria.

Quando surgir um problema, devemos descobrir sua causa em minutos, não em dias.

Escalabilidade

A aplicação será desenvolvida desde o início como stateless.

Ou seja:

Nenhuma informação importante ficará armazenada na memória da aplicação.

Isso permite aumentar servidores simplesmente adicionando novas instâncias.

É exatamente o modelo utilizado pelas maiores plataformas do mundo.

A decisão oficial da everhere

A arquitetura oficial da aplicação será composta por:

Camada

Tecnologia

Backend

TypeScript + NestJS

Frontend Web

React + Next.js

Aplicativos Mobile

Flutter

Comunicação principal

REST API

Tempo real

WebSockets

Essa combinação oferece o melhor equilíbrio entre:

  • velocidade de desenvolvimento
  • desempenho
  • escalabilidade
  • facilidade de contratação
  • maturidade do ecossistema

longevidade tecnológica.

Mais importante do que utilizar tecnologias populares é utilizar tecnologias que permitam à everhere evoluir continuamente sem precisar reconstruir sua base.

A arquitetura da aplicação não será um obstáculo ao crescimento.

Ela será um dos principais fatores que permitirão que a plataforma acompanhe sua própria visão ao longo dos próximos anos.

7
Parte III — Infraestrutura

Infraestrutura e Cloud

Construindo uma plataforma preparada para crescer globalmente desde o primeiro usuário

Por que este capítulo existe?

Um excelente software pode fracassar por causa de uma infraestrutura ruim.

Lentidão.

Indisponibilidade.

Custos descontrolados.

Falhas de segurança.

Dificuldade para escalar.

Problemas de rede.

Tudo isso nasce muito antes do primeiro milhão de usuários.

Nasce nas decisões tomadas durante a arquitetura.

Este capítulo define exatamente como a everhere será hospedada, distribuída e operada.

O objetivo não é apenas manter servidores funcionando.

É construir uma plataforma capaz de crescer para dezenas de milhões de usuários mantendo desempenho, disponibilidade e custos sob controle.

O primeiro princípio

Infraestrutura não deve ser vista como um centro de custo.

Ela é parte do produto.

O usuário nunca vê nossos servidores.

Mas percebe imediatamente quando eles falham.

Uma experiência demora para carregar.

Uma compra não é concluída.

Uma mensagem não chega.

Uma foto demora para aparecer.

Para o usuário, infraestrutura é experiência.

Por isso ela será tratada como um dos pilares estratégicos da everhere.

A decisão oficial

A everhere utilizará como plataforma principal:

Amazon Web Services (AWS)

Esta será a infraestrutura oficial do projeto.

Por que AWS?

Não porque seja a única boa opção.

Google Cloud e Microsoft Azure também são excelentes.

Mas a AWS oferece hoje a combinação mais madura de:

  • escalabilidade
  • segurança
  • disponibilidade
  • ecossistema
  • documentação
  • serviços gerenciados

presença global.

Além disso, praticamente todas as arquiteturas que imaginamos para o futuro já possuem soluções consolidadas dentro da AWS.

Isso reduz risco.

Crescer sem reconstruir

A infraestrutura será desenhada para crescer em etapas.

Não construiremos uma arquitetura para cem milhões de usuários logo no início.

Isso geraria custos desnecessários.

Também não construiremos algo pequeno demais que precise ser refeito em poucos meses.

A arquitetura deverá crescer naturalmente.

Cada etapa aproveitando a anterior.

Computação

A aplicação será executada em containers.

O padrão oficial será:

Docker

Toda aplicação deverá ser containerizada.

Isso garante:

  • ambientes idênticos
  • facilidade de deploy
  • portabilidade
  • isolamento

reprodutibilidade.

Um software que funciona no computador do desenvolvedor deverá funcionar exatamente da mesma forma em produção.

Orquestração

Durante a fase inicial utilizaremos:

Amazon ECS.

Por quê?

Porque Kubernetes é extremamente poderoso.

Mas também extremamente complexo.

Para o estágio inicial da everhere, ECS entrega praticamente todos os benefícios com muito menos complexidade operacional.

Quando houver necessidade real de múltiplos clusters extremamente distribuídos, poderemos migrar para EKS (Kubernetes).

Não antes.

Balanceamento de carga

Toda requisição passará por um Load Balancer.

Isso permitirá distribuir usuários entre múltiplas instâncias automaticamente.

Se um servidor falhar:

o sistema continua funcionando.

Sem interrupção.

Essa redundância será obrigatória.

Escalabilidade automática

Nenhum operador precisará aumentar servidores manualmente.

A infraestrutura monitorará continuamente:

  • uso de CPU
  • uso de memória
  • quantidade de requisições
  • tempo de resposta

filas.

Quando necessário:

novas instâncias serão criadas automaticamente.

Quando a demanda diminuir:

elas serão removidas.

Isso reduz custos e aumenta disponibilidade.

Armazenamento de arquivos

Toda mídia ficará no:

Amazon S3.

Fotos.

Vídeos.

Documentos.

Ingressos.

Avatares.

Materiais complementares.

O S3 oferece praticamente durabilidade máxima para armazenamento.

Além disso, permite integração direta com CDN.

CDN

Todo conteúdo estático será distribuído através do:

Amazon CloudFront.

O usuário não fará download diretamente do servidor principal.

Receberá os arquivos do ponto mais próximo geograficamente.

Isso reduz:

  • latência
  • tempo de carregamento

uso da infraestrutura principal.

A experiência melhora significativamente.

Especialmente para usuários internacionais.

Banco de dados gerenciado

O PostgreSQL será executado utilizando:

Amazon RDS.

Isso elimina grande parte da complexidade operacional.

Atualizações.

Backups.

Replicação.

Monitoramento.

Recuperação.

Tudo passa a ser administrado pela própria plataforma.

Nossa equipe dedica tempo ao produto.

Não à manutenção do banco.

Cache

Redis será executado através do:

Amazon ElastiCache.

Novamente seguimos o mesmo princípio.

Sempre que existir uma solução gerenciada suficientemente madura, ela será priorizada.

Busca

OpenSearch será hospedado utilizando:

Amazon OpenSearch Service.

Isso reduz muito a complexidade de manutenção de clusters de pesquisa.

Observabilidade

Não basta saber que algo falhou.

Precisamos descobrir:

  • quando
  • onde

por quê.

A plataforma será monitorada continuamente.

Utilizaremos:

  • CloudWatch para métricas
  • OpenTelemetry para rastreamento distribuído
  • Sentry para erros da aplicação

Grafana para dashboards operacionais.

Toda decisão será baseada em dados reais.

Disponibilidade

A everhere será construída para operar continuamente.

Mesmo quando ocorrerem falhas.

Toda infraestrutura crítica utilizará:

múltiplas zonas de disponibilidade (Multi-AZ).

Isso significa que uma falha física em um datacenter não interrompe a plataforma.

A indisponibilidade deixa de depender de um único servidor.

Ou mesmo de um único prédio.

Recuperação de desastres

Toda arquitetura deve responder uma pergunta simples:

Se perdermos um servidor inteiro agora, o que acontece?

Na everhere:

Praticamente nada.

Novas instâncias serão criadas automaticamente.

Backups estarão disponíveis.

Dados permanecerão replicados.

A plataforma continuará operando.

Falhas são inevitáveis.

Interrupções prolongadas não.

Infraestrutura como código

Toda infraestrutura será criada utilizando:

Terraform.

Nada será configurado manualmente.

Cada servidor.

Cada rede.

Cada banco.

Cada permissão.

Tudo existirá em código.

Isso garante:

  • versionamento
  • auditoria
  • reprodutibilidade
  • padronização

recuperação rápida.

A infraestrutura passa a ser tratada como software.

Ambientes

Teremos ambientes completamente separados.

Desenvolvimento.

Homologação.

Produção.

Nenhum teste acontecerá em produção.

Nenhuma funcionalidade será publicada sem validação.

Isso reduz drasticamente o risco operacional.

Expansão internacional

A arquitetura será preparada para múltiplas regiões.

Inicialmente:

Brasil.

Depois:

América Latina.

Em seguida:

Estados Unidos.

Europa.

Ásia.

Cada expansão será feita adicionando novas regiões, sem alterar a arquitetura principal.

Esse é um dos benefícios de utilizar uma cloud global.

Controle de custos

Infraestrutura não deve crescer mais rápido que a empresa.

Toda decisão será avaliada considerando:

  • custo por usuário
  • custo por experiência
  • custo por transação
  • custo por armazenamento

custo por processamento.

Sempre que houver duas soluções tecnicamente equivalentes, a mais simples e economicamente sustentável será priorizada.

Escalar não significa gastar mais.

Significa gastar melhor.

A decisão da everhere

A infraestrutura oficial será composta por:

Camada

Tecnologia

Cloud Principal

Amazon Web Services (AWS)

Containers

Docker

Orquestração inicial

Amazon ECS

Banco Relacional

Amazon RDS (PostgreSQL)

Cache

Amazon ElastiCache (Redis)

Busca

Amazon OpenSearch Service

Arquivos

Amazon S3

CDN

Amazon CloudFront

Infraestrutura como código

Terraform

Monitoramento

CloudWatch + Grafana + OpenTelemetry + Sentry

Essa arquitetura representa o melhor equilíbrio entre robustez, simplicidade operacional e escalabilidade.

Ela evita a complexidade prematura, mas prepara a everhere para crescer globalmente sem precisar reconstruir sua base tecnológica.

Nosso objetivo não é possuir a infraestrutura mais sofisticada.

É possuir uma infraestrutura que permita que milhões de pessoas vivam experiências sem sequer perceber que existe uma infraestrutura por trás delas.

8
Parte III — Infraestrutura

Segurança e Privacidade

A confiança como requisito arquitetural

Por que este capítulo existe?

A everhere não armazenará apenas dados.

Ela armazenará histórias.

Lugares.

Relacionamentos.

Memórias.

Fotografias.

Conversas.

Planos.

Preferências.

Comunidades.

Cada informação confiada à plataforma representa uma responsabilidade.

Por isso, segurança não será um recurso adicional.

Ela será uma característica presente em todas as decisões de arquitetura.

O objetivo deste capítulo é definir como protegeremos a plataforma, seus usuários e seus dados desde o primeiro dia.

O primeiro princípio

A maior parte das empresas trata segurança como um departamento.

A everhere tratará segurança como uma forma de pensar.

Toda decisão deverá responder uma pergunta simples:

Esta solução continua segura quando a plataforma crescer cem vezes?

Se a resposta for não, ela não será adotada.

Segurança por padrão

Nada será desenvolvido primeiro para depois receber proteção.

A proteção fará parte da implementação.

Isso significa:

  • autenticação desde o início
  • controle de permissões
  • criptografia
  • auditoria
  • monitoramento

proteção contra abuso.

Não existirão "versões temporárias" inseguras.

Nunca confiar automaticamente

Todo acesso deverá ser validado.

Toda requisição deverá ser autenticada.

Todo serviço deverá provar sua identidade.

Seguiremos o modelo conhecido como:

Zero Trust Architecture.

O princípio é simples:

Nunca confiar.

Sempre verificar.

Mesmo dentro da própria infraestrutura.

Autenticação

A autenticação oficial da everhere utilizará:

OAuth 2.1

OpenID Connect (OIDC)

JWT de curta duração

Refresh Tokens protegidos

Essa combinação oferece um padrão amplamente utilizado e compatível com integrações futuras.

Login

Os usuários poderão entrar utilizando:

  • e-mail
  • Apple

Google.

No futuro poderão existir outros provedores.

Mas todos seguirão o mesmo fluxo de autenticação.

Senhas

Nunca armazenaremos senhas em texto.

Nunca.

As senhas utilizarão:

Argon2id

Por quê?

Hoje Argon2id é considerado o algoritmo mais resistente para armazenamento de senhas.

Ele foi criado exatamente para dificultar ataques modernos utilizando GPUs e hardware especializado.

Mesmo que um banco de dados fosse comprometido, as senhas continuariam extremamente difíceis de recuperar.

Autenticação Multifator

Toda conta poderá ativar MFA.

Suporte oficial:

Aplicativos autenticadores (TOTP)

Passkeys (FIDO2/WebAuthn)

Códigos de recuperação

SMS não será utilizado como método principal.

Ele continua vulnerável a ataques de troca de chip (SIM Swap).

Criptografia

Toda comunicação utilizará:

TLS 1.3

Sem exceções.

Não existirá tráfego em texto simples.

Os dados armazenados utilizarão:

AES-256

Tanto para bancos quanto para backups.

Mesmo que alguém obtenha acesso físico aos discos, os dados permanecerão protegidos.

Dados sensíveis

Nem toda informação possui o mesmo nível de sensibilidade.

Por isso classificaremos os dados.

Públicos

Experiências públicas.

Perfis públicos.

Eventos.

Privados

Mensagens.

Preferências.

Histórico de atividades.

Dados pessoais.

Críticos

Documentos.

Dados financeiros.

Informações de pagamento.

Tokens de autenticação.

Esses dados terão controles adicionais de acesso.

LGPD desde a arquitetura

A everhere nascerá compatível com a legislação brasileira.

E preparada para outras legislações internacionais.

Incluindo:

LGPD

GDPR

CCPA

Não trataremos conformidade como burocracia.

Ela protege o usuário.

Todo usuário poderá:

  • baixar seus dados
  • corrigir informações
  • solicitar exclusão
  • controlar permissões

entender claramente como seus dados são utilizados.

Menor coleta possível

Existe um princípio importante:

Se não precisamos armazenar uma informação, não devemos armazená-la.

Quanto menos dados guardamos:

  • menor risco
  • menor responsabilidade

menor impacto de qualquer incidente.

A everhere coletará apenas informações realmente necessárias.

Pagamentos

A plataforma nunca armazenará dados completos de cartões.

Os pagamentos utilizarão provedores especializados.

Como:

Stripe

ou

Mercado Pago

Dependendo da região.

Os cartões permanecerão sob responsabilidade dessas empresas.

Receberemos apenas tokens.

Isso reduz enormemente o risco operacional.

Controle de acesso

Nem todos os usuários verão as mesmas informações.

O sistema utilizará:

RBAC (Role Based Access Control)

Papéis claramente definidos.

Exemplo:

Usuário.

Instrutor.

Organizador.

Moderador.

Administrador.

Cada papel possuirá permissões específicas.

Em alguns casos utilizaremos também:

ABAC (Attribute Based Access Control)

Onde a autorização depende do contexto.

Exemplo:

Um instrutor pode editar apenas experiências criadas por ele.

Mesmo sendo instrutor.

Auditoria

Toda ação importante será registrada.

Criação.

Alteração.

Exclusão.

Login.

Mudança de permissões.

Operações administrativas.

Esses registros permitirão investigar qualquer incidente.

Sem depender da memória das pessoas.

Logs

Os logs nunca armazenarão informações sensíveis.

Nunca registrarão:

  • senhas
  • tokens
  • dados bancários

documentos completos.

Logs ajudam a resolver problemas.

Não podem criar novos problemas.

Proteção contra ataques

A infraestrutura será preparada para responder automaticamente a ataques comuns.

Entre eles:

SQL Injection

Cross Site Scripting (XSS)

Cross Site Request Forgery (CSRF)

Rate Limiting

Brute Force

Credential Stuffing

DDoS

Grande parte dessas proteções será implementada por padrão.

Sem depender dos desenvolvedores lembrarem delas.

Segredos

Nenhuma chave ficará no código.

Jamais.

Todas as credenciais utilizarão:

AWS Secrets Manager

ou

Parameter Store.

Isso evita vazamentos em repositórios.

Atualizações

Dependências desatualizadas representam uma das maiores causas de incidentes.

A everhere manterá atualização contínua.

Bibliotecas vulneráveis serão substituídas imediatamente.

Automação fará parte desse processo.

Testes de segurança

Antes de qualquer grande lançamento serão realizados:

SAST (Static Application Security Testing)

DAST (Dynamic Application Security Testing)

Análise de dependências

Pentests periódicos

Segurança será continuamente validada.

Não apenas presumida.

Backups

Backups serão:

  • criptografados
  • automatizados
  • versionados

replicados.

Também serão testados regularmente.

Um backup que nunca foi restaurado é apenas uma esperança.

Não uma estratégia.

Recuperação de incidentes

Toda arquitetura deve assumir uma realidade:

Algum incidente acontecerá.

A diferença está na capacidade de resposta.

Teremos processos claros para:

  • detecção
  • contenção
  • comunicação
  • recuperação

análise posterior.

O objetivo não é apenas voltar a funcionar.

É aprender com cada incidente.

Cultura de segurança

Nenhuma tecnologia substitui pessoas conscientes.

Toda equipe deverá compreender princípios básicos de segurança.

Revisões de código incluirão aspectos de proteção.

Novas funcionalidades serão avaliadas também pelo impacto em privacidade.

Segurança não pertence apenas ao time de infraestrutura.

Ela pertence ao produto inteiro.

A confiança como vantagem competitiva

O ativo mais valioso da everhere não será seu código.

Nem sua infraestrutura.

Nem seus algoritmos.

Será a confiança construída com seus usuários.

Essa confiança demora anos para ser conquistada.

Pode ser perdida em minutos.

Por isso cada decisão deste livro parte de um princípio simples:

Toda informação confiada à everhere deve ser tratada como se fosse nossa própria informação.

A decisão oficial da everhere

A arquitetura de segurança adotará os seguintes padrões:

Área

Decisão oficial

Autenticação

OAuth 2.1 + OpenID Connect

Sessões

JWT de curta duração + Refresh Tokens

Senhas

Argon2id

MFA

TOTP + Passkeys (FIDO2/WebAuthn)

Comunicação

TLS 1.3

Criptografia de dados

AES-256

Controle de acesso

RBAC + ABAC

Gerenciamento de segredos

AWS Secrets Manager

Pagamentos

Tokenização via provedores especializados

Infraestrutura

Zero Trust

Auditoria

Logs estruturados e trilhas completas

Conformidade

LGPD, GDPR e CCPA desde a arquitetura

A everhere será construída para que segurança e privacidade não sejam percebidas como barreiras, mas como garantias silenciosas que permitem às pessoas compartilhar experiências, criar conexões e construir memórias com tranquilidade.

9
Parte III — Infraestrutura

Observabilidade e Operação da Plataforma

Como garantir que a everhere continue funcionando quando milhões de pessoas dependerem dela

Por que este capítulo existe?

A maioria das empresas acredita que software termina quando o código entra em produção.

Na realidade, é exatamente aí que ele começa.

Uma plataforma como a everhere nunca estará "pronta".

Ela estará funcionando.

E continuar funcionando será tão importante quanto construir novas funcionalidades.

Porque uma experiência cancelada por falha técnica não é apenas um erro.

É uma oportunidade perdida.

Uma conexão que deixou de acontecer.

Uma memória que talvez nunca seja criada.

Por isso, operar a plataforma será uma competência estratégica da everhere.

O primeiro princípio

A melhor infraestrutura é aquela que falha pouco.

A melhor operação é aquela que detecta problemas antes dos usuários.

Nosso objetivo nunca será apenas responder rapidamente a incidentes.

Será impedir que eles aconteçam.

A plataforma deve falar

Nenhum sistema complexo pode depender apenas da percepção humana.

A plataforma precisa informar continuamente o próprio estado.

Ela deverá responder perguntas como:

Está saudável?

Está rápida?

Está sobrecarregada?

Existe algum serviço degradando?

Alguma região apresenta problemas?

Alguma funcionalidade começou a falhar?

Essas respostas precisam existir antes mesmo que alguém pergunte.

Os três pilares da observabilidade

Toda a arquitetura será construída sobre três elementos fundamentais:

Logs

Tudo o que aconteceu.

Métricas

Como o sistema está se comportando.

Traces (rastreamento distribuído)

Como uma requisição percorreu toda a arquitetura.

Esses três pilares permitem compreender qualquer incidente.

Logs estruturados

Todos os serviços produzirão logs padronizados.

Nunca textos livres.

Sempre dados estruturados.

Exemplo:

serviço

horário

usuário (anonimizado quando necessário)

operação

duração

resultado

nível de severidade

Isso permitirá buscas rápidas.

Análises automáticas.

Correlação entre eventos.

Métricas

Toda decisão operacional será baseada em métricas.

Entre elas:

CPU

Memória

Uso de banco

Latência

Número de usuários simultâneos

Taxa de erro

Fila de processamento

Uso de cache

Consumo por serviço

As métricas mostrarão tendências.

Não apenas problemas.

Rastreamento distribuído

Uma única ação do usuário poderá passar por dezenas de serviços.

Frontend.

API.

Autenticação.

Banco.

Cache.

Busca.

Notificações.

IA.

Armazenamento.

Precisamos visualizar esse caminho completo.

Por isso adotaremos rastreamento distribuído.

Ele permitirá identificar exatamente onde ocorreu uma lentidão.

A decisão oficial

A everhere adotará o padrão OpenTelemetry.

Por quê?

Porque hoje ele é o padrão da indústria.

É aberto.

Compatível com praticamente todas as linguagens.

Permite trocar ferramentas sem alterar o código.

Essa decisão reduz dependência tecnológica.

Dashboards

Toda equipe deverá enxergar a plataforma em tempo real.

Teremos painéis específicos para:

Infraestrutura.

Banco de dados.

Experiências.

Pagamentos.

Busca.

IA.

Aplicativos móveis.

API.

Operações.

Os dashboards mostrarão saúde.

Não apenas estatísticas.

Alertas inteligentes

Alertas demais são tão ruins quanto alertas de menos.

Por isso seguiremos um princípio simples:

Só alertar quando alguma ação realmente precisar acontecer.

Evitaremos fadiga operacional.

Cada alerta deverá indicar:

  • o problema
  • o impacto
  • a prioridade

o possível caminho de resolução.

Níveis de severidade

Toda ocorrência será classificada.

P1

Plataforma indisponível.

P2

Funcionalidade importante comprometida.

P3

Problema localizado.

P4

Questões de baixa prioridade.

Essa classificação permite resposta organizada.

Disponibilidade

A everhere será projetada para disponibilidade superior a:

99,9%

Isso representa aproximadamente:

menos de nove horas de indisponibilidade por ano.

Nosso objetivo de longo prazo será:

99,95%

E posteriormente:

99,99%

Somente quando a operação justificar esse investimento.

Alta disponibilidade possui custo.

Ela deve crescer junto com o negócio.

Latência

Uma plataforma rápida parece simples.

Mas exige enorme disciplina.

Metas oficiais:

API:

até 200 ms na maioria das requisições.

Busca:

menos de 300 ms.

Aplicativo:

abertura rápida.

Carregamento progressivo.

Feedback imediato.

Sempre que possível, a percepção do usuário será mais importante do que o tempo absoluto.

Monitoramento de experiência

Não basta saber que servidores estão funcionando.

Precisamos saber se as pessoas conseguem utilizar o produto.

Monitoraremos indicadores como:

  • cadastros concluídos
  • reservas realizadas
  • pagamentos aprovados
  • check-ins efetuados

publicações concluídas.

Às vezes toda infraestrutura funciona.

Mas uma funcionalidade essencial deixou de operar.

Esses indicadores detectam esse cenário.

Feature Flags

Novas funcionalidades não serão liberadas para todos ao mesmo tempo.

Utilizaremos Feature Flags.

Isso permite:

  • ativação gradual
  • testes controlados
  • rollback imediato

experimentos.

Uma funcionalidade poderá ser desligada em segundos.

Sem necessidade de nova publicação.

Deploy contínuo

O objetivo da everhere não será fazer grandes lançamentos.

Será realizar pequenas entregas continuamente.

Mudanças menores significam:

  • menos risco
  • mais previsibilidade

mais facilidade para identificar problemas.

Rollback

Toda implantação deverá possuir caminho de retorno.

Se algo falhar:

o sistema volta imediatamente para a versão anterior.

Nenhum deploy será considerado concluído até existir rollback validado.

Engenharia de confiabilidade

A operação seguirá princípios inspirados em Site Reliability Engineering (SRE).

Isso significa equilibrar:

  • novas funcionalidades
  • estabilidade
  • disponibilidade

velocidade de evolução.

Nem toda energia será dedicada a lançar novidades.

Parte dela será dedicada a manter excelência operacional.

Orçamento de erros

Nenhum sistema é perfeito.

Por isso utilizaremos Error Budget.

Enquanto estivermos dentro do limite aceitável de falhas:

podemos inovar rapidamente.

Se ultrapassarmos esse limite:

a prioridade deixa de ser desenvolver.

Passa a ser estabilizar.

Essa disciplina impede crescimento descontrolado da dívida operacional.

Incidentes

Todo incidente importante gerará um Postmortem.

Sem buscar culpados.

O objetivo será responder:

O que aconteceu?

Por que aconteceu?

Como detectamos?

Como respondemos?

Como impedir que aconteça novamente?

Aprender continuamente faz parte da arquitetura.

Operação 24 horas

A everhere será uma plataforma global.

Isso significa operação contínua.

Teremos monitoramento permanente.

Mesmo quando equipes estiverem em fusos horários diferentes.

A infraestrutura nunca dorme.

Automação operacional

Tudo aquilo que puder ser automatizado deverá ser automatizado.

Provisionamento.

Escalabilidade.

Recuperação.

Backups.

Testes.

Monitoramento.

Menos operações manuais significam menos erros humanos.

A decisão oficial da everhere

A operação da plataforma adotará oficialmente:

Área

Decisão oficial

Observabilidade

OpenTelemetry

Logs

Estruturados em JSON

Métricas

Coleta contínua por serviço

Rastreamento

Distributed Tracing

Dashboards

Operacionais em tempo real

Feature Flags

Liberação gradual de funcionalidades

Deploy

CI/CD contínuo

Rollback

Obrigatório para toda publicação

Disponibilidade inicial

99,9%

Modelo operacional

Princípios de SRE

Postmortem

Obrigatório após incidentes relevantes

O verdadeiro objetivo

Quando pensamos em operação, é fácil imaginar servidores.

Bancos de dados.

Redes.

Alertas.

Mas a operação da everhere existe por um motivo muito maior.

Ela existe para que uma pessoa consiga marcar um encontro.

Para que uma experiência aconteça no horário certo.

Para que um grupo consiga se reunir.

Para que uma viagem seja organizada.

Para que uma memória seja criada.

Cada gráfico monitorado.

Cada alerta resolvido.

Cada servidor recuperado.

Cada milissegundo economizado.

Tudo isso existe para proteger algo muito mais importante do que uma aplicação.

Existe para proteger experiências humanas.

Porque, na everhere, confiabilidade não é apenas um atributo técnico.

Ela é um compromisso silencioso de nunca deixar que a tecnologia impeça a vida de acontecer.

10
Parte IV — Escala e Futuro

Inteligência Artificial na Arquitetura everhere

Onde a IA deve atuar — e onde ela jamais substituirá as pessoas

Por que este capítulo existe?

Poucas tecnologias transformarão tanto a próxima década quanto a Inteligência Artificial.

Ela escreverá textos.

Criará imagens.

Traduzirá idiomas.

Analisará dados.

Organizará informações.

Automatizará processos.

Tomará decisões operacionais.

A pergunta para a everhere nunca foi se utilizaríamos IA.

A pergunta sempre foi outra:

Como utilizá-la sem permitir que ela substitua aquilo que torna uma experiência verdadeiramente humana?

Este capítulo responde exatamente essa pergunta.

Ele define onde a Inteligência Artificial faz parte da arquitetura da everhere.

E onde ela deliberadamente não fará.

O primeiro princípio

A Inteligência Artificial existe para ampliar a experiência humana.

Nunca para substituí-la.

A missão da everhere não é fazer pessoas passarem mais tempo conversando com uma IA.

É fazer pessoas passarem mais tempo vivendo experiências reais.

Toda decisão arquitetural seguirá esse princípio.

Sempre que surgir uma escolha entre:

  • aumentar o tempo dentro da plataforma

ou

  • aumentar o tempo vivido fora dela

a segunda opção vencerá.

Sempre.

IA é infraestrutura

Na everhere, Inteligência Artificial não será um produto separado.

Ela fará parte da infraestrutura.

Será um serviço transversal.

Assim como:

  • autenticação
  • armazenamento
  • busca

pagamentos.

Diversos sistemas utilizarão IA.

Mas o usuário nem sempre perceberá isso.

Quando a tecnologia funciona bem, ela desaparece.

O papel da IA

A IA atuará principalmente em quatro áreas.

Organização.

Personalização.

Automação.

Assistência.

Nunca será utilizada para substituir relações humanas.

Organização inteligente

O primeiro papel da IA será reduzir complexidade.

Milhares de experiências poderão existir simultaneamente.

A IA ajudará a organizá-las.

Classificando automaticamente:

  • categorias
  • temas
  • interesses
  • nível de dificuldade
  • faixa etária
  • ambientes

estilo da experiência.

Isso melhora toda a plataforma.

Sem exigir trabalho manual.

Busca inteligente

A busca será muito mais do que palavras-chave.

O usuário poderá escrever:

"Quero conhecer pessoas novas em Natal."

Ou:

"Procuro uma experiência tranquila para fazer com meus pais."

Ou:

"Algo diferente para este sábado."

A IA compreenderá intenção.

Não apenas palavras.

Isso torna a descoberta muito mais natural.

Recomendações

Toda plataforma moderna possui recomendações.

A diferença está em como elas são utilizadas.

Grande parte da internet utiliza recomendações para aumentar retenção.

A everhere utilizará recomendações para aumentar experiências vividas.

Isso muda completamente o algoritmo.

O objetivo não será responder:

"O que mantém essa pessoa conectada?"

Será responder:

"O que aumenta a probabilidade dessa pessoa viver algo significativo?"

Essa diferença muda toda a arquitetura.

O algoritmo da everhere

O algoritmo não será otimizado para:

  • tempo de tela
  • rolagem infinita
  • cliques

engajamento vazio.

Ele será otimizado para indicadores completamente diferentes.

Experiências concluídas.

Novas conexões.

Participação recorrente.

Diversidade de experiências.

Qualidade das avaliações.

Pertencimento.

O sucesso da IA será medido fora da tela.

Assistente everhere

A plataforma possuirá um assistente inteligente.

Seu objetivo não será conversar indefinidamente.

Será ajudar o usuário a agir.

Exemplos:

Encontrar experiências.

Planejar um roteiro.

Organizar um grupo.

Resolver dúvidas.

Explicar funcionalidades.

Facilitar reservas.

Descobrir novos interesses.

A conversa sempre deverá terminar em uma ação real.

Não em uma conversa infinita.

Apoio aos organizadores

Instrutores e organizadores também utilizarão IA.

Ela poderá auxiliar na criação de:

  • descrições
  • títulos
  • materiais de apoio
  • traduções
  • cronogramas

listas de equipamentos.

A decisão final continuará pertencendo ao organizador.

A IA acelera.

Não substitui.

Moderação

Uma comunidade saudável exige moderação.

A IA ajudará identificando automaticamente:

  • spam
  • conteúdo ofensivo
  • fraudes
  • perfis falsos

comportamentos abusivos.

Mas decisões sensíveis permanecerão humanas.

Nenhum usuário será punido exclusivamente por decisão automática.

Tradução

A everhere nascerá preparada para operar internacionalmente.

A IA permitirá:

  • tradução automática
  • descrições multilíngues
  • mensagens entre usuários

conteúdo localizado.

Isso reduz uma das maiores barreiras para expansão global.

Personalização

Cada usuário viverá uma jornada diferente.

Não porque verá uma plataforma diferente.

Mas porque receberá sugestões compatíveis com sua realidade.

A IA aprenderá, por exemplo:

  • interesses
  • localização
  • disponibilidade
  • experiências anteriores
  • grupos frequentes

preferências de horário.

O objetivo é reduzir esforço.

Não limitar escolhas.

Nunca criar bolhas

Existe um risco conhecido em sistemas de recomendação.

Eles mostram sempre mais do mesmo.

A everhere seguirá um princípio diferente.

O algoritmo deverá estimular descoberta.

Não repetição.

Se uma pessoa participa apenas de trilhas, eventualmente verá:

culinária.

voluntariado.

arte.

música.

esportes.

bem-estar.

O algoritmo deverá ampliar horizontes.

Não estreitá-los.

Porque experiências transformadoras frequentemente surgem fora dos nossos hábitos.

IA e memória

A everhere ajudará o usuário a preservar sua história.

A IA poderá organizar automaticamente:

  • fotografias
  • vídeos
  • comentários
  • datas
  • participantes

lugares.

Criando registros significativos.

Mas nunca inventará memórias.

Ela organiza.

Quem vive é a pessoa.

IA para operações internas

Grande parte da Inteligência Artificial trabalhará longe dos usuários.

Ela auxiliará:

  • detecção de fraudes
  • previsão de demanda
  • análise operacional
  • monitoramento
  • suporte interno

diagnóstico de falhas.

Isso reduz custos.

Melhora estabilidade.

E libera pessoas para atividades mais importantes.

Modelos de linguagem

A everhere não dependerá de um único fornecedor.

A arquitetura será compatível com múltiplos modelos.

Entre eles:

OpenAI.

Anthropic.

Google.

Modelos open source.

A aplicação conversará com uma camada própria de abstração.

Isso evita dependência tecnológica.

Permite trocar modelos conforme:

  • qualidade
  • custo
  • velocidade

especialização.

IA não tomará decisões humanas

Existem decisões que continuarão pertencendo às pessoas.

Quem convidar.

Quem aceitar.

Quem encontrar.

Quais experiências criar.

Como conduzir uma atividade.

Como construir uma comunidade.

A IA pode sugerir.

Nunca substituir.

Transparência

Sempre que a IA produzir conteúdo relevante, isso deverá ser identificado.

O usuário precisa saber quando está interagindo com inteligência artificial.

A confiança depende de transparência.

Não de ilusão.

Privacidade

Nenhum dado pessoal será utilizado para treinamento de modelos públicos.

Os dados dos usuários pertencem aos usuários.

A IA poderá utilizá-los apenas para prestar o serviço solicitado.

Nunca para alimentar modelos externos sem autorização explícita.

Esse princípio será permanente.

O limite da Inteligência Artificial

A IA poderá recomendar uma trilha.

Mas não caminhar por ela.

Poderá sugerir um restaurante.

Mas não sentir o sabor da refeição.

Poderá organizar um encontro.

Mas não criar uma amizade.

Poderá ajudar alguém a descobrir uma experiência.

Mas nunca viver essa experiência.

Essa diferença parece simples.

Mas define toda a filosofia da everhere.

A decisão oficial da everhere

A Inteligência Artificial será utilizada para:

Área

Papel da IA

Busca

Compreensão de intenção e pesquisa semântica

Recomendações

Descoberta de experiências relevantes

Organização

Classificação automática de conteúdo

Assistente

Apoio ao usuário e aos organizadores

Tradução

Localização multilíngue

Moderação

Identificação de riscos e abusos

Operações

Automação e monitoramento

Memórias

Organização inteligente de registros

Analytics

Apoio à tomada de decisão

Ela não será utilizada para:

  • substituir encontros humanos
  • incentivar tempo excessivo de tela
  • manipular comportamento para aumentar retenção
  • tomar decisões disciplinares sem supervisão humana

utilizar dados pessoais para treinamento externo sem consentimento.

A filosofia da everhere

A Inteligência Artificial será uma das tecnologias mais poderosas já criadas.

Mas o sucesso da everhere nunca será medido pela quantidade de IA que utilizamos.

Será medido pela quantidade de vidas que ajudamos a acontecer.

Se, ao final de um dia, nossa Inteligência Artificial conseguir fazer uma pessoa guardar o celular, encontrar amigos, descobrir um lugar novo, criar uma memória e voltar para casa com a sensação de ter vivido algo que realmente importou, então ela terá cumprido exatamente o papel para o qual foi criada.

11
Parte IV — Escala e Futuro

Escalabilidade e Crescimento da Plataforma

Como construir uma arquitetura capaz de acompanhar milhões de experiências humanas

Por que este capítulo existe?

A everhere não será construída apenas para funcionar.

Ela será construída para crescer.

Essa diferença é fundamental.

Muitos sistemas funcionam perfeitamente quando possuem poucos usuários.

O verdadeiro desafio aparece quando uma ideia que nasceu pequena começa a transformar a vida de milhões de pessoas.

Nesse momento, a arquitetura precisa responder novas perguntas:

Como atender milhões de usuários simultaneamente?

Como manter velocidade?

Como evitar que custos explodam?

Como adicionar novas funcionalidades sem tornar o sistema instável?

Como expandir para novos países sem reconstruir tudo?

O primeiro princípio

A everhere não deve ser superdimensionada no início.

Mas também não pode ser construída de forma descartável.

A arquitetura precisa seguir um equilíbrio:

Simples o suficiente para evoluir rapidamente.Robusta o suficiente para crescer globalmente.

Crescer não é apenas ter mais usuários

Existe uma visão limitada de escalabilidade.

Muitas pessoas pensam apenas em quantidade de usuários.

Mas uma plataforma como a everhere possui múltiplas dimensões de crescimento.

Crescimento de usuários

Mais pessoas utilizando a plataforma.

Crescimento de experiências

Mais atividades disponíveis.

Mais organizadores.

Mais categorias.

Mais regiões.

Crescimento de dados

Mais:

  • fotos
  • vídeos
  • mensagens
  • avaliações
  • históricos

memórias.

Crescimento geográfico

Novas cidades.

Novos países.

Novas moedas.

Novas regulamentações.

A arquitetura precisa estar preparada para todos esses movimentos.

Escalar sem perder a essência

Existe um risco comum em plataformas que crescem:

O sistema fica maior.

Mas a experiência fica pior.

A everhere não pode cair nessa armadilha.

Crescimento técnico não pode destruir a simplicidade humana.

Uma pessoa entrando na plataforma pela primeira vez deve sentir:

"É fácil encontrar algo que quero viver."

Não:

"Estou diante de um sistema complexo."

A evolução da arquitetura

A everhere não começará como uma gigante global.

A arquitetura deverá evoluir junto com o estágio da empresa.

Fase 1 — Fundação

Primeiros usuários.

Primeiras experiências.

Validação do modelo.

Nesta fase, simplicidade será prioridade.

A arquitetura inicial deverá evitar complexidade desnecessária.

Decisão inicial

A arquitetura começará utilizando:

Modular Monolith

Não iniciaremos com dezenas de microsserviços.

Por quê?

Porque no começo o maior risco não é escala.

É complexidade.

Microsserviços trazem benefícios:

  • isolamento
  • escalabilidade independente

autonomia das equipes.

Mas também adicionam:

  • infraestrutura
  • monitoramento
  • comunicação entre serviços

mais pontos de falha.

A everhere deve primeiro descobrir o produto.

Depois otimizar a escala.

Fase 2 — Crescimento

Quando determinados módulos exigirem escala própria, eles poderão ser separados.

Exemplos:

Sistema de busca.

Processamento de imagens.

Notificações.

Recomendações.

IA.

Pagamentos.

A evolução será baseada em necessidade real.

Não em moda tecnológica.

Fase 3 — Plataforma global

Em escala internacional, a arquitetura poderá evoluir para uma abordagem híbrida:

Serviços independentes para domínios críticos.

Núcleo integrado para funcionalidades relacionadas.

Essa abordagem combina:

  • velocidade
  • controle

escalabilidade.

Escalabilidade horizontal

A everhere deverá priorizar escalabilidade horizontal.

Isso significa:

Adicionar mais máquinas.

Em vez de depender apenas de máquinas maiores.

Exemplo:

Em vez de um servidor gigantesco suportar todo o tráfego:

criamos múltiplas instâncias menores trabalhando juntas.

Essa abordagem permite:

  • crescimento gradual
  • redução de risco

melhor aproveitamento de recursos.

Cloud como base

A everhere deverá nascer utilizando infraestrutura em nuvem.

A decisão oficial será:

Arquitetura Cloud Native.

A nuvem permite:

  • elasticidade
  • redundância
  • automação
  • implantação global

recuperação rápida.

Escolha de provedor

A everhere deverá priorizar provedores líderes:

Amazon Web Services (AWS)

Google Cloud Platform (GCP)

Microsoft Azure

A decisão inicial recomendada:

Amazon Web Services (AWS)

Por quê?

Porque possui:

  • maior maturidade operacional
  • maior variedade de serviços
  • maior ecossistema

maior experiência com plataformas globais.

Empresas como Netflix utilizam AWS justamente pela capacidade de operar sistemas extremamente complexos em escala mundial.

Isso não significa dependência absoluta.

A arquitetura deverá evitar acoplamento excessivo.

Contêineres

A everhere utilizará containers como padrão de empacotamento.

Docker

para isolamento e execução consistente.

Quando a escala justificar:

Kubernetes

para orquestração.

Mas Kubernetes não deve ser adotado antes da necessidade.

Ele é uma ferramenta poderosa.

Mas adiciona complexidade operacional.

Escalabilidade do banco de dados

O banco será um dos maiores desafios.

A everhere terá dados extremamente relacionados:

  • usuários
  • experiências
  • reservas
  • comunidades
  • pagamentos

relações.

Por isso, manteremos PostgreSQL como banco principal.

A evolução será:

Primeira etapa

PostgreSQL único com alta disponibilidade.

Segunda etapa

Read replicas.

Separação entre:

  • operações de escrita

consultas intensivas.

Terceira etapa

Particionamento.

Separação por:

  • região
  • tipo de dado

volume.

Dados de mídia

Fotos e vídeos crescerão rapidamente.

Esses dados não devem ficar dentro do banco principal.

A arquitetura utilizará:

Object Storage.

Exemplo:

Amazon S3.

Benefícios:

  • baixo custo
  • alta durabilidade

escala praticamente ilimitada.

Cache

Nem toda informação precisa ser buscada no banco.

Para reduzir latência utilizaremos cache.

Principalmente para:

  • experiências populares
  • dados públicos
  • sessões

preferências temporárias.

Tecnologia recomendada:

Redis

Filas e processamento assíncrono

Nem tudo precisa acontecer imediatamente.

Algumas tarefas podem ocorrer em segundo plano:

  • envio de notificações
  • processamento de imagens
  • recomendações
  • análises

geração de conteúdo por IA.

Para isso utilizaremos arquitetura baseada em filas.

Benefícios:

  • mais estabilidade
  • melhor experiência

menor sobrecarga.

Escalabilidade da inteligência artificial

A IA será uma parte importante da everhere.

Mas seu uso precisa ser economicamente sustentável.

Nem toda interação precisa utilizar modelos gigantes.

A arquitetura deverá considerar:

  • modelos menores
  • cache de respostas
  • processamento assíncrono

roteamento inteligente.

A pergunta não será:

"Qual é a IA mais poderosa?"

Será:

"Qual é a IA adequada para cada momento?"

Escalabilidade internacional

Uma plataforma global precisa nascer pensando além de um país.

A arquitetura deverá suportar:

  • idiomas
  • fusos horários
  • moedas
  • impostos
  • regras locais

formas de pagamento.

Essas decisões devem existir desde o início.

Adicionar internacionalização depois costuma gerar grandes custos.

Disponibilidade regional

No futuro, a everhere poderá utilizar múltiplas regiões.

Exemplo:

América Latina.

América do Norte.

Europa.

Ásia.

Isso reduz:

  • latência
  • dependência regional

impacto de falhas.

Custos e escalabilidade

Escalar não significa apenas suportar mais usuários.

Significa fazer isso de forma sustentável.

Uma arquitetura ruim cresce aumentando custos mais rápido que receita.

Por isso monitoraremos:

  • custo por usuário
  • custo por experiência criada
  • custo de armazenamento
  • custo de IA

custo de infraestrutura.

O princípio da eficiência

A melhor arquitetura não é a maior.

É a que entrega maior valor utilizando recursos adequados.

Uma startup não deve operar como uma empresa gigante.

Mas deve construir fundamentos que permitam chegar lá.

A decisão oficial da everhere

Área

Decisão oficial

Arquitetura inicial

Modular Monolith

Evolução

Separação gradual por domínio

Infraestrutura

Cloud Native

Provedor inicial

AWS

Containers

Docker

Orquestração futura

Kubernetes quando necessário

Banco principal

PostgreSQL

Armazenamento de mídia

Object Storage

Cache

Redis

Processamento assíncrono

Filas

Escala

Horizontal

Estratégia

Evolução baseada em necessidade real

O verdadeiro desafio da escala

Escalar tecnologia é relativamente conhecido.

O desafio real é escalar significado.

Porque a everhere não estará apenas processando dados.

Ela estará facilitando encontros.

Criando comunidades.

Guardando memórias.

Conectando pessoas.

Quando milhões de pessoas utilizarem a plataforma, o maior sucesso não será o número de servidores funcionando.

Será o número de experiências que aconteceram porque a tecnologia conseguiu desaparecer no momento certo.

A melhor arquitetura da everhere será aquela que cresce tanto que ninguém percebe que ela existe.

Ela simplesmente permite que a vida aconteça.

12
Parte IV — Escala e Futuro

Governança Técnica e Evolução da Arquitetura

Como manter a arquitetura saudável durante décadas

Por que este capítulo existe?

Construir uma arquitetura sólida é apenas o começo.

O verdadeiro desafio de uma empresa de tecnologia não é criar um sistema que funcione hoje.

É garantir que ele continue funcionando daqui a:

5 anos.

10 anos.

20 anos.

Grandes sistemas raramente desaparecem porque uma decisão inicial foi completamente errada.

Eles desaparecem porque, ao longo do tempo, pequenas decisões ruins se acumulam.

Uma exceção temporária vira uma regra permanente.

Uma solução rápida vira uma dependência crítica.

Um código improvisado vira uma parte impossível de substituir.

Uma tecnologia escolhida no passado continua sendo utilizada apenas porque ninguém sabe exatamente por que ela existe.

Esse processo possui um nome:

degradação arquitetural.

A everhere não será construída apenas com uma boa arquitetura.

Ela será construída com mecanismos que preservem essa arquitetura ao longo do tempo.

Porque uma arquitetura excelente não é aquela criada uma vez.

É aquela que continua evoluindo sem perder sua essência.

A arquitetura é um organismo vivo

Nenhum sistema permanece igual durante décadas.

A everhere irá mudar.

Novos produtos surgirão.

Novos países serão atendidos.

Novos modelos de negócio serão criados.

Novas tecnologias aparecerão.

Novos desafios surgirão.

A arquitetura precisa aceitar mudança.

Mas existe uma diferença entre evolução e desorganização.

Evolução significa:

  • melhorar
  • adaptar
  • substituir quando necessário

aprender com o uso.

Desorganização significa:

  • adicionar sem planejamento
  • criar exceções permanentes
  • acumular dependências

perder entendimento do próprio sistema.

A governança técnica existe para garantir que a evolução aconteça sem destruir os fundamentos.

O princípio fundamental

Toda decisão técnica precisa deixar uma memória

Sistemas grandes acumulam milhares de decisões.

Algumas parecem pequenas.

Mas, juntas, definem completamente a arquitetura.

Por que escolhemos PostgreSQL?

Por que utilizamos determinada estrutura de APIs?

Por que uma funcionalidade foi separada em um serviço próprio?

Por que uma tecnologia foi descartada?

Por que determinada limitação existe?

Sem registro, essas respostas desaparecem.

E quando o conhecimento desaparece, a empresa começa a repetir erros antigos.

Por isso a everhere adotará um princípio:

Toda decisão arquitetural importante precisa possuir contexto, justificativa e consequência registrada.

Architecture Decision Records (ADRs)

A principal ferramenta de governança arquitetural será o uso de:

Architecture Decision Records (ADR).

Um ADR é um documento curto que registra uma decisão técnica importante.

Ele não descreve apenas a decisão final.

Ele registra:

  • o problema existente
  • as alternativas consideradas
  • os motivos da escolha
  • os impactos positivos
  • os impactos negativos

as consequências futuras.

Exemplo

Uma decisão simples:

"Utilizar PostgreSQL como banco principal."

O ADR registrará:

Contexto

A everhere possui dados altamente relacionados:

  • usuários
  • experiências
  • comunidades
  • pagamentos

relacionamentos.

Alternativas avaliadas

  • MongoDB
  • DynamoDB
  • MySQL

PostgreSQL.

Decisão

Utilizar PostgreSQL.

Motivo

Maior consistência transacional, maturidade, suporte geográfico através do PostGIS e capacidade de evolução por décadas.

Consequências

Maior facilidade para regras complexas.

Menor flexibilidade para alguns modelos extremamente distribuídos.

A decisão deixa de ser uma opinião de uma pessoa.

Ela se transforma em conhecimento institucional.

O sistema de conhecimento arquitetural da everhere

A arquitetura não será sustentada apenas por documentos técnicos isolados.

Ela precisa possuir memória.

Por isso a everhere utilizará uma abordagem de conhecimento conectado.

A ferramenta central para organização desse conhecimento será o:

Obsidian.

O papel do Obsidian

O Obsidian não será utilizado como substituto do código.

Nem como banco de dados operacional.

Nem como documentação pública.

Ele será utilizado como:

sistema interno de conhecimento arquitetural da empresa.

Sua função será conectar:

  • decisões técnicas
  • conceitos do produto
  • arquitetura
  • regras de negócio
  • aprendizados

histórico de evolução.

Por que utilizar conhecimento conectado?

Documentos tradicionais possuem um problema.

Eles ficam isolados.

Existe um documento sobre banco de dados.

Outro sobre usuários.

Outro sobre pagamentos.

Outro sobre inteligência artificial.

Mas sistemas reais não funcionam dessa forma.

Tudo está conectado.

Um usuário se conecta com:

  • experiências
  • comunidades
  • pagamentos
  • recomendações
  • mensagens

memórias.

A arquitetura também.

Por isso o conhecimento precisa refletir essa realidade.

Exemplo de estrutura

Uma página sobre PostgreSQL poderia estar conectada com:

PostgreSQL

→ Arquitetura de Dados

→ Experiências

→ Pagamentos

→ Transações

→ Segurança

→ Escalabilidade

→ Custos Operacionais

→ ADR-001

Uma mudança em uma decisão permite compreender todas as áreas afetadas.

Documentação viva

A documentação da everhere não será tratada como um arquivo criado uma vez e esquecido.

Ela será um sistema vivo.

Toda grande mudança arquitetural deverá atualizar:

  • ADRs
  • diagramas
  • documentação
  • decisões relacionadas

dependências afetadas.

A documentação deve evoluir junto com o sistema.

Uma documentação desatualizada é perigosa.

Ela cria uma falsa sensação de entendimento.

Padrões de código

Arquitetura não é formada apenas por grandes decisões.

Ela também é formada por milhares de pequenas decisões diárias.

Por isso existirão padrões claros de desenvolvimento.

Incluindo:

  • organização de projetos
  • nomenclatura
  • estrutura de arquivos
  • tratamento de erros
  • testes
  • logs
  • padrões de APIs

revisão de código.

O objetivo não é limitar criatividade.

É reduzir variação desnecessária.

Grandes equipes precisam funcionar como uma única equipe.

Revisão arquitetural

Nem toda mudança precisa de aprovação arquitetural.

Mas mudanças relevantes precisam ser avaliadas.

Exemplos:

  • criação de novos serviços
  • escolha de novas tecnologias
  • alteração de modelos de dados críticos
  • mudanças de segurança

alterações de infraestrutura.

A pergunta principal será:

"Essa decisão fortalece ou enfraquece a arquitetura de longo prazo?"

Versionamento de APIs

APIs são contratos.

Quando um aplicativo depende de uma API, aquela interface deixa de pertencer apenas ao time técnico.

Ela pertence ao ecossistema.

Por isso a everhere adotará versionamento explícito.

Exemplo:

/api/v1/experiences

/api/v2/experiences

Mudanças incompatíveis nunca serão realizadas silenciosamente.

Compatibilidade será tratada como requisito.

Estratégia de migrações

Sistemas vivos precisam mudar seus dados constantemente.

Novos campos.

Novas estruturas.

Novas regras.

Por isso nenhuma alteração crítica será feita diretamente em produção.

Todas as mudanças utilizarão:

  • migrações versionadas
  • histórico completo
  • testes prévios

possibilidade de rollback.

O banco de dados será tratado com o mesmo cuidado que o código.

Controle de dívida técnica

Toda empresa acumula dívida técnica.

O problema não é possuir dívida.

O problema é ignorá-la.

A everhere acompanhará:

  • código temporário
  • soluções improvisadas
  • componentes antigos
  • bibliotecas desatualizadas

decisões que precisam ser revistas.

A dívida técnica será tratada como dívida financeira.

Quanto mais tempo ignorada, maior o custo.

Atualização tecnológica

Tecnologia muda constantemente.

Mas a everhere não seguirá modas.

A pergunta nunca será:

"Essa tecnologia é nova?"

A pergunta será:

"Ela resolve um problema real melhor do que nossa solução atual?"

Uma tecnologia só será adotada quando oferecer:

  • ganho significativo
  • segurança
  • maturidade

sustentabilidade.

Quando substituir uma tecnologia?

Substituir uma tecnologia possui custo.

Por isso nunca será feito apenas porque algo novo apareceu.

Uma substituição acontecerá quando:

  • o custo de manutenção aumentar demais
  • a segurança estiver comprometida
  • a escalabilidade for insuficiente
  • existir alternativa comprovadamente superior

a tecnologia deixar de possuir suporte adequado.

A melhor tecnologia não é a mais moderna.

É aquela que continua sendo adequada.

CI/CD como processo de engenharia

Entrega contínua não é apenas automação.

É uma forma de garantir qualidade.

A everhere utilizará processos automatizados para:

  • testes
  • validações
  • análise de segurança
  • publicação

monitoramento.

Nenhuma mudança importante deve depender apenas de confiança humana.

Processos reduzem erros.

Evitando a degradação arquitetural

Com o crescimento da empresa existe uma tendência natural:

cada equipe começa a criar suas próprias soluções.

Com o tempo:

  • padrões desaparecem
  • sistemas duplicam
  • tecnologias se multiplicam

custos aumentam.

Para evitar isso, a everhere manterá:

  • princípios arquiteturais claros
  • revisão periódica
  • documentação viva
  • decisões registradas

padrões compartilhados.

A arquitetura também precisa evoluir

Existe um erro comum:

proteger tanto a arquitetura atual que ela impede evolução.

Isso também é perigoso.

A governança não existe para impedir mudanças.

Existe para garantir que mudanças sejam conscientes.

Uma arquitetura saudável aceita transformação.

Mas nunca perde sua identidade.

A decisão oficial da everhere

A governança técnica da everhere seguirá os seguintes princípios:

Área

Decisão oficial

Decisões arquiteturais

ADRs obrigatórios

Conhecimento interno

Obsidian como sistema de conhecimento conectado

Documentação

Viva e continuamente atualizada

Código

Padrões e convenções compartilhadas

APIs

Versionamento explícito

Banco de dados

Migrações controladas

Mudanças críticas

Revisão arquitetural

Tecnologia nova

Avaliação por necessidade real

Dívida técnica

Monitoramento contínuo

Entrega

CI/CD automatizado

Evolução

Substituição baseada em valor e sustentabilidade

A memória da arquitetura

A everhere nasceu com uma missão:

ajudar pessoas a criarem memórias no mundo real.

Mas uma empresa que deseja existir por décadas também precisa criar sua própria memória.

Cada decisão.

Cada aprendizado.

Cada erro evitado.

Cada princípio construído.

Tudo isso forma o conhecimento que permitirá que novas gerações de engenheiros continuem construindo sobre a mesma visão.

Porque uma grande tecnologia não é criada apenas por código.

Ela é criada pela capacidade de uma organização aprender, lembrar e evoluir.

A melhor arquitetura não é aquela que nunca muda.

É aquela que consegue mudar sem esquecer quem é.

13
Parte IV — Escala e Futuro

Epílogo

A melhor tecnologia desaparece

Quando começamos a escrever este livro, a pergunta parecia ser técnica.

Qual linguagem utilizar?

Qual banco de dados escolher?

Como estruturar a infraestrutura?

Como escalar?

Como proteger os dados?

Como integrar inteligência artificial?

Ao longo dos capítulos, percebemos que essas perguntas eram importantes.

Mas nenhuma delas era a mais importante.

Porque tecnologia nunca foi o objetivo da everhere.

Ela é apenas o meio.

Existe uma tendência natural na indústria de software.

Celebramos arquiteturas complexas.

Infraestruturas gigantescas.

Milhares de servidores.

Bilhões de requisições.

Sistemas distribuídos.

Inteligências artificiais cada vez mais sofisticadas.

Tudo isso impressiona.

Mas quase nunca é isso que as pessoas realmente lembram.

Ninguém volta para casa contando que utilizou uma excelente API.

Ninguém guarda na memória um banco de dados bem modelado.

Ninguém cria uma lembrança porque uma consulta SQL foi executada em poucos milissegundos.

As pessoas lembram da experiência que viveram.

Da conversa que tiveram.

Do lugar que descobriram.

Da amizade que começou.

Da aventura que decidiram viver.

Da memória que construíram.

E toda a tecnologia existe para tornar esses momentos possíveis.

Este livro definiu a arquitetura da everhere.

Mas, no fundo, ele definiu algo maior.

Definiu uma filosofia de engenharia.

Construiremos software que respeita pessoas.

Infraestrutura que protege confiança.

Arquitetura que favorece simplicidade.

Sistemas preparados para crescer sem perder sua essência.

Tecnologia que permanece invisível quando a vida começa.

Porque esse é o maior elogio que um produto como a everhere pode receber.

Não que ele seja extraordinário.

Mas que ele desapareça no momento certo.

Quando duas pessoas se encontram por causa da plataforma, ninguém deveria pensar na arquitetura.

Quando uma família descobre uma nova experiência para viver junta, ninguém deveria lembrar do banco de dados.

Quando uma comunidade nasce, cresce e cria laços reais, ninguém deveria perceber quantos serviços estão funcionando por trás daquela interação.

Quando alguém olha para trás, anos depois, e percebe que algumas das melhores lembranças da sua vida começaram dentro da everhere, essa pessoa não estará lembrando da tecnologia.

Ela estará lembrando da vida.

É exatamente assim que deve ser.

Ao longo da história, as melhores ferramentas sempre compartilharam uma característica.

Elas ampliavam capacidades humanas sem ocupar o centro da experiência.

Um mapa não substitui uma viagem.

Uma câmera não substitui um olhar.

Um instrumento musical não substitui um músico.

Da mesma forma, a everhere não existe para substituir experiências.

Ela existe para facilitar que elas aconteçam.

Vivemos em uma época extraordinária.

A inteligência artificial mudará a maneira como trabalhamos.

A robótica transformará indústrias inteiras.

A automação eliminará inúmeras tarefas repetitivas.

A computação continuará ficando mais poderosa, mais rápida e mais acessível.

Mas nenhuma dessas transformações altera uma verdade simples.

A vida continua acontecendo entre pessoas.

Em lugares.

Em encontros.

Em histórias.

Em experiências compartilhadas.

Essa continuará sendo a parte insubstituível da existência humana.

Talvez, no futuro, quase toda tecnologia se torne invisível.

Assistentes inteligentes organizarão agendas.

Sistemas anteciparão necessidades.

Máquinas executarão tarefas complexas.

Processos acontecerão automaticamente.

Quanto mais isso acontecer, maior será nossa responsabilidade.

Porque recuperar tempo não significa recuperar vida.

Precisaremos decidir conscientemente o que fazer com o tempo que a tecnologia devolver.

A everhere nasce justamente para responder essa pergunta.

Não oferecendo mais uma tela para ocupar esse tempo.

Mas ajudando as pessoas a transformá-lo em experiências.

Se, daqui a vinte anos, alguém perguntar qual foi a maior inovação tecnológica da everhere, esperamos que a resposta não seja um algoritmo.

Nem um modelo de inteligência artificial.

Nem uma arquitetura distribuída.

Esperamos que a resposta seja algo muito mais simples.

A everhere ajudou milhões de pessoas a viverem mais.

A conhecerem lugares que nunca conheceriam.

A encontrarem pessoas que nunca encontrariam.

A criarem memórias que nunca existiriam.

A tecnologia apenas tornou isso possível.

No fim, toda decisão registrada neste livro pode ser resumida em uma única ideia.

Cada linguagem escolhida.

Cada banco de dados.

Cada protocolo.

Cada arquitetura.

Cada mecanismo de segurança.

Cada decisão de infraestrutura.

Tudo existe para responder à mesma pergunta:

Esta decisão aproxima ou afasta as pessoas da vida que elas desejam viver?

Se aproximar, faz sentido.

Se afastar, precisamos encontrar um caminho melhor.

Porque a arquitetura da everhere não será medida apenas pela qualidade do seu software.

Ela será medida pela qualidade das experiências que esse software permitiu que existissem.

E essa sempre será a decisão técnica mais importante de todas.