Prefacio
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
Es un momento mágico para ser tecnólogo.
Tenemos Docker para construir contenedores, y Kubernetes para orquestarlos. Prometheus nos permite monitorizarlos. Consul nos permite descubrirlos. Jaeger nos permite rastrear las relaciones entre ellos. Estos son sólo algunos ejemplos, pero hay muchos, muchos más, todos ellos representativos de una nueva generación de tecnologías: todas ellas son "nativas de la nube", y todas ellas están escritas en Go.
El término "nativo de la nube" parece ambiguo y de moda, pero en realidad tiene una definición bastante específica. Según la Fundación de Computación Nativa en la Nube, una subfundación de la renombrada Fundación Linux, una aplicación nativa en la nube es aquella diseñada para ser escalable ante una carga muy cambiante, resistente ante la incertidumbre del entorno y manejable ante requisitos siempre cambiantes. En otras palabras, una aplicación nativa de la nube está construida para la vida en un universo cruel e incierto.
Incorporando las lecciones aprendidas durante años de creación de software basado en la nube, Go se creó hace aproximadamente una década como el primer lenguaje importante diseñado específicamente para el desarrollo de software nativo de la nube. Esto se debió en gran parte a que los lenguajes de servidor comunes que se utilizaban en ese momento simplemente no eran adecuados para escribir el tipo de aplicaciones distribuidas y de procesos intensivos que Google produce en gran medida.
Desde entonces, Go se ha convertido en la lingua franca del desarrollo nativo de la nube, utilizándose en todo, desde Docker a Harbor, Kubernetes a Consul, InfluxDB a CockroachDB. Diez de los quince proyectos graduados de la Cloud Native Computing Foundation, y cuarenta y dos de los sesenta y dos1 Y cada día llegan más.
Quién debería leer este libro
Este libro está dirigido a desarrolladores de nivel intermedio-avanzado, en particular ingenieros de aplicaciones web y especialistas en DevOps/ingenieros de fiabilidad de sitios. Muchos habrán estado utilizando Go para construir servicios web, pero puede que no estén familiarizados con las sutilezas del desarrollo nativo en la nube -o incluso que no tengan una idea clara de lo que es "nativo en la nube"- y, posteriormente, hayan encontrado que sus servicios son difíciles de gestionar, implementar u observar. Para estos lectores, esta obra proporcionará una base sólida no sólo sobre cómo construir un servicio nativo de la nube, sino que mostrará por qué son importantes estas técnicas, además de ofrecer ejemplos concretos para comprender este tema a veces abstracto.
Se espera que muchos lectores estén más familiarizados con otros lenguajes, pero atraídos por la reputación de Go como lenguaje de desarrollo nativo en la nube. Para estos lectores, este libro presentará las buenas prácticas para adoptar Go como lenguaje de desarrollo nativo en la nube, y les ayudará a resolver sus propios problemas de gestión e implementación nativos en la nube.
Por qué escribí este libro
La forma en que se diseñan, construyen e implementan las aplicaciones está cambiando. Las exigencias de escala están obligando a los desarrolladores a repartir los esfuerzos de sus servicios entre legiones de servidores: la industria se está volviendo "nativa de la nube". Pero esto introduce una serie de nuevos problemas: ¿cómo desarrollar, implementar o gestionar un servicio que se ejecuta en diez servidores? ¿En cien? ¿Mil? Por desgracia, los libros existentes en el espacio "nativo de la nube" se centran en principios de diseño abstractos, y sólo contienen ejemplos rudimentarios de cómo hacer algo de esto, o ninguno en absoluto. Este libro pretende cubrir una necesidad en el mercado de una demostración práctica de principios complejos de diseño nativo de la nube.
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/cloud-native-go/examples.
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, pero no exigimos, la atribución. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo"Cloud Native Go por Matthew A. Titmus (O'Reilly). Copyright 2021 Matthew A. Titmus, 978-1-492-07633-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 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/cloud-native-go.
Envía un correo electrónico a bookquestions@oreilly.com para comentar o hacer preguntas técnicas sobre este libro.
Para más información sobre nuestros libros, cursos, conferencias y noticias, consulta nuestro sitio web en http://www.oreilly.com.
Encuéntranos en Facebook: http://facebook.com/oreilly
Síguenos en Twitter: http://twitter.com/oreillymedia
Míranos en YouTube: http://www.youtube.com/oreillymedia
Agradecimientos
Ante todo, me gustaría dar las gracias a mi mujer y a mi hijo. Sois la motivación de todo lo bueno que he hecho desde que entrasteis en mi vida, y las estrellas guía que me permiten mantener mi dirección verdadera y mis ojos en el cielo.
A mi padre, al que hemos perdido recientemente. Fuiste lo más parecido a un verdadero hombre del Renacimiento que he conocido, al tiempo que conseguías ser la persona más amable y humilde que he conocido. Sigo queriendo ser como tú cuando sea mayor.
A María. Que siente su ausencia más profundamente que nadie. Eres de la familia y siempre lo serás, aunque no te llame tan a menudo como debería. Papá estaría muy orgulloso de tu fuerza y tu gracia.
A Sarah. Siempre me asombran tu fuerza y tu valor. Tu aguda mente te ha convertido tanto en mi más firme aliada como en mi más feroz adversaria desde que pudiste hablar por primera vez. No se lo digas a Nathan, pero eres mi hermano favorito.
A Nathan. Si todos heredamos un tercio del genio de papá, tú tienes su corazón. No lo digo lo bastante a menudo, pero estoy muy orgullosa de ti y de tus logros. No se lo digas a Sarah, pero eres mi hermano favorito.
A mamá. Eres fuerte e inteligente, colorida y poco convencional. Gracias por enseñarme a hacer siempre lo que realmente hay que hacer, independientemente de lo que piense la gente. Sigue siendo rara, y acuérdate de dar de comer a las gallinas.
Por Albert. Tienes un corazón enorme y un pozo sin fondo de paciencia. Gracias por unirte a nuestra familia; somos mejores por tenerte.
Al resto de mi familia. No os veo tan a menudo como me gustaría, y os echo mucho de menos, pero siempre estáis ahí cuando os necesito. Gracias por celebrar las victorias conmigo y por apoyarme en las derrotas.
A Walt y Álvaro, de quienes parece que no puedo alejarme, ni siquiera cambiando de trabajo. Gracias por vuestro apoyo entusiasta cuando lo necesito, y por vuestro crudo realismo cuando lo necesito en su lugar. Ambos me hacéis mejor ingeniero. Gracias también porintroducirme en la serie Cradle de Will Wight, y por la adicción paralizante quele siguió.
A "Jeff Clásico", "Nuevo Jeff", Alex, Markan, Priyanka, Sam, Owen, Matt M., Marius, Peter, Rohit y a todos mis amigos y compañeros de Flatiron Health. Gracias por ir más allá de permitirme desviar mi atención hacia esta empresa, sino también por apoyarme a mí y a mi trabajo, servir de caja de resonancia, actuar como lectores beta y críticos, y por animarme y ser mis facilitadores.
A todos mis amigos de CoffeeOps en Nueva York y en todo el mundo. Me habéis permitido amablemente intercambiar ideas con vosotros y plantearos retos, y vosotros me habéis planteado retos a cambio. Este libro es mejor gracias a vuestras aportaciones.
A Liz Fong-Jones, la renombrada experta en observabilidad y oráculo. Su orientación, dirección y muestras de código fueron inestimables, y sin su generosidad este libro habría sido mucho más difícil de escribir, y el resultado habría sido mucho más pobre.
A mis revisores técnicos Lee Atchison, Álvaro Atienza, David Nicponski, Natalie Pistunovich y James Quigley. Gracias por tener la paciencia de leercada palabra que escribía (incluso las notas a pie de página). Éste es un libro mucho mejor gracias a vuestros agudos ojos y a vuestro duro trabajo.
Y, por último, a todo el equipo de esforzados editores y artistas de O'Reilly Media con los que tuve la suerte de trabajar, especialmente a Amelia Blevins, Danny Elfanbaum y Zan McQuade. 2020 resultó ser un año muy interesante, pero vuestra amabilidad, paciencia y apoyo me ayudaron a superarlo.
1 Incluidos los proyectos CNCF Sandbox, Incubating y Graduated basados en código (sin especificación), a febrero de 2021.
Get Nube Nativa Go 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.