1. Facultad de Ciencias Informáticas
Desarrollo de Aplicaciones Web
Unidad 2 Programación web en el
servidor
PhD(c). Luis Fernando Aguas Bucheli
+593 984015184
@Aguaszoft
luis.aguas@utm.edu.ec
2. Objetivos de Desarrollo Sostenible
Meta
4.7 De aquí a 2030, asegurar que todos los alumnos adquieran
los conocimientos teóricos y prácticos necesarios para promover
el desarrollo sostenible, entre otras cosas mediante la educación
para el desarrollo sostenible y los estilos de vida sostenibles, los
derechos humanos, la igualdad de género, la promoción de una
cultura de paz y no violencia, la ciudadanía mundial y la
valoración de la diversidad cultural y la contribución de la cultura
al desarrollo sostenible
3. Elige un trabajo que ames, y no tendrás que trabajar
un solo día de tu vida
4. Resultado de Aprendizaje
• Diseñar un producto de
software en el que se
apliquen principios de
diseño, para que sea
robusto, fácil de mantener
y modificar
Contenido
• Unidad 2 Programación web en
el servidor
• 2.2.4 Serverless y computación
en la nube
5. ¿Qué es Serverless Computing?
• Es un modelo o servicio de computación
en la nube totalmente autogestionado en
el que el proveedor de la nube ejecuta el
servidor y lo administra asignando y
adaptando los recursos de éste según las
necesidades del usuario o de la empresa.
• Las estructuras sin servidor permiten a
sus usuarios concentrarse en la actividad
de su empresa sin tener que preocuparse
por ningún servidor. Es decir, no hay
servidores que mantener, ni sistemas
operativos que cuidar, ni software que
administrar, ni hardware que actualizar.
Esto simplemente significa que tú puedes
dedicarte 100% a la actividad de tu
negocio, sin preocuparte por nada más.
6. Beneficios del Serverless Computing
• Coste: la ventaja principal de utilizar informática sin servidor es el hecho
de que ésta te proporciona servicios solo por lo que realmente utilizas.
Esto significa, que tu solo pagarás por lo que usas, ni más ni menos.
• Mantenimiento: como ya hemos comentado anteriormente, estos
sistemas no presentan servidores o sistemas operativos que mantener.
No tenemos que administrar ningún servidor ni siquiera tenemos que
instalar ningún sistema operativo o software de soporte.
• Escalamiento fácil y eficiente: las aplicaciones sin servidor se pueden
escalar automáticamente o como máximo con unos pocos clics para
elegir la capacidad deseada.
7. Beneficios del Serverless Computing
• Alta disponibilidad: las aplicaciones sin servidor tienen disponibilidad
incorporada. Por lo tanto, no necesitas tener una infraestructura
especializada para que las aplicaciones estén altamente disponibles.
Todo esto está disponible para tu empresa por defecto.
• Autonomía para la empresa: La informática sin servidor brinda a las
organizaciones la libertad de concentrarse en sus ofertas comerciales
principales y olvidarse de los problemas de servidores de bajo nivel. Por
lo tanto, los trabajadores y la alta dirección pueden utilizar el dinero y la
oportunidad para desarrollar ofertas competitivas, que pueden ayudar a
la organización a superar a los competidores.
15. Máquinas Virtuales con Windows y Linux
Se puede escalar de 1 a 1000 instancias
Facturación por minuto
Permite templates, extensiones, etc.
Acceso a redes virtuales + backup + monitoreo
Azure Virtual Machines
17. Almacenamiento en disco para cada carga de
trabajo
32TiB
2,000
500 MBps
32TiB
2,000
500 MBps
32TiB
20,000
750 MBps
64TiB
160,000
2,000 MBps
Preview
18. Arquitectura para alta disponibilidad en Azure
Single VM
VM SLA
99.9%
Availability sets Availability zones Site Recovery & Region pairs
VM SLA
99.95%
VM SLA
99.99%
Regiones
54
Región 1 Región 2
AZ disponibles en EEUU, Europa y Asia, con más regiones en el futuro
20. • Cluster Kubernetes manejado en Azure.
• Upgrades y patching automáticos.
• Escalamiento simplificado.
• Se desarrolla en forma abierta en acs-angine.
Azure Kubernetes Service
21. API APPS
Construye y consume
fácilmente APIs en la nube
WEB APPS
Aplicaciones Web que escalan
con nuestro negocio
WEB APPS FOR
CONTAINERS
Aplicaciones web en
contenedores
MOBILE APPS
Construye aplicaciones
móviles para cualquier
dispositivo
Azure App Service
22. Beneficios de App Service
• Parcheo automático del OS
• Seguridad Empresarial
• Scale out / in automático
• Balanceador incorporado
• Soporta varios lenguages y Plataformas
• Facilita el Despliegue / Entrega continua
• Permite trabajos en segundo plano con WebJobs
23. Características de App Service
• Lenguajes: .NET, PHP, Node.js, Java, Ruby, Python
• Webjobs
• CI con GitHub, BitBucket, Azure DevOps, etc.
• SDKs para app mobile
• Slots para ambientes
24. • Encapsula un escenario
• Son desarrolladas por pequeños grupos
• Cada Servicio puede ser desarrollado con distintos lenguajes y
frameworks
• Cada Servicio puede ser versionado y escalado por separado
• Existe interacción entre los Servicios por HTTP
• Cada Servicio tiene una única URL independiente
• Se pueden aislar errores, en caso de falla
25. • Escala clonando la app en multiples
servers/VMs/Containers
Monolithic application approach Microservices application approach
• Una Aplicación basada en
Microservicios separa
funcionalidad en pequeños
Servicios independientes unos
de otros con su propia db.
• Escala desplegando cada Servicio
independientemente y creando instancias entre
servers/VMs/containers
• Una aplicación monolítica contiene
funcionalidades específica por
dominio y está normalmente
dividida por capas funcionales
como web, negocio y datos
App 1 App 2
App 1
Azure Functions are “event-driven” meaning they run based on associated and configure events, or “triggers”. For example an Azure Function could be triggered by a simple timer, such as running a process once every 24-hours, or triggered by an event in a document management system, such as when a new document is uploaded to a SharePoint library. Azure Functions can also respond to Azure-specific events, such as an image added to a Storage Blob or a notification arriving in a Message Queue.
11
12
13
14
Slide Objectives:
High-level selling points of virtual machines.
Speaker Notes:
Both Linux and Windows are supported. It’s important to reiterate on this as many developers are still not aware of this.
Mention scaling at enterprise level using DSC, Puppet or Chef.
Emphasize on the openness – we are not forcing your to lock on Microsoft technologies. Instead, Azure is more open than ever. You can leverage your existing skills, tools and services, and Azure is providing more and more first-class supports for them.
When you see “containers” you probably think of Docker. For good reason, Docker has essentially defined the container market. To understand what Docker is let’s start by looking at Containers.
Containers are an isolated environment and isolated collection of resources that an application runs in. The resources are all the dependencies (DLL’s, configuration, etc.) that the application needs. Everything the application needs to run is in the container and it sees nothing on the host OS it is running on (except maybe an internet connection). Containers are therefore a unit of deployment.
<click>
A key benefit of containers is that they can startup almost instantly. The notion of “booting up” a guest OS doesn’t exist. The container just runs on top of the host OS. As a result, containers can startup almost instantly as compared to the startup period of a VM. And because everything is contained in this container, containers are easily repeatable and extremely reliable from one environment to the next. For example, I can run a container on my local dev box and have high confidence it will run the same when deployed to another machine, such as a VM running in Azure.
<Click>
As you can probably imagine, containers are extremely popular in dev/test scenarios. They are also great for micro-services.
<click>
To put a visual behind this, consider the architecture for a typical virtual machine. You have a physical server, hyper-visor and host OS. Then, each VM has it’s own guest OS that can be configured with applications and application frameworks. This is what you saw earlier in the presentation.
<click>
Now consider how a container is different. Physical Server with a host OS. However, notice there is not a guest OS. The container is essentially the application and it’s dependencies. Also notice that the app frameworks used by application A and application B are shared in this model. This is how instant startup is achieved.
Note that there are more instances of the same App running on the physical server. This underlines that a container is a scale unit besides being an isolation mechanism. In a production development you would use a cluster of hosts, and have containers spread of the hosts.
The VMs just discussed are single instance VMs. You need to perform Installation and configuration in each VM you provision, making scaling up and down a manual process. VM Scale Sets are a group of identical VMs based on the same image that can be scaled based on a set of rules. This is comparable to the way Cloud Service Web Roles and Worker Roles work, but with some key difference.
VM Scale Sets support both Windows and Linux.
You can make use of persistent disks to store data on the VM, although auto scaling implies stateless environments.
VMs are based on images and updates must be done in the image or with automation.
VM Scale Sets are ideal for clusters such as a farm of webservers, because the Scale Set automatically scales up and down as the load changes.