Prefacio

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Entre los grupos PHP MySQL de NodeSchool San Francisco y Ann Arbor, he dedicado varios años de mi vida a enseñar a otros a programar. A estas alturas he trabajado con cientos de estudiantes, a menudo empezando por el mundano proceso de instalar el software necesario y configurarlo. Después, con un poco de código y un montón de explicaciones, llegamos a la parte en la que el programa del alumno se ejecuta y todo "encaja". Siempre sé cuándo ocurre: el alumno sonríe y habla de las posibilidades de su habilidad recién adquirida como si fuera un potenciador de un videojuego.

Mi objetivo es recrear ese cosquilleo de emoción para ti, el lector, a lo largo de este libro. En estas páginas encontrarás muchos ejemplos prácticos en los que podrás ejecutar varios servicios de respaldo en tu máquina de desarrollo y luego interactuar con ellos utilizando código de aplicación Node.js de ejemplo. Con ello vienen muchas explicaciones y pequeñas tangentes para apaciguar a los curiosos.

Cuando termines este libro, habrás instalado y ejecutado muchos servicios diferentes y, con cada uno de estos servicios, habrás escrito código de aplicación Node.js para interactuar con ellos. Este libro hace más hincapié en estas interacciones que en el examen del código de la aplicación Node.js.

JavaScript es un potente lenguaje capaz de desarrollar aplicaciones tanto frontend como backend. Esto hace que sea demasiado fácil dedicarse sólo a aprender el lenguaje y rehuir las tecnologías periféricas. La tesis de este libro es que los ingenieros de JavaScript nos beneficiamos enormemente al tener experiencia de primera mano con tecnologías con las que muchos suponen que sólo están familiarizados los ingenieros que utilizan plataformas empresariales más tradicionales, como Java o .NET.

Público objetivo

Este libro no te enseñará a utilizar Node.js y, para sacarle el máximo partido,deberías haber escrito ya varias aplicaciones Node.js y tener conocimientos concretos de JavaScript. Dicho esto, este libro cubre algunos conceptos avanzados ymenos conocidos sobre Node.js y JavaScript, como "La naturaleza monohilo de JavaScript" y "El bucle de eventos de Node.js". También deberías estar familiarizado con los conceptos básicos de HTTP, haber utilizado al menos una base de datos para persistir el estado, y saber lo fácil y peligroso que es mantener el estado dentro de un proceso Node.js en ejecución.

Quizás ya trabajas en una empresa que dispone de infraestructura para ejecutar servicios backend y estás deseando aprender cómo funciona y cómo pueden beneficiarse de ella tus aplicaciones Node.js. O quizá tengas una aplicación Node.js que estás ejecutando como proyecto paralelo y estás harto de que se cuelgue. Puede que incluso seas el CTO de una joven startup y estés decidido a satisfacer las demandas de tu creciente base de usuarios. Si alguna de estas situaciones te resulta familiar, este libro es para ti.

Objetivos

Node.js se utiliza a menudo para crear aplicaciones web frontales. Este libro no cubre ningún tema relacionado con el desarrollo front-end o con el navegador. Ya hay una gran cantidad de libros disponibles que cubren esos contenidos. En su lugar, el objetivo de este libro es que integres los servicios backend de Node.js con diversos servicios que soportan los sistemas distribuidos modernos.

Cuando termines de leer este libro, habrás comprendido muchas de las tecnologías necesarias para ejecutar servicios Node.js en un entorno de producción. Por ejemplo, qué se necesita para implementar y escalar una aplicación, cómo hacerla redundante y resistente a fallos, cómo comunicarse de forma fiable con otros procesos distribuidos y cómo observar la salud de la aplicación.

No te convertirás en un experto en estos sistemas con sólo leer este libro. Por ejemplo, no se aborda el trabajo operativo necesario para poner a punto y desplegar servicios ELK escalables en producción. Sin embargo, entenderás cómo ejecutar una instancia local de ELK, enviarle los registros de tu servicio Node.js y crear un panel para visualizar el estado del servicio (esto se trata en "Registro con ELK").

Este libro ciertamente no cubre toda la tecnología utilizada por tu empleador en particular. Aunque en el Capítulo 7 se habla de Kubernetes, una tecnología para orquestar las implementaciones del código de las aplicaciones, puede que tu empleador utilice en su lugar una solución diferente, como Apache Mesos. O tal vez dependas de una versión de Kubernetes en un entorno de nube en el que la implementación subyacente está oculta para ti. En cualquier caso, al conocer las herramientas de las distintas capas de una pila de servicios backend distribuidos, comprenderás más fácilmente otras pilas tecnológicas con las que puedas encontrarte.

