Slide 1

Slide 1 text

12+ factor databases Sebastian Webber

Slide 2

Slide 2 text

● Super fã do PostgreSQL ● Aprendiz de ninja ● Gosta dos Golang e Ruby ● Organiza uns evento por aí ● Tende a falar bobagem nos eventos ● Faz uns rango que fica bonito ● Humildão que não toma IPA @sebaWebber

Slide 3

Slide 3 text

● Super fã do PostgreSQL ● Aprendiz de ninja ● Gosta dos Golang e Ruby ● Organiza uns evento por aí ● Tende a falar bobagem nos eventos ● Faz uns rango que fica bonito ● Humildão que não toma IPA @sebaWebber

Slide 4

Slide 4 text

● Super fã do PostgreSQL ● Aprendiz de ninja ● Gosta dos Golang e Ruby ● Organiza uns evento por aí ● Tende a falar bobagem nos eventos ● Faz uns rango que fica bonito ● Humildão que não toma IPA @sebaWebber

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

12factors.net

Slide 7

Slide 7 text

0 - Persistência On Premises: Storage dedicado com discos, rede e energia redundantes tolerantes a falhas Na cloud: EBS ou similar

Slide 8

Slide 8 text

Até Agora

Slide 9

Slide 9 text

1 - Base de código Automação do deployment ou rollback das mudanças no banco armazenadas no git - também conhecido como migrations. Capricha no `git log`.

Slide 10

Slide 10 text

Até Agora

Slide 11

Slide 11 text

2 - Dependências Setup do ambiente que o banco vai rodar seja vm/equipamento físico ou containers. Lembre-se do drama do Alpine e a GLib C.

Slide 12

Slide 12 text

Até Agora

Slide 13

Slide 13 text

3 - Configurações Salve suas configurações no git e faça do deploy delas como se fosse uma app no servidor.

Slide 14

Slide 14 text

Até Agora

Slide 15

Slide 15 text

4 - Serviços de apoio Não esqueça tratar as ferramentas externas, como backup e monitoramento, como parte do próprio banco.

Slide 16

Slide 16 text

Até Agora

Slide 17

Slide 17 text

5 - Construa, lance e Execute Use IaC para criar os servers/containers , instalar e configurar seus banco de dados. Objetivo final da infra *deve* server imutável.

Slide 18

Slide 18 text

6 - Processos e 7 -Vínculo de portas Crie suas configurações a fim de garantir que sejam independentes do ambiente, podendo rodar em portas e locais diferentes. Cada banco vai precisar de seu disco independente.

Slide 19

Slide 19 text

8 - Concorrência Limite os recursos do banco e garanta que ele sempre execute num equipamento que tenha os recursos mínimos. Evite bancos com alta concorrência rodarem no mesmo host.

Slide 20

Slide 20 text

9 - Descartabilidade Tarefas de upgrade ou mudanças de configuração considere aplicá-las em outro host, movendo os dados até ele - ou através da promoção de uma réplica.

Slide 21

Slide 21 text

10 - Paridade entre desenvolvimento e produção Use a mesma arquitetura pra todos os ambientes. Sério.

Slide 22

Slide 22 text

Até Agora Dev Produção

Slide 23

Slide 23 text

11 - Logs Use os logs pra pegar insights sobre o que o banco está trabalhando e no que ele precisa de ajuda.

Slide 24

Slide 24 text

Até Agora

Slide 25

Slide 25 text

12 - Processos administrativos Tenha um host/container configurado e pronto pra executar manutenções no banco. Não improvise. tenha tudo instalado *antes* da manutenção.

Slide 26

Slide 26 text

Até Agora

Slide 27

Slide 27 text

Ok, agora me mostra!

Slide 28

Slide 28 text

No K8S... Persistência + Deps

Slide 29

Slide 29 text

No K8S... Base de código

Slide 30

Slide 30 text

No K8S... Configurações

Slide 31

Slide 31 text

No K8S... Serviços de apoio

Slide 32

Slide 32 text

No K8S... Logs

Slide 33

Slide 33 text

No K8S... Processos administrativos

Slide 34

Slide 34 text

Pra resumir...

Slide 35

Slide 35 text

lets check the DEMO

Slide 36

Slide 36 text

StackGres Architecture

Slide 37

Slide 37 text

Anatomy of the Pod

Slide 38

Slide 38 text

Pra resumir...