El Viaje Fantástico de Tramchester, una Aplicación Móvil Ganadora de Premios
Por
Publicado: June 08, 2016
Tramchester es una aplicación web móvil de Thoughtworks creada para ayudar a las personas a navegar por la red de tranvías públicos en Manchester, Reino Unido. Ian Cartwright, el consultor técnico principal del proyecto, conversó con Suzie Prince acerca de este y del futuro de la aplicación.
Para este proyecto, nos dieron seis semanas para investigar una nueva herramienta o tecnología. La herramienta que analizamos fue Neo4j, una base de datos gráficos. Usamos Neo4j para modelar la red de tranvías y calculamos la mejor ruta entre dos estaciones de tranvías, usando un algoritmo que buscaba rutas.
Queríamos crear un software que funcionara en un ambiente de producción al final de la seis semanas. Con frecuencia, hay la tentación de crear pasos o métodos alternativos manuales, pero nos esforzamos por demostrar cómo algo (como Neo4j) funcionaría en el mundo real.
Snap CI, nos brinda un ambiente de desarrollo, UAT y producción. Tenemos etapas de compilar, pruebas, carga, e implantación para el desarrollo, implantación a UAT e implantación a producción.
Además, queríamos tener una manera de monitorear los estados de las versiones, de una forma segura. Con Snap, logramos la autenticación de forma gratuita y podíamos monitorear con facilidad y seguridad los estados de las versiones.
A veces se olvidan de la seguridad pero es verdaderamente importante. Son realmente útiles las variables de ambiente seguro que Snap CI tiene para gestionar nuestras credenciales. Logramos crear un usuario IAM para Snap CI, y luego bloquearlo para que tuviera solo los permisos más mínimos requeridos para implantar la aplicación. Antes de esto, teníamos había mucho por hacer para mantener todo seguro. La seguridad es ahora un enfoque principal. Considero que es una opción indispensable. Estamos intentando mantener el principio del "menor privilegio de acceso" en todo. Cualquier cosa que facilite la gestión de credenciales y seguridad es bien acogida por mí.
La formación en la nube era importante. Actualmente podemos recrear el ambiente completo desde un VPC vacío a una aplicación que funcione en apenas cerca de 15 minutos. Si colocamos etiquetas en nuestros recursos, podemos también usar el explorador de costos de Amazon para revisar el costo por ambiente e incluso el número de versión. Por tanto, podremos decir fácilmente "'¿cuánto costó la versión 100 comparada con la 98?"
También estamos usando CFNAssist que es una herramienta de fuente abierta desarrollada para otro proyecto. Inicialmente, cuando realizamos las implantaciones, era solo un conjunto de programas de shell, pero ahora hemos migrado a CFNAssist. Nos ha ayudado a borrar varios programas de shell y reemplazarlos con algo que fue testeado más minuciosamente.
[Thoughtworks y Tramchester ganaron el Gran Chip a la "mejor aplicación de tecnología" en 2014 por su uso de la tecnología de base de datos gráficos para crear una aplicación de transporte que sea más rápida, eficiente y flexible que permitiera enfrentar las demandas futuras.]
Se publicó originalmente este artículo en el CI de Snap, el blog The Pipeline.
¿Nos puede contar cómo comenzó Tramchester?
Tramchester se inició como un proyecto innovador de seis semanas que creció de forma no anticipada y lo hemos estado cuidando desde esa fecha.Para este proyecto, nos dieron seis semanas para investigar una nueva herramienta o tecnología. La herramienta que analizamos fue Neo4j, una base de datos gráficos. Usamos Neo4j para modelar la red de tranvías y calculamos la mejor ruta entre dos estaciones de tranvías, usando un algoritmo que buscaba rutas.
Queríamos crear un software que funcionara en un ambiente de producción al final de la seis semanas. Con frecuencia, hay la tentación de crear pasos o métodos alternativos manuales, pero nos esforzamos por demostrar cómo algo (como Neo4j) funcionaría en el mundo real.
¿Qué ocurrió desde que Tramchester comenzó a funcionar en un ambiente de producción?
Hemos facilitado lanzar una versión nueva. Ahora es bastante menos engorroso. Solo conseguimos horarios nuevos y los cargamos. Cuando comenzamos a trabajar en el proyecto, algunas cosas tenían una codificación fija.¿Con cuánta frecuencia cambian Tramchester?
Cuando hay actualizaciones de horarios de tranvía, casi inmediatamente se activan las tareas de mantenimiento. La red de tranvía continúa ampliándose y realizan mucho trabajo, por lo que a la final debemos adaptarnos a esos cambios. Cuando vemos tareas que se efectúan en los tranvías, revisamos las modificaciones de los horarios.¿Había algo especial que requerían de sus herramientas para dar soporte a esto?
Sabíamos que queríamos gestionar nuestras implantaciones como parte del proceso de generación de versiones. En realidad, deseábamos tener implantaciones que se activaran con un solo clic.Snap CI, nos brinda un ambiente de desarrollo, UAT y producción. Tenemos etapas de compilar, pruebas, carga, e implantación para el desarrollo, implantación a UAT e implantación a producción.
¿Cuáles son las herramientas que le ayudaron a completar Tramchester?
Comenzamos a usar GoCD albergado en AWS. Debido a que ya no contamos con un equipo principal y solo estamos dedicando unas pocas horas por aquí y por allá, queríamos una solución que fuera más barata que una instancia de AWS y más fácil de mantener. Al trasladarnos a Snap CI tenemos un servicio que se ejecuta en la nube. Está listo, se mantiene y se actualiza. Desde nuestro punto de vista, se eliminó la necesidad de mantener o colocar parches en nuestra herramienta de CI.Además, queríamos tener una manera de monitorear los estados de las versiones, de una forma segura. Con Snap, logramos la autenticación de forma gratuita y podíamos monitorear con facilidad y seguridad los estados de las versiones.
A veces se olvidan de la seguridad pero es verdaderamente importante. Son realmente útiles las variables de ambiente seguro que Snap CI tiene para gestionar nuestras credenciales. Logramos crear un usuario IAM para Snap CI, y luego bloquearlo para que tuviera solo los permisos más mínimos requeridos para implantar la aplicación. Antes de esto, teníamos había mucho por hacer para mantener todo seguro. La seguridad es ahora un enfoque principal. Considero que es una opción indispensable. Estamos intentando mantener el principio del "menor privilegio de acceso" en todo. Cualquier cosa que facilite la gestión de credenciales y seguridad es bien acogida por mí.
La formación en la nube era importante. Actualmente podemos recrear el ambiente completo desde un VPC vacío a una aplicación que funcione en apenas cerca de 15 minutos. Si colocamos etiquetas en nuestros recursos, podemos también usar el explorador de costos de Amazon para revisar el costo por ambiente e incluso el número de versión. Por tanto, podremos decir fácilmente "'¿cuánto costó la versión 100 comparada con la 98?"
También estamos usando CFNAssist que es una herramienta de fuente abierta desarrollada para otro proyecto. Inicialmente, cuando realizamos las implantaciones, era solo un conjunto de programas de shell, pero ahora hemos migrado a CFNAssist. Nos ha ayudado a borrar varios programas de shell y reemplazarlos con algo que fue testeado más minuciosamente.
¿Qué opiniones hay acerca de Tramchester?
Pienso que las personas están emocionadas de ver una aplicación de transporte específica para Manchester. Claro que ahora hay muchas más disponibles. La idea de que existiera algo que ayude a planificar un viaje de tranvía fue apreciada también. Cuando se amplíe la red de tranvía esta tendrá más opciones y, por tanto, una mayor necesidad de tener una ayuda.[Thoughtworks y Tramchester ganaron el Gran Chip a la "mejor aplicación de tecnología" en 2014 por su uso de la tecnología de base de datos gráficos para crear una aplicación de transporte que sea más rápida, eficiente y flexible que permitiera enfrentar las demandas futuras.]
¿Qué planes hay para el futuro de Tramchester?
Ahora que la red de tranvía sigue expandiéndose, debemos revisar la capacidad de uso, nuevamente, ¡ya que la lista de estaciones se está volviendo muy larga! También estamos viendo cómo se pueden cargar otros conjuntos de datos en la solución de búsqueda de rutas, tal vez de otras ciudades u otros tipos de transporte.Se publicó originalmente este artículo en el CI de Snap, el blog The Pipeline.
Aviso legal: Las declaraciones y opiniones expresadas en este artículo son las del autor/a o autores y no reflejan necesariamente las posiciones de Thoughtworks.