Aplicaciones escalables en la nube: mentiras y verdades

Enrique Catala Bañuls
Enrique Catala BañulsTechnical Leader at @SolidQ and Microsoft Data Platform MVP
MADRID · NOV 21-22 · 2014 
Aplicaciones escalables en la nube: mentiras y verdades 
Enrique Catalá 
MVP en SQL Server, Mentor SolidQ 
ecatala@solidq.com 
@enriquecatala 
Miguel Lopez 
Cloud Champion, Director SolidQ 
mlopez@solidq.com 
@augurarte
MADRID · NOV 21-22 · 2014 
Agenda 
1.Errores de diseño y arquitectura 
2.Conoce la nube
MADRID · NOV 21-22 · 2014 
¿Verdad o mentira? 
“Puedo usar Azure para escalar hasta el ‘infinito’ mi plataforma SQL Server on-premisea la vez que ahorro costes” 
Verdad 
DBreplica1Replica1Replica2Replica nDBreplica2DBreplica3Azure Republicador(opcional) Transactional replication SYNCWANSQL1 (onpremise) ON PREMISEAzure  Nodos secundarios replicación  Capa de base de datos, suscriptores (5s-15s delay)  SQL Standard Edition  Nodo publicador  Instancia OnPremise que contiene los datos maestros a replicar mediante replicación transaccional
MADRID · NOV 21-22 · 2014 
ELB / ILB 
DBreplica1 
Replica1 Replica2 Replica n 
DBreplica2 DBreplica3 
Azure Republicador 
(opcional) 
Transactional 
replication 
SYNC 
Azure 
Peticiones balanceadas 
automáticamente 
(ILB/ELB) 
 Nodos secundarios 
replicación 
 Capa de base de datos, 
suscriptores (5s-15s 
delay) 
 SQL Standard Edition 
