Azure y el desarrollo en la nube

Posted on Leave a commentPosted in ALM, Apps, Arquitectura, Cloud, Desarrollo de Aplicaciones

Fue tan sólo hace unos años, cuando empezamos a escuchar términos como la Nube y poco después términos como Azure. Hoy en día es casi imposible encontrar gente del medio de las tecnologías de la información dígase Ingenieros, Desarrolladores, Arquitectos, Project Managers, etc.,  que no esté familiarizado  o incluso especializado en esta área.

Pero ¿A qué se debe este auge y que cada vez Azure esté tomando más y más importancia?

Ya que Azure y el tema de la nube es un universo de conocimientos, en este blog, hablaremos un poco sobre el  impacto y las ventajas que ofrece Azure desde el punto de vista del desarrollo de aplicaciones.  Sin embargo primero trataremos de definir y aclarar algunos conceptos relacionados con la nube y en especial con Azure.

Uno de los primeros pensamientos que pueden venir a la mente es pensar en la nube como una cuestión de infraestructura, miles y miles de servidores interconectados entre sí, con grandes capacidades de almacenamiento con enlaces de alta velocidad que permiten compartir información a través del mundo. Pero… ¿Que no es esto lo que se conoce como Internet? Entonces ¿Cuál es la diferencia? Es a nivel conceptual; la nube funciona “sobre” internet, efectivamente utiliza todos esos recursos; la forma  de gestionarlos y aprovecharlos es lo que hace la diferencia.

azure (1)

Enfocándose en el Negocio y Desarrollo de oportunidades

Bajo este concepto, al utilizar la nube tenemos como ventajas que, primero, permite eliminar la necesidad de tener la infraestructura on-premises (1); segundo, permite pagar únicamente por el número de recursos que se utilicen; tercero, se tiene una distribución de estos recursos en diferentes partes del mundo, obteniendo una mayor disponibilidad, alta escalabilidad, mayor rapidez y reducción de costos.

Para ejemplificar lo anterior, hagamos una analogía con el servicio de energía eléctrica,  imaginemos lo que costaría proveernos a nosotros mismos el suministro de luz, esto implicaría tener un generador propio, instalarlo y darle mantenimiento ¿Suena como una locura? Pues esto es muy parecido a lo que se tenía que hacer hace algunos años antes de Azure y la Nube. De esta forma podemos apreciar las ventajas de tener un servicio que cubra una necesidad y pagar según su consumo ¿Cierto?

“El uso de la nube, nos permite enfocarnos en el negocio y las oportunidades, y en el caso del desarrollo de aplicaciones, enfocarse en la solución.”

Azure16

Ambientes, Roles, e Instancias

Ahora bien, que se puede hacer en la nube y específicamente que se puede hacer en Azure?  Azure  permite implementar nuestras aplicaciones en la Web!  De acuerdo, probablemente esto tampoco suena como algo novedoso. Sin embargo como mencionamos anteriormente, es la forma de organizar y aprovechar los recursos lo que hacen la diferencia.

Recordemos la manera tradicional de hacer el paso de un ambiente pre-productivo a un ambiente productivo, básicamente consistía en tener dos ambientes y una vez que se tenía una versión estable, copiar archivos de un sitio a otro, o en el mejor de los casos generar un instalador que hiciera el deploy de nuestra aplicación. Gracias a Azure, es posible contar con un ambiente productivo, al mismo tiempo que se tiene un ambiente pre-productivo conocido como stagin con las mismas características que producción, de esta forma es posible la integración continua de cambios en stagin y una vez que se ha validado, hacer el paso a producción haciendo un sencillo cambio o switch de direccionamiento desde la interfaz de administración.

Azure18

Cuando se trata de una aplicación Web, Azure introduce dos conceptos, Web Roles y Worker Roles, la principal diferencia radica en que los Web roles ejecutan IIS, mientras que los Worker Roles  o rol de trabajo no.  Esta es una forma muy útil de separar las cargas de trabajo dejando las funcionalidades de presentación a los Web Roles y el procesamiento de tareas complejas a los Worker Roles mejorando considerablemente el performance de nuestra aplicación.

Por otro lado, hablando de escalabilidad, las aplicaciones en Windows Azure, pueden ser configuradas para agregar más instancias según la demanda o carga de procesamiento que requiera la aplicación. Una instancia, es básicamente una máquina virtual, Azure permite a  un sitio web en ejecución agregar o quitar máquinas virtuales de forma dinámica equilibrando las solicitudes de carga entre ellas, al mismo tiempo Azure supervisa estas máquinas virtuales  y las reinicia en caso de error.

Como podemos ver, estas son sólo algunas de las características y ventajas que Azure ofrece. El poder crear entornos de prueba de una manera fácil y rápida agiliza la creación de prototipos. El ambiente de stagin, provee un entorno pre-productivo facilitando los despliegues o pasos a producción. El uso de roles es un cambio en el paradigma que permite abstraer las funcionalidades y utilizar los recursos de una manera eficiente. El uso de instancias permite asignar  recursos según la demanda.   Más adelante hablaremos de las herramientas de desarrollo en Azure.

