Spinnaker como una Solución de Entrega Continua para Aplicaciones JavaScript

Rate this content
Bookmark

Spinnaker es una plataforma de entrega continua de código abierto que proporciona gestión de aplicaciones y despliegue para ayudar a los equipos de ingeniería a lanzar cambios de software con confianza y a alta velocidad. Inicialmente fue desarrollado en Netflix y ahora es utilizado por muchos equipos de ingeniería a gran escala. En esta charla, exploraremos cómo podemos aprovecharlo para implementar aplicaciones JavaScript en múltiples proveedores de nube de manera repetible y escalable, aprovechando su conjunto de funciones robusto.

10 min
15 Feb, 2024

Video Summary and Transcription

Jamal Sinclair-O'Garro se presenta como un ingeniero de software senior en Netflix con experiencia en algoritmos y comercio electrónico. Spinnaker es una plataforma de entrega continua multiplataforma utilizada por empresas como Grubhub, Airbnb, Google, Netflix, Chime, Box y Target. Proporciona gestión de infraestructura y despliegue a través de pipelines, permitiendo implementaciones graduales y análisis de canarios para garantizar cambios seguros. Spinnaker mejora la velocidad y se recomienda para optimizar aplicaciones JavaScript en diferentes proveedores.

Available in English

1. Introducción

Short description:

Hola, mi nombre es Jamal Sinclair-O'Garro, un ingeniero de software senior en Netflix. Tengo experiencia en trading algorítmico y electrónico. Estoy ubicado en Nueva York y soy fanático del hip hop y los deportes, especialmente de los Knicks.

Hola. Mi nombre es Jamal Sinclair-O'Garro y bienvenidos a mi charla sobre Spinnaker como solución de entrega continua para aplicaciones JavaScript. Entonces, ¿quién soy yo? Como mencioné, mi nombre es Jamal. Soy un ingeniero de software senior en Netflix dentro de nuestra organización de ingeniería de plataformas. Antes de trabajar en Netflix, he estado aquí aproximadamente dos años, trabajé toda mi career en finanzas donde me enfoqué principalmente en el trading algorítmico y electrónico. He construido más de 15 aplicaciones de trading electrónico algorítmico para escritorio que se han implementado en toda la empresa en mis trabajos anteriores. Nací y crecí en Nueva York, donde actualmente resido. Soy fanático del hip hop, de las zapatillas de deporte, soy fanático de los Yankees, Giants y Knicks, y los Knicks la están rompiendo en este momento.

2. Spinnaker Overview

Short description:

Hoy aprenderemos sobre Spinnaker, una plataforma de entrega continua multiplataforma que admite múltiples proveedores de nube. Discutiremos su funcionalidad, orquestación de implementación, gestión de recursos y su uso por parte de empresas como Grubhub, Airbnb, Google, Netflix, Chime, Box y Target. También cubriremos conceptos de alto nivel como proveedores, aplicaciones, clústeres, grupos de servidores, balanceadores de carga y firewalls en la arquitectura de Spinnaker.

