SlideShare una empresa de Scribd logo
1 de 55
Descargar para leer sin conexión
Backends en Node
para Javeros y
Puntoneteros
Francisco Javier Barrena Castillo - @DogDeveloper
Who’s that guy
Francisco Javier Barrena Castillo - @DogDeveloper
• Director de Innovación en Ingeniería del Software
en Instituto Tecnológico de Informática @ITI_TIC
• 7 años con proyectos comerciales
• Actualmente en proyectos de I+D
• Big Data, Machine Learning, Cloud Computing, Cyber
Physical Systems, Embedded Systems…
• Ex-CTO en www.onlyeco.com
• Buscador de viajes ecosostenibles
• Actualmente EcoDeveloper Advocate
• Formador y ponente (¡cuando me dejan! :D)
https://www.linkedin.com/in/fjbarrena
¿qué hace esto?
Francisco Javier Barrena Castillo - @DogDeveloper
¿y esto?
Francisco Javier Barrena Castillo - @DogDeveloper
¿o esto?
Francisco Javier Barrena Castillo - @DogDeveloper
Y esto otro…
http://codepen.io/MattiaAstorino/pen/zxRayG
Francisco Javier Barrena Castillo - @DogDeveloper
Y es que al ecosistema node le falta un ‘hervor’
• Node es una tecnología habilitadora
• La comunidad se dio pronto cuenta de que Node aportaba cosas
nuevas
• Pero le faltan (¿faltaban?) años para conseguir el nivel de madurez
de su competencia
• ¿Dónde triunfó inicialmente Node?
• En prototipado rápido
• Los frameworks que surgieron mejoraron las cosas, pero seguían
estando demasiado cerca del ‘hierro’
• Express, Loopback, Sails
• Ninguno resolvía los grandes problemas…
Francisco Javier Barrena Castillo - @DogDeveloper
Y es que al ecosistema node le falta un ‘hervor’
• Node es una tecnología habilitadora
• La comunidad se dio pronto cuenta de que Node aportaba cosas
nuevas
• Pero le faltan (¿faltaban?) años para conseguir el nivel de madurez
de su competencia
• ¿Dónde triunfó inicialmente Node?
• En prototipado rápido
• Los frameworks que surgieron mejoraron las cosas, pero seguían
estando demasiado cerca del ‘hierro’
• Express, Loopback, Sails
• Ninguno resolvía los grandes problemas…
Francisco Javier Barrena Castillo - @DogDeveloper
Francisco Javier Barrena Castillo - @DogDeveloper
La
arquitectura
Las ideas preconcebidas
Francisco Javier Barrena Castillo - @DogDeveloper
La estabilidad
Nest – una solución posible
• Nest es un framework de desarrollo en TypeScript con todo lo que
nos gusta
• ORMs
• ‘Razonablemente’ tipado
• Guiado por anotaciones
• Orientado a
• Objetos
• Funcional
• Reactiva
• Modular
• Testeable
• Dependency Injection
Francisco Javier Barrena Castillo - @DogDeveloper
El artífice
@kammysliwiec@nestframework
Nest – una solución posible
• Está construido sobre Express
• Eso nos permite usar cualquier librería existente para Express
• Se centra en la arquitectura
• Que implementa buenos patrones de diseño
• Con una comunidad creciente
• Y nacido en libertad
Francisco Javier Barrena Castillo - @DogDeveloper
La libertad
PERSON
Francisco Javier Barrena Castillo - @DogDeveloper
El origen del poder
•La industria es poderosa
•Pero no es el origen del poder
•El origen del poder es de los developers
•La industria tiene el dinero
•Nosotros y nosotras tenemos todo lo demás
•Loopback, Sails, Meteor o quien venga no son
nadie sin nuestra aprobación
Francisco Javier Barrena Castillo - @DogDeveloper
Si los developers estornudamos…
• Si los developers estornudamos, la industria se resfría
• Y los developers teníamos un problema…
• Los frameworks de back-end en Node no fomentaban la mantenibilidad del
código
• Ni la arquitectura
• Y aquellos que se acercaban, nos intentaban atrapar anclándonos a sus
modelos de funcionamiento
• Así que empezamos a buscar alternativas basadas en estándares
• La solución es siempre tender a los estándares
• Y ha surgido Nest, que permite a la comunidad desarrollar
backends basados en Node bien estructurados, basados en
estándares y buenas prácticas.
• Tanto es así, que algunos players han empezado a copiar a Nest
Francisco Javier Barrena Castillo - @DogDeveloper
Breve introducción a nest
• Fuertemente influenciado por Angular
• Async by default
• Basado en módulos
• Inyección de dependencias (por constructor o a través de anotaciones)
• Fácilmente integrable con
• TypeORM
• Passport
• Mongoose
• GraphQL
• Websockets
• Microservices (Redis, MQTT, RabbitMQ…)
• Swagger
Francisco Javier Barrena Castillo - @DogDeveloper
Conceptos importantes
• Modules
• Equivalente a los packages de JAVA o a los namespaces de .NET
• Providers
• Servicios y DAOs. Equivalente a @Repository o a @Service en Spring
• Controllers
• Clase que maneja los endpoints, equivalente a JAX-RS en JAVA por
ejemplo
• Guards
• Permiten aplicar reglas de seguridad a endpoints
• Interceptors
• Similar a Aspect Oriented Programming (AOP)
Francisco Javier Barrena Castillo - @DogDeveloper
Provider
Francisco Javier Barrena Castillo - @DogDeveloper
controller
Francisco Javier Barrena Castillo - @DogDeveloper
module
Francisco Javier Barrena Castillo - @DogDeveloper
Servicios
Daos
importación de
módulos de
terceros
endpoints
Siguenelpatrónsingleton
Arranque del servidor – main.ts
• Quien ‘orquesta’ el startup del servidor es el fichero main.ts
• Esto es genial porque:
• Podemos hacer cosas antes de que arranque el servidor
• Y también después
• Pero sobre todo, nos facilita enormemente tareas como:
• Integración con Dockers
• Despliegues en Kubernetes, etc.
• Procesos de Integración Contínua
• Un main.ts básico podría ser el siguiente
Francisco Javier Barrena Castillo - @DogDeveloper
Main.ts
Francisco Javier Barrena Castillo - @DogDeveloper
Y a partir de ahí…
Francisco Javier Barrena Castillo - @DogDeveloper
Feel like a mage…
12 de junio de 2018 www.vlcsofting.es
Nestcli – scaffolding
Los genéricos
• Algo muy interesante es el uso de genéricos
• Al estar basado en TypeScript, podemos utilizar toda la potencia de
un lenguaje orientado a objetos
• Podemos implementar controladores base, de los que extenderán
los controladores finales, con muy poco código
Francisco Javier Barrena Castillo - @DogDeveloper
Para los javeros: un dao genérico
Francisco Javier Barrena Castillo - @DogDeveloper
Para los javeros: un dao genérico
Francisco Javier Barrena Castillo - @DogDeveloper
Para los javeros: un dao genérico
Francisco Javier Barrena Castillo - @DogDeveloper
Para los javeros: un dao genérico
Francisco Javier Barrena Castillo - @DogDeveloper
Y ahora la clase que lo extiende
Francisco Javier Barrena Castillo - @DogDeveloper
Feel like a mage…
12 de junio de 2018 www.vlcsofting.es
Feel like a mage…
12 de junio de 2018 www.vlcsofting.es
¿qué acabamos de hacer?
controller
Francisco Javier Barrena Castillo - @DogDeveloper
“The good monolith”
• Los monolitos que nos complicaron la vida eran aquellos que
acoplaban backend de frontend
• Aprendimos que para escalar horizontalmente estas
construcciones no eran buenas
• Empezamos a separar y a desacoplar. Inicialmente, solo backend
de frontend
• Luego empezamos a partir al backend en trozos más pequeños
• Y más pequeños. En microservicios.
• Hasta que empezamos a tener decenas de microservicios
• Y empezaron a complicarnos la vida también
Francisco Javier Barrena Castillo - @DogDeveloper
Arquitectura promovida por la comunidad
Francisco Javier Barrena Castillo - @DogDeveloper
Módulo 1
(Auth)
Service
Controll
Model
Módulo 2
(Artículos)
Service
Controll
Model
Módulo 3
(Transactions)
Service
Controll
Model
Módulo N
(Clientes)
Service
Controll
Model
Módulo principal
El microlito
Francisco Javier Barrena Castillo - @DogDeveloper
PersistenceModule
(TypeORM,
Providers/DAO)
SharedModule
(CommonsyModelo)
CoreModule
(Providers/Service,
Negocio)
APIModule
(Controllers,
Middleware, Auth)
App Module
(Bootstrap y Config)
Módulo
reutilizable
Módulo
reutilizable
KAFKA
MODULE
WINSTON
LOGGER
MODULE
DOMINIO
Módulo
reutilizable
AMAZON S3
MODULE
Módulo
reutilizable
FACEBOOK
AUTH MODULE
HTTP SERVICE
El “microservicio”
Francisco Javier Barrena Castillo - @DogDeveloper
Módulo
Service
Controll
Model
Módulo
Service
Controll
Model
Módulo
Service
Controll
Model
Módulo
Service
Controll
Model
FRONT
USUARIOS PEDIDOS ARTÍCULOS PRECIOS
HTTP SERVICE
El “microservicio”
Francisco Javier Barrena Castillo - @DogDeveloper
Módulo
Service
Controll
Model
Módulo
Service
Controll
Model
Módulo
Service
Controll
Model
Módulo
Service
Controll
Model
FRONT
USUARIOS PEDIDOS ARTÍCULOS PRECIOS
i+d en el iti
Francisco Javier Barrena Castillo - @DogDeveloper
HTTP SERVICE
True microservice
Francisco Javier Barrena Castillo - @DogDeveloper
Módulo
Service
Controll
Model
Módulo
Service
Controll
Model
Módulo
Service
Controll
Model
Módulo
Service
Controll
Model
FRONT
USUARIOS PEDIDOS ARTÍCULOS PRECIOS
Francisco Javier Barrena Castillo - @DogDeveloper
Gracias
i+d en el iti
Francisco Javier Barrena Castillo - @DogDeveloper

