Xuaps

Piedras apiladas

Refly Stack

Cuando empezamos a desarrollar Refly nos surgió un problema: ¿qué stack tecnológico escogemos? Para mi, hasta ese momento, la decisión siempre se supeditaba a algún tipo de restricción: servidores, licencias, programadores con experiencia en…
Pepe supongo que lo hubiera hecho en PHP pero como yo lo tengo bastante oxidado se dejó llevar. Llegamos a la conclusión de que el único lenguaje común que los dos dominabamos era JavaScript, por tanto la elección fue NodeJS.

La primera semana programamos mediante pairing remoto una finísima capa de infraestructura y a partir de ahí Pepe siguió con el front y herramientas y yo con el back y parsers. Mucho tiempo ha pasado desde entonces, de hecho Pepe ya no está en el equipo y la mayoría de nuestro stack inicial ha cambiado. Y eso precisamente es lo que os vengo a contar:

Backend:

Elegimos como base de datos PostgreSql. Por experiencias anteriores y por la propia de Refly puedo decir que es una buena base de datos. Antes solía usar MySql, supongo que en Refly sería más que suficiente ya que no hacemos un uso especial de la base de datos pero si es cierto que PostgreSql tiene ciertas características para búsquedas que puede que en un futuro nos sean de utilidad. El único contra es que algunos PaaS no la proveen o te cobran mientras que por MySql no lo hacen.

Express + NodeJs + Jade para servir las páginas. Como os he dicho la decisión de NodeJs fue bastante arbitraria y hoy por hoy creo que no lo elegiría, si queréis que hable más de esto decídmelo. Express me gusta mucho es un framework moderno y la forma de trabajar es muy cómoda, una vez que la entiendes, claro. Sobre Jade no tengo mucho que decir lo usamos muy poco y venía por defecto.

Todo descansa en un gear escalable en OpenShift. Después de Azure es la plataforma PaaS que más me gusta, si me decidí por OpenShift y no por Azure fue por el precio y por el soporte de PostgreSql.

Frontend

Aquí empezamos con un framework “made in Pepe”. Pero pronto se quedó pequeño. El caso es que como el framework de Pepe solo manejaba la vista, Reactjs nos pareció ideal para sustituirlo. Cuando la cosa empezó a crecer y empezamos a necesitar comunicar unos componentes con otros decidimos integrar Reflux, ¿por qué Reflux y no Flux? Tema para otro post. A pesar de la deuda técnica inicial el resultado me estaba gustando pero el aspecto era bastante feo. Como yo no soy diseñador usé bootstrap y andando. Aunque quizás no es tan importante, creo que merece la pena mencionar que usamos browserify. Había estado usando requirejs en otro proyecto y la verdad es que tuvimos bastantes problemas, así que en Refly decidí cambiar.

En fin creo que esto es todo, por supuesto también usamos una ingente cantidad de librerías pero no me parecen tan importantes y además estamos cambiandolas continuamente. Lo dicho, si quereis que me extienda más sobre por qué tal o cual tecnología decidlo y usad los comentarios para opinar.