Apesar de todos os avanços que DevOps tem trazido para o mundo do desenvolvimento de sistemas, bancos de dados (em especial os RDBMS) têm ficado para trás. Ainda que haja ferramentas disponíveis para controle de versão e automação, poucas são as empresas que as usam. Venha conhecer algumas dessas ferramentas e estratégias que pode ajudar na gestão do ciclo de vida de seu banco de dados.
Boas práticas de programação com Object Calisthenics
Gestão de ciclo de vida de Banco de Dados: Já passou da hora! (TDC POA 2016)
1. Globalcode – Open4education
Gestão de ciclo de vida de banco
de dados: Já passou da hora!
Igor Abade V. Leite
@igorabade
Lambda3
Microsoft MVP – Visual Studio ALM
Professional Scrum Trainer – Scrum.org
3. “DevOps é a colaboração
Entre Desenvolvimento e
Infra (Ops)”
“DevOps é tratar sua
Infraestrutura como
código”
“DevOps é usar
automação”
“Kanban
para Ops?”
“DevOps é usar
feature switches”
“DevOps é fazer
pequenas implantações”
4. Globalcode – Open4education
Tudo muito lindo, mas…
Falar é fácil
Historicamente bancos
de dados têm sido
implementados usando
ferramentas e
processos desconexos
do desenvolvimento de
aplicações
9. Globalcode – Open4education
Mas Code First não
resolve tudo
“Developer-centric”
Não funciona na cultura
de todas as empresas
Pode ser difícil de ler e
manter
Dev precisa criar “up” e
“down”
É preciso aprender outro
“dialeto”
Por que não usar DDL?
Fácil para green field
Mas trabalhoso para
legado
10. Globalcode – Open4education
Database First
Primeiro o banco de
dados, depois o código
Mais comum para projetos
legados
Tipicamente envolve DAs
e DBAs
SQL DDL é lingua franca
Declarativo x Imperativo
11. Globalcode – Open4education
Versionamento Imperativo
11
-- version 1
CREATE TABLE dbo.Auction
(
id INT NOT NULL,
name VARCHAR(25) NOT NULL,
start DATETIME NULL,
len INT NULL
)
-- version 2
ALTER TABLE dbo.Auction
WITH CHECK ADD CONSTRAINT Au_PK
-- version 3
ALTER TABLE dbo.Auction
WITH CHECK
ADD CONSTRAINT Au_SK UNIQUE (name)
Histórico de VersõesV 1 V 2 V 3
12. Globalcode – Open4education
Versionamento Declarativo
-- version 1
CREATE TABLE dbo.Auction
(
id INT NOT NULL,
name VARCHAR(25) NOT NULL,
start DATETIME NULL,
len INT NULL
)
-- version 2
CREATE TABLE dbo.Auction
(
id INT NOT NULL PRIMARY KEY,
name VARCHAR(25) NOT NULL,
start DATETIME NULL,
len INT NULL
)
-- version 3
CREATE TABLE dbo.Auction
(
id INT NOT NULL PRIMARY KEY,
name VARCHAR(25) NOT NULL UNIQUE,
start DATETIME NULL,
len INT NULL
)
Histórico de VersõesV 1 V 2 V 3
13. Globalcode – Open4education
SQL Server Data Tools
Gestão Declarativa de
Mudanças
Versionamento dos schemas
Implantação incremental
Refatoração
Análise de Código e Testes
Validação de dependências
T-SQL Static Code Analysis
Testes Unitários
Integração no Ciclo de
Vida da Aplicação (ALM)
Continuous Integration,
Deployment e/ou Delivery
17. Globalcode – Open4education
Obrigado!
Gestão de ciclo de vida de banco de dados:
Já passou da hora!
Igor Abade V. Leite
@igorabade
Microsoft MVP – Visual Studio ALM
Professional Scrum Trainer – Scrum.org