SlideShare una empresa de Scribd logo
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
Francisco Javier Barrena | NestJS: Backends para javeros y punto-neteros con Typescript | Codemotion Madrid 2018
Francisco Javier Barrena | NestJS: Backends para javeros y punto-neteros con Typescript | Codemotion Madrid 2018
¿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 | NestJS: Backends para javeros y punto-neteros con Typescript | Codemotion Madrid 2018
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 | NestJS: Backends para javeros y punto-neteros con Typescript | Codemotion Madrid 2018
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
Francisco Javier Barrena | NestJS: Backends para javeros y punto-neteros con Typescript | Codemotion Madrid 2018
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
Francisco Javier Barrena | NestJS: Backends para javeros y punto-neteros con Typescript | Codemotion Madrid 2018
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 | NestJS: Backends para javeros y punto-neteros con Typescript | Codemotion Madrid 2018
Francisco Javier Barrena | NestJS: Backends para javeros y punto-neteros con Typescript | Codemotion Madrid 2018
Francisco Javier Barrena Castillo - @DogDeveloper
Gracias
i+d en el iti
Francisco Javier Barrena Castillo - @DogDeveloper

Más contenido relacionado

PDF
Aplicaciones Absurdamente Rápidas con Quarkus.io
PPTX
Webinar Codemotion 2020 - Piratas del Cloud
PDF
Machine Learning ¿A TODO GAS? con GraalVM
PDF
Deja de ser el rival más débil con DevSecOps
PDF
Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?
PDF
Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...
PDF
Kubernetes - The Cloud King
PDF
TotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcido
Aplicaciones Absurdamente Rápidas con Quarkus.io
Webinar Codemotion 2020 - Piratas del Cloud
Machine Learning ¿A TODO GAS? con GraalVM
Deja de ser el rival más débil con DevSecOps
Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?
Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...
Kubernetes - The Cloud King
TotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcido

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

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

Más de Codemotion (20)

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

Último (20)

PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PPTX
ccna: redes de nat ipv4 stharlling cande
PPTX
la-historia-de-la-medicina Edna Silva.pptx
PPTX
Propuesta BKP servidores con Acronis1.pptx
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PDF
Distribucion de frecuencia exel (1).pdf
PDF
Diapositiva proyecto de vida, materia catedra
PPTX
unidad 3 tecnología 8° básico: planificación y elaboración de un objeto
DOCX
Guía 5. Test de orientación Vocacional 2.docx
PDF
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
PDF
CyberOps Associate - Cisco Networking Academy
DOCX
TRABAJO GRUPAL (5) (1).docxsjsjskskksksksks
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PPTX
El uso de las TIC en la vida cotidiana..
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PPTX
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
PDF
Documental Beyond the Code (Dossier Presentación - 2.0)
PDF
capacitación de aire acondicionado Bgh r 410
PDF
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
ccna: redes de nat ipv4 stharlling cande
la-historia-de-la-medicina Edna Silva.pptx
Propuesta BKP servidores con Acronis1.pptx
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
Distribucion de frecuencia exel (1).pdf
Diapositiva proyecto de vida, materia catedra
unidad 3 tecnología 8° básico: planificación y elaboración de un objeto
Guía 5. Test de orientación Vocacional 2.docx
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
CyberOps Associate - Cisco Networking Academy
TRABAJO GRUPAL (5) (1).docxsjsjskskksksksks
Power Point Nicolás Carrasco (disertación Roblox).pptx
El uso de las TIC en la vida cotidiana..
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
historia_web de la creacion de un navegador_presentacion.pptx
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
Documental Beyond the Code (Dossier Presentación - 2.0)
capacitación de aire acondicionado Bgh r 410
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 54. Francisco Javier Barrena Castillo - @DogDeveloper Gracias
  • 55. i+d en el iti Francisco Javier Barrena Castillo - @DogDeveloper