#NETRAF2017, un evento que la rompió!!

Buenas!

Les comento que tuve la suerte de participar como speaker en el #NETRAF2017, un evento de tecnologías .NET que se hizo en la ciudad de Rafaela el pasado sábado 20 de mayo. Un lujo todos los speakers de primer nivel que participaron, tanto de la ciudad como a nivel nacional.

En el mismo participé con dos charlas:

La plataforma .NET en el 2017:

En estos últimos tiempos ha habido varios cambios en la plataforma, por lo que es interesante hacer una revisión de dónde estamos parados como desarrolladores y qué alternativas tenemos disponibles. Por ello hice un repaso en general del estado actual de la plataforma y sus particularidades.

Las diapositivas utilizadas son las siguientes:

Chat multiplataforma con reconocimiento de voz:

A modo de cierre del evento, con Ezequiel aplicamos distintos conceptos que se vieron en el evento para desarrollar un chat multiplataforma (sitio web, app Android y app iOS). Para ello, utilizamos las siguientes tecnologías / plataformas:

Leer más »

AppHarbor y Azure: Alternativas para publicar aplicaciones en la nube de forma gratuita

Muchas veces como desarrolladores queremos publicar nuestras aplicaciones, de forma que podamos mostrar el resultado parcial, o que sea utilizada por usuarios finales. Ante esto puedo recomendarles dos alternativas gratuitas muy interesantes: AppHarbor y Windows Azure. Veamos cada una en detalle:

AppHarbor:

AppHarbor se ofrece bajo la arquitectura PaaS, y nos permite correr aplicaciones ASP.NET en la nube. De forma sencilla podremos crear nuestras aplicaciones e integrarlas al repositorio de control de código fuente correspondiente.

Uno de los aspectos característicos que tiene en su funcionamiento son los Add-ons. Por ejemplo, si queremos agregar un motor de base de datos a nuestra aplicación, el mismo será un Add-on. Hay una gran variedad de opciones de Add-ons, y dependiendo de las necesidades que tengamos habrá distintos planes comenzando desde opciones gratuitas hasta algunas pagas con características destacadas.

PublicacionGratuita - AppHarbor
Pantalla de administración de nuestra aplicación en AppHarbor

Leer más »

[Microsoft-Dev-Blog] Azure Web Sites: Usar slots para hacer deploys en forma instantánea

Buenas, como es costumbre les comparto el post que escribí en el blog Microsoft-Dev-Blog.

En el mismo vemos en detalle dos funcionalidades muy interesantes de los sitios web de Azure: Slots y Swap. La verdad es que a medida que iba escribiendo el post me iba sorprendiendo por el funcionamiento que tenía y las soluciones que nos puede llegar a ofrecer.

La idea de los Slots es poder manejar más de un ambiente por sitio web, logrando una organización adecuada.

A su vez, podemos intercambiar el contenido de los slots a través de un Swap. Esto realiza un intercambio en el ruteo de los sitios, permitiendo por ejemplo poner una nueva versión productiva de nuestra aplicación de forma instantánea y sin cortes, a diferencia de los deploys clásicos donde la aplicación puede estar varios minutos abajo – créanme que realmente es así 😉 -.

Una de las nuevas funcionalidades que nos brindan actualmente los sitios web de Azure es crear distintos slots sobre el mismo. Cuando creamos nuestro sitio web en Azure, el mismo será el que ejecute la aplicación final de usuario (lo que normalmente llamamos el sitio de producción).

Si queremos tener mayor cantidad de ambientes sobre el mismo sitio, en el cual podamos realizar pruebas sin modificar la aplicación final de usuario, contamos con la posibilidad de crear distintos slots para cada uno de estos ambientes. De esta forma se produce una equivalencia slot-ambiente, para el cual tendremos tantos como nos sea necesarios; cuanto más compleja sea nuestra aplicación, más slots necesitaremos para su correcta gestión. Azure nos brinda hasta un máximo de 4 slots por sitio web.

A su vez, al tener slots sobre un determinado sitio podremos hacer “Swap” entre ellos. Esta funcionalidad es la clave del planteo de los slots, ya que nos permite realizar un intercambio directo los distintos ambientes de nuestra aplicación sin ningún corte para los usuarios. Sin dudas que esto es algo muy bueno. Dependiendo del tipo de aplicación y los usuarios que tengamos puede resultar muy difícil (y a veces costoso en el impacto que tiene) dar de baja temporalmente nuestra aplicación para realizar una actualización.

Pero, ¿cual es la diferencia entre el Swap y un deploy o publicación tradicional que nos da esta ventaja? La clave está que no Swap no se realizan copias de ningún archivo, que es lo que genera el corte en el uso de la aplicación y la demora, sino que se realiza intercambiando el ruteo en el acceso de los sitios entre los que hagamos Swap, invirtiéndolos. Esto a su vez nos da otra gran ventaja: al realizar el intercambio y poner un slot productivo (por mencionar un caso de ejemplo), en el slot de origen nos queda el sitio que anteriormente estaba en producción, teniéndolo disponible para hacer una vuelta atrás en caso de ser necesaria, con la misma facilidad y sin impacto para el usuario.

Leer el post completo..