así que vamos Knicks. Entonces, el plan de hoy. ¿En qué nos vamos a enfocar hoy? Hoy vamos a aprender sobre Spinnaker, qué es, entenderemos a grandes rasgos una descripción general de su funcionalidad y luego trataremos de averiguar por qué podrías querer usarlo para tus aplicaciones JavaScript. Entonces, dicho esto, ¿qué es Spinnaker? Spinnaker es una plataforma de entrega continua multiplataforma que admite múltiples proveedores o entornos en la nube. Entonces, piensa en AWS, Google Cloud y Azure. Spinnaker nos brinda la capacidad de configurar recursos en la nube. Entonces, piensa en el tipo de instancia, grupos de seguridad si estás en el mundo de AWS. Podemos orquestar nuestras implementaciones o definir la orquestación para las implementaciones a través de algo llamado pipelines que hablaremos en breve. Y también podemos administrar o implementar recursos. Entonces, piensa en el escalado automático y la lógica que nos permite realizar cosas como deshacer cambios en caso de que las cosas no salgan bien. Spinnaker fue desarrollado internamente en Netflix y desde entonces se ha convertido en un proyecto de código abierto y ahora es mantenido por la comunidad. Entonces, sabemos sobre Spinnaker, pero la pregunta que podrías tener es, ¿quién lo está usando? ¿Quién está usando Spinnaker en producción? En este momento hay algunas empresas. Está Grubhub, está Airbnb, Google, por supuesto, porque Spinnaker proviene de Netflix. Está Chime, Box, y Target. Entonces, como podemos ver, este es un pequeño subconjunto, pero hay una gran cantidad de empresas que están utilizando Spinnaker en producción para su solución de entrega. Entonces, ahora hablemos de algunos conceptos de alto nivel de Spinnaker. Primero, hablemos de un proveedor. Un proveedor es un proveedor de servicios en la nube. Como AWS o Azure, Google Cloud que proporciona recursos informáticos en los que puedes construir tu infraestructura y implementar y servir tus aplicaciones. Ahora, en el mundo de Spinnaker, una aplicación es una colección de algo llamado clústeres de los que hablaremos en breve. Así que piensa en ello como una forma de realizar un seguimiento de nuestra aplicación, la configuración de la aplicación, y también su configuración de infraestructura. Además, también tenemos un grupo de servidores, un grupo de servidores es una colección de instancias. Entonces, piensa en las instancias de tu aplicación Node, o incluso podrían ser instancias de Kubernetes también. Un clúster es un grupo de grupos de servidores en Spinnaker. Y luego también tenemos balanceadores de carga que básicamente equilibran el tráfico entre las instancias dentro de un grupo de servidores en particular. Tenemos un firewall, que nos permite establecer reglas de tráfico de seguridad de red. Entonces, veamos a grandes rasgos la arquitectura de Spinnaker. Aquí tenemos un ejemplo de dos aplicaciones. Como se mencionó, una aplicación es una forma de agrupar los recursos y la infraestructura de tus aplicaciones. Y aquí puedes ver que tenemos una colección de clústeres. Y cada clúster es básicamente un conjunto de grupos de servidores.

3. Spinnaker Architecture

Short description:

La arquitectura de Spinnaker proporciona una descripción general de clústeres, grupos de servidores, instancias, balanceadores de carga y firewalls. La pantalla real muestra diferentes grupos de servidores y clústeres, donde se pueden controlar acciones como rollback, resizing, disabling, deploying y cloning. Spinnaker proporciona un panel centralizado para definir la configuración de infraestructura que se abstrae en servidores y proveedores.

Como vemos aquí, el clúster A tiene tres grupos de servidores, el clúster B tiene dos grupos de servidores, y el clúster C tiene un grupo de servidores. Si observamos la aplicación dos, vemos que es ligeramente diferente. Y si nos enfocamos en el clúster D dentro de la aplicación dos, veremos que tenemos dos grupos de servidores. Estos grupos de servidores contienen instancias. Entonces, estas cajas aquí son instancias. Y aquí vemos que tenemos nuestro balanceador de carga, que va a tomar el tráfico, pasarlo a través de un firewall y luego básicamente decidir dónde se dirige ese tráfico en términos de nuestras instancias. Así que esa es una descripción general de alto nivel de la arquitectura de Spinnaker en pocas palabras. Aquí tienes un ejemplo de cómo se ven los clústeres en la pantalla real. Entonces, ves que tenemos nuestros diferentes grupos de servidores, nuestros diferentes clústeres. Tenemos nuestras instancias. Aquí, tenemos una forma de controlar algunas de las acciones en nuestros grupos de servidores. Así que hacer rollback, resizing, disabling, deploying, incluso cloning. Así que hablemos sobre la gestión de infraestructura. Spinnaker nos permite definir nuestra infraestructura. Entonces, especificar configuraciones en nuestro entorno sin tener que navegar por muchas páginas diferentes para hacerlo. Si estás familiarizado con AWS, Amazon Web Services, sabrás que tienes que pasar por muchas partes diferentes de tu aplicación o tu configuración de Amazon para cambiar cosas como tus grupos de seguridad o configurar balanceadores de carga. En Spinnaker, veremos en un segundo en nuestra próxima captura de pantalla, puedes hacer esto desde un panel centralizado. Y también está abstraído

