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
Globalcode – Open4education
@IgorAbade
blog.lambda3.com.br/L3/IgorAbade
“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”
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
Globalcode – Open4education
Infrastructure As Code
Se bancos de
dados fazem parte
da infraestrutura...
... Precisam estar
definidos como
código!
Globalcode – Open4education
Duas abordagens
Code
First
Database
First
Globalcode – Open4education
Code First
Preferido dos
desenvolvedores
Classes primeiro,
banco depois
Ferramenta:
Migrations
Globalcode – Open4education
Demo
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
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
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
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
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
Globalcode – Open4education
Deployment AgentTFS
Build Agent
Fluxo SSDT
Desenvolvedor
Visual Studio
Git/TFVC
Continuous
Integration
Deploy/Test
MSBuild
MSTest
SQL
SQL
DacPac
SQL
Continuous
Deployment
DBA
SQLPackage
PublishDeploy/Test
Globalcode – Open4education
Continuous Deployment
Globalcode – Open4education
Demo
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

Gestão de ciclo de vida de Banco de Dados: Já passou da hora! (TDC POA 2016)

  • 1.
    Globalcode – Open4education Gestãode 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
  • 2.
  • 3.
    “DevOps é acolaboraçã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 Tudomuito lindo, mas… Falar é fácil Historicamente bancos de dados têm sido implementados usando ferramentas e processos desconexos do desenvolvimento de aplicações
  • 5.
    Globalcode – Open4education InfrastructureAs Code Se bancos de dados fazem parte da infraestrutura... ... Precisam estar definidos como código!
  • 6.
    Globalcode – Open4education Duasabordagens Code First Database First
  • 7.
    Globalcode – Open4education CodeFirst Preferido dos desenvolvedores Classes primeiro, banco depois Ferramenta: Migrations
  • 8.
  • 9.
    Globalcode – Open4education MasCode 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 DatabaseFirst 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 VersionamentoImperativo 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 VersionamentoDeclarativo -- 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 SQLServer 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
  • 14.
    Globalcode – Open4education DeploymentAgentTFS Build Agent Fluxo SSDT Desenvolvedor Visual Studio Git/TFVC Continuous Integration Deploy/Test MSBuild MSTest SQL SQL DacPac SQL Continuous Deployment DBA SQLPackage PublishDeploy/Test
  • 15.
  • 16.
  • 17.
    Globalcode – Open4education Obrigado! Gestãode 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