SlideShare ist ein Scribd-Unternehmen logo
1 von 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
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

Weitere ähnliche Inhalte

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

Controlando a versão de seu banco de dados com Migrations
Controlando a versão de seu banco de dados com MigrationsControlando a versão de seu banco de dados com Migrations
Controlando a versão de seu banco de dados com Migrations
Andre Carlucci
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
Carlos Gonzaga
 

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

InfluxDb: como monitorar milhares de dados por segundo em real time
InfluxDb: como monitorar milhares de dados por segundo em real time InfluxDb: como monitorar milhares de dados por segundo em real time
InfluxDb: como monitorar milhares de dados por segundo em real time
 
TDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de DadosTDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de Dados
 
Controlando a versão de seu banco de dados com Migrations
Controlando a versão de seu banco de dados com MigrationsControlando a versão de seu banco de dados com Migrations
Controlando a versão de seu banco de dados com Migrations
 
Continuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na NuvemContinuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na Nuvem
 
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019
 
Aplicações 12 fatores, melhor com Docker
Aplicações 12 fatores, melhor com DockerAplicações 12 fatores, melhor com Docker
Aplicações 12 fatores, melhor com Docker
 
JavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computing
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
 
TDC2016POA | Trilha .NET - .NET Entity Core 1.0
TDC2016POA | Trilha .NET - .NET Entity Core 1.0TDC2016POA | Trilha .NET - .NET Entity Core 1.0
TDC2016POA | Trilha .NET - .NET Entity Core 1.0
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
TDC2016SP - O que há de novo no Entity Framework Core 1.0
TDC2016SP - O que há de novo no Entity Framework Core 1.0TDC2016SP - O que há de novo no Entity Framework Core 1.0
TDC2016SP - O que há de novo no Entity Framework Core 1.0
 
Entity Framework 7.0 a.k.a Entity Core 1.0
Entity Framework 7.0 a.k.a Entity Core 1.0Entity Framework 7.0 a.k.a Entity Core 1.0
Entity Framework 7.0 a.k.a Entity Core 1.0
 
Introdução Play framework
Introdução Play frameworkIntrodução Play framework
Introdução Play framework
 
TDC2016POA | Trilha .NET - O que esperar do C# 7
TDC2016POA | Trilha .NET - O que esperar do C# 7TDC2016POA | Trilha .NET - O que esperar do C# 7
TDC2016POA | Trilha .NET - O que esperar do C# 7
 
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como CódigoCurso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
 
Tdc2015
Tdc2015Tdc2015
Tdc2015
 
VoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQLVoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQL
 
Introdução ao Habitat
Introdução ao HabitatIntrodução ao Habitat
Introdução ao Habitat
 
Continuous Delivery com ArgoCD
Continuous Delivery com ArgoCDContinuous Delivery com ArgoCD
Continuous Delivery com ArgoCD
 
.NET Core 3.0 e ASP.NET Core 3.0 Deep Dive: conhecendo as principais novidade...
.NET Core 3.0 e ASP.NET Core 3.0 Deep Dive: conhecendo as principais novidade....NET Core 3.0 e ASP.NET Core 3.0 Deep Dive: conhecendo as principais novidade...
.NET Core 3.0 e ASP.NET Core 3.0 Deep Dive: conhecendo as principais novidade...
 

Mehr von Igor Abade

Mehr von Igor Abade (20)

Introdução à SRE (.Net Vale Tech Saturday - DevSecOps)
Introdução à SRE (.Net Vale Tech Saturday - DevSecOps)Introdução à SRE (.Net Vale Tech Saturday - DevSecOps)
Introdução à SRE (.Net Vale Tech Saturday - DevSecOps)
 
DevOps em grandes empresas - Mito ou Realidade?
DevOps em grandes empresas - Mito ou Realidade?DevOps em grandes empresas - Mito ou Realidade?
DevOps em grandes empresas - Mito ou Realidade?
 
Serverless Computing no Microsoft Azure
Serverless Computing no Microsoft AzureServerless Computing no Microsoft Azure
Serverless Computing no Microsoft Azure
 
Chega de receita de bolo: gerenciando infraestrutura como código
Chega de receita de bolo: gerenciando infraestrutura como códigoChega de receita de bolo: gerenciando infraestrutura como código
Chega de receita de bolo: gerenciando infraestrutura como código
 
Microsserviços .NET no Azure
Microsserviços .NET no AzureMicrosserviços .NET no Azure
Microsserviços .NET no Azure
 
Acelere - e melhore! - o feedback com testes automatizados rápidos - igor abade
Acelere - e melhore! - o feedback com testes automatizados rápidos - igor abadeAcelere - e melhore! - o feedback com testes automatizados rápidos - igor abade
Acelere - e melhore! - o feedback com testes automatizados rápidos - igor abade
 