4. Gestión de Infraestructura y Despliegue

Short description:

Spinnaker proporciona una forma unificada de gestionar la configuración de infraestructura en diferentes proveedores. La gestión del despliegue se logra a través de pipelines que automatizan flujos clave, como la extracción de imágenes, las pruebas, las versiones canary y las estrategias de despliegue. El análisis canary permite despliegues graduales y comparaciones con una línea base para identificar diferencias estadísticamente significativas.

No tienes que preocuparte si estás cambiando de AWS a Google Cloud y tienes que aprender esa infraestructura o saber dónde está todo. Spinnaker te brindará una forma unificada de gestionar esa configuración. Aquí tenemos un ejemplo de una página de gestión de infraestructura. Una configuración de clúster de despliegue donde puedes ver aquí, puedes especificar tus cuentas, tu región, tus subredes VPC. Incluso aquí podemos ver que podemos configurar balanceadores de carga, grupos de seguridad o tipos de instancias, e incluso llegar a las zonas de disponibilidad. Como podemos ver aquí, un beneficio es que Spinnaker te brinda esta abstracción de alto nivel que te permite gestionar tu infraestructura desde un panel simple que se puede extrapolar y generalizar en muchos proveedores diferentes o proveedores de servicios en la nube. A continuación, hablemos brevemente sobre la gestión del despliegue. Entonces, ¿qué significa esto? Spinnaker tiene un concepto llamado pipeline. Y un pipeline, a alto nivel, te permite definir cómo se despliega tu código. Permite la automatización de flujos clave. Piensa en extraer una imagen de algún lugar, ejecutar pruebas, ejecutar canaries o incluso permitir un juicio manual para bloquear una aplicación y evitar que se promueva automáticamente a producción. También puedes gestionar la construcción de tus imágenes, las versiones canary y aplicar otras estrategias de despliegue. Aquí tienes un ejemplo de un diagrama de cómo se ve un pipeline. Como se muestra, va de izquierda a derecha. Estas son las diferentes etapas que pueden ocurrir. Aquí decimos que comenzaremos nuestro pipeline. Encontrará una imagen a partir de las pruebas, desplegará un canary, realizará un cambio aprobado manualmente, esperará 30 segundos, desplegará el entorno de producción utilizando una estrategia de red-negra, realizará una limpieza, esperará dos horas para el canary y destruirá la antigua producción una vez que se haya realizado ese despliegue. Aquí tienes un ejemplo de una definición de pipeline, cómo puedes definirlo. Por cuestiones de tiempo, no profundizaremos mucho en esto, pero puedes ver

5. Pipeline and Canary Analysis

Short description:

Spinnaker permite ejecutar canarios para implementar cambios gradualmente y compararlos con una línea base. Se calcula una puntuación de canario basada en métricas para determinar si el cambio es seguro para producción. Spinnaker es una herramienta poderosa que mejora la velocidad y facilita el trabajo con proveedores de servicios en la nube. La comunidad es activa y apasionada. Si deseas optimizar tu aplicación JavaScript en diferentes proveedores, Spinnaker es la herramienta adecuada para ti.

