Compartir a través de


Cómo GitHub acelera la adopción de la nube

Información general

La innovación es la nueva moneda en el panorama competitivo actual. El uso compartido de vehículos, el contenido en streaming, los coches autónomos y otros servicios han cambiado fundamentalmente los ritmos diarios de las personas mientras trastocan los mercados y muestran cómo el panorama competitivo se ha movido de activos físicos a experiencias digitales.

Estos tipos de experiencia digital superior están llevando a una interrupción en la que las empresas bien establecidas se enfrentan a una competencia rígida de las empresas que pueden innovar y ofrecer valor a sus clientes más rápido. Para competir y evitar interrupciones, las empresas necesitan crear una cultura de innovación y usar las mejores y más adecuadas herramientas y servicios en la nube.

GitHub proporciona una variedad de características que pueden ayudar a las empresas a:

  • Aproveche las ventajas de los servicios y funcionalidades de Azure.
  • Modernizar sus prácticas.
  • Hazte más ágil e innovador durante este cambio cultural.

Las empresas pueden aprovechar la conexión de GitHub a la comunidad de código abierto y encontrar miles de ejemplos de soluciones en la nube reiteradas, mejoradas y listas para implementarse desde organizaciones que han adoptado correctamente los servicios de Azure. Pueden tomar prestadas estas soluciones e iterarlas para adaptarlas a sus necesidades empresariales.

GitHub facilita que las organizaciones compartan dentro de sus equipos, lo que hace que sea más rápido modernizar e implementar la siguiente aplicación o carga de trabajo. Las empresas pueden recurrir a InnerSource, un principio clave de la innovación, para tomar prestadas prácticas recomendadas como el compartir y la reutilización, la colaboración y la comunicación, entre otras, de la comunidad de código abierto y aplicarlas dentro de su organización.

Desde la protección de los paquetes de código abierto a la propiedad intelectual escrita diariamente, la protección de toda la cadena de suministro de software debe ser una prioridad principal para todas las empresas. Este objetivo requiere tecnología de seguridad avanzada que se puede incorporar y automatizar durante todo el ciclo de vida, y las funcionalidades nativas de GitHub, como seguridad avanzada de GitHub y Acciones de GitHub, ofrecen esta flexibilidad de tipo.

Aprovechar los recursos de código abierto

Las organizaciones altamente eficaces reconocen el software de código abierto (OSS) como esenciales frente a opcionales para el desarrollo de software moderno. Interactúan con las comunidades de desarrolladores en las que dependen y usan una plataforma segura para invertir estratégicamente en el sistema operativo. Como resultado, estas organizaciones experimentan innovación rápidamente, espacian los competidores y reducen los costos a la vez que minimizan el riesgo.

El sistema operativo consta de paquetes, bibliotecas, scripts y dependencias que se incorporan a las aplicaciones. OSS también incluye miles de recursos de código abierto en forma de infraestructura como código (IaC), documentación e instrucciones para arquitecturas de Azure bien definidas. Microsoft, socios, proveedores, clientes e individuos contribuyen a estos paquetes a la comunidad de software de código abierto. Puede encontrarlos en GitHub y modificarlos, reutilizarlos e implementarlos en un entorno específico de Azure.

Infraestructura como código

IaC es la administración de la infraestructura que incluye redes, máquinas virtuales, equilibradores de carga y topología de conexión en un modelo descriptivo. IaC usa el mismo sistema de control de versiones que usa un equipo de DevOps para el código fuente. Por ejemplo, un equipo de DevOps sigue el principio de que el mismo código fuente genera el mismo binario. Un modelo iaC también sigue ese principio y genera el mismo entorno cada vez que se aplica el modelo. IaC es una práctica clave de DevOps que puede usar con entrega continua (CD).

IaC ha evolucionado para resolver el problema de desfase del entorno en la canalización de versión. Sin él, los equipos deben mantener la configuración de entornos de implementación individuales e incoherencias entre entornos provocan problemas durante las implementaciones. Cada entorno finalmente se convierte en un copo de nieve, una configuración única que no se puede reproducir automáticamente. Con las copas de nieve, la administración y el mantenimiento de la infraestructura requieren procesos manuales que contribuyen a errores y son difíciles de realizar el seguimiento. Las implementaciones de infraestructura con IaC son repetibles y evitan problemas en tiempo de ejecución causados por el desfase de configuración o las dependencias que faltan.

Con IaC, los equipos realizan cambios en la descripción del entorno y la versión del modelo de configuración, que normalmente se encuentra en formatos de código bien documentados, como JSON; Consulte Plantillas de Azure Resource Manager para más información. Los desarrolladores pueden simplificar sus flujos de trabajo mediante el hospedaje de código IaC en el mismo repositorio de GitHub que el código fuente de la aplicación y adoptar las mismas prácticas de integración continua (CI) /CD para IaC con tecnología de Acciones de GitHub.