Más contenido relacionado

Similar a Francisco Javier Barrena | NestJS: Backends para javeros y punto-neteros con Typescript | Codemotion Madrid 2018

Re evolución robótica
Re evolución robóticaRe evolución robótica
Re evolución robóticaSoftware Guru
 
Cybercamp 2014. Tinfoleak: Analizando nuestras pautas y comportamientos a tr...
Cybercamp 2014. Tinfoleak:  Analizando nuestras pautas y comportamientos a tr...Cybercamp 2014. Tinfoleak:  Analizando nuestras pautas y comportamientos a tr...
Cybercamp 2014. Tinfoleak: Analizando nuestras pautas y comportamientos a tr...Internet Security Auditors
 
BancaCivica.es: Un caso de éxito Drupal en el sector bancario
BancaCivica.es: Un caso de éxito Drupal en el sector bancarioBancaCivica.es: Un caso de éxito Drupal en el sector bancario
BancaCivica.es: Un caso de éxito Drupal en el sector bancarioDavid Gil Sánchez
 
Top 10 IoT OWASP, Hack&Beers Sevilla
Top 10 IoT OWASP, Hack&Beers SevillaTop 10 IoT OWASP, Hack&Beers Sevilla
Top 10 IoT OWASP, Hack&Beers SevillaRamón Salado Lucena
 
