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
¿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 enTypeScript, 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

La actualidad más candente

CQRS & EVS with MongoDb
CQRS & EVS with MongoDbCQRS & EVS with MongoDb
CQRS & EVS with MongoDb
Lluis Fernandez
 
TypeScript for Java Developers
TypeScript for Java DevelopersTypeScript for Java Developers
TypeScript for Java Developers
Yakov Fain
 
Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
Valentin Buryakov
 
Understanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring BootUnderstanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring Boot
Kashif Ali Siddiqui
 
HTTP/3, QUIC and streaming
HTTP/3, QUIC and streamingHTTP/3, QUIC and streaming
HTTP/3, QUIC and streaming
Daniel Stenberg
 
Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17
Ryan Jarvinen
 
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction
Robert Reiz
 
Microservices
MicroservicesMicroservices
Microservices
Stephan Lindauer
 
Microservices in Node.js: Patterns and techniques
Microservices in Node.js: Patterns and techniquesMicroservices in Node.js: Patterns and techniques
Microservices in Node.js: Patterns and techniques
The Software House
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
dotCloud
 
Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...
Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...
Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...
SlideTeam
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
Frederik Mogensen
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
Viyaan Jhiingade
 
Jenkins Overview
Jenkins OverviewJenkins Overview
Jenkins Overview
Ahmed M. Gomaa
 
Flutter State Management Using GetX.pdf
Flutter State Management Using GetX.pdfFlutter State Management Using GetX.pdf
Flutter State Management Using GetX.pdf
Katy Slemon
 
Istio a service mesh
Istio   a service meshIstio   a service mesh
Istio a service mesh
Chandresh Pancholi
 
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache TomcatCase Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
VMware Hyperic
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration
Amazon Web Services
 
Jenkins
JenkinsJenkins
Microservices Design Patterns | Edureka
Microservices Design Patterns | EdurekaMicroservices Design Patterns | Edureka
Microservices Design Patterns | Edureka
Edureka!
 

La actualidad más candente (20)

CQRS & EVS with MongoDb
CQRS & EVS with MongoDbCQRS & EVS with MongoDb
CQRS & EVS with MongoDb
 
TypeScript for Java Developers
TypeScript for Java DevelopersTypeScript for Java Developers
TypeScript for Java Developers
 
Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
 
Understanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring BootUnderstanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring Boot
 
HTTP/3, QUIC and streaming
HTTP/3, QUIC and streamingHTTP/3, QUIC and streaming
HTTP/3, QUIC and streaming
 
Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17
 
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction
 
Microservices
MicroservicesMicroservices
Microservices
 
Microservices in Node.js: Patterns and techniques
Microservices in Node.js: Patterns and techniquesMicroservices in Node.js: Patterns and techniques
Microservices in Node.js: Patterns and techniques
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...
Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...
Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
Jenkins Overview
Jenkins OverviewJenkins Overview
Jenkins Overview
 
Flutter State Management Using GetX.pdf
Flutter State Management Using GetX.pdfFlutter State Management Using GetX.pdf
Flutter State Management Using GetX.pdf
 
Istio a service mesh
Istio   a service meshIstio   a service mesh
Istio a service mesh
 
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache TomcatCase Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration
 
Jenkins
JenkinsJenkins
Jenkins
 
Microservices Design Patterns | Edureka
Microservices Design Patterns | EdurekaMicroservices Design Patterns | Edureka
Microservices Design Patterns | Edureka
 

Similar a NestJS: Backends en Node para Javeros y Puntoneteros

Aplicaciones Absurdamente Rápidas con Quarkus.io
Aplicaciones Absurdamente Rápidas con Quarkus.ioAplicaciones Absurdamente Rápidas con Quarkus.io
Aplicaciones Absurdamente Rápidas con Quarkus.io
Francisco Javier Barrena
 
Webinar Codemotion 2020 - Piratas del Cloud
Webinar Codemotion 2020 - Piratas del CloudWebinar Codemotion 2020 - Piratas del Cloud
Webinar Codemotion 2020 - Piratas del Cloud
Francisco Javier Barrena
 
