Cada vez nuestro entorno está más conectado. Innumerables dispositivos nos hacen cada día la vida más atractiva y fácil (o difícil según concepciones). Sin nos adentramos en estos dispositivos para nuestro beneplácito encontraremos que, además de la evidente parte electrónica, hay un componente que nos resulta familiar: CÓDIGO. Y la analogía está implícita: PROGRAMACIÓN.
Para programar para este tipo de dispositivos, tenemos que tener en cuenta cuatro principios fundamentales:
- Alta concurrencia
- Respuesta en tiempo real ante las peticiones
- Alta disponibilidad
- Economía de recursos
Todos estos factores están altamente relacionados con el modelo de programación en la nube. En este caso el empleo de los tradicionales métodos para almacenamiento de información (Bases de Datos de cualquier tipo y tecnología), no serían aplicables dado el enorme tráfico y concurrencia de llamadas que se puede llegar a presentar. Pensemos no en decenas, sino en millones de dispositivos transmitiendo información entre ellos con una frecuencia y concurrencia nunca antes vista en los escenarios tradicionales de aplicaciones.
Para hacer realidad este paradigma de programación, Microsoft Research pone a nuestra disposición su proyecto Orleans.
Orleans nos brinda un acercamiento directo a la construcción de aplicaciones a gran escala, sin necesidad de tener que aprender y aplicar los complejos patrones de concurrencia simultaneidad y escalabilidad. Fue diseñado para su uso en la nube y se ha utilizado extensivamente en Microsoft Azure. Orleans es una implementación sobre Microsoft .NET del modelo de Actor, un modelo matemático para el desarrollo de aplicaciones distribuidas concebido en los años 70 del pasado siglo, usando las restricciones impuestas por ese modelo para reducir la complejidad del desarrollo de un sistema distribuido.
Aquí aparecen algunos nuevos conceptos como el de Silo (sí, esos mismos en los que se almacena la cosecha de granos) y evidentemente el de Grano (Grain). En lugar de conectar los servicios a bases de datos, nos conectamos a entornos (máquinas) que ejecutan Orleans. En cada entorno Orleans existirá un Silo, que al recibir una solicitud activará un Grain (grano). Este Grano recopilará la información necesaria, ya sea interrogando esta vez a bases de datos (en este punto suele haber menos latencia en las conexiones) o inclusive, a otros granos en otros silos y en otros entornos (máquinas). Una vez finalizada la llamada, el grano permanece activo en memoria. Es el silo que lo contiene el responsable de desactivarlo mediante programaciones de desactivación. Así se facilita que los tiempos de respuesta puedan ser rápidos. Pensemos que en el escenario de IOT (Internet Of Things) estas llamadas son idénticas en estructura y formato, y solo se diferencian en el dato que transmiten.
Los Granos no son más que clases C# que se programan en modo asíncrono y que se comunican a través de un patrón de mensajes, los cuales se almacenan en colas que se generan en el momento de la activación. Los Silos son entornos de Servicios alojados en Windows Azure, en los cuales se activan las clases programadas como Granos.
Puede parecer algo extraño o nuevo para muchos, pero para dar un ejemplo práctico y cercano, te invitamos a leer el siguiente artículo: Using Orleans to Build Halo 4’s Distributed Cloud Services in Azure.
Con este acercamiento ya tenemos una idea más clara de cómo funciona “por dentro” el mundo IOT (Internet Of Things) .
En 2015, Orleans pasará a proyecto Open Source, lo que sin dudas contribuirá al perfeccionamiento de los modelos y técnicas que permitirán dar un paso adelante en la programación de entornos distribuidos.
Más información:
Ernesto Téllez Acosta se ha desempeñado durante 23 años como desarrollador, consultor y arquitecto de soluciones de Software, especializándose en los últimos 16 años en tecnologías Microsoft. Desde 2008 trabaja en Sogeti como Arquitecto de Soluciones Microsoft, aportando su experiencia en diferentes entornos de trabajo y colaborando activamente en las consultorías y procesos de pre-venta.
Sería genial este curso actuaizado a su última versión
Me gustaMe gusta