aquí que estas diferentes etapas básicamente imitan el mismo flujo de pipeline. Y si observas el pipeline real en producción, podemos ver que para cada etapa que atravesamos, si algo está en verde, eso significa que esa etapa se ha completado y ha sido exitosa. Si tuviéramos algún problema, se pondría en rojo o habría otros colores diferentes que especificarían diferentes estados, pero esos son los dos que nos importan principalmente. Y si miras aquí y profundizas en la etapa real del pipeline en sí, puedes ver más información y metadatos al respecto. Entonces, brevemente, antes de cerrar, hablemos sobre el análisis de canarios. Una característica realmente poderosa de Spinnaker es que nos permite ejecutar algo llamado canarios. ¿Qué es un canario? Un canario es básicamente un proceso de implementación donde un cambio se implementa gradualmente y se compara con una línea base. Digamos que hicimos un cambio en una configuración o en algún código. Lo que queremos hacer es ejecutar una línea base de cómo se ve nuestra producción actual. Y luego vamos a ejecutar una réplica de eso que contiene nuestro código, ¿verdad? Nuestro cambio de código, cambio de configuración, y luego lo que vamos a hacer es recopilar algunas métricas. Y con las métricas, vamos a intentar ver si hay diferencias materiales que sean estadísticamente significativas. Entonces, piensa en aumentos en la latencia, aumentos en los registros de errores, aumentos de cualquier cosa que parezca sospechosa y sea diferente de nuestra línea base. Y lo que hacemos es tomar esa información y calcular una puntuación, lo que llamamos una puntuación de canario. Y esa puntuación determina si ese cambio es seguro para implementar en producción. Y esto se hace tanto para cambios de código como de configuración, como se mencionó.

Entonces, al concluir esta breve charla, voy a dar algunas conclusiones y puntos clave, que Spinnaker es una herramienta muy poderosa y completa. Ayuda a mejorar la velocidad y facilita el trabajo con cloud providers una vez que te familiarizas con ella. Y la community es muy apasionada y activa en conferencias y canales sociales. Entonces, si eres un desarrollador de JavaScript , ingeniero, líder de equipo y estás buscando una forma de optimizar tu aplicación JavaScript, tu aplicación JavaScript, ya sea una aplicación de nodo o de otro tipo, y quieres hacerla genérica en todos tus posibles proveedores, AWS o Google Cloud, Spinnaker es probablemente la herramienta adecuada para ti. Aquí tienes algunos recursos. Entonces, la documentación de Spinnaker es un buen lugar para comenzar. El canal de Slack de Spinnaker es bastante bueno. Esa URL es bastante larga, pero esta presentación se compartirá. Es un enlace clickable. Siéntete libre de revisarlo. Y aquí está mi información de contacto, mi GitHub, mi Twitter y mi LinkedIn. Y con eso, estoy abierto a cualquier pregunta.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

React Advanced Conference 2022React Advanced Conference 2022
16 min
How to Build Your Own Open Source Project
We all used open source projects every day such as npm packages, editors, web applications, and even operating systems... Have you ever thought of building one of your own? In this talk, I will share my journey building jest-preview, from when it was just a vague idea, to currently a well-adopted library to help frontend engineers write tests faster. I will share with you how to come up with an idea for a project to work on, what is the struggles you have to overcome as an author of an open source project, how to manage time efficiently, and how you get attention from engineers around the world.
TypeScript Congress 2022TypeScript Congress 2022
30 min
Lessons from Maintaining TypeScript Libraries
Maintaining widely-used JS libraries is already complicated, and TypeScript adds an additional set of challenges.

Join Redux maintainer Mark Erikson for a look at some of the unique problems TS library maintainers face, and how the Redux team has handled those problems. We'll cover:

