Gente trabajando en la oficina de SumUp

Elixir en SumUp: un lenguaje moderno para un mundo en constante cambio.

Aunque la RAE no esté siempre de acuerdo, el lenguaje es dinámico. Cambia según el uso, la geografía y los tiempos, porque es una herramienta humana que nos ayuda a transmitir conocimiento en un mundo en constante cambio.

Lo mismo pasa en el mundo de la programación. Los lenguajes que usamos como herramientas deben estar sujetos a los cambios y la evolución necesarias para hacer frente a los nuevos desafíos que se nos presentan.

Por eso en nuestra primera charla en MeetUp junto a nuestro equipo de Banking decidimos presentar este lenguaje, con sus principales características y beneficios para que junto a nosotros puedas ver todas las posibilidades que esta nueva herramienta puede entregarte.

Te invitamos a ver este resumen con los principales temas y oradores que formaron parte del evento.

Jorge Acosta, Engineering Manager: 

“¿Qué es SumUp?”

SumUp es una Fintech europea que nace hace más de 10 años en Alemania con la visión de ayudar a pequeños comerciantes a ser exitosos haciendo lo que aman.

Este propósito de empoderar emprendedores es parte de una visión global que nos ha llevado a transformarnos en una solución presente en Europa, Brasil, Colombia, Estados Unidos y con pronta apertura en Perú.

En Chile, SumUp llegó en el marco de una Joint Venture con BancoEstado, y desde 2020 ya funciona como una entidad independiente.

“¿Qué es y cómo nace Elixir?”

La historia de esta herramienta es similar a la historia de un emprendedor. Alguien que busca obtener el mejor resultado posible usando y mejorando las herramientas que tiene a mano. Ese fue el caso de José Valim, un desarrollador de software que sentía que Ruby era un lenguaje de programación que no escalaba como él quería. En su investigación, conoce Erlang, el lenguaje de programación creado por Sony Ericsson, pero descubrió que este tenía una sintaxis difícil de seguir y por lo mismo una curva de adopción y aprendizaje demasiado elevada. Es así como llega a una solución simple y efectiva: Unir lo mejor de ambos para crear Elixir. Un lenguaje de programación que incorpora la sintaxis de Ruby con los features de Erlang.

Con la intención de replicar el éxito obtenido en su uso en Brasil, estamos apuntando a la aplicación de Elixir como un lenguaje que nos ayude a expandir esta práctica.

Joaquín Benavides, Software Engineer: 

“¿Cuáles son las principales características de Elixir?”

1.- Escalable

Si consideramos que Erlang es el lenguaje en el que fue creado Whatsapp, lo que aporta Elixir es traer herramientas de usabilidad a la mesa, lo que la vuelven una herramienta más atractiva para todo tipo de desarrolladores al hacer más fácil el trabajo con bases de datos y creación de apps web. 

Elixir facilita la vida, porque tiene un lenguaje más funcional. 

En el mundo de pago, esto es particularmente importante, porque la gente transfiere constantemente al mismo tiempo, existiendo muchas comunicaciones que se llevan a cabo de forma paralela. 

En nuestro caso, al tener múltiples micro-servicios, necesitamos la escalabilidad y flexibilidad de un lenguaje que nos permita pasar de 100 transferencias simultáneas a 1.000, para luego volver a bajar a 100.

Nuestra meta es tener SIEMPRE la capacidad de proveer a nuestro clientes el servicio de forma constante, y para eso es esencial lograr una concurrencia necesaria para ser capaces de hacer muchas cosas que no compartan memoria, como CSP, SmallTalk y Prolog.

2.- Tolerante a fallos OTP

Elixir organiza el trabajo creando procesos simultáneos  de mejor tamaño, además se encarga de los problemas, los analiza y resuelve sin impactar ni afectar en los procesos/servicios que se están llevando a cabo, optimizando la respuesta a fallos.

Al no compartir memoria, Elixir corre mucho más rápido, entregando muchas más opciones de paralelismo

3.- Programación funcional/Extensible

Elixir es un lenguaje muy pequeño y los macros nos permiten crear DSl (pattern matching), lo que permite mantener data en constante movimiento en el pipeline.

4.- Debug/IEX

5.- Erlang/Beam

VM virtual machine similar a JVM, pero mucho más pequeña y optimizada para resiliencia. Manejo de procesos, schedulers.

 

Antonio Alarcón, Software Engineer

“Grandes soluciones en poco tiempo”

En SumUp tenemos apps móviles como webs y el servicio más requerido es el de cuentas. 

En ambos casos, la velocidad de respuesta es esencial, y al darnos cuenta que algunos procesos demoran más de lo que debían llegamos a una solución con las ETS (Erlang Term Storage), lo que nos permite almacenar información a la que acceder de manera súper rápida.

Esta solución nos tomó menos de dos días.

Joaquín Benavides, Software Engineer: 

“Cuándo NO usar Elixir”

Sabemos que las transacciones son el motor de un negocio, y para cumplir con nuestro propósito de potenciar emprendimientos tenemos que contar con una herramienta que nos permita mantener apps en funcionamiento permanente y altamente disponibles en todo momento. Sin embargo, sabemos que esta herramienta no es perfecta para todo y que hay otros lenguajes de programación que llevan a cabo de mejor manera ciertos trabajos, como Numeric intensive apps, Machine learning, GUIS, Mobile dev, etc.

Juliette GueguenLíder de PR en SumUp Chile