Avances tecnológicos del siglo XXI y ejemplos de estos
Por qué todo lo que subo a azure esta mal
1. #GlobalAzure
Por qué todo
lo que subo a azure está mal
Puedes llamarme “Fer”. Tengo un blog en github pages
www.developerro.com. Me puedes encontrar en twitter
cómo @fernandoescolar. Trabajo en Tokiota. Mi color
preferido es el naranja.
Fernando Escolar
3. #GlobalAzure#GlobalAzure
Los archivos que generamos o que
creamos tienen que estar en un almacen
compartido
Las variables de sesion tienen que estar
accesibles para todas las instancias.
Si usamos memoria cache, para evitar
conflictos con la consistencia es
mejor almacenarla en una cache
compartida.
La base de datos que subimos a un servicio
PaaS de Azure tiene que cumplir unas
normas/limitaciones.
7. #GlobalAzure#GlobalAzure
Tengo una instancia de appservices
de 1 core con 1.75 Gb de RAM y
entran muchos usuarios.
Lo mas importante en relacion a la
velocidad es tener todos los
servicios en el mismo datacenter.
Tengo un laptop i7 con 16Gb de RAM
y 512 Gb de disco SSD. Y solo entro
yo en el IIS Express.
Realiza procesos cortos, si son
procesos que hacen esperar al
usuario. Lo mas recomendable es
distribuir los procesos largos.
Hay que conocer los limites
exactos del servicio para saber si
se ha de escalar a una instancia mas
grande.
BAM
EYOW
CRAS
ZLOP
biff
8. #GlobalAzure#GlobalAzure
SI A AD YA TIE N E G ESTO R
D E US U ARIO S, ¿PARA Q U E
HAC ER E L MIO D E N TRO
D E MI AP LIC AC IO N ?
9. #GlobalAzure#GlobalAzure
Si un usuario es borrado del AAD,
¿Pierdo todos sus datos en mi
aplicacion?
Mi aplicacion debe gestionar los
usuarios, que van a interactuar
con mi aplicacion.
¿Eres el usuario que dices ser?
¿tienes permiso para ver el
recurso? AAD lo gestiona.
Mi aplicacion debe almacenar los
permisos que se asigna a cada
usuario que el AAD autorice.
Vincula la información relacionada
con un usuario, con un usuario de la
propia aplicacion.
Relaciona los usuarios de la
aplicacion con los de AAD mediante
su UPN.
BAM
EYOW
CRAS
boff
ZLOP
biff
11. #GlobalAzure#GlobalAzure
Procura no usar variables de
sesion, o al menos reducir al
maximo lo que ahí almacenas.
No almacenes muchos datos en una
sola clave de redis, es mucho mas
eficiente almacenar muchas
claves y filtrar en redis.
Activa REDIS CACHE ADVISOR que te
informa de los defectos tipicos
que detecte en tu servicio.
Aunque SSL es más seguro para
conectar, es algo lento mezclado
con el protocol de Redis (vnet).
Si solo vas a usar variables de sesion
y/o no vas a sacarle partido a redis,
puedes usar el Memcached Client
Shim.
Observa los limites de conexiones,
Mb y carga de tu servicio cache
para escalar a la instancia adecuada.
BAM
EYOW
CRAS
boff
ZLOP
biff
13. #GlobalAzure#GlobalAzure
Si usas un poco de espacio de
almacenamiento y haces pocas
solicitudes, debes pagar al menos el
mínimo precio de RU por
collection
Puedes configurar un Throughput
dedicado a cada coleccion o uno
compartido por toda una base de
datos.
Comos DB se te factura por
collection. Si usas muchas
collections la factura es
equivalente a tener varias bases de
datos.
Usa conexiones con “direct mode”
sobre TCP. Usa las llamadas
asíncronas de la API.
Cosmos DB acepta particiones
partiendo de valores de propiedades
de los documentos.
BAM
EYOW
CRAS
boff
biff
14. #GlobalAzure#GlobalAzure
S E ME B LO Q U E A LA B AS E
D E DATO S E N LO S
MOME N TO S D E MAYO R US O
Y YA N O PU E DO ES C A LAR
MAS
15. #GlobalAzure#GlobalAzure
Activar el advisor para que nos de
recomendaciones que aumenten la
performance
La lógica de negocio no debería
estar embebida en la base de datos
en forma de store procedures
Existe una aplicacion (dentro de
SSMS) que nos ayuda a migrar las
bases de datos a Azure
Usa el DTU Calculator para saber el
tamaño de instancia que necesitas:
https://dtucalculator.azurewebsi
tes.net/
Usa QUERY PERFORMANCE INSIGHTS
para saber si una query es eficiente
o no
BAM
EYOW
CRAS
boff
ZLOP
17. #GlobalAzure#GlobalAzure
Si usas websockets tienes que
activar la opción de utilizarlos en
los settings del App Service.
Nodejs se ejecuta sobre el módulo IISNODE. Se
puede configurar:
https://github.com/Azure/iisnode/blob/master/src
/config/iisnode_schema_x64.xml
No se puede usar node.cluster
dentro de un Azure App Service. Hay
otras formas de hacerlo.
V8-PROFILER: Herramienta que nos
ayudará a detectar donde están los
problemas de nuestra aplicación
nodejs.
IISNODE . yML
https://github.com/Azure-Samples/app-
service-web-nodejs-get-
started/blob/master/iisnode.yml
BAM
EYOW
CRAS
ZLOP
biff
18. #GlobalAzure#GlobalAzure
MIC RO S O FT HAC E Q U E
LAS AP LIC AC IO N ES D E
P HP S E ARRASTRE N PARA
Q U E P RO G RA MES E N . N E T
19. #GlobalAzure#GlobalAzure
Podemos configurar extensiones
en el archivo extensions.ini o desde
los app settings
.USER.INI
Este archivo funciona
exactamente igual que el php .ini
WEB.CONFIG
Hay multitud de cachés y demás
configuraciones que se pueden
hacer a PHP desde aqui
PHP >= 7
Lo mas recomendable es usar la
ultima version de PHP
BAM
CRAS
ZLOP
biff
21. #GlobalAzure#GlobalAzure
Hibernate
Cuidado si en tu base de datos no usas
“nvarchar”. Usar “varchar” reduce
la performance muchisimo.
Selecciona el tipo de tamaño
necesario y usa caches allí donde
puedas
Se puede subir un Tomcat
customizado, pero seguro que lo
tienes que modificar para azure
BAM
EYOW
boff
biff
23. #GlobalAzure#GlobalAzure
A una empresa pequeña no tiene por
que serle rentable migrar a azure
A = lo que me cuesta
reprogramar
B = lo que me cuesta aumentar el
hierro
Generalmente B < A…
24 x 7, SLA 99.9[5|9], te olvidas del
mantenimiento… entonces no es tan
caro
SERVICIOS ESPECIALIZADOS
Por ejemplo 1 Tb. en azure son 16 e/mes
con 3 replicas. A una empresa grande
con otro servicio contratado le
resulta muy barato
BAM
EYOW
CRAS
boff
ZLOP
biff
25. #GlobalAzure#GlobalAzure
AWS Es un buen servicio de Cloud, posiblemente
mejor en algunos aspectos que azure, aunque peor
en otros
Si no funciona bien en Azure, tampoco
lo va a hacer en amazon por el mismo
precio
BAM
CRAS
biff