Prefacio
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
Cuando conocí Cloud Run en abril de 2019, reconocí rápidamente que se trataba de un producto que simplificaría radicalmente la creación, implementación y escalado de aplicaciones web "nativas de la nube".
La nube pública ha brindado la oportunidad a desarrolladores y empresas de convertir servidores físicos y centros de datos en virtuales. Sin embargo, las máquinas virtuales y las redes virtuales siguen siendo una abstracción de nivel relativamente bajo. Puedes dar un salto aún mayor si diseñas tu aplicación para aprovechar al máximo la plataforma moderna de la nube. Cloud Run proporciona un mayor nivel de abstracción sobre la infraestructura real del servidor y te permite centrarte en el código, no en la infraestructura.
Este libro es la guía práctica que puedes utilizar para empezar a utilizar Cloud Run.
Por qué escribí este libro
En mi trabajo diario como consultor para Binx.io trabajo como ingeniero y formador. Gran parte de mi trabajo consiste en desarrollar un profundo conocimiento sobre cómo funciona la tecnología y enseñar lo que he aprendido a otros, para que puedan construir mejores sistemas.
Para mí, publicar este libro es una forma de llegar a más gente y ayudarles a salir adelante. ¡He escrito este libro para ti! Este libro te ayudará a avanzar en tu comprensión, para que puedas ser más eficaz en tu trabajo diario. Espero que eso te lleve a disfrutar más y a tener nuevas oportunidades. Si mi libro te inspira, ¡me encantaría conectar contigo y saber más de ti! Envíame un mensaje en Twitter, mis DM están abiertos.
A quién va dirigido este libro
Si construyes, mantienes o implementas aplicaciones web, este libro es para ti. Puede que seas un ingeniero de software, un desarrollador, un administrador de sistemas, un arquitecto de soluciones o un ingeniero de la nube. Equilibro cuidadosamente las demostraciones prácticas con las inmersiones profundas en los fundamentos para que saques provecho de mi libro tanto si eres un desarrollador aspirante, junior o experimentado.
¿Por qué utilizar el lenguaje Go?
Los pocos listados de código de este libro utilizan Go, un lenguaje de programación diseñado por Google. Es muy adecuado para desarrollar software sin servidor y su sintaxis es fácil de entender, lo que lo convierte en un buen lenguaje para utilizar en los listados de código.
Con Go, puedes producir programas autocontenidos de alto rendimiento que utilicen pocos recursos. Y lo que es más importante, Go también facilita la creación de programas que se inician muy rápido. Esto es una ventaja a la hora de crear contenedores que se inician bajo demanda para gestionar las peticiones entrantes.
Navegar por este libro
Este libro está organizado de la siguiente manera. El Capítulo 1, Introducción, da una visión general de lo que es una aplicación sin servidor, te presenta Google Cloud y sus productos sin servidor sin profundizar demasiado. Si eres nuevo en Google Cloud, ésta será una gran introducción.
El Capítulo 2, Comprender Cloud Run, es una introducción práctica a Cloud Run. Te mostraré cómo empezar con Google Cloud e implementar tu primer servicio Cloud Run. Después, actualizarás tu servicio a la siguiente versión y cambiarás la configuración. Mientras que la primera parte del capítulo se centra en el uso de Cloud Run, en la segunda explico las características de tiempo de ejecución de Cloud Run y cómo influyen en la forma en que construyes tu aplicación. También compararé Cloud Run con los otros tiempos de ejecución sin servidor de Google Cloud: App Engine y Cloud Functions.
En el Capítulo 3, Creación de contenedores, encontrarás una introducción completa al desarrollo de aplicaciones con contenedores. En este capítulo te muestro cómo ejecutar contenedores en tu máquina local con Docker, crear tus propias imágenes de contenedores (con y sin Docker), y profundizar en los fundamentos de los contenedores.
Los contenedores de Cloud Run son desechables. Esto requiere que almacenes los datos que necesites que persistan más allá del tiempo de vida de una única solicitud en una base de datos o en otro sistema posterior. En el Capítulo 4, Trabajar con una base de datos relacional, me sumerjo en el producto gestionado Cloud SQL (bases de datos relacionales gestionadas como MySQL y PostgreSQL), en el Capítulo 5, Trabajar con sesiones HTTP, sigo con MemoryStore (Redis). Hablo de escalabilidad y fiabilidad, ya que Cloud Run puede escalar hasta 1.000 contenedores muy rápidamente. Incluso puedes llamarlo hiperescalable.
Especialmente si estás creando una aplicación más seria, querrás asegurarte de que cada servicio Cloud Run de tu sistema sólo tiene los permisos para hacer exactamente lo que tiene que hacer. En seguridad de la información, esto también se conoce como el principio del menor privilegio: ayuda a reducir el impacto de una vulnerabilidad en una parte del sistema. Por eso te presento la Gestión de Identidades y Accesos (IAM) en la Nube en el Capítulo 6, Identidad y Autenticación de Servicios. Este capítulo presenta una demostración práctica de dos servicios Cloud Run, en la que sólo un servicio recibe tráfico público, y el otro está protegido mediante Cloud IAM.
La mayoría de las aplicaciones tienen la necesidad de programar tareas para que se ejecuten más tarde, ya sea inmediatamente después de gestionar una solicitud HTTP o a una hora programada. En el Capítulo 7, Programación de tareas, te presento las Tareas en la Nube cuando cubro los patrones a utilizar para la programación de tareas.
En el capítulo 8, Infraestructura como código mediante Terraform, te mostraré cómo trabajar con Terraform, una herramienta de infraestructura como código (IaC). Terraform te permite recrear todo tu proyecto utilizando un solo comando, lo que resulta útil si tu aplicación crece más allá de "Hola Mundo". Si aún te estás iniciando en la creación de aplicaciones, tal vez quieras saltarte este capítulo y los dos últimos por ahora, para volver a ellos más adelante.
Quiero asegurarme de que tengas una visibilidad adecuada de lo que ocurre en tu sistema cuando lo pongas en marcha para los usuarios finales. Por eso cubro el registro y seguimiento estructurados en el Capítulo 9, Registro y seguimiento estructurados. Hacer esto bien es fundamentalmente importante cuando ejecutas un sistema en producción.
Por último, voy más allá de las preocupaciones cotidianas y pienso en el futuro en el Capítulo 10, Cloud Run y Knative Serving. Si construyes tu aplicación sobre una plataforma controlada por un proveedor, debes tener en cuenta la portabilidad.
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 de en https://wietsevenema.eu/cloud-run-book.
Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código, envía un correo electrónico a bookquestions@oreilly.com.
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í requiere permiso.
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 "Building Serverless Applications with Google Cloud Run por Wietse Venema (O'Reilly). Copyright 2021 Wietse Venema, 978-1-492-05709-3".
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 permissions@oreilly.com.
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/BSA.
Envía un correo electrónico a bookquestions@oreilly.com para comentar o hacer preguntas técnicas sobre este libro.
Para 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
Escribir un libro (sobre todo el primero) es un proyecto desalentador, y más aún en el año 2020. Ningún autor escribe un libro solo. Mi nombre aparece en la portada de este libro, pero detrás de mí hay un equipo de colaboradores invisibles, que fueron tan cruciales como yo para completar esta obra.
Imagina que recibes un correo electrónico o un mensaje directo en Twitter de alguien a quien no conoces y de quien nunca has oído hablar, que está escribiendo un libro y quiere tu ayuda. ¿Qué harías? Aprendí que mucha gente dirá "Claro, ¿cómo puedo ayudar?" por generosidad y amabilidad. Me siento agradecida por haber conocido a todas esas personas maravillosas a lo largo del camino. Algunos pasasteis horas con mis borradores o diagramas y me ayudasteis a mejorar, reflexionar y aprender cosas nuevas. A la mayoría de vosotros ni siquiera os he conocido en persona. ¡Espero que nos conozcamos en algún momento!
Muchas personas me ayudaron con revisiones de capítulos, comentaron mis diagramas, me animaron o me ayudaron a encontrar a las personas adecuadas con las que relacionarme. Gracias a ellos, este libro tiene una calidad considerablemente mejor. En orden alfabético, gracias a:
Albert Brand, Armon Dadgar, Arne Timmerman, Bart Kooijman, Benjamin Komen, Bill Kennedy, Carl Tanner, Daniel Zivkovic, David Linthicum, Dean Shanahan, Femke Buijs, Graham Polley, Greg Wilson, Jason Polites, Jeff Bleiel, Joe Beda, Karolína Netolická, Kerim Satirli, Kyle Ruddy, Lak Lakshmanan, Liz Rice, Nagalenoj HariNagaSampath, Mattijs Bliek, Mike Truty, Oren Teich, Taylor Dolezal, Thijs Elferink, Tein de Vries, Vinod Ramachandran.
También quiero dar las gracias a los equipos directivos de Binx y Xebia por su apoyo. Gracias por ayudarme a encontrar tiempo para escribir a pesar de los compromisos laborales, y por crear una gran cultura de empresa que me apoyó a la hora de concebir y ejecutar este plan moonshot para escribir un libro de O'Reilly: Andrew de la Haije, Bart Verlaat, Daan Teunissen, Elaine Versloot, Martijn Botermans, Mark van Holstein, Walter van der Scheer.
Al equipo de producción de O'Reilly, gracias por convertir mis borradores en un libro tangible y por facilitar el proceso: Beth Kelly, Holly Bauer Forsyth, Rachel Monaghan, Sue Klefstad, Rob Romano y David Futato.
Christopher Chedeau y David Lužar, gracias por iniciar el proyecto de código abierto excalidraw (la herramienta que utilicé para crear los dibujos de este libro). Vuestra herramienta fue inestimable para mi proceso de pensamiento.
Quiero dar las gracias especialmente a Abdellfetah Sghiouar, Cen Liu, José Andrade y Suchit Puri, de Google PSO. Me habéis ayudado desde el principio, y habéis sido fundamentales para ayudarme a crecer hasta convertirme en autor de O'Reilly. Abdel, te esforzaste mucho en revisar todos los capítulos, incluso cuando te enviaba un capítulo cada semana cuando se acercaba la fecha límite. Muchas gracias.
Robbert Brak, gracias por ser un gran amigo y mentor, especialmente cuando empecé a escribir este libro. Tus comentarios fueron siempre muy atentos y sinceros. Eres el único que leyó todos los capítulos, y luego los capítulos que no llegaron al libro, y todas las revisiones de los capítulos. Es un hecho que este libro no habría existido sin tu apoyo.
Richard Seroter, muchas gracias por revisar todo el libro. Tu apoyo, tu ánimo y tu pensamiento crítico me ayudaron mucho a llegar a la meta.
Chris Tippett, eres el desconocido más amable que he conocido en Internet. ¡Muchas gracias por apoyarme en la última milla! Te hago una promesa: si escribes tu libro, ¡reseñaré cada una de sus páginas!
Kathleen Carr, gracias por reconocer algo en mí que yo ni siquiera veía en ese momento. Tu apoyo, amabilidad y confianza desde el principio significaron mucho para mí.
Jennifer Pollock, gracias por traer el libro a casa en medio de una pandemia.
Steren Giannini, gracias por responder incansablemente a todas mis preguntas, revisar mis diagramas y ayudarme a asegurarme de que todo lo que escribía era correcto.
Yuki Furuyama, me puse en contacto contigo con unas sencillas preguntas en un momento, justo antes de mi plazo final. No sólo respondiste a mis preguntas, sino que profundizaste considerablemente para resolver un problema fundamental que viste en el capítulo. Muchas gracias por tu amabilidad y tus valiosas ideas. El capítulo 9 no habría sido lo que es hoy sin ti.
Kelsey Hightower, me siento agradecida por tu apoyo y tu ánimo, y quiero darte las gracias por escribir un prólogo increíble. Tu liderazgo ha sido una inspiración para mí y para muchos otros en la comunidad tecnológica.
Sarah Grey, sabes que no habría terminado el libro sin ti. Aprendí mucho de ti y tengo que decir una cosa: todavía no sé cómo conseguiste que cumpliera el horario. Echo mucho de menos nuestras sesiones de revisión editorial: eran muy amenas, además de productivas.
Davy Landman, tú me enseñaste a crear diagramas adecuados. Si hay una flecha sin etiquetar en este libro es únicamente culpa mía. También recuerdo claramente una reunión crucial en diciembre de 2019 en la que me ayudaste a estructurar el enmarañado lío que era mi manuscrito en ese momento. Y lo más importante, gracias por ser mi mejor amigo.
Gracias, Annemieke, Merel y Jasmijn, por comprender y aguantar todas las horas (y noches) que he pasado escribiendo y codificando. Vosotros sois la razón por la que todo esto merece la pena.
Get Construir aplicaciones sin servidor con Google Cloud Run 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.