Lado oscuro de big data y el ingeniero del siglo xxi
Lado oscuro de big data y el ingeniero del siglo xxiLado oscuro de big data y el ingeniero del siglo xxi
Lado oscuro de big data y el ingeniero del siglo xxiJosé Carlos García Serrano
 
Top 10 IoT OWASP, Hack&Beers Sevilla
Top 10 IoT OWASP, Hack&Beers SevillaTop 10 IoT OWASP, Hack&Beers Sevilla
Top 10 IoT OWASP, Hack&Beers SevillaJuan José Domenech
 
Codemotion 2021 - The Rustalorian: Este es el camino
Codemotion 2021 - The Rustalorian: Este es el caminoCodemotion 2021 - The Rustalorian: Este es el camino
Codemotion 2021 - The Rustalorian: Este es el caminoFrancisco Javier Barrena
 
Presentación omega peripherals
Presentación omega peripheralsPresentación omega peripherals
Presentación omega peripheralsOmega Peripherals
 
Buscadores
BuscadoresBuscadores
BuscadoresTensor
 
Swift sin hype y su importancia en el 2017
 Swift sin hype y su importancia en el 2017  Swift sin hype y su importancia en el 2017
Swift sin hype y su importancia en el 2017 Software Guru
 
Inteligencia artificial in house con servicios cognitivos y docker
Inteligencia artificial in house con servicios cognitivos y dockerInteligencia artificial in house con servicios cognitivos y docker
Inteligencia artificial in house con servicios cognitivos y dockerLuis Beltran
 