Add-AzureInternalLoadBalancer 
-ServiceName $svc 
-InternalLoadBalancerName $ilb
MADRID · NOV 21-22 · 2014 
demo 
Arquitectura elástica
MADRID · NOV 21-22 · 2014 
“Para implementar una aplicación Web que se accederá de forma masiva a través de la Web, y que gestiona contactos (o usuarios), una base de datos SQL server o SQL Databasees la mejor opción a la hora de elegir la capa de datos.” 
¿Verdad o mentira? 
Mentira 
MADRID · NOV 21-22 · 2014 
Bases de datos y cargas de trabajo en aplicaciones en la nube
MADRID · NOV 21-22 · 2014 
NoSQLKey-Value 
Azure TableStorage 
Caso de cliente con usuarios/grupos en tablas 
https://haveibeenpwned.com/HowFastIsAzureTableStorage/?email=pepe@Hotmail.com
MADRID · NOV 21-22 · 2014 
Algo diferente de programar… 
publicclassBreachedAccount: TableEntity{ 
publicBreachedAccount() { } 
publicstringWebsites{ get; set; } } 
varbreachedAccount= new BreachedAccount{ 
PartitionKey= “undominio.com”, 
RowKey= “un-correo01", 
Websites= "Adobe;Stratfor" }; 
varinsertOperation= 
TableOperation.Insert(breachedAccount); 
table.Execute(insertOperation); 
varbatch= new TableBatchOperation(); 
batch.Insert(breachedAccount1); 
batch.Insert(breachedAccount2); 
batch.Insert(breachedAccount3); 
table.ExecuteBatch(batch);
MADRID · NOV 21-22 · 2014 
demo 
NoSQL-Azure TableStorage
MADRID · NOV 21-22 · 2014 
¿Verdad o mentira? 
“Hablando de rendimiento, Azure tiene máquinas tan potentes, que con sólo elegir el tipo de máquina adecuada para mi App, puedo ejecutar cualquier aplicación que quiera” 
Verdad a medias: 
La frase anterior es cierta, pero…”La CPU es muy valiosa” 
VM Size 
Cores 
RAM 
Local SSD 
Standard_G1 
2 
28 Gb 
406 Gb 
Standard_G2 
4 
56 Gb 
812 Gb 
Standard_G3 
8 
112 Gb 
1,630 Gb 
Standard_G4 
16 
224 Gb 
3,250 Gb 
Standard_G5 
32 
448 Gb 
6,500 Gb
MADRID · NOV 21-22 · 2014 
La CPU es muy valiosa 
Máquina 
Puntuación single-thread 
Puntuación multi-thread 
Descripción 
PortatilEnrique Catalá 
1911 
4826 
Intel i7 1.73Ghz 
Entorno VM A3 (4cores) 
1066 
3635 
AMD Opteron4171 2.1Ghz 
Entorno VM A4 (8cores) 
1072 
6617 
AMD Opteron4171 2.1Ghz 
Entorno VM A7 (AMD) 
1077 
5622 
AMD Opteron4171 2.1Ghz 
Entorno VM A7 (Intel) 
1115 
6680 
Intel XeonE5-2660 2.2Ghz 
Entorno A9 (8 cores) 
2460 
10580 
Intel XeonE5-26702.6Ghz 
Entorno VM D14 (16 cores) 
1857 
21444 
Intel XeonE5-2660@ 2.20 GHz 
* Benchmarkno oficial y susceptible de cambios
MADRID · NOV 21-22 · 2014 
La CPU es muy valiosa 
Azure A4 
OnPremise 
Azure A4 
OnPremise 
Azure A4 
OnPremise
MADRID · NOV 21-22 · 2014 
La CPU es muy valiosa 
•List<T> ->O(n) 
•Dictionary<T,U>-> O(1)
MADRID · NOV 21-22 · 2014 
La CPU es muy valiosa 
No olvides optimizar T-SQL, importa ahora todavía mas
MADRID · NOV 21-22 · 2014 
“En Azure podemos usar Azure Federationspara montar una aplicación multi-organización (tenant) basada en SQL Databaseque pueda escalar la capa de datos, incluso por diferentes regiones” 
¿Verdad o mentira? 
mentira
MADRID · NOV 21-22 · 2014 
Escalabilidad de SQL Database
MADRID · NOV 21-22 · 2014 
Administrador de mapeo de shards
MADRID · NOV 21-22 · 2014 
SQL DatabaseElasticScale 
No más federaciones (no soportado) 
DatabaseSharding 
Soporte API .NET 
Soporte API PowerShell/ Automation 
Soporte migración desde Federations
MADRID · NOV 21-22 · 2014 
demo 
SQL DB ElasticScale 
Mover datos entre shards
MADRID · NOV 21-22 · 2014 
¿Verdad o mentira? 
“Es preferible hacer menos peticiones a BBDD que devuelvan mas filas vs muchas peticiones devolviendo pocas filas” 
Verdad: El coste de round-tripes muy elevado
MADRID · NOV 21-22 · 2014 
¿Verdad o mentira? 
“Los ORM son necesarios en el desarrollo cloudporque facilitan el desarrollo aunque perdamos visibilidad de lo que hace el código por debajo” 
Mentira 
-Los ORM no escalan, es así de simple 
-EntityFramework es mi amigo 
MADRID · NOV 21-22 · 2014 
EntityFramework: Malos usos 
Usar el método .Contains() recompilará siempre una queryEF
MADRID · NOV 21-22 · 2014 
EntityFramework: ¿y ahora qué? 
Después de 18 meses de duro trabajo, la aplicación no escala…¿qué hacemos? 
Librería 
Método 
¿Qué hace? 
System.Data.Entity.Core. Query.PlanCompiler.PlanCompiler 
Compile(cqt.DbCommandTree ctree, out List<ProviderCommandInfo> providerCommands, out ColumnMap resultColumnMap, out int columnCount, 
out Set<md.EntitySet> entitySets) 
IMPORTANTE: Compila queryhacia SQL Server. Coste de compilación. Aquí generalmente es donde debemos poner esfuerzos en optimizar linq 
System.Data.Entity.Core. Objects.Elinq.CompiledELinqQueryState 
GetExecutionPlan(MergeOption? forMergeOption) 
Obtener plan de ejecución ya compilado previamente 
System.Data.Entity.Core. Objects.Elinq.ELinqQueryState 
GetExecutionPlan(MergeOption? forMergeOption) 
Obtener plan de ejecución todavía no compilado 
System.Data.Entity.Core. Objects.ObjectQuery<T> 
GetResults(MergeOption? forMergeOption) 
IMPORTANTE:Obtienedatos. Incluye datos GetExecutionPlan, Compile y el coste de materializar incluido. Es el coste total
MADRID · NOV 21-22 · 2014 
EntityFramework: ¿y ahora qué? 
Después de 18 meses de duro trabajo, la aplicación no escala…¿qué hacemos? 
Librería 
Método 
¿Qué hace? 
System.Data.Entity.Core.Query.PlanCompiler.PlanCompiler 
Compile(cqt.DbCommandTree ctree, out List<ProviderCommandInfo> providerCommands, out ColumnMap resultColumnMap, out int columnCount, 
out Set<md.EntitySet> entitySets) 
IMPORTANTE: Compila queryhacia SQL Server. Coste de compilación. Aquí generalmente es donde debemos poner esfuerzos en optimizar linq 
System.Data.Entity.Core.Objects.Elinq.CompiledELinqQueryState 
GetExecutionPlan(MergeOption? forMergeOption) 
Obtener plan de ejecución ya compilado previamente 
System.Data.Entity.Core.Objects.Elinq.ELinqQueryState 
GetExecutionPlan(MergeOption? forMergeOption) 
Obtener plan de ejecución todavía no compilado 
System.Data.Entity.Core.Objects.ObjectQuery<T> 
GetResults(MergeOption? forMergeOption) 
IMPORTANTE:Obtienedatos. Incluye datos GetExecutionPlan, Compile y el coste de materializar incluido. Es el coste total
MADRID · NOV 21-22 · 2014 
EntityFramework: ¿y ahora qué? 
Pero descuida, todavía se puede poner peor  
1.Mapeos querylinq–queryt-sqlcomplicados 
¿alguien ha dicho la palabra “interceptor”? 
2.¿Configuraste tu caché de queriesen EF de forma adecuada? 
¿Cómo? 
3.¿Utilizas IQueriablecomo si no hubiera un mañana? 
Si una de las querieslinkadasse recompila, todas las demás también 
…Leerse: “Performance Considerations for Entity Framework 4, 5, and 6”
MADRID · NOV 21-22 · 2014 
Q&A 
Dudas, cuestiones, inquietudes?
MADRID · NOV 21-22 · 2014 
GRACIAS! 
Enrique Catalá 
MVP en SQL Server, Mentor SolidQ 
ecatala@solidq.comenrique-catala@outlook.com 
@enriquecatala 
Miguel Lopez 
Cloud Champion, Mentor SolidQ 
mlopez@solidq.com 
@augurarte
MADRID · NOV 21-22 · 2014 
Grab that keyboard and start blowing brains out. 
Remember: this template is also available online. 
Now it’s your turn
1 of 29

