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

Preview:

Citation preview

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

Globalcode – Open4education

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

É 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”

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

Globalcode – Open4education

Infrastructure As Code

Se bancos de dados fazem parte da infraestrutura...

... Precisam estar definidos como código!

Globalcode – Open4education

Duas abordagens

CodeFirst

DatabaseFirst

Globalcode – Open4education

Code First

Preferido dos desenvolvedoresClasses primeiro, banco depoisFerramenta: 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 fieldMas trabalhoso para legado

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

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

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

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

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

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

Recommended