Arquitetando sua aplicação de
nova geração com MySQL 5.7
MySQL
Mathias Brem
http://www.mathiasbrem.com.br
Outubro, 2015
Agenda
●
Introdução ( 30 minutos )
●
Aplicações de Nova Geração
●
Arquitetura do Banco de Dados
●
Arquitetura Lambda
●
Desenvolvimento Ágil
●
SQL / NoSQL / NewSQL
●
MySQL ( 1 Hora )
●
Por que? Quando ?
●
Arquitetura do MySQL
●
Alta Disponibilidade / Escalabilidade
●
Flexibilidade e Integração
●
Virtualização
●
Cloud
●
Cases ( Pinterest, Flicker, Facebook, Twitter, Booking, Linkedin )
Aplicações de Nova Geração
●
IaaS ( Infrastructure as a Service, AWS )
●
Desenvolvimento Ágil ( Scrum, Git, Docker )
●
Usabilidade ( Bootstrap, AngularJS, Mobile )
●
Escalabilidade ( 1,10,100,100000, infinito e além )
●
Integração com tudo e todos ( JSON, WebService, IoT )
●
Disponibilidade ( Tempo é dinheiro, parar nunca! Crescer
sempre! )
●
Startups e gigantes todos usam, faça o mesmo!
Arquitetura de Banco de Dados
●
OLTP ( Transacional )
●
OLAP ( Analítico / Relatório / Consulta )
●
O que se preocupar? 4 pontos
– Segurança
– Performance
– Integridade
– Disponibilidade
Arquitetura Lambda
Arquitetura Lambda
Speed Layer
Database In Memory
Transaction Layer
OLTP Database
History Layer
Analytics
24 horas
1 Ano
Tudo
Desenvolvimento Ágil
●
Metodologia (Scrum )
●
Frameworks ( Bootstrap, Laravel, PhoneGap, XXXXX... )
●
Versionamento ( Git / Subversion )
●
Ambiente ( Docker / Vangrant )
●
Infraestrutura ( Amazon AWS )
●
Open Source ( Linux, MySQL, Redis, MongoDB, Cassandra,
Neo4j, Apache, Ngix, PHP, Python, Java, Hadoop, Spark,
NodeJS, Raspberry…...OMG!!!! )
●
Muitas mudanças em produção sem interrupção
●
Provisionamento de novos ambientes constantemente
●
Automatização, facilidade, agilidade
DEV
v1
HOMOLOG
DEV
v34
DEV
v35
DEV
v36
PROD
SQL / NoSQL / NewSQL
Schemaless / NoSQL
●
Agilizar o desenvolvimento e modificações
●
Fazer a coisa certa com a ferramenta certa
●
Performance
●
(You no have power here!!!)
●
(Well….Now you have power here!!!)
●
Um pouco de modinha também
●
Que tal misturar os dois na dose certa?
Schemaless / NoSQL
{
“modelo” : “Porsche 911”,
“ano”: 2015,
“cor”: “prata”
}
MODELO ANO COR
Porsche 911 2015 prata
{
“modelo” : “Porsche 911”,
“ano”: 2015,
“cor”: “prata”
“quilometragem” : 2000
}
NoSQL / Document
SQL
Schemaless / NoSQL / NewSQL
ID MODELO ANO JSONCOL XMLCOL
1 Porsche 911 2015 {“id” : 1,
“modelo” :
“Porsche 911”,
“ano”:
2015,
“cor”:
“prata”
“quilometrag
em” : 2000
}
<id>1</id>
<modelo>
Porsche 911
</modelo>
<ano>2015</ano>
<cor>prata</cor>
<quilometragem>2000<
/quilometragem>
NewSQL
mysql> SELECT * FROM carros WHERE JSONCOL->'$.id'= 1;
Ou
mysql> SELECT * FROM carros WHERE ID= 1;
Quando e Porque o MySQL?
●
Internet
●
Elevado número de sessões / requisições simultâneas
●
Armazenar (dados)
●
Popular / Comunidade Forte / Parrudo e Confiável
●
Simples / Multiplataforma
●
Muito Flexível ( canivete suíço, integração com shell )
●
Em constante atualização e desenvolvimento
Arquitetura do MySQL
Connectors ( Java, C, PHP, .NET, Python, NodeJS, Ruby... )
SQL
Interface
Parser
Caches
& Buffers
Storage Engine ( InnoDB, MyISAM, NDB, XtraDB, TokuDB )
Binlog Global Files
Storage
Engine
Files
Storage
Engine
Memory
App ( Mobile, WebService, E-commerce, CRM, Portal )
S.O ( Linux, Unix )
AWS EC2
Optimizer
Connection Pool
MySQL
Storage Engine
●
InnoDB ( OLTP )
●
MyISAM ( OLAP )
●
NDB ( In Memory )
●
TokuDB
●
CSV
●
Memory
●
Cassandra Storage Engine
●
Backhole
●
Archive
●
OQGRAPH
●
SphinxSE
●
Spider
●
Connect
●
Deep
●
Faça a sua, compile o seu próprio InnoDB….
Open source é assim!
Storage Engine
Binlog Global Files
Storage
Engine
Files
Storage
Engine
Memory
S.O ( Linux, Unix )
Alta Disponibilidade / Escalabilidade
●
Replicação
●
Replicação com Sharding ( MySQL Fabric, HA
Proxy, MySQL Proxy, MaxScale, MySQL Router )
●
MySQL Cluster ( NDB )
●
Galera Cluster ( InnoDB )
●
( DRBD / Replicação de Storage / etc... )
Sharding
Master 1
Read / Write
Master 2
Read / Write
APP
Slave 1
Read
Slave (N)
Read
● Load Balancer
● Lógica da aplicação
● MySQL Fabric
● MySQL Router….
● (N)
● Essa parte é onde fica a treta da coisa toda...
APP
MySQL MySQL
Virtual IP
Replicação
Master
Read / Write
Slave
Read
logbin relay-log
SIMPLES E MUITOOO FLEXÍVEL!!!!!
Isso é o básico, com essa mesma lógica da
p/ se fazer muitas outras coisas! Veja o caso
do “Booking.com” http://blog.booking.com
Replicação
Master
Read / Write
Slave 1
Read
Slave 2
Read
Slave (N)
Read
APP BI / Analytics
Integração NFE
Sharding
Master 1
Read / Write
Master 2
Read / Write
APP
Slave 1
Read
Slave (N)
Read
● Load Balancer
● Lógica da aplicação ( IF XX THEN …. )
● MySQL Fabric
● MySQL Router….
● Essa é parte onde fica a treta da coisa toda….
MySQL Cluster ( Network Database )
NDB
Data Node1
NDB
Data Node2
NDB
Data Node(n)
NDB
Data Node3
Dados
Connectors ( Java, C, PHP, .NET... )
SQL
Interface
Parser
Caches
& Buffers
Storage Engine ( InnoDB, MyISAM, NDB)
Binlog
Global
Files
Storage
Engine
Files
Storage
Engine
Memory
APP
S.O ( Linux, Unix )
AWS EC2
Optimizer
Connection Pool
NDB Cluster
NDB
Management
Galera Replication
Master
Read / Write
Master
Read / Write
Master
Read / Write
Master
Read / Write
Connectors ( Java, C, PHP, .NET, Python, NodeJS, Ruby….. )
App ( Mobile, WebService, E-commerce, CRM, Portal )
InnoDB InnoDB InnoDB InnoDB
Galera Cluster
Alta Disponibilidade via HW/SW/S.O
Servidor 1
DISCOS
STORAGE
Servidor 2
DISCOS
STORAGE
Servidor 1 Servidor 2
STORAGE
Flexibilidade de Integração
Truques / Canivete
●
Logbin
●
Shell
●
JSON / XML
●
CSV
●
TEXT FILE
●
ODBC
●
Hadoop Applier
●
Linux…Python, Java ( Faça suas rotinas )
Virtualização
Virtualização
●
Template Oracle VM
●
I/O e Networking
●
Usar backup de vm como backup de
database… para com essa bobagem! (não
faça isso)
Container's
S.O ( Linux, Unix )
AWS EC2 / HW Próprio / Outros
Docker ( Container Daemon )
IMG
MySQL
IMG
PHP
IMG
RUBY
IMG
(N)...
http://www.alastori.com.br/2015/03/mysql-no-docker.html
Cloud
●
AWS
●
Docker / Container
●
Criatividade, isso conta na arquitetura, ainda mais na
cloud e faz diferença $$$
●
Veja como o MySQL já foi adequado ao AWS e as dicas
existentes, a equipe da Oracle trouxe novidades na
5.7, até backup para o S3 ele faz… Dicas de otimização
no EC2 e mais! Não se esqueça do
RDS(MySQL,MariaDB,Aurora)
●
IaaS, PaaS, DBaaS, SaaS
Cloud
●
IaaS, PaaS, DBaaS, SaaS
●
RDS ( Para casos simples, para quem está
começando )
●
EC2 ( Mais recomendado para montar o seu
servidor e gerenciar totalmente o banco de
dados, personalizar, etc... )
Cases
Arquitetando sua aplicação de nova geração com MySQL 5.7