Recommended

Datawarehouse como servicio en azure (sqldw) by
Datawarehouse como servicio en azure (sqldw)Datawarehouse como servicio en azure (sqldw)
Datawarehouse como servicio en azure (sqldw)Enrique Catala Bañuls
1.2K views50 slides
SQLCLR: .NET en el core de sql server by
SQLCLR: .NET en el core de sql serverSQLCLR: .NET en el core de sql server
SQLCLR: .NET en el core de sql serverEnrique Catala Bañuls
1.2K views19 slides
Sql server ha muerto, larga vida a sql server by
Sql server ha muerto, larga vida a sql serverSql server ha muerto, larga vida a sql server
Sql server ha muerto, larga vida a sql serverEnrique Catala Bañuls
303 views51 slides
Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016) by
Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)
Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)Enrique Catala Bañuls
1.8K views18 slides
Migración a sql server 2016 by
Migración a sql server 2016Migración a sql server 2016
Migración a sql server 2016Enrique Catala Bañuls
3.1K views32 slides
Planes de ejecucion 2 by
Planes de ejecucion 2Planes de ejecucion 2
Planes de ejecucion 2Enrique Catala Bañuls
966 views6 slides

More Related Content

What's hot

BI real time analytics by
BI real time analyticsBI real time analytics
BI real time analyticsSolidQ
628 views45 slides
Aplicando R al análisis de rendimiento de un servidor by
Aplicando R al análisis de rendimiento de un servidorAplicando R al análisis de rendimiento de un servidor
Aplicando R al análisis de rendimiento de un servidorEnrique Catala Bañuls
152 views20 slides
Introducción R - Primeros pasos by
Introducción R - Primeros pasosIntroducción R - Primeros pasos
Introducción R - Primeros pasosSolidQ
1.1K views31 slides
Novedades en SQL Azure V12 by
Novedades en SQL Azure V12Novedades en SQL Azure V12
Novedades en SQL Azure V12SolidQ
291 views37 slides
Polybase by
PolybasePolybase
PolybaseSolidQ
2.7K views34 slides
Otras Novedades (Always Encrypted, Row-Level Security, Mejoras AG) by
 Otras Novedades (Always Encrypted, Row-Level Security, Mejoras AG) Otras Novedades (Always Encrypted, Row-Level Security, Mejoras AG)
Otras Novedades (Always Encrypted, Row-Level Security, Mejoras AG)SolidQ
307 views30 slides

What's hot(20)

