tdc2016poa | trilha devops - gestão de ciclo de vida de banco de dados: já passou da hora!
TRANSCRIPT
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