[Microsoft-Dev-Blog] Azure Web Sites: Configurar integración continua

Buenas, como es costumbre les comparto el post que escribí en el blog Microsoft-Dev-Blog.

En el mismo repasamos como configurar la integración continua en nuestros sitios web de Azure, enlazando nuestros repositorios de control de código fuente. De esta forma ante cada nuevo “Commit” o “Push” (dependiendo del tipo de repositorio que usemos) se sincronizarán los cambios, se realizará la compilación y ejecución de tests (en caso de que existiesen). Si todo esto es correcto, el resultado se publica en nuestro sitio.

La verdad que da una gran flexibilidad ya que podemos configurar casi cualquier tipo de repositorio, y como funcionalidad es muy útil para los equipos de desarrollo..

Como vimos en el post anterior, el uso del servicio sitios web de Azure nos brinda muchas funcionalidades interesantes. Una de ellas es la publicación automática a partir de los cambios en los repositorios de código fuente, o en otras palabras integración continua. Según el artículo Continuous Integration de Martín Fowler, podemos definir la integración continua de la siguiente forma:

La integración continua es una práctica del desarrollo de software, donde los miembros de un equipo integran su trabajo frecuentemente, dando lugar a múltiples integraciones por día. Por cada integración se realiza una compilación automática (incluyendo la verificación de los tests asociados) para detectar errores de integración lo más rápido posible. Muchos equipos coinciden en que este enfoque conduce a una reducción significativa de los problemas de integración y permite que un equipo pueda desarrollar software coherente con mayor rapidez.

Este enfoque, el cual está muy relacionado con las metodologías ágiles, es relativamente sencillo de comprender: la idea es continuamente integrar y encontrar fallas los más pronto posible, además de estar respaldados en un conjunto de pruebas que se ejecutarán en cada integración para garantizar el correcto funcionamiento. A su vez cada miembro del equipo sube al repositorio de código fuente de manera frecuente. Esto permite una “comunicación” más fluida entre el equipo y una reducción de los errores y su impacto.

Después de esta introducción vayamos a la práctica: cómo lo aplicamos en nuestros sitios web de Azure?

Leer el post completo..

[Microsoft-Dev-Blog] Azure Web Sites: Crear aplicaciones web en la nube

Les comparto este post que escribí en el blog Microsoft-Dev-Blog.

En el mismo vemos como podemos crear nuestras aplicaciones web en la nube con Azure, de forma sencilla y rápida, con un alto grado de personalización/configuración y soporte a múltiples plataformas.

Y un dato no menor, al crear una cuenta de Azure tendremos disponibles 10 sitios web con el plan Gratis, de forma que podemos realizar varias pruebas o algunas pequeñas aplicaciones totalmente gratuitas..

Luego de ver varios aspectos introductorios, estamos en condiciones de ver las alternativas de servicios que nos brinda Azure con mayor detalle.

El primer servicio que vamos a ver en este blog son los sitios web, tal vez uno de los servicios más simples de usar y administrar. Un sitio web de Azure es una plataforma escalable, segura y flexible para implementar nuestras cualquier aplicación web, ya sea un sitio sencillo como un blog o una compleja plataforma de e-commerce (por poner solo unos ejemplos).

La principal característica que tiene este servicio es la facilidad de uso que nos plantea en distintas formas. En primer medida, nos brinda una interfaz clara y simple para realizar la creación de nuestras aplicaciones. Con solo un par de clicks podremos tener nuestro sitio configurado y funcionando según nuestras necesidades.

SitiosWeb - Portada
Claves de los sitios web de Azure: ejecución de aplicaciones en diversos lenguajes, rapidez para lograr nuestro sitio funcional e integración completa.

Leer el post completo..

 

[Microsoft-Dev-Blog] Arquitecturas disponibles en la nube: IaaS, PaaS y SaaS

Les comparto este post que escribí en el blog Microsoft-Dev-Blog.

En este post mencionamos cuales son las arquitecturas disponibles en la nube y sus características, destacando cual es apropiada para cada fin.

Generalmente cuando creamos una aplicación debemos encargarnos de realizar todos los aspectos de soporte necesarios para que la misma se ejecute de forma apropiada. Sin duda que esta situación en muchos casos no es lo ideal, debido a que nos estaremos sobrecargando con muchas tareas administrativas en las cuales generalmente no somos especialistas. De esta forma reduciremos en forma potencial el éxito y correcto funcionamiento de nuestra aplicación

La situación mencionada se refleja claramente en un esquema como el siguiente:

ArquitecturaNube - EsquemaTradicional
Esquema tradicional

Como se ve claramente en la imagen, debemos ocuparnos de diversos aspectos asociados a tener nuestra aplicación en ejecución, como lo son el mantenimiento de la red, sistema operativo o el framework necesario para que nuestra aplicación desempeñarse de forma apropiada.

La computación en la nube viene a romper este esquema básico, brindándonos muchas más alternativas. Si hay algo por lo que se caracteriza la computación en la nube es por brindarnos la flexibilidad necesaria para poder resolver las necesidades particulares que tengamos. Desde el punto de vista arquitectónico, esta flexibilidad se ve reflejada en las siguientes alternativas:

Leer el post completo..