voip2day 2012 - Voipv6 alberto sagredo
voip2day 2012 - Voipv6   alberto sagredovoip2day 2012 - Voipv6   alberto sagredo
voip2day 2012 - Voipv6 alberto sagredoVOIP2DAY
 
Java script para desarrolladores SharePoint
Java script para desarrolladores SharePointJava script para desarrolladores SharePoint
Java script para desarrolladores SharePointAdrian Diaz Cervera
 
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...Irontec
 
Net conf ar v2018 start up
Net conf ar v2018 start upNet conf ar v2018 start up
Net conf ar v2018 start upfernando sonego
 

Similar a Francisco Javier Barrena | NestJS: Backends para javeros y punto-neteros con Typescript | Codemotion Madrid 2018 (20)

Re evolución robótica
Re evolución robóticaRe evolución robótica
Re evolución robótica
 
Cybercamp 2014. Tinfoleak: Analizando nuestras pautas y comportamientos a tr...
Cybercamp 2014. Tinfoleak:  Analizando nuestras pautas y comportamientos a tr...Cybercamp 2014. Tinfoleak:  Analizando nuestras pautas y comportamientos a tr...
Cybercamp 2014. Tinfoleak: Analizando nuestras pautas y comportamientos a tr...
 
BancaCivica.es: Un caso de éxito Drupal en el sector bancario
BancaCivica.es: Un caso de éxito Drupal en el sector bancarioBancaCivica.es: Un caso de éxito Drupal en el sector bancario
BancaCivica.es: Un caso de éxito Drupal en el sector bancario
 
Semana de la I+D - Proyecto OPOSSUM
Semana de la I+D - Proyecto OPOSSUMSemana de la I+D - Proyecto OPOSSUM
Semana de la I+D - Proyecto OPOSSUM
 
Top 10 IoT OWASP, Hack&Beers Sevilla
Top 10 IoT OWASP, Hack&Beers SevillaTop 10 IoT OWASP, Hack&Beers Sevilla
Top 10 IoT OWASP, Hack&Beers Sevilla
 
Lado oscuro de big data y el ingeniero del siglo xxi
Lado oscuro de big data y el ingeniero del siglo xxiLado oscuro de big data y el ingeniero del siglo xxi
Lado oscuro de big data y el ingeniero del siglo xxi
 
VozIPv6
VozIPv6VozIPv6
VozIPv6
 
Voz ipv6
Voz ipv6Voz ipv6
Voz ipv6
 
Top 10 IoT OWASP, Hack&Beers Sevilla
Top 10 IoT OWASP, Hack&Beers SevillaTop 10 IoT OWASP, Hack&Beers Sevilla
Top 10 IoT OWASP, Hack&Beers Sevilla
 
Codemotion 2021 - The Rustalorian: Este es el camino
Codemotion 2021 - The Rustalorian: Este es el caminoCodemotion 2021 - The Rustalorian: Este es el camino
Codemotion 2021 - The Rustalorian: Este es el camino
 