BI real time analytics by SolidQ
BI real time analyticsBI real time analytics
BI real time analytics
SolidQ628 views
Introducción R - Primeros pasos by SolidQ
Introducción R - Primeros pasosIntroducción R - Primeros pasos
Introducción R - Primeros pasos
SolidQ1.1K views
Novedades en SQL Azure V12 by SolidQ
Novedades en SQL Azure V12Novedades en SQL Azure V12
Novedades en SQL Azure V12
SolidQ291 views
Polybase by SolidQ
PolybasePolybase
Polybase
SolidQ2.7K views
Otras Novedades (Always Encrypted, Row-Level Security, Mejoras AG) by SolidQ
 Otras Novedades (Always Encrypted, Row-Level Security, Mejoras AG) Otras Novedades (Always Encrypted, Row-Level Security, Mejoras AG)
Otras Novedades (Always Encrypted, Row-Level Security, Mejoras AG)
SolidQ307 views
Column stored index by SolidQ
Column stored index Column stored index
Column stored index
SolidQ584 views
Copias de seguridad y recuperación de desastres by SolidQ
Copias de seguridad y recuperación de desastresCopias de seguridad y recuperación de desastres
Copias de seguridad y recuperación de desastres
SolidQ1.6K views
Query store by SolidQ
Query storeQuery store
Query store
SolidQ463 views
In memory by SolidQ
In memoryIn memory
In memory
SolidQ965 views
TSQL menos frecuente desde SQL Server 2005 by SolidQ
TSQL menos frecuente desde SQL Server 2005TSQL menos frecuente desde SQL Server 2005
TSQL menos frecuente desde SQL Server 2005
SolidQ935 views
Data Amp 2017 - Whats New in SQL Server 2017 by dbLearner
Data Amp 2017 - Whats New in SQL Server 2017Data Amp 2017 - Whats New in SQL Server 2017
Data Amp 2017 - Whats New in SQL Server 2017
dbLearner138 views
Novedades SQL Azure v12 by SolidQ
Novedades SQL Azure v12Novedades SQL Azure v12
Novedades SQL Azure v12
SolidQ129 views
Toolbox SQL Server para optimización by SolidQ
Toolbox SQL Server para optimizaciónToolbox SQL Server para optimización
Toolbox SQL Server para optimización
SolidQ352 views
Novedades en SSAS 2016 by SolidQ
Novedades en SSAS 2016Novedades en SSAS 2016
Novedades en SSAS 2016
SolidQ558 views
Aplicando SQL Server 2016 en Microsoft Azure Virtual Machine by Joseph Lopez
Aplicando SQL Server 2016 en Microsoft Azure Virtual MachineAplicando SQL Server 2016 en Microsoft Azure Virtual Machine
Aplicando SQL Server 2016 en Microsoft Azure Virtual Machine
Joseph Lopez610 views
SQL Server 2014 Nuevas Capacidades by Eduardo Castro
SQL Server 2014  Nuevas CapacidadesSQL Server 2014  Nuevas Capacidades
SQL Server 2014 Nuevas Capacidades
Eduardo Castro8K views
Tablas temporales en SQL Server 2016 y Azure SQL Database v12 by Joseph Lopez
Tablas temporales en SQL Server 2016 y Azure SQL Database v12Tablas temporales en SQL Server 2016 y Azure SQL Database v12
Tablas temporales en SQL Server 2016 y Azure SQL Database v12
Joseph Lopez914 views

Similar to Aplicaciones escalables en la nube: mentiras y verdades

Mejores prácticas de Data Warehouse con SQL Server by
Mejores prácticas de Data Warehouse con SQL ServerMejores prácticas de Data Warehouse con SQL Server
Mejores prácticas de Data Warehouse con SQL ServerSpanishPASSVC
2.9K views66 slides
Windows Azure SQL Databases by
Windows Azure SQL DatabasesWindows Azure SQL Databases
Windows Azure SQL DatabasesSolidQ
345 views30 slides
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones... by
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...SolidQ
7.3K views40 slides
Azure Training Day Guatemala - Migración de Aplicaciones Web a Azure by
Azure Training Day Guatemala - Migración de Aplicaciones Web a AzureAzure Training Day Guatemala - Migración de Aplicaciones Web a Azure
Azure Training Day Guatemala - Migración de Aplicaciones Web a AzureGuillermo Zepeda Selman
255 views58 slides
S4-PD1.pptx by
S4-PD1.pptxS4-PD1.pptx
S4-PD1.pptxLuis Fernando Aguas Bucheli
137 views25 slides
Escalabilidad en azure sql database con elastic scale by
Escalabilidad en azure sql database con elastic scaleEscalabilidad en azure sql database con elastic scale
Escalabilidad en azure sql database con elastic scaleEduardo Castro
657 views29 slides

Similar to Aplicaciones escalables en la nube: mentiras y verdades(20)