(1) En las instalaciones del cliente o la organización.

Si quieres conocer un poco mas o tienes algún proyecto de negocio en puerta

Contactanos: contacto@extend.com.mx

Mas acerca de Computo en la Nube

Imagen de perfil de Romeo Alvarez
Romeo es ingeniero de formacion, con una Maestria en Telecomunicaciones, cuenta con amplia experiencia en Soluciones desarrolladas en plataformas Microsoft. SharePoint y Azure como sus tecnologias predilectas. Actualmente Romeo es Lider de desarrollo dentro del equipo de Operaciones en Extend

¿Nativas, Hibridas o basadas en Web?

Posted on Leave a commentPosted in Apps, Calidad, Consultoría, Desarrollo de Aplicaciones, Usabilidad

Mucho se habla hoy en dia de 3 tipos de aplicaciones móviles: Nativas, Hibridas y basadas en Web, cada uno con consideraciones especificas que debes tener en mente.

Cuando piensas en apps y experiencia movil, sin duda tu ultima opcion debera ser las basadas en Web ya que estas dejan fuera el aprovechamiento y acceso de las funciones de hardware del movil/tablet y con ello la experiencia que brindaras a tus usuarios sera mucho mas limitada, por otro lado del tema de las aplicaciones híbridas o nativas, las hibridas prometen ser un acelerador y una via para promover aplicaciones utilizando lenguajes como C#, HTML5, CSS y JavaScript (para el núcleo) utilizando frameworks para parecer aplicaciones nativas y cumplir con lineamientos para poder ejecutarse en los diferentes dispositivos.

 

hibrid

 

Un solo núcleo multiples plataformas

El no tener que programar lo mismo 2 o 3 veces en diferentes lenguajes es sin duda lo que atrae de estos métodos de desarrollo, sin embargo debes considerar que requeriras de conocimientos superiores a los básicos en todas las plataformas (algo que muchas veces se olvida) para comprender el comportamiento de cada una de las plataformas, las mejores practicas, y algo sumamente importante la usabilidad alineada a los estandares de cada plataforma y no ser de los cientos que implementan apps con controles y navegacion de una experiencia Android en un iOS, lo cual definitivamente no hace lucir bien a tu app.

 

En una idea hibrida algunas opciones que puedes considerar son:

  • Xamarin, Appcelerator, Phonegap; existen demasiadas opciones dependiendo del lenguaje que se desee usar, todas funcionan y se pueden desarrollar aplicaciones usando una infinidad de características casi nativas como son:
    • Uso de servicios REST
    • Notificaciones Push
    • Desplegar en tiendas
    • Despliegue privado
    • Uso de beacons
    • Pruebas automatizadas
    • Video en streaming
  • MONO, el framework que si funciona, la adaptación .NET de código abierto es una buena opción para un desarrollo híbrido.
  • La comunidad es enorme y ¿cómo no serlo? al usar uno de los lenguajes de programación mas usado a nivel mundial, cualquiera que se llame a si mismo programador empezó con Basic o C#

Claro que se puede realizar una aplicación completa desde la A hasta la Z y obtener lo mismo que se consigue con un lenguaje como Java ,Objective-C o Swift, siempre y cuando se tenga establecido el objetivo y alcance de la app desde el principio, si decides realizar cambios futuros o tener tus controles personalizados es cuando empiezan la diversion , y es que en un gran numero de ocasiones no cuentas con algunas características nativas o no tienes compatibilidad para realizar ese tipo de operaciones o tal vez no existe una librería que pueda hacer lo que tu requieres en este punto lo recomendable bien podria ser una app nativa.

enfadado

En resumen soluciones hibridas, nativas o basadas en Web ??, definitivamente tu decides, solo considera el objetivo y alcance de tu app, ello te ayudara a determinar cual es la mejor solucion para ti.

Ninguna de las 3 es la mejor opcion y todo esta en funcion de tu necesidad, para soluciones sencillas y muy controladas sin cambios de último minuto o expansiones en el futuro una solucion hibrida sonaria bastante bien, por otro lado si tu idea es tener una solucion al dia en componentes y brindar la mejor experiencia, usabilidad y estandarizacion ve por una solucion nativa.

Si quieres conocer un poco mas, tienes algun proyecto de negocio en puerta, contactanos: contacto@extend.com.mx

Imagen de perfil de Isai Novelo
Controller en Extend Solutions

Isai es Consultor de TI apasionado del uso de las Tecnologias Microsoft principalmente, con más de 12 años de experiencia comparte historias de exito en el desarrollo de aplicaciones Web y para Mobile, Cuenta con un MBA acreditado por SACS, ingeniero de formación.