SlideShare uma empresa Scribd logo
1 de 24
Micro-serviços
e concorrência
com PostgreSQL
Lucas Viecelli
lviecelli199@gmail.com
Concorrência
Concorrência
● Problema de Atualização Perdida
● Conflitos com acesso ou alteração simultânea de
dados
● Web Applications
● Cloud
MVCC (Multiversion concurrency control)
● Cada transação vê o seu próprio snapshot da base
de dados
● Mudanças feitas por uma transação não serão
vistas por nenhuma outra até que sua transação
seja confirmada
● Leitura nunca bloqueia a escrita e escrita nunca
bloqueia a leitura
● Melhor desempenho
PostgreSQL Concurrency with MVCC
● Toda transação obtém um ID, chamado XID
● O PostgreSQL armazena informações das
transações em cada linha
● É usada para determinar se uma linha está visível
para a transação ou não
● Cada transação vê uma versão do banco de dados,
independentemente do estado atual dos dados
MVCC com INSERTS e SELECTS
● Ao inserir uma linha, o PostgreSQL armazena o
XID na linha, como xmin
● Cada linha que foi inserida e tem uma xmin que é
menor que o XID da transação atual
● Quando é feito o commit e outras transações são
iniciadas, elas poderão visualizar a nova linha
porque satisfazem a condição xmin < XID
path: postgresql/src/backend/utils/time/tqual.c
Método: HeapTupleSatisfiesMVCC ()
● O que é visível para o snapshot exclui o comando
atual
Não inclui:
● Transações mostradas como em andamento no
snapshot
● Transações iniciadas após o snapshot
● Mudanças feitas pelo comando atual
Fluxo MVCC
Verificar se o WHERE é satisfatório
Microserviços
Monolítico VS Microserviços
Monolítico
● Se cair um DB… cai tudo
● Aplicação gigante
● Evolução lenta
● Difícil manutenção
● Não é escalável
● Backups gigantes
Microservices
● Serviços com baixo nível de acoplamento e
interdependência
● Escalabilidade do sistema
● Redução de custos
● Flexibilidade de tecnologia
● Facilidade de colocar alterações em produção
● Desafio
Patterns homologados
● Cada microserviço com o seu próprio DB
● Temos um DB para muitos microserviços
Site: microservices.io/index.html
Microserviços: não tem nada de ruim?
● Devemos lidar com a complexidade adicional da
criação de um sistema distribuído.
● Implementar casos de uso que abrangem vários
serviços sem usar transações distribuídas é difícil
● Integridade dos dados
Desafios
● API Gateway
● Serviço de configurações
● Service Discovery
● Volátil
Backup
● Não temos um Backup 100% íntegro
● Vamos ter muitos backups, de muitos DBs
diferentes
● Complexidade
● Equipe qualificada
Relatórios
● Unificar os bancos de dados
● Foreign data wrappers
● API Composition
E o PostgreSQL???
Dúvidas?
lviecelli199@gmail.com
lucas.viecelli

Mais conteúdo relacionado

Semelhante a Microservices e concorrência com PostgreSQL

Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesRodrigo Cândido da Silva
 
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Renato Groff
 
Introdução a Service Mesh com Istio
Introdução a Service Mesh com IstioIntrodução a Service Mesh com Istio
Introdução a Service Mesh com IstioJonh Wendell
 
Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Renato Groff
 
Relatorio VNC (Virtual Network Computing)
Relatorio VNC (Virtual Network Computing)Relatorio VNC (Virtual Network Computing)
Relatorio VNC (Virtual Network Computing)amarildox2
 
Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015Renato Groff
 
Microservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev WeekendMicroservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev WeekendRenato Groff
 
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de MicroservicesDeep Tech Brasil
 
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...Emmanuel Neri
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosRodolfo Fadino Junior
 
TDC2018FLN | Trilha Arquitetura - Elixir Umbrella - Aplicacoes desacopladas s...
TDC2018FLN | Trilha Arquitetura - Elixir Umbrella - Aplicacoes desacopladas s...TDC2018FLN | Trilha Arquitetura - Elixir Umbrella - Aplicacoes desacopladas s...
TDC2018FLN | Trilha Arquitetura - Elixir Umbrella - Aplicacoes desacopladas s...tdc-globalcode
 
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017Renato Groff
 
Indo alem do_mvc_node_js
Indo alem do_mvc_node_jsIndo alem do_mvc_node_js
Indo alem do_mvc_node_jsgustavobeavis
 
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...Tiago Marchetti Dolphine
 
Trabalhando com eventos e serviços no Zend Framework 2
Trabalhando com eventos e serviços no Zend Framework 2Trabalhando com eventos e serviços no Zend Framework 2
Trabalhando com eventos e serviços no Zend Framework 2William Felipe
 
Microserviços com DevOps
Microserviços com DevOpsMicroserviços com DevOps
Microserviços com DevOpsMatheus Hunsche
 

Semelhante a Microservices e concorrência com PostgreSQL (20)

Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura Microservices
 
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
 
Introdução a Service Mesh com Istio
Introdução a Service Mesh com IstioIntrodução a Service Mesh com Istio
Introdução a Service Mesh com Istio
 
Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016
 
Microservices
MicroservicesMicroservices
Microservices
 
Relatorio VNC (Virtual Network Computing)
Relatorio VNC (Virtual Network Computing)Relatorio VNC (Virtual Network Computing)
Relatorio VNC (Virtual Network Computing)
 
Microservices
MicroservicesMicroservices
Microservices
 
Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015
 
Automidia NetWatcher
Automidia NetWatcherAutomidia NetWatcher
Automidia NetWatcher
 
Microservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev WeekendMicroservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev Weekend
 
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
 
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
 
TDC2018FLN | Trilha Arquitetura - Elixir Umbrella - Aplicacoes desacopladas s...
TDC2018FLN | Trilha Arquitetura - Elixir Umbrella - Aplicacoes desacopladas s...TDC2018FLN | Trilha Arquitetura - Elixir Umbrella - Aplicacoes desacopladas s...
TDC2018FLN | Trilha Arquitetura - Elixir Umbrella - Aplicacoes desacopladas s...
 
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
 
Indo alem do_mvc_node_js
Indo alem do_mvc_node_jsIndo alem do_mvc_node_js
Indo alem do_mvc_node_js
 
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
 
Trabalhando com eventos e serviços no Zend Framework 2
Trabalhando com eventos e serviços no Zend Framework 2Trabalhando com eventos e serviços no Zend Framework 2
Trabalhando com eventos e serviços no Zend Framework 2
 
Microserviços com DevOps
Microserviços com DevOpsMicroserviços com DevOps
Microserviços com DevOps
 
Redes de computador
Redes de computadorRedes de computador
Redes de computador
 

Microservices e concorrência com PostgreSQL