Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Scala FP @ S4N

Yuji Kiriki
April 26, 2017
130

Scala FP @ S4N

Yuji Kiriki

April 26, 2017
Tweet

Transcript

  1. Un poco de S4N • ¡9 años 4 meses 15

    días trabajando en construir el mejor SW del mundo! • Somos un equipo de 150+ personas trabajando desde BOG y MDE atendiendo clientes en 5 países. • Construimos y operamos DistSys para nuestros clientes. • Usamos tecnologías requeridas por la solución del problema. • Un proyecto en S4N es típicamente de 3 años donde intervienen más de 15 desarrolladores en el tiempo. • Mantenemos 25+ proyectos en ejecución simultánea.
  2. ¿Por qué Scala en S4N? Hace 4 años estabamos muy

    cansados del ecosistema “empresarial” de Java (JEE, Spring) pues no podíamos entregar el valor que nuestros clientes buscaban. Ejemplo implementación “sagas” en contenedor
  3. ¿Por qué Scala en S4N? Teníamos varios problemas que resolver

    en proyectos con MinTIC cuyas soluciones caían en modelos DistSys. P.ej. Alcaldías de Colombia y notificación procesos judiciales
  4. ¿Por qué Scala en S4N? Los problemas a los que

    nos enfretabamos eran cada vez más distantes de las “recetas” de los vendedores empresariales por excelencia como IBM, Oracle, Microsoft.
  5. ¿Por qué Scala Funcional en S4N? Mostrar las dos formas

    de administrar la complejidad a la hora de construir software.
  6. Scala Funcional en S4N 1. OO 2. Composición de funciones

    (sin efectos secundarios, transparencia referencial, mismo resultado dado los mismos datos de entrada) 3. ADT (Algebraic Data Types) 4. Typeclasses más usadas (Either, Option, Future, Try, List) 5. State, Writter, Reader, Kleisli y MonadT. 6. Un poquito de Shapeless para hacer parsers. 7. Parser combinators. 8. Demás drogas duras de FP.
  7. Curva de aprendizaje Somos demasiados desarrolladores (+100) saltando de codebase

    en codebase en diferentes dominios/clientes y diferentes tecnologías (akka, akka-http, spray, play, cassandra, kafka, mongodb, postgresql, JS, etc)
  8. Curva de aprendizaje ¿Cómo hacemos para que hacer código más

    fácilmente compartible entre todos? ◦ Golang style => Los desarrolladores necesitan herramientas limitadas para que no se vuelen los pies con la escopeta. ◦ S4N style => Somos capaces de aprender y aplicar correctamente las herramientas a nuestra disposición, aprendiendo de nuestros errores. De hecho ¡eso nos motiva!
  9. Fracasos y aciertos Fracasos • <sparkles> FP </sparkles> • Scalaz

    / cats / Shapeless para todo. Aciertos • Los desarrolladores son personas. Las personas normalmente quieren aprender cosas nuevas y los motiva la maestría :) • FP + Tipos como paradigma de diseño e implementación. • Entender, al menos superficialmente, Teoría de Categorías.
  10. Beneficios medibles • Bienestar de los equipos y desarrolladores ◦

    Satisfacción al aprender ◦ Satisfacción al mantener ◦ Satisfacción al diseñar ◦ Satisfacción al evolucionar • Número de errores asociados a errores capturables en tiempo de compilación gracias a un buen modelamiento del problema, considerablemente menor.