Presentación omega peripherals
Presentación omega peripheralsPresentación omega peripherals
Presentación omega peripherals
 
Buscadores
BuscadoresBuscadores
Buscadores
 
Html5 vs Flash
Html5 vs FlashHtml5 vs Flash
Html5 vs Flash
 
Swift sin hype y su importancia en el 2017
 Swift sin hype y su importancia en el 2017  Swift sin hype y su importancia en el 2017
Swift sin hype y su importancia en el 2017
 
VozIPV6
VozIPV6VozIPV6
VozIPV6
 
Inteligencia artificial in house con servicios cognitivos y docker
Inteligencia artificial in house con servicios cognitivos y dockerInteligencia artificial in house con servicios cognitivos y docker
Inteligencia artificial in house con servicios cognitivos y docker
 
voip2day 2012 - Voipv6 alberto sagredo
voip2day 2012 - Voipv6   alberto sagredovoip2day 2012 - Voipv6   alberto sagredo
voip2day 2012 - Voipv6 alberto sagredo
 
Java script para desarrolladores SharePoint
Java script para desarrolladores SharePointJava script para desarrolladores SharePoint
Java script para desarrolladores SharePoint
 
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
 
Net conf ar v2018 start up
Net conf ar v2018 start upNet conf ar v2018 start up
Net conf ar v2018 start up
 

Más de Codemotion

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Codemotion
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyCodemotion
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaCodemotion
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserCodemotion
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Codemotion
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Codemotion
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Codemotion
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 - Codemotion
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Codemotion
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Codemotion
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Codemotion
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Codemotion
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Codemotion
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Codemotion
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Codemotion
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...Codemotion
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Codemotion
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Codemotion
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Codemotion
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Codemotion
 

Más de Codemotion (20)

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 

Último

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 

Último (16)

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 

