Developer's Diary

27 agosto, 2014

TravelOfertas. Caso de éxito

          Este articulo pretende comentar las razones por las cuales tome la decisión de usar Xamarin, como tecnología para el desarrollo de la aplicación Travel Ofertas de BookingFax y todas las complicaciones que tuve durante en el desarrollo.

          Solo pretende ser un documento técnico, sin ánimo de publicitar directamente ni Xamarin, ni TravelOfertas.

          Vamos a situarnos un poco. BookingFax es una empresa orientada a servicios para las agencias de viaje, publica las ofertas de viaje que existen tanto en España, Italia, Argentina principalmente.

logo

          En el equipo de desarrollo existen varios desarrolladores web, que se encargan del mantenimiento de la misma. Pero se quería realizar el proyecto de TravelOfertas. Que se trataba de proveer de una manera sencilla a los usuarios de a pie de las ofertas de viaje que se pueden localizar en las agencias y que pudiesen contactar con las mismas.

          También hay que tener en cuenta que iba a ser una aplicación viva. Que iba a estar en constante actualización, no se trataba de una App para un evento, es importante su continua actualización, tanto para incrementar su ASO, como para incluir nuevas funcionalidades.

Escenario

          Ahora bien, en el desarrollo me encontraba solo y la intención era realizar un desarrollo rápido, para alcanzar la temporada de verano. La aplicación debía ser multiplataforma, ya que se trata de una aplicación generalista. Además, la intención era hacerla completamente nativa.

Evaluando la situación

          Teniendo este escenario vamos a extraer todas las casuísticas.

  • Equipo de un miembro

          Aunque esto no es del todo cierto, gran parte del diseño de la app fue responsabilidad de un tercero y el backend, fue realizado por otro miembro del equipo. El desarrollo de la App en si caía en la responsabilidad de una persona. (UX, Testing y Desarrollo)

  • Multiplataforma

          A día de hoy, encontrar un desarrollador móvil multiplataforma para las tres plataformas mayoritarias. (IPhone, Android y Windows Phone) Es casi bastante imposible. No podíamos descartar una de las plataformas. Windows Phone es la segunda plataforma en Italia e Iphone lo era en España.

  • Nativo

          Tanto en perfomance, como en estilo. Realizar una aplicación nativa es una necesidad. Como usuario de Smartphone, me niego rotundamente a usar una aplicación que no siga los canones de estilo de la plataforma en la que se encuentra y su usabilidad desciende cuando su aspecto no es similar.

          Por esta razón teníamos que descartar el uso de frameworks multiplataformas que usan html y javascript.

  • Tiempo

          El tiempo, corría en nuestra contra. Aunque suficiente para realizar una plataforma e incluso dos. Cualquier complicación en una de las plataformas hubiese significado no llegar a tiempo y que la aplicación se hubiese retrasado. Por lo que encontrar una solución en la que se reutilizara código era necesario.

  • Integración continua

          La integración continua que requería la aplicación para mantenerla actualizada era primordial, por lo que tenía que ser muy testeable y que integrar nuevas funcionalidades en las tres plataformas no requiriese demasiado esfuerzo.

          Esta tarea es mucho más fácil si el core de la aplicación es dependiente de las tres aplicaciones y no que cada App tenga su propia lógica. Lograr programar una vez, integrar y testear tres veces era una necesidad primordial.

Solución

          Actualmente, existen tres soluciones factibles para las casuísticas que hemos indicado.