Arquitetando sua aplicação de nova geração com MySQL 5.7

  • 1.
    Arquitetando sua aplicaçãode nova geração com MySQL 5.7 MySQL Mathias Brem http://www.mathiasbrem.com.br Outubro, 2015
  • 2.
    Agenda ● Introdução ( 30minutos ) ● Aplicações de Nova Geração ● Arquitetura do Banco de Dados ● Arquitetura Lambda ● Desenvolvimento Ágil ● SQL / NoSQL / NewSQL ● MySQL ( 1 Hora ) ● Por que? Quando ? ● Arquitetura do MySQL ● Alta Disponibilidade / Escalabilidade ● Flexibilidade e Integração ● Virtualização ● Cloud ● Cases ( Pinterest, Flicker, Facebook, Twitter, Booking, Linkedin )
  • 3.
  • 5.
    ● IaaS ( Infrastructureas a Service, AWS ) ● Desenvolvimento Ágil ( Scrum, Git, Docker ) ● Usabilidade ( Bootstrap, AngularJS, Mobile ) ● Escalabilidade ( 1,10,100,100000, infinito e além ) ● Integração com tudo e todos ( JSON, WebService, IoT ) ● Disponibilidade ( Tempo é dinheiro, parar nunca! Crescer sempre! ) ● Startups e gigantes todos usam, faça o mesmo!
  • 6.
  • 7.
    ● OLTP ( Transacional) ● OLAP ( Analítico / Relatório / Consulta ) ● O que se preocupar? 4 pontos – Segurança – Performance – Integridade – Disponibilidade
  • 8.
  • 9.
    Arquitetura Lambda Speed Layer DatabaseIn Memory Transaction Layer OLTP Database History Layer Analytics 24 horas 1 Ano Tudo
  • 10.
  • 11.
    ● Metodologia (Scrum ) ● Frameworks( Bootstrap, Laravel, PhoneGap, XXXXX... ) ● Versionamento ( Git / Subversion ) ● Ambiente ( Docker / Vangrant ) ● Infraestrutura ( Amazon AWS ) ● Open Source ( Linux, MySQL, Redis, MongoDB, Cassandra, Neo4j, Apache, Ngix, PHP, Python, Java, Hadoop, Spark, NodeJS, Raspberry…...OMG!!!! )
  • 12.
    ● Muitas mudanças emprodução sem interrupção ● Provisionamento de novos ambientes constantemente ● Automatização, facilidade, agilidade DEV v1 HOMOLOG DEV v34 DEV v35 DEV v36 PROD
  • 13.
    SQL / NoSQL/ NewSQL
  • 14.
    Schemaless / NoSQL ● Agilizaro desenvolvimento e modificações ● Fazer a coisa certa com a ferramenta certa ● Performance ● (You no have power here!!!) ● (Well….Now you have power here!!!) ● Um pouco de modinha também ● Que tal misturar os dois na dose certa?
  • 15.
    Schemaless / NoSQL { “modelo”: “Porsche 911”, “ano”: 2015, “cor”: “prata” } MODELO ANO COR Porsche 911 2015 prata { “modelo” : “Porsche 911”, “ano”: 2015, “cor”: “prata” “quilometragem” : 2000 } NoSQL / Document SQL
  • 16.
    Schemaless / NoSQL/ NewSQL ID MODELO ANO JSONCOL XMLCOL 1 Porsche 911 2015 {“id” : 1, “modelo” : “Porsche 911”, “ano”: 2015, “cor”: “prata” “quilometrag em” : 2000 } <id>1</id> <modelo> Porsche 911 </modelo> <ano>2015</ano> <cor>prata</cor> <quilometragem>2000< /quilometragem> NewSQL mysql> SELECT * FROM carros WHERE JSONCOL->'$.id'= 1; Ou mysql> SELECT * FROM carros WHERE ID= 1;
  • 17.
    Quando e Porqueo MySQL? ● Internet ● Elevado número de sessões / requisições simultâneas ● Armazenar (dados) ● Popular / Comunidade Forte / Parrudo e Confiável ● Simples / Multiplataforma ● Muito Flexível ( canivete suíço, integração com shell ) ● Em constante atualização e desenvolvimento
  • 18.
  • 19.
    Connectors ( Java,C, PHP, .NET, Python, NodeJS, Ruby... ) SQL Interface Parser Caches & Buffers Storage Engine ( InnoDB, MyISAM, NDB, XtraDB, TokuDB ) Binlog Global Files Storage Engine Files Storage Engine Memory App ( Mobile, WebService, E-commerce, CRM, Portal ) S.O ( Linux, Unix ) AWS EC2 Optimizer Connection Pool MySQL
  • 20.
    Storage Engine ● InnoDB (OLTP ) ● MyISAM ( OLAP ) ● NDB ( In Memory ) ● TokuDB ● CSV ● Memory ● Cassandra Storage Engine ● Backhole ● Archive ● OQGRAPH ● SphinxSE ● Spider ● Connect ● Deep ● Faça a sua, compile o seu próprio InnoDB…. Open source é assim!
  • 21.
    Storage Engine Binlog GlobalFiles Storage Engine Files Storage Engine Memory S.O ( Linux, Unix )
  • 22.
    Alta Disponibilidade /Escalabilidade
  • 23.
    ● Replicação ● Replicação com Sharding( MySQL Fabric, HA Proxy, MySQL Proxy, MaxScale, MySQL Router ) ● MySQL Cluster ( NDB ) ● Galera Cluster ( InnoDB ) ● ( DRBD / Replicação de Storage / etc... )
  • 24.
    Sharding Master 1 Read /Write Master 2 Read / Write APP Slave 1 Read Slave (N) Read ● Load Balancer ● Lógica da aplicação ● MySQL Fabric ● MySQL Router…. ● (N) ● Essa parte é onde fica a treta da coisa toda...
  • 25.
    APP MySQL MySQL Virtual IP Replicação Master Read/ Write Slave Read logbin relay-log SIMPLES E MUITOOO FLEXÍVEL!!!!! Isso é o básico, com essa mesma lógica da p/ se fazer muitas outras coisas! Veja o caso do “Booking.com” http://blog.booking.com
  • 26.
    Replicação Master Read / Write Slave1 Read Slave 2 Read Slave (N) Read APP BI / Analytics Integração NFE
  • 27.
    Sharding Master 1 Read /Write Master 2 Read / Write APP Slave 1 Read Slave (N) Read ● Load Balancer ● Lógica da aplicação ( IF XX THEN …. ) ● MySQL Fabric ● MySQL Router…. ● Essa é parte onde fica a treta da coisa toda….
  • 28.
    MySQL Cluster (Network Database ) NDB Data Node1 NDB Data Node2 NDB Data Node(n) NDB Data Node3 Dados Connectors ( Java, C, PHP, .NET... ) SQL Interface Parser Caches & Buffers Storage Engine ( InnoDB, MyISAM, NDB) Binlog Global Files Storage Engine Files Storage Engine Memory APP S.O ( Linux, Unix ) AWS EC2 Optimizer Connection Pool NDB Cluster NDB Management
  • 29.
    Galera Replication Master Read /Write Master Read / Write Master Read / Write Master Read / Write Connectors ( Java, C, PHP, .NET, Python, NodeJS, Ruby….. ) App ( Mobile, WebService, E-commerce, CRM, Portal ) InnoDB InnoDB InnoDB InnoDB Galera Cluster
  • 30.
    Alta Disponibilidade viaHW/SW/S.O Servidor 1 DISCOS STORAGE Servidor 2 DISCOS STORAGE Servidor 1 Servidor 2 STORAGE
  • 31.
  • 32.
    Truques / Canivete ● Logbin ● Shell ● JSON/ XML ● CSV ● TEXT FILE ● ODBC ● Hadoop Applier ● Linux…Python, Java ( Faça suas rotinas )
  • 33.
  • 34.
    Virtualização ● Template Oracle VM ● I/Oe Networking ● Usar backup de vm como backup de database… para com essa bobagem! (não faça isso)
  • 35.
    Container's S.O ( Linux,Unix ) AWS EC2 / HW Próprio / Outros Docker ( Container Daemon ) IMG MySQL IMG PHP IMG RUBY IMG (N)... http://www.alastori.com.br/2015/03/mysql-no-docker.html
  • 36.
    Cloud ● AWS ● Docker / Container ● Criatividade,isso conta na arquitetura, ainda mais na cloud e faz diferença $$$ ● Veja como o MySQL já foi adequado ao AWS e as dicas existentes, a equipe da Oracle trouxe novidades na 5.7, até backup para o S3 ele faz… Dicas de otimização no EC2 e mais! Não se esqueça do RDS(MySQL,MariaDB,Aurora) ● IaaS, PaaS, DBaaS, SaaS
  • 37.
    Cloud ● IaaS, PaaS, DBaaS,SaaS ● RDS ( Para casos simples, para quem está começando ) ● EC2 ( Mais recomendado para montar o seu servidor e gerenciar totalmente o banco de dados, personalizar, etc... )
  • 38.