Francisco Javier Barrena | NestJS: Backends para javeros y punto-neteros con Typescript | Codemotion Madrid 2018

  • 1. Backends en Node para Javeros y Puntoneteros Francisco Javier Barrena Castillo - @DogDeveloper
  • 2. Who’s that guy Francisco Javier Barrena Castillo - @DogDeveloper • Director de Innovación en Ingeniería del Software en Instituto Tecnológico de Informática @ITI_TIC • 7 años con proyectos comerciales • Actualmente en proyectos de I+D • Big Data, Machine Learning, Cloud Computing, Cyber Physical Systems, Embedded Systems… • Ex-CTO en www.onlyeco.com • Buscador de viajes ecosostenibles • Actualmente EcoDeveloper Advocate • Formador y ponente (¡cuando me dejan! :D) https://www.linkedin.com/in/fjbarrena
  • 3.
  • 4.
  • 5. ¿qué hace esto? Francisco Javier Barrena Castillo - @DogDeveloper
  • 6. ¿y esto? Francisco Javier Barrena Castillo - @DogDeveloper
  • 7. ¿o esto? Francisco Javier Barrena Castillo - @DogDeveloper
  • 9.
  • 10. Francisco Javier Barrena Castillo - @DogDeveloper
  • 11. Y es que al ecosistema node le falta un ‘hervor’ • Node es una tecnología habilitadora • La comunidad se dio pronto cuenta de que Node aportaba cosas nuevas • Pero le faltan (¿faltaban?) años para conseguir el nivel de madurez de su competencia • ¿Dónde triunfó inicialmente Node? • En prototipado rápido • Los frameworks que surgieron mejoraron las cosas, pero seguían estando demasiado cerca del ‘hierro’ • Express, Loopback, Sails • Ninguno resolvía los grandes problemas… Francisco Javier Barrena Castillo - @DogDeveloper
  • 12.
  • 13. Y es que al ecosistema node le falta un ‘hervor’ • Node es una tecnología habilitadora • La comunidad se dio pronto cuenta de que Node aportaba cosas nuevas • Pero le faltan (¿faltaban?) años para conseguir el nivel de madurez de su competencia • ¿Dónde triunfó inicialmente Node? • En prototipado rápido • Los frameworks que surgieron mejoraron las cosas, pero seguían estando demasiado cerca del ‘hierro’ • Express, Loopback, Sails • Ninguno resolvía los grandes problemas… Francisco Javier Barrena Castillo - @DogDeveloper
  • 14. Francisco Javier Barrena Castillo - @DogDeveloper La arquitectura
  • 15. Las ideas preconcebidas Francisco Javier Barrena Castillo - @DogDeveloper
  • 17. Nest – una solución posible • Nest es un framework de desarrollo en TypeScript con todo lo que nos gusta • ORMs • ‘Razonablemente’ tipado • Guiado por anotaciones • Orientado a • Objetos • Funcional • Reactiva • Modular • Testeable • Dependency Injection Francisco Javier Barrena Castillo - @DogDeveloper
  • 19. Nest – una solución posible • Está construido sobre Express • Eso nos permite usar cualquier librería existente para Express • Se centra en la arquitectura • Que implementa buenos patrones de diseño • Con una comunidad creciente • Y nacido en libertad Francisco Javier Barrena Castillo - @DogDeveloper
  • 21. Francisco Javier Barrena Castillo - @DogDeveloper
  • 22. El origen del poder •La industria es poderosa •Pero no es el origen del poder •El origen del poder es de los developers •La industria tiene el dinero •Nosotros y nosotras tenemos todo lo demás •Loopback, Sails, Meteor o quien venga no son nadie sin nuestra aprobación Francisco Javier Barrena Castillo - @DogDeveloper
  • 23.
  • 24. Si los developers estornudamos… • Si los developers estornudamos, la industria se resfría • Y los developers teníamos un problema… • Los frameworks de back-end en Node no fomentaban la mantenibilidad del código • Ni la arquitectura • Y aquellos que se acercaban, nos intentaban atrapar anclándonos a sus modelos de funcionamiento • Así que empezamos a buscar alternativas basadas en estándares • La solución es siempre tender a los estándares • Y ha surgido Nest, que permite a la comunidad desarrollar backends basados en Node bien estructurados, basados en estándares y buenas prácticas. • Tanto es así, que algunos players han empezado a copiar a Nest Francisco Javier Barrena Castillo - @DogDeveloper
  • 25.
  • 26. Breve introducción a nest • Fuertemente influenciado por Angular • Async by default • Basado en módulos • Inyección de dependencias (por constructor o a través de anotaciones) • Fácilmente integrable con • TypeORM • Passport • Mongoose • GraphQL • Websockets • Microservices (Redis, MQTT, RabbitMQ…) • Swagger Francisco Javier Barrena Castillo - @DogDeveloper
  • 27. Conceptos importantes • Modules • Equivalente a los packages de JAVA o a los namespaces de .NET • Providers • Servicios y DAOs. Equivalente a @Repository o a @Service en Spring • Controllers • Clase que maneja los endpoints, equivalente a JAX-RS en JAVA por ejemplo • Guards • Permiten aplicar reglas de seguridad a endpoints • Interceptors • Similar a Aspect Oriented Programming (AOP) Francisco Javier Barrena Castillo - @DogDeveloper
  • 28. Provider Francisco Javier Barrena Castillo - @DogDeveloper
  • 29. controller Francisco Javier Barrena Castillo - @DogDeveloper
  • 30. module Francisco Javier Barrena Castillo - @DogDeveloper Servicios Daos importación de módulos de terceros endpoints Siguenelpatrónsingleton
  • 31. Arranque del servidor – main.ts • Quien ‘orquesta’ el startup del servidor es el fichero main.ts • Esto es genial porque: • Podemos hacer cosas antes de que arranque el servidor • Y también después • Pero sobre todo, nos facilita enormemente tareas como: • Integración con Dockers • Despliegues en Kubernetes, etc. • Procesos de Integración Contínua • Un main.ts básico podría ser el siguiente Francisco Javier Barrena Castillo - @DogDeveloper
  • 32. Main.ts Francisco Javier Barrena Castillo - @DogDeveloper
  • 33. Y a partir de ahí… Francisco Javier Barrena Castillo - @DogDeveloper
  • 34. Feel like a mage… 12 de junio de 2018 www.vlcsofting.es Nestcli – scaffolding
  • 35. Los genéricos • Algo muy interesante es el uso de genéricos • Al estar basado en TypeScript, podemos utilizar toda la potencia de un lenguaje orientado a objetos • Podemos implementar controladores base, de los que extenderán los controladores finales, con muy poco código Francisco Javier Barrena Castillo - @DogDeveloper
  • 36. Para los javeros: un dao genérico Francisco Javier Barrena Castillo - @DogDeveloper
  • 37. Para los javeros: un dao genérico Francisco Javier Barrena Castillo - @DogDeveloper
  • 38. Para los javeros: un dao genérico Francisco Javier Barrena Castillo - @DogDeveloper
  • 39. Para los javeros: un dao genérico Francisco Javier Barrena Castillo - @DogDeveloper
  • 40. Y ahora la clase que lo extiende Francisco Javier Barrena Castillo - @DogDeveloper
  • 41. Feel like a mage… 12 de junio de 2018 www.vlcsofting.es
  • 42. Feel like a mage… 12 de junio de 2018 www.vlcsofting.es
  • 44. controller Francisco Javier Barrena Castillo - @DogDeveloper
  • 45. “The good monolith” • Los monolitos que nos complicaron la vida eran aquellos que acoplaban backend de frontend • Aprendimos que para escalar horizontalmente estas construcciones no eran buenas • Empezamos a separar y a desacoplar. Inicialmente, solo backend de frontend • Luego empezamos a partir al backend en trozos más pequeños • Y más pequeños. En microservicios. • Hasta que empezamos a tener decenas de microservicios • Y empezaron a complicarnos la vida también Francisco Javier Barrena Castillo - @DogDeveloper
  • 46. Arquitectura promovida por la comunidad Francisco Javier Barrena Castillo - @DogDeveloper Módulo 1 (Auth) Service Controll Model Módulo 2 (Artículos) Service Controll Model Módulo 3 (Transactions) Service Controll Model Módulo N (Clientes) Service Controll Model Módulo principal
  • 47. El microlito Francisco Javier Barrena Castillo - @DogDeveloper PersistenceModule (TypeORM, Providers/DAO) SharedModule (CommonsyModelo) CoreModule (Providers/Service, Negocio) APIModule (Controllers, Middleware, Auth) App Module (Bootstrap y Config) Módulo reutilizable Módulo reutilizable KAFKA MODULE WINSTON LOGGER MODULE DOMINIO Módulo reutilizable AMAZON S3 MODULE Módulo reutilizable FACEBOOK AUTH MODULE
  • 48. HTTP SERVICE El “microservicio” Francisco Javier Barrena Castillo - @DogDeveloper Módulo Service Controll Model Módulo Service Controll Model Módulo Service Controll Model Módulo Service Controll Model FRONT USUARIOS PEDIDOS ARTÍCULOS PRECIOS
  • 49. HTTP SERVICE El “microservicio” Francisco Javier Barrena Castillo - @DogDeveloper Módulo Service Controll Model Módulo Service Controll Model Módulo Service Controll Model Módulo Service Controll Model FRONT USUARIOS PEDIDOS ARTÍCULOS PRECIOS
  • 50. i+d en el iti Francisco Javier Barrena Castillo - @DogDeveloper
  • 51. HTTP SERVICE True microservice Francisco Javier Barrena Castillo - @DogDeveloper Módulo Service Controll Model Módulo Service Controll Model Módulo Service Controll Model Módulo Service Controll Model FRONT USUARIOS PEDIDOS ARTÍCULOS PRECIOS
  • 52.
  • 53.
  • 54. Francisco Javier Barrena Castillo - @DogDeveloper Gracias
  • 55. i+d en el iti Francisco Javier Barrena Castillo - @DogDeveloper