Convenciones utilizadas en este libro

En este libro se utilizan las siguientes convenciones tipográficas:

Cursiva

Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.

Constant width

Se utiliza en los listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias y palabras clave.

Constant width bold

Muestra comandos u otros textos que deben ser tecleados literalmente por el usuario.

Constant width italic

Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.

Consejo

Este elemento significa un consejo o sugerencia.

Nota

Este elemento significa una nota general.

Advertencia

Este elemento indica una advertencia o precaución.

Utilizar ejemplos de código

El material complementario (ejemplos de código, ejercicios, etc.) se puede descargar en https://github.com/tlhunter/distributed-node.

Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código, envía un correo electrónico

Este libro está aquí para ayudarte a hacer tu trabajo. En general, si se ofrece código de ejemplo con este libro, puedes utilizarlo en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para pedirnos permiso, a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de los libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y el código de ejemplo no requiere permiso. Incorporar una cantidad significativa de código de ejemplo de este libro en la documentación de tu producto sí requierepermiso.

Agradecemos la atribución, pero en general no la exigimos. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo: "Sistemas Distribuidos con Node.js por Thomas Hunter II (O'Reilly). Copyright 2020 Thomas Hunter II, 978-1-492-07729-9".

Si crees que el uso que haces de los ejemplos de código no se ajusta al uso legítimo o al permiso concedido anteriormente, no dudes en ponerte en contacto con nosotros en

Aprendizaje en línea O'Reilly

Nota

Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.

Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita http://oreilly.com.

Cómo contactar con nosotros

Dirige tus comentarios y preguntas sobre este libro a la editorial:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Norte
  • Sebastopol, CA 95472
  • 800-998-9938 (en Estados Unidos o Canadá)
  • 707-829-0515 (internacional o local)
  • 707-829-0104 (fax)

Tenemos una página web para este libro, donde se enumeran erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/dist-nodejs.

Envía un correo electrónico para comentar o hacer preguntas técnicas sobre este libro.

Para obtener noticias e información sobre nuestros libros y cursos, visita http://oreilly.com.

Encuéntranos en Facebook: http://facebook.com/oreilly

Síguenos en Twitter: http://twitter.com/oreillymedia

Míranos en YouTube: http://youtube.com/oreillymedia

Agradecimientos

Este libro ha sido posible gracias a las detalladas revisiones técnicas proporcionadas por las siguientes personas:

Fernando Larrañaga(@xabadu)

Fernando es ingeniero, colaborador de código abierto, y lleva varios años liderando comunidades JavaScript y Node.js tanto en Sudamérica como en EEUU. Actualmente es Ingeniero de Software Senior en Square, y con experiencia previa en otras grandes empresas tecnológicas, como Twilio y Groupon, lleva más de siete años desarrollando Node.js a nivel empresarial y escalando aplicaciones web utilizadas por millones de usuarios.

Bryan English(@bengl)

Bryan es un programador y entusiasta de JavaScript y Rust de código abierto, y ha trabajado en sistemas de grandes empresas, instrumentación y seguridad de aplicaciones. Actualmente es ingeniero sénior de software de código abierto en Datadog. Ha utilizado Node.js tanto profesionalmente como en proyectos personales desde poco después de su creación. También es colaborador del núcleo de Node.js y ha contribuido a Node.js de muchas maneras a través de varios de sus diversos Grupos de Trabajo.

Julián Duque(@julian_duque)

Julián Duque es un líder de la comunidad, conferenciante público, evangelista de JavaScript/Node.js y colaborador oficial de Node.js (Emérito). Actualmente trabaja en Salesforce Heroku como Sr. Developer Advocate y se encarga de la organización de JSConf y NodeConf Colombia, también está ayudando a organizar JSConf México y MedellinJS, el mayor grupo de usuarios de JavaScript en Colombia con más de 5.000 miembros registrados. También es un apasionado de la educación y ha estado enseñando fundamentos de desarrollo de software, JavaScript y Node.js a través de diferentes talleres comunitarios, compromisos de formación profesional y plataformas en línea como Platzi.

También me gustaría dar las gracias especialmente a quienes me proporcionaron orientación y comentarios: Dan Shaw(@dshaw), Brad Vogel(@BradVogel), Matteo Collina(@matteocollina), Matt Ranney(@mranney) y Rich Trott(@trott).

Get Sistemas distribuidos con Node.js now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.