- Tradeoffs of different ways to define TS types for a library
- How to target different versions of TS, and considerations for determining the supported version range
- Migrating existing JS libraries to TS
- Differences between writing "app" types and "library" types
- Managing and versioning public types APIs
- Tips and tricks used by types from the Redux libraries
- TS limitations and possible language-level improvements
Vue.js London 2023Vue.js London 2023
31 min
Nuxt 3 Modules and Open-Source
Nuxt modules are the de-facto way of extending our Nuxt applications with new behaviors and functionalities. Have you ever built your own? Why would you bother with hundreds of modules already out there? Let's answer those questions together and see why making your own modules in Nuxt 3 can both help you have a deeper understanding of how Nuxt works while also paving the way for you to get into open source!
React Day Berlin 2022React Day Berlin 2022
8 min
Making an Open Source Library Financially Sustainable
React Flow is an open source library used by thousands of developers and hundreds of companies. How do we make sure it stays alive, and also free? I’ll share some insights along our journey from open sourcing React Flow to passing the “black zero,” including findings from our user research where we spoke to some of the people who support us every month.
React Finland 2021React Finland 2021
18 min
The State of XState
Over the past few years, state machines, statecharts, and the actor model have proven to be viable concepts for building complex application logic in a clear, visual way with XState. In this talk, we'll take a peek into the future of XState, including new features in the next version, and new tools and services that will make it even easier to create and collaborate on state machines.
React Day Berlin 2023React Day Berlin 2023
31 min
Break the Race: Easy Race Condition Detection for React
Race conditions are among some of the most challenging to detect and reproduce issues. As such they pose a significant challenge in development notably in UI. In this talk, we explore how to detect race conditions by leveraging fuzzing techniques. We walk you through discovering the real problem of race conditions and how they impact user experience. We provide you tools and examples demonstrating how to easily detect them in your daily work thanks to tests relying on fuzzing. After that talk, we hope your React code will be race conditions free or at least that you will have the right tools to help you.

Workshops on related topic

Node Congress 2023Node Congress 2023
85 min
Node.js: Landing your first Open Source contribution & how the Node.js project works
Workshop
This workshop aims to give you an introductory module on the general aspects of Open Source. Follow Claudio Wunder from the OpenJS Foundation to guide you on how the governance model of Node.js work, how high-level decisions are made, and how to land your very first contribution. At the end of the workshop, you'll have a general understanding of all the kinds of work that the Node.js project does (From Bug triage to deciding the Next-10 years of Node.js) and how you can be part of the bigger picture of the JavaScript ecosystem.

The following technologies and soft skills might be needed):
  - Basic understanding of Git & GitHub interface
  - Professional/Intermediate English knowledge for communication and for allowing you to contribute to the Node.js org (As all contributions require communication within GitHub Issues/PRs)
  - The workshop requires you to have a computer (Otherwise, it becomes difficult to collaborate, but tablets are also OK) with an IDE setup, and we recommend VS Code and we recommend the GitHub Pull Requests & Issues Extension for collaborating with Issues and Pull Requests straight from the IDE.

The following themes will be covered during the workshop:
- A recap of some of GitHub UI features, such as GitHub projects and GitHub Issues
- We will cover the basics of Open Source and go through Open Source Guide
- We will recap Markdown
- We will cover Open Source governance and how the Node.js project works and talk about the OpenJS Foundation
  - Including all the ways one might contribute to the Node.js project and how their contributions can be valued
- During this Workshop, we will cover Issues from the nodejs/nodejs.dev as most of them are entry-level and do not require C++ or deep technical knowledge of Node.js.
  - Having that said, we still recommend enthusiast attendees that want to challenge themselves to "Good First Issues" from the nodejs/node (core repository) if they wish.
  - We're going to allow each attendee to choose an issue or to sit together with other attendees and tackle issues together with Pair Programming through VS Code Live Share feature
    - We can also do Zoom breakrooms for people that want to collaborate together
  - Claudio will be there to give support to all attendees and, of course, answer any questions regarding Issues and technical challenges they might face
  - The technologies used within nodejs/nodejs.dev are React/JSX, Markdown, MDX and Gatsby. (No need any knowledge of Gatsby, as most of the issues are platform agnostic)
- By the end of the Workshop, we'll collect all (make a list) the contributors who successfully opened a Pull Request (even if it's a draft) and recognise their participation on Social media.