XamarinLogo

          La primera es Xamarin. Con cierto bagaje y con una tecnología ya testeada. La empresa encargada de la plataforma Mono era una buena solución. Con el aliciente de que el know how en el lenguaje era alto. (C#)

EmbarcaderoLogo

          Como segundo candidato, estaba la solución de Embarcadero. La solución tenía menos años y personalmente había tenido malas experiencias con los productos de Embarcadero. Aunque también teníamos un know how tanto de la plataforma, como del lenguaje. Aunque no soporta Windows Phone.

Nativo

          Por último, realizar desarrollos independientes para cada plataforma. Los inconvenientes eran el tener que realizar el desarrollo para las tres plataformas, además que el know how sobre la plataforma de iOS era reducida. Aunque, a favor que hay que decir es que el coste de licencias para el desarrollo era 0.

          Finalmente, la solución tomada fue usar Xamarin. Aunque existe un coste por licencias puede resultar elevado. Si pensamos fríamente, el coste por la licencia queda amortizado en el primer desarrollo. Ya que, utilizado inteligentemente estamos aprovechando mas de un 70% de nuestro código en las tres plataformas.

          Si por lo tanto, el desarrollo inicial de TravelOfertas ha sido de tres meses y el core reutilizable de nuestra aplicación ha supuesto aproximadamente un mes y medio de desarrollo, si lo hubiéramos hecho de manera nativa hemos ahorrado tres meses de nuestro desarrollo.

          Teniendo en cuenta que las licencias de Xamarin, tienen un coste anual de 1000$ en su edición businness, la mas eficiente y funcional sin duda, hagan las cuentas de lo que supone el coste de un desarrollador móvil durante tres meses.

          En el caso del mantenimiento y testeo volvemos a indicar lo mismo. El hecho de que nuestro core de aplicación sea compartido por las tres plataformas, supone que si se realiza una modificación del mismo, sea testeado en las tres versiones y mantenido. El coste de mantenimiento, únicamente se triplicara cuando haya modificaciones en la vista de nuestra aplicación.

Stack tecnológico

          Pasemos a hablar un poco de las entrañas de la aplicación. El cliente móvil esta desarrollado como ya hemos comentado con Xamarin, apoyándonos sobre el framework MvvmCross de Stuart Lodge.

          Sinceramente, MvvmCross es uno de los mejores frameworks que he usado personalmente hasta la fecha, el soporte facilitado por su creador es alucinante. Puedes modificarlo a tus necesidades debido a que todo el código fuente se encuentra en Github, además que el sistema de inyección de dependencias nos permite hacer “hacks” sobre el mismo que nos permite inducir el funcionamiento que necesitamos, sin lugar a dudas es un componente esencial para el desarrollo en Xamarin.

          El backend desarrollado en php. Se trata de una RestAPI que ya se usaba previamente en BookingFax. Mejorada para el cliente móvil. Su integración no ha resultado ningún problema dentro del cliente móvil.

Dificultades/Contras

          No todo ha sido un camino de rosas, durante el desarrollo. Una de los contras a achacar al desarrollo con Xamarin, es que las aplicaciones desarrolladas aumentan el tamaño del binario, debido a que se deben incluir las dependencias necesarias para .Net dentro del compilado, lo que aumenta considerablemente el tamaño de la aplicación.

          No obstante es un coste que debe asumir el usuario. Que a día de hoy es apenas considerable con los smartphones actuales.

          La segunda complicación, es el uso de librerías de terceros. Normalmente no hay soporte para Xamarin. De todas formas día a día se va subsanando esta complicación, además. Siempre hay soluciones de terceros y de la misma Xamarin que pone a disposición de los desarrolladores soluciones para su uso.

          Por otro lado, también existe la posibilidad de hacer conexiones con librerías nativas. Reutilizando el código de las mismas, dando Xamarin bastante soporte al respecto. Este obstáculo cada vez, va siendo menor, pues el soporte por terceros va en aumento.

          Otra complicación, es que aunque no estés desarrollando directamente en el lenguaje nativo, si no que desarrollas con C#, pero con Xamarin posees todo el potencial de las APIS de cada lenguaje eso sumado a la experiencia de usuario obligan al desarrollador, tener que conocer la plataforma, porque aunque programas en un lenguaje distinto, haces uso de todas las funcionalidades.

Conclusión

          El desarrollo multiplataforma nativo. Es posible y una solución para las empresas de software para ahorrar en recursos.

          Además de poder ofrecer a sus clientes. Ya que estos normalmente se plantean realizar el desarrollo en todas las plataformas, por el aumento en costes. El reducir costes en el desarrollo inicial, puede permitir añadir un mayor elenco de funcionalidades a las aplicaciones y de esa manera ofrecer una mejor experiencia al usuario final.

          Por otro lado, la aplicación ya tiene varios meses de vida, teniendo unas 15000 descargas, debemos tener en cuenta que solo se encuentra presente en España e Italia, por lo que estamos trabajando con un mercado más reducido de Smartphones. Podéis descargarla desde estos enlaces por si queréis probarla y sacar vuestras propias conclusiones de perfomance.

También, como siempre podéis escribir comentarios para resolver cualquier duda que os pueda quedar.

¡Un saludo!

          Aún queda mucho trabajo dentro del desarrollo de la aplicación, integrar distintas funcionalidades, corregir algún bug que queda suelto y mejorar visualmente. Pero lo que debemos tener en cuenta es que gran parte de ese desarrollo, solo deberá programarse una vez y se reutilizará en las tres plataformas.

9838c64f-fdb8-4b1e-9e59-5334fbeb01c4cf527990-f6b0-4fd7-9e1c-2876b0c337aa90ea33a2-ded9-4ff6-a0ef-1677667a086f

Anuncios

Dejar un comentario »

Aún no hay comentarios.

RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: