Conceitos de Ruby on Rails

Conceitos do framework Rails e de performance de aplicações explicados a fundo, um de cada vez.

Ordenar

Database & ActiveRecord

1

Migrations de Schema Sem Downtime em Escala

Uma migration que roda em 40ms em dev pode segurar um lock ACCESS EXCLUSIVE em uma tabela de produção por minutos; este conceito cobre exatamente qual DDL trava o quê, como o strong_migrations pega isso antes de ir para produção, e o padrão de múltiplos deploys para mudanças que são inseguras não importa como você as escreva.

2

Múltiplos Bancos de Dados, Réplicas de Leitura e Sharding Horizontal no Rails

Uma réplica de leitura tira carga de query mas não faz nada pela vazão de escrita ou armazenamento no primário; sharding é o passo muito maior e muito mais difícil para quando o próprio primário é o gargalo. O Rails 6+ te dá connects_to, connected_to, e middleware automático de DatabaseSelector/ShardSelector para os dois, mas a janela de defasagem de 2 segundos e joins entre shards carregam cada um modos de falha reais e fáceis de perder.

3

Indexação do Postgres Através de Migrations do Rails

Quais índices um schema Rails de fato precisa, por que a ordem de colunas de um índice composto decide tudo, e como confirmar a partir de um console Rails que o Postgres está de fato usando o índice que você adicionou.

4

Estratégia de Eager Loading e Operações em Massa no Banco

includes não é uma estratégia, é uma escolha entre preload e eager_load, e eager loading aninhado pode multiplicar objetos instanciados até ficar mais lento que o N+1 que substituiu. Mais: agregação em SQL, e activerecord-import para escritas em massa.

5

Connection Pooling e a Matemática do pgbouncer

A aritmética de processos x threads x hosts que seu pool de banco de dados precisa caber, por que a sobreposição no momento do deploy é o risco real, e como o tamanho do pool no pgbouncer significa algo diferente.

6

Consultas N+1 e Métodos de Query em Métodos de Instância de Model

A fonte mais comum de N+1s escondidos não é um includes faltando, é um método de query do ActiveRecord morando silenciosamente dentro de um método de instância.

Application Servers & Infra

Caching

Background Jobs

Observability

Front-end & Network

API Design

Application Architecture

Security