Mejores prácticas de Data Warehouse con SQL Server by SpanishPASSVC
Mejores prácticas de Data Warehouse con SQL ServerMejores prácticas de Data Warehouse con SQL Server
Mejores prácticas de Data Warehouse con SQL Server
SpanishPASSVC2.9K views
Windows Azure SQL Databases by SolidQ
Windows Azure SQL DatabasesWindows Azure SQL Databases
Windows Azure SQL Databases
SolidQ345 views
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones... by SolidQ
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
SolidQ7.3K views
Azure Training Day Guatemala - Migración de Aplicaciones Web a Azure by Guillermo Zepeda Selman
Azure Training Day Guatemala - Migración de Aplicaciones Web a AzureAzure Training Day Guatemala - Migración de Aplicaciones Web a Azure
Azure Training Day Guatemala - Migración de Aplicaciones Web a Azure
Escalabilidad en azure sql database con elastic scale by Eduardo Castro
Escalabilidad en azure sql database con elastic scaleEscalabilidad en azure sql database con elastic scale
Escalabilidad en azure sql database con elastic scale
Eduardo Castro657 views
DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a... by Plain Concepts
DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...
DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...
Plain Concepts168 views
Azure sql database escalabilidad by Eduardo Castro
Azure sql database escalabilidadAzure sql database escalabilidad
Azure sql database escalabilidad
Eduardo Castro514 views
24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab... by SpanishPASSVC
24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...
24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...
SpanishPASSVC354 views
SSRS modelo IaaS en la Nube | SolidQ Summit 2014 by SolidQ
SSRS modelo IaaS en la Nube | SolidQ Summit 2014SSRS modelo IaaS en la Nube | SolidQ Summit 2014
SSRS modelo IaaS en la Nube | SolidQ Summit 2014
SolidQ1.5K views
Cuando los desarrolladores conocieron SSAS, Business Intelligence y Big Data by Ruben Pertusa Lopez
Cuando los desarrolladores conocieron SSAS, Business Intelligence y Big DataCuando los desarrolladores conocieron SSAS, Business Intelligence y Big Data
Cuando los desarrolladores conocieron SSAS, Business Intelligence y Big Data
Ruben Pertusa Lopez1.2K views
Técnicas avanzadas para resolver tus problemas de sql server by Enrique Catala Bañuls
Técnicas avanzadas para resolver tus problemas de sql serverTécnicas avanzadas para resolver tus problemas de sql server
Técnicas avanzadas para resolver tus problemas de sql server
Reactvolution by _Lagash
ReactvolutionReactvolution
Reactvolution
_Lagash545 views
MuleSoft Madrid Meetup #6 slides 22nd April 2021 by Ieva Navickaite
MuleSoft Madrid Meetup #6 slides 22nd April 2021MuleSoft Madrid Meetup #6 slides 22nd April 2021
MuleSoft Madrid Meetup #6 slides 22nd April 2021
Ieva Navickaite457 views
Charla OWASP by alexav8
Charla OWASPCharla OWASP
Charla OWASP
alexav8509 views

More from Enrique Catala Bañuls

Capas de acceso a datos .net escalables de verdad contra SQL Server by
Capas de acceso a datos .net escalables de verdad contra SQL ServerCapas de acceso a datos .net escalables de verdad contra SQL Server
Capas de acceso a datos .net escalables de verdad contra SQL ServerEnrique Catala Bañuls
534 views27 slides
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el... by
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...Enrique Catala Bañuls
1.4K views26 slides
Planes de ejecución 3.0 sql 2016 y v next by
Planes de ejecución 3.0 sql 2016 y v nextPlanes de ejecución 3.0 sql 2016 y v next
Planes de ejecución 3.0 sql 2016 y v nextEnrique Catala Bañuls
1.3K views20 slides
Paralelismo en sql server by
Paralelismo en sql serverParalelismo en sql server
Paralelismo en sql serverEnrique Catala Bañuls
1.9K views29 slides
Aplicando R al análisis de rendimiento de un servidor by
Aplicando R al análisis de rendimiento de un servidorAplicando R al análisis de rendimiento de un servidor
Aplicando R al análisis de rendimiento de un servidorEnrique Catala Bañuls
1.4K views16 slides
Query store by
Query storeQuery store
Query storeEnrique Catala Bañuls
431 views24 slides

More from Enrique Catala Bañuls(20)