Provisionando ambientes de Dev e Teste com Azure DevTest Labs e VSTS
Provisionando ambientes de Dev e Teste com Azure DevTest Labs e VSTSProvisionando ambientes de Dev e Teste com Azure DevTest Labs e VSTS
Provisionando ambientes de Dev e Teste com Azure DevTest Labs e VSTS
 
Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)
Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)
Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)
 
Desktop App Converter: Trazendo Apps Win32 para a Windows Store
Desktop App Converter: Trazendo Apps Win32 para a Windows StoreDesktop App Converter: Trazendo Apps Win32 para a Windows Store
Desktop App Converter: Trazendo Apps Win32 para a Windows Store
 
Acelere - e melhore! - o feedback com testes automatizados rápidos
Acelere - e melhore! - o feedback com testes automatizados rápidosAcelere - e melhore! - o feedback com testes automatizados rápidos
Acelere - e melhore! - o feedback com testes automatizados rápidos
 
Testes exploratórios não são sinônimo de bagunça! (TDC 2016 SP)
Testes exploratórios não são sinônimo de bagunça! (TDC 2016 SP)Testes exploratórios não são sinônimo de bagunça! (TDC 2016 SP)
Testes exploratórios não são sinônimo de bagunça! (TDC 2016 SP)
 
Suporte a macros na sua aplicação com PowerShell
Suporte a macros na sua aplicação com PowerShellSuporte a macros na sua aplicação com PowerShell
Suporte a macros na sua aplicação com PowerShell
 
Smoke tests, deployment e rollback automatizados (Mobile & Cloud Hack Days 2016)
Smoke tests, deployment e rollback automatizados (Mobile & Cloud Hack Days 2016)Smoke tests, deployment e rollback automatizados (Mobile & Cloud Hack Days 2016)
Smoke tests, deployment e rollback automatizados (Mobile & Cloud Hack Days 2016)
 
Keynote - Trilha Negócios (DevOps Summit Brasil 2016)
Keynote - Trilha Negócios (DevOps Summit Brasil 2016)Keynote - Trilha Negócios (DevOps Summit Brasil 2016)
Keynote - Trilha Negócios (DevOps Summit Brasil 2016)
 
Além do pen-drive: empacotando seu software para distribuição e implantação (...
Além do pen-drive: empacotando seu software para distribuição e implantação (...Além do pen-drive: empacotando seu software para distribuição e implantação (...
Além do pen-drive: empacotando seu software para distribuição e implantação (...
 
Aprenda mais sobre sua aplicação e seus usuários com Application Insights (DN...
Aprenda mais sobre sua aplicação e seus usuários com Application Insights (DN...Aprenda mais sobre sua aplicação e seus usuários com Application Insights (DN...
Aprenda mais sobre sua aplicação e seus usuários com Application Insights (DN...
 
Acelerando a criação de testes usando IntelliTest (Visual Studio Summit 2015)
Acelerando a criação de testes usando IntelliTest (Visual Studio Summit 2015)Acelerando a criação de testes usando IntelliTest (Visual Studio Summit 2015)
Acelerando a criação de testes usando IntelliTest (Visual Studio Summit 2015)
 
Muito além das startups: Build-Measure-Learn em sistemas corporativos
Muito além das startups: Build-Measure-Learn em sistemas corporativosMuito além das startups: Build-Measure-Learn em sistemas corporativos
Muito além das startups: Build-Measure-Learn em sistemas corporativos
 
Dilemas de um Desenvolvedor .NET na Terra do PowerShell
Dilemas de um Desenvolvedor .NET na Terra do PowerShellDilemas de um Desenvolvedor .NET na Terra do PowerShell
Dilemas de um Desenvolvedor .NET na Terra do PowerShell
 
Quebrando preconceitos: Continuous Delivery na Plataforma Microsoft
Quebrando preconceitos: Continuous Delivery na Plataforma MicrosoftQuebrando preconceitos: Continuous Delivery na Plataforma Microsoft
Quebrando preconceitos: Continuous Delivery na Plataforma Microsoft
 

Kürzlich hochgeladen

Kürzlich hochgeladen (6)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
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
  • 5. Globalcode – Open4education Infrastructure As Code Se bancos de dados fazem parte da infraestrutura... ... Precisam estar definidos como código!
  • 6. Globalcode – Open4education Duas abordagens Code First Database First
  • 7. Globalcode – Open4education Code First Preferido dos desenvolvedores Classes primeiro, banco depois Ferramenta: Migrations
  • 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
  • 14. 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
  • 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