17
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

TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já passou da hora!

Embed Size (px)

Citation preview

Page 1: TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já passou da hora!

Globalcode – Open4education

Gestão de ciclo de vida de banco de dados: Já passou da hora!

Igor Abade V. Leite@igorabade

Lambda3Microsoft MVP – Visual Studio ALM

Professional Scrum Trainer – Scrum.org

Page 2: TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já passou da hora!

Globalcode – Open4education

@IgorAbadeblog.lambda3.com.br/L3/IgorAbade

Page 3: TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já passou da hora!

É DevOps!

É DevOps!

É DevOps!É

DevOps!O que é DevOps?

“DevOps é a colaboraçãoEntre Desenvolvimento e Infra (Ops)”

“DevOps é tratar suaInfraestrutura como

código”

“DevOps é usar automação”

“Kanban para Ops?”

“DevOps é usarfeature switches”

“DevOps é fazer pequenas implantações”

Page 4: TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já passou da hora!

Globalcode – Open4education

Tudo muito lindo, mas…

Falar é fácilEu não trabalho no Facebok, nem no Twitter, nem no Google, nem na Amazon…

Historicamente bancos de dados têm sido implementados usando ferramentas e processos desconexos do desenvolvimento de aplicações

Page 5: TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já passou da hora!

Globalcode – Open4education

Infrastructure As Code

Se bancos de dados fazem parte da infraestrutura...

... Precisam estar definidos como código!

Page 6: TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já passou da hora!

Globalcode – Open4education

Duas abordagens

CodeFirst

DatabaseFirst

Page 7: TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já passou da hora!

Globalcode – Open4education

Code First

Preferido dos desenvolvedoresClasses primeiro, banco depoisFerramenta: Migrations

Page 8: TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já passou da hora!

Globalcode – Open4education

Demo

Page 9: TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já passou da hora!

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 fieldMas trabalhoso para legado

Page 10: TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já passou da hora!

Globalcode – Open4education

Database First

Primeiro o banco de dados, depois o códigoMais comum para projetos legadosTipicamente envolve DAs e DBAsSQL DDL é lingua francaDeclarativo x Imperativo

Page 11: TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já passou da hora!

Globalcode – Open4education

Versionamento Imperativo

11

-- version 1CREATE TABLE dbo.Auction( id INT NOT NULL, name VARCHAR(25) NOT NULL, start DATETIME NULL, len INT NULL)

-- version 2ALTER TABLE dbo.Auction WITH CHECK ADD CONSTRAINT Au_PK

-- version 3ALTER TABLE dbo.Auction WITH CHECK ADD CONSTRAINT Au_SK UNIQUE (name)

Histórico de VersõesV 1 V 2 V 3

Page 12: TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já passou da hora!

Globalcode – Open4education

Versionamento Declarativo

-- version 1CREATE TABLE dbo.Auction( id INT NOT NULL, name VARCHAR(25) NOT NULL, start DATETIME NULL, len INT NULL)

-- version 2CREATE TABLE dbo.Auction( id INT NOT NULL PRIMARY KEY, name VARCHAR(25) NOT NULL, start DATETIME NULL, len INT NULL)

-- version 3CREATE 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

Page 13: TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já passou da hora!

Globalcode – Open4education

SQL Server Data Tools

Gestão Declarativa de Mudanças

Versionamento dos schemasImplantação incrementalRefatoração

Análise de Código e TestesValidação de dependênciasT-SQL Static Code AnalysisTestes Unitários

Integração no Ciclo de Vida da Aplicação (ALM)

Continuous Integration, Deployment e/ou Delivery

Page 14: TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já passou da hora!

Globalcode – Open4education

Deployment AgentTFS

Build Agent

Fluxo SSDT

Desenvolvedor

Visual Studio

Git/TFVC

Continuous Integration

Deploy/Test

MSBuildMSTest

SQL

SQL

DacPac

SQL

ContinuousDeployment

DBA

SQLPackage

PublishDeploy/Test

Page 15: TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já passou da hora!

Globalcode – Open4education

Continuous Deployment

Page 16: TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já passou da hora!

Globalcode – Open4education

Demo

Page 17: TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já passou da hora!

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 ALMProfessional Scrum Trainer – Scrum.org