Capas de acceso a datos .net escalables de verdad contra SQL Server by Enrique Catala Bañuls
Capas de acceso a datos .net escalables de verdad contra SQL ServerCapas de acceso a datos .net escalables de verdad contra SQL Server
Capas de acceso a datos .net escalables de verdad contra SQL Server
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el... by Enrique Catala Bañuls
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE... by Enrique Catala Bañuls
HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...
HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...
Escalabilidad horizontal y arquitecturas elásticas en Microsoft azure by Enrique Catala Bañuls
Escalabilidad horizontal y arquitecturas elásticas en Microsoft azureEscalabilidad horizontal y arquitecturas elásticas en Microsoft azure
Escalabilidad horizontal y arquitecturas elásticas en Microsoft azure
Guias y recomendaciones para instalar y configurar clusters de sql server by Enrique Catala Bañuls
Guias y recomendaciones para instalar y configurar clusters de sql serverGuias y recomendaciones para instalar y configurar clusters de sql server
Guias y recomendaciones para instalar y configurar clusters de sql server

Recently uploaded

MasterMind.pdf by
MasterMind.pdfMasterMind.pdf
MasterMind.pdfrtovarfernandez
17 views5 slides
trabajotecnologiatemperatura-231005005635-53760f2d.pdf by
trabajotecnologiatemperatura-231005005635-53760f2d.pdftrabajotecnologiatemperatura-231005005635-53760f2d.pdf
trabajotecnologiatemperatura-231005005635-53760f2d.pdfSamuelRamirez83524
5 views2 slides
Aws Community Day Guatemala Criptografia con AWS KMS by
Aws Community Day Guatemala Criptografia con AWS KMSAws Community Day Guatemala Criptografia con AWS KMS
Aws Community Day Guatemala Criptografia con AWS KMSMario IC
25 views42 slides
Kubernetes: Más Allá de la Orquestación de Contenedores by
Kubernetes: Más Allá de la Orquestación de ContenedoresKubernetes: Más Allá de la Orquestación de Contenedores
Kubernetes: Más Allá de la Orquestación de ContenedoresOpenDireito
8 views12 slides
Peña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptx by
Peña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptxPeña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptx
Peña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptxMOISESPENAANAYA
5 views8 slides
DEFINICIONES DE BLOGGUER, MOVIE MAKER Y FILMORA. .pptx by
DEFINICIONES DE BLOGGUER, MOVIE MAKER Y FILMORA. .pptxDEFINICIONES DE BLOGGUER, MOVIE MAKER Y FILMORA. .pptx
DEFINICIONES DE BLOGGUER, MOVIE MAKER Y FILMORA. .pptxKarenlisethGuioAlbin
8 views8 slides

Recently uploaded(7)

trabajotecnologiatemperatura-231005005635-53760f2d.pdf by SamuelRamirez83524
trabajotecnologiatemperatura-231005005635-53760f2d.pdftrabajotecnologiatemperatura-231005005635-53760f2d.pdf
trabajotecnologiatemperatura-231005005635-53760f2d.pdf
Aws Community Day Guatemala Criptografia con AWS KMS by Mario IC
Aws Community Day Guatemala Criptografia con AWS KMSAws Community Day Guatemala Criptografia con AWS KMS
Aws Community Day Guatemala Criptografia con AWS KMS
Mario IC25 views
Kubernetes: Más Allá de la Orquestación de Contenedores by OpenDireito
Kubernetes: Más Allá de la Orquestación de ContenedoresKubernetes: Más Allá de la Orquestación de Contenedores
Kubernetes: Más Allá de la Orquestación de Contenedores
OpenDireito8 views
Peña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptx by MOISESPENAANAYA
Peña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptxPeña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptx
Peña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptx
MOISESPENAANAYA5 views
Operations & Data Graph by Neo4j
Operations & Data GraphOperations & Data Graph
Operations & Data Graph
Neo4j36 views