Consulte la acción de GitHub de AzOps para ver un ejemplo de cómo implementar plantillas personalizadas de Resource Manager en varios ámbitos de Azure. Si no está familiarizado con las plantillas de Resource Manager o IaC, también puede examinar el azure-quickstart-templates repositorio en GitHub, buscar la plantilla que desea implementar y seleccionar el botón Implementar en Azure para probar cómo funciona.

Captura de pantalla de un botón Implementar en Azure.

Componentes de patrones en la nube y procedimientos recomendados

En el diagrama de arquitectura siguiente se resaltan las comprobaciones de seguridad que se ejecutan en los componentes de GitHub y Azure de un entorno de DevSecOps de GitHub:

Diagrama de arquitectura que resalta las comprobaciones de seguridad que se ejecutan en los componentes de GitHub y Azure de un entorno de DevSecOps de GitHub.

  • GitHub proporciona una plataforma de hospedaje de código que los desarrolladores pueden usar para colaborar en proyectos de código abierto y InnerSource.

  • Codespaces es un entorno de desarrollo en línea. Hospedado por GitHub y con tecnología de Microsoft Visual Studio Code, esta herramienta proporciona una solución de desarrollo completa en la nube.

  • La seguridad de GitHub funciona para eliminar amenazas de varias maneras. Los agentes y servicios identifican vulnerabilidades en repositorios y paquetes dependientes. También actualizan las dependencias a las versiones actuales y seguras.

  • Acciones de GitHub son flujos de trabajo personalizados que proporcionan funcionalidades de CI/CD directamente en repositorios. Los equipos denominados ejecutores hospedan estos trabajos de CI/CD.

  • Microsoft Entra ID es un servicio de identidad multiinquilino basado en la nube que controla el acceso a Azure y otras aplicaciones en la nube, como Microsoft 365 y GitHub.

  • Azure App Service proporciona un marco para compilar, implementar y escalar aplicaciones web. Esta plataforma ofrece mantenimiento de infraestructura integrada, aplicación de revisiones de seguridad y escalado.

  • Azure Policy ayuda a los equipos a administrar y evitar problemas de TI a través de definiciones de directivas que pueden aplicar reglas para los recursos en la nube. Por ejemplo, si un proyecto está a punto de implementar una máquina virtual con una SKU no reconocida, Azure Policy envía alertas sobre el problema y detiene la implementación.

  • Microsoft Defender for Cloud proporciona características unificadas de administración para la seguridad y protección contra amenazas en todas las cargas de trabajo en la nube híbrida.

  • Azure Monitor recopila y analiza las métricas de rendimiento, los registros de actividad y otros datos de telemetría de la aplicación. Este servicio alerta a las aplicaciones y al personal cuando identifica condiciones irregulares.

InnerSource

Información general sobre InnerSource

Muchas empresas usan el término InnerSource para describir cómo funcionan juntos sus equipos de ingeniería en el código. InnerSource es una metodología de desarrollo en la que los ingenieros crean software propietario con procedimientos recomendados de proyectos de código abierto a gran escala, como Kubernetes o Visual Studio Code.

Los proyectos de código abierto a gran escala requieren coordinación y trabajo en equipo en miles de colaboradores. Los proyectos más exitosos están impulsados por una visión para sus necesidades de usuario futuras y diarias: velocidad, confiabilidad y funcionalidad. La escala a la que operan estos proyectos proporciona algunas lecciones y puede ayudar a las empresas a crear mejor software más rápidamente con InnerSource.

Con las solicitudes de incorporación de cambios y los problemas de GitHub, la colaboración y la revisión de código se integran en el proceso de desarrollo. Los equipos internos y subcontratados pueden compartir trabajo, analizar los cambios y obtener comentarios en un solo lugar. Esto ayuda a las organizaciones a compartir conocimientos internamente y a evitar reinventar soluciones probadas por campos desarrolladas para otros proyectos.

Anatomía de un proyecto InnerSource

La combinación adecuada de personas, equipos y recursos puede garantizar el éxito de un proyecto. Muchos proyectos de código abierto siguen una estructura organizativa similar que puede ayudar a las organizaciones a configurar equipos entre funciones para administrar proyectos de InnerSource. Un proyecto de código abierto típico tiene los siguientes tipos de personas:

  • Mantenedores: Estos colaboradores son responsables de impulsar la visión y administrar los aspectos organizativos del proyecto. Es posible que no sean los propietarios o autores originales del código.

  • Colaboradores: Estas personas son todos los que han contribuido a algo al proyecto.

  • Miembros de la comunidad: Son personas que usan el proyecto. Pueden estar activos en conversaciones o expresar su opinión sobre la dirección del proyecto.