Machine Learning ¿A TODO GAS? con GraalVM
Machine Learning ¿A TODO GAS? con GraalVMMachine Learning ¿A TODO GAS? con GraalVM
Machine Learning ¿A TODO GAS? con GraalVM
Francisco Javier Barrena
 
Deja de ser el rival más débil con DevSecOps
Deja de ser el rival más débil con DevSecOpsDeja de ser el rival más débil con DevSecOps
Deja de ser el rival más débil con DevSecOps
Francisco Javier Barrena
 
Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?
Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?
Ciberseguridad en el Cloud - ¿Y es que eso no puede hacerlo otro?
Francisco Javier Barrena
 
Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...
Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...
Codemotion 2020 - Big Data en Ciberseguridad: mejor morir de pie que vivir ar...
Francisco Javier Barrena
 
Kubernetes - The Cloud King
Kubernetes - The Cloud KingKubernetes - The Cloud King
Kubernetes - The Cloud King
Francisco Javier Barrena
 
TotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcido
TotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcidoTotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcido
TotoConf2020 - Técnicas OSINT que te dejarán con el PAPO torcido
Francisco Javier Barrena
 
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 bancario
David Gil Sánchez
 
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
Francisco Javier Barrena
 
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
Ramó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 xxi
José Carlos García Serrano
 
VozIPv6
VozIPv6VozIPv6
Voz ipv6
Voz ipv6Voz 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
Juan 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 camino
Francisco Javier Barrena
 
Presentación omega peripherals
Presentación omega peripheralsPresentación omega peripherals
Presentación omega peripheralsOmega Peripherals
 
Buscadores
BuscadoresBuscadores
Buscadores
Tensor
 

Similar a NestJS: Backends en Node para Javeros y Puntoneteros (20)

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

Último

TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 
actividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañerosactividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañeros
aljitagallego
 
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaCatalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
AMADO SALVADOR
 
IA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticulturaIA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticultura
Miguel Rebollo
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
COMPARATIVO DE SUBESTACIONES AIS VS GIS.
COMPARATIVO DE SUBESTACIONES AIS VS GIS.COMPARATIVO DE SUBESTACIONES AIS VS GIS.
COMPARATIVO DE SUBESTACIONES AIS VS GIS.
SERVANDOBADILLOPOLEN
 
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaCatalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
AMADO SALVADOR
 
Sitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajasSitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajas
paulroyal74
 
Presentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The CleanPresentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The Clean
juanchogame18
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial ValenciaCatalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
AMADO SALVADOR
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
sarasofiamontezuma
 
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
AMADO SALVADOR
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
NajwaNimri1
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
NicandroMartinez2
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
ItsSofi
 
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB  S2. PARA VSATMANUAL DEL DECODIFICADOR DVB  S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
Ing. Julio Iván Mera Casas
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
IsabelQuintero36
 
SISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsxSISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsx
tamarita881
 

Último (20)

TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
actividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañerosactividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañeros
 
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaCatalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
 
IA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticulturaIA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticultura
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
COMPARATIVO DE SUBESTACIONES AIS VS GIS.
COMPARATIVO DE SUBESTACIONES AIS VS GIS.COMPARATIVO DE SUBESTACIONES AIS VS GIS.
COMPARATIVO DE SUBESTACIONES AIS VS GIS.
 
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaCatalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
 
Sitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajasSitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajas
 
Presentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The CleanPresentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The Clean
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial ValenciaCatalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
 
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB  S2. PARA VSATMANUAL DEL DECODIFICADOR DVB  S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
 
SISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsxSISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsx
 

NestJS: Backends en Node para Javeros y Puntoneteros

  • 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 enTypeScript, 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

Notas del editor

  1. ¿Esta arquitectura es buena o mala? Depende del problema que queramos resolver Inicialmente, el concepto de modularizar y microservilizar parece bueno siempre. Y es especialmente bueno cuando hablamos de modularizar cosas que son independientes (como el logging por ejemplo) Pero cuando microservilizamos cosas que están relacionadas entre ellas, estamos generando más problemas de los que estamos resolviendo.