Aplicaciones escalables en la nube: mentiras y verdades

  • 1. MADRID · NOV 21-22 · 2014 Aplicaciones escalables en la nube: mentiras y verdades Enrique Catalá MVP en SQL Server, Mentor SolidQ ecatala@solidq.com @enriquecatala Miguel Lopez Cloud Champion, Director SolidQ mlopez@solidq.com @augurarte
  • 2. MADRID · NOV 21-22 · 2014 Agenda 1.Errores de diseño y arquitectura 2.Conoce la nube
  • 3. MADRID · NOV 21-22 · 2014 ¿Verdad o mentira? “Puedo usar Azure para escalar hasta el ‘infinito’ mi plataforma SQL Server on-premisea la vez que ahorro costes” Verdad DBreplica1Replica1Replica2Replica nDBreplica2DBreplica3Azure Republicador(opcional) Transactional replication SYNCWANSQL1 (onpremise) ON PREMISEAzure  Nodos secundarios replicación  Capa de base de datos, suscriptores (5s-15s delay)  SQL Standard Edition  Nodo publicador  Instancia OnPremise que contiene los datos maestros a replicar mediante replicación transaccional
  • 4. MADRID · NOV 21-22 · 2014 ELB / ILB DBreplica1 Replica1 Replica2 Replica n DBreplica2 DBreplica3 Azure Republicador (opcional) Transactional replication SYNC Azure Peticiones balanceadas automáticamente (ILB/ELB)  Nodos secundarios replicación  Capa de base de datos, suscriptores (5s-15s delay)  SQL Standard Edition Add-AzureInternalLoadBalancer -ServiceName $svc -InternalLoadBalancerName $ilb
  • 5. MADRID · NOV 21-22 · 2014 demo Arquitectura elástica
  • 6. MADRID · NOV 21-22 · 2014 “Para implementar una aplicación Web que se accederá de forma masiva a través de la Web, y que gestiona contactos (o usuarios), una base de datos SQL server o SQL Databasees la mejor opción a la hora de elegir la capa de datos.” ¿Verdad o mentira? Mentira 
  • 7. MADRID · NOV 21-22 · 2014 Bases de datos y cargas de trabajo en aplicaciones en la nube
  • 8. MADRID · NOV 21-22 · 2014 NoSQLKey-Value Azure TableStorage Caso de cliente con usuarios/grupos en tablas https://haveibeenpwned.com/HowFastIsAzureTableStorage/?email=pepe@Hotmail.com
  • 9. MADRID · NOV 21-22 · 2014 Algo diferente de programar… publicclassBreachedAccount: TableEntity{ publicBreachedAccount() { } publicstringWebsites{ get; set; } } varbreachedAccount= new BreachedAccount{ PartitionKey= “undominio.com”, RowKey= “un-correo01", Websites= "Adobe;Stratfor" }; varinsertOperation= TableOperation.Insert(breachedAccount); table.Execute(insertOperation); varbatch= new TableBatchOperation(); batch.Insert(breachedAccount1); batch.Insert(breachedAccount2); batch.Insert(breachedAccount3); table.ExecuteBatch(batch);
  • 10. MADRID · NOV 21-22 · 2014 demo NoSQL-Azure TableStorage
  • 11. MADRID · NOV 21-22 · 2014 ¿Verdad o mentira? “Hablando de rendimiento, Azure tiene máquinas tan potentes, que con sólo elegir el tipo de máquina adecuada para mi App, puedo ejecutar cualquier aplicación que quiera” Verdad a medias: La frase anterior es cierta, pero…”La CPU es muy valiosa” VM Size Cores RAM Local SSD Standard_G1 2 28 Gb 406 Gb Standard_G2 4 56 Gb 812 Gb Standard_G3 8 112 Gb 1,630 Gb Standard_G4 16 224 Gb 3,250 Gb Standard_G5 32 448 Gb 6,500 Gb
  • 12. MADRID · NOV 21-22 · 2014 La CPU es muy valiosa Máquina Puntuación single-thread Puntuación multi-thread Descripción PortatilEnrique Catalá 1911 4826 Intel i7 1.73Ghz Entorno VM A3 (4cores) 1066 3635 AMD Opteron4171 2.1Ghz Entorno VM A4 (8cores) 1072 6617 AMD Opteron4171 2.1Ghz Entorno VM A7 (AMD) 1077 5622 AMD Opteron4171 2.1Ghz Entorno VM A7 (Intel) 1115 6680 Intel XeonE5-2660 2.2Ghz Entorno A9 (8 cores) 2460 10580 Intel XeonE5-26702.6Ghz Entorno VM D14 (16 cores) 1857 21444 Intel XeonE5-2660@ 2.20 GHz * Benchmarkno oficial y susceptible de cambios
  • 13. MADRID · NOV 21-22 · 2014 La CPU es muy valiosa Azure A4 OnPremise Azure A4 OnPremise Azure A4 OnPremise
  • 14. MADRID · NOV 21-22 · 2014 La CPU es muy valiosa •List<T> ->O(n) •Dictionary<T,U>-> O(1)
  • 15. MADRID · NOV 21-22 · 2014 La CPU es muy valiosa No olvides optimizar T-SQL, importa ahora todavía mas
  • 16. MADRID · NOV 21-22 · 2014 “En Azure podemos usar Azure Federationspara montar una aplicación multi-organización (tenant) basada en SQL Databaseque pueda escalar la capa de datos, incluso por diferentes regiones” ¿Verdad o mentira? mentira
  • 17. MADRID · NOV 21-22 · 2014 Escalabilidad de SQL Database
  • 18. MADRID · NOV 21-22 · 2014 Administrador de mapeo de shards
  • 19. MADRID · NOV 21-22 · 2014 SQL DatabaseElasticScale No más federaciones (no soportado) DatabaseSharding Soporte API .NET Soporte API PowerShell/ Automation Soporte migración desde Federations
  • 20. MADRID · NOV 21-22 · 2014 demo SQL DB ElasticScale Mover datos entre shards
  • 21. MADRID · NOV 21-22 · 2014 ¿Verdad o mentira? “Es preferible hacer menos peticiones a BBDD que devuelvan mas filas vs muchas peticiones devolviendo pocas filas” Verdad: El coste de round-tripes muy elevado
  • 22. MADRID · NOV 21-22 · 2014 ¿Verdad o mentira? “Los ORM son necesarios en el desarrollo cloudporque facilitan el desarrollo aunque perdamos visibilidad de lo que hace el código por debajo” Mentira -Los ORM no escalan, es así de simple -EntityFramework es mi amigo 
  • 23. MADRID · NOV 21-22 · 2014 EntityFramework: Malos usos Usar el método .Contains() recompilará siempre una queryEF
  • 24. MADRID · NOV 21-22 · 2014 EntityFramework: ¿y ahora qué? Después de 18 meses de duro trabajo, la aplicación no escala…¿qué hacemos? Librería Método ¿Qué hace? System.Data.Entity.Core. Query.PlanCompiler.PlanCompiler Compile(cqt.DbCommandTree ctree, out List<ProviderCommandInfo> providerCommands, out ColumnMap resultColumnMap, out int columnCount, out Set<md.EntitySet> entitySets) IMPORTANTE: Compila queryhacia SQL Server. Coste de compilación. Aquí generalmente es donde debemos poner esfuerzos en optimizar linq System.Data.Entity.Core. Objects.Elinq.CompiledELinqQueryState GetExecutionPlan(MergeOption? forMergeOption) Obtener plan de ejecución ya compilado previamente System.Data.Entity.Core. Objects.Elinq.ELinqQueryState GetExecutionPlan(MergeOption? forMergeOption) Obtener plan de ejecución todavía no compilado System.Data.Entity.Core. Objects.ObjectQuery<T> GetResults(MergeOption? forMergeOption) IMPORTANTE:Obtienedatos. Incluye datos GetExecutionPlan, Compile y el coste de materializar incluido. Es el coste total
  • 25. MADRID · NOV 21-22 · 2014 EntityFramework: ¿y ahora qué? Después de 18 meses de duro trabajo, la aplicación no escala…¿qué hacemos? Librería Método ¿Qué hace? System.Data.Entity.Core.Query.PlanCompiler.PlanCompiler Compile(cqt.DbCommandTree ctree, out List<ProviderCommandInfo> providerCommands, out ColumnMap resultColumnMap, out int columnCount, out Set<md.EntitySet> entitySets) IMPORTANTE: Compila queryhacia SQL Server. Coste de compilación. Aquí generalmente es donde debemos poner esfuerzos en optimizar linq System.Data.Entity.Core.Objects.Elinq.CompiledELinqQueryState GetExecutionPlan(MergeOption? forMergeOption) Obtener plan de ejecución ya compilado previamente System.Data.Entity.Core.Objects.Elinq.ELinqQueryState GetExecutionPlan(MergeOption? forMergeOption) Obtener plan de ejecución todavía no compilado System.Data.Entity.Core.Objects.ObjectQuery<T> GetResults(MergeOption? forMergeOption) IMPORTANTE:Obtienedatos. Incluye datos GetExecutionPlan, Compile y el coste de materializar incluido. Es el coste total
  • 26. MADRID · NOV 21-22 · 2014 EntityFramework: ¿y ahora qué? Pero descuida, todavía se puede poner peor  1.Mapeos querylinq–queryt-sqlcomplicados ¿alguien ha dicho la palabra “interceptor”? 2.¿Configuraste tu caché de queriesen EF de forma adecuada? ¿Cómo? 3.¿Utilizas IQueriablecomo si no hubiera un mañana? Si una de las querieslinkadasse recompila, todas las demás también …Leerse: “Performance Considerations for Entity Framework 4, 5, and 6”
  • 27. MADRID · NOV 21-22 · 2014 Q&A Dudas, cuestiones, inquietudes?
  • 28. MADRID · NOV 21-22 · 2014 GRACIAS! Enrique Catalá MVP en SQL Server, Mentor SolidQ ecatala@solidq.comenrique-catala@outlook.com @enriquecatala Miguel Lopez Cloud Champion, Mentor SolidQ mlopez@solidq.com @augurarte
  • 29. MADRID · NOV 21-22 · 2014 Grab that keyboard and start blowing brains out. Remember: this template is also available online. Now it’s your turn