Los proyectos más grandes también podrían tener subcomités o grupos de trabajo centrados en diferentes tareas, como herramientas, ordenación y moderación comunitaria. Es probable que los proyectos de InnerSource sigan una estructura similar. Muchas organizaciones de ingeniería ordenan a los desarrolladores en equipos como ingeniería de aplicaciones, ingeniería de plataformas y desarrollo web. Estructurar organizaciones de esta manera puede dejar puntos ciegos que excluyan personas calificadas. La organización de un grupo básico de toma de decisiones compatible con los equipos de toda una organización puede ayudar a reunir la experiencia necesaria para resolver problemas más rápido.

Dentro de una empresa, los colaboradores son desarrolladores de toda la empresa y los mantenedores son líderes de un proyecto y responsables clave de la toma de decisiones.

  • Mantenedores: Desarrolladores, administradores de productos y otros responsables clave de la toma de decisiones dentro de una empresa responsable de impulsar la visión de un proyecto y para administrar contribuciones diarias.

  • Colaboradores: Desarrolladores, científicos de datos, administradores de productos, vendedores y otros roles dentro de una empresa que ayudan a impulsar el software. Es posible que los colaboradores no formen parte del equipo de proyecto directo, sino que ayuden a compilar software mediante la contribución de código, el envío de correcciones de errores y mucho más.

Para obtener más información, consulte el documento técnico Una introducción a InnerSource.

Automatización

Acciones de GitHub permite a los usuarios crear flujos de trabajo personalizados directamente en sus repositorios de GitHub. Los usuarios pueden detectar, crear y compartir acciones para realizar cualquier trabajo, incluido CI/CD, y combinar acciones en un flujo de trabajo completamente personalizado. También pueden crear flujos de trabajo de CI que compilen y prueben proyectos escritos en diferentes lenguajes de programación. Los ejemplos están disponibles en las guías de Acciones de GitHub.

Las acciones de GitHub se pueden usar para combinar conceptos de IaC y prácticas de CI/CD para automatizar todo el ciclo de vida de implementación de un extremo a otro, incluido el aprovisionamiento o la actualización del entorno de destino de forma repetible y empaquetar e implementar la propia aplicación.

Ejemplo:

Acciones de GitHub para Azure se crean para simplificar la automatización de los procesos de implementación para los servicios de Azure de destino, como Azure App Service, Azure Kubernetes Service, Azure Functions, etc. El repositorio de flujos de trabajo de acción de inicio de Azure incluye flujos de trabajo de un extremo a otro para compilar e implementar aplicaciones web de cualquier lenguaje y cualquier ecosistema en Azure. Visite Marketplace de GitHub para ver todas las acciones disponibles.

Seguridad

Características de seguridad del desplazamiento a la izquierda de GitHub

A partir de los primeros pasos de desarrollo, DevSecOps cumple los procedimientos recomendados de seguridad. Mediante el uso de una estrategia de desplazamiento a la izquierda, DevSecOps redirige el foco de seguridad. En lugar de apuntar a la auditoría, al final, se desplaza al desarrollo en el principio. Además de generar un código sólido, este enfoque con respuesta rápida a errores ayuda a resolver los problemas al principio, cuando son fáciles de corregir.

Con muchas funcionalidades de seguridad, GitHub ofrece herramientas que admiten todas las partes de un flujo de trabajo de DevSecOps:

  • IDE basados en explorador con extensiones de seguridad integradas
  • Agentes que supervisan continuamente los avisos de seguridad y reemplazan las dependencias vulnerables y obsoletas
  • Funcionalidades de búsqueda que examinan el código fuente para detectar vulnerabilidades
  • Flujos de trabajo basados en acciones que automatizan todos los pasos de desarrollo, pruebas e implementación
  • Espacios que proporcionan una manera de analizar y resolver las amenazas de seguridad de forma privada y, a continuación, publicar la información
  • Junto con la capacidad de supervisión y evaluación de Azure, estas características proporcionan un excelente servicio para crear soluciones seguras en la nube.

Ejemplo:

Las instalaciones de DevSecOps de GitHub abarcan muchos escenarios de seguridad. Entre las posibilidades se incluyen los siguientes casos:

  • Los desarrolladores que quieren aprovechar los entornos preconfigurados que ofrecen funcionalidades de seguridad.
  • Administradores que confían en tener informes de seguridad actualizados y con prioridad a su alcance, junto con los detalles sobre el código afectado y las correcciones sugeridas.
  • Organizaciones optimizadas que necesitan sistemas para adquirir automáticamente dispositivos de seguridad nuevos y que no corran peligro, cuando los secretos quedan expuestos en el código.
  • Los equipos de desarrollo que podrían beneficiarse de las actualizaciones automáticas cuando están disponibles versiones más recientes o más seguras de paquetes externos.

Para obtener más información, consulte:

Pasos siguientes

  • Elija el equipo de implementación (normalmente un administrador de desarrolladores y algunos desarrolladores definidos como administradores) e implemente GitHub.
  • Obtenga información sobre los flujos de trabajo de Git comunes y avanzados para mejorar el uso de GitHub.

Los vínculos siguientes proporcionan más información sobre GitHub.