onboarding

View project on GitHub

Contrato Social

Entendiendo que somos una organización en que la tecnología tiene una influencia tan importante en la manera en que sus servicios interactúan con el cliente, y que buena parte de lo desarrollado por las diferentes células tienen un impacto en esta influencia, es que hemos definido junto a los Líderes Técnicos un contrato social algunos acuerdos básicos de trabajo, los cuales son los siguientes:

  • Perfilamiento de Usuarios: Todo Colaborador Interno de SMU será considerado como Member. Todo Partner de SMU (Agencias, Vendors, Consultores) será considerado como Outside Collaborator.

Cultura DevOps

Todos somos integrantes de un gran equipo, los cuales debemos asegurar de proveer a la organización y a sus clientes de un servicio de calidad. Para ello, los desarrolladores deben ser responsables de las soluciones de software que implementen, desde su concepción hasta su operación; y los especialistas de infraestructura deben proveer soluciones que habiliten a los desarrolladores a ser más eficientes con una serie de herramientas y procesos que automaticen la puesta en producción y operación.

Es por ello que si bien se pueden tener responsabilidades diferentes, no significa que no debamos comunicarnos, y por ello, es tan importante romper los silos funcionales y permitir el flujo de experiencias y de comunicación entre todos.

Custodia del código

Se considera como fuente autoritativa de código lo existente en GitHub, y por lo tanto este pasa a ser el lugar de custodia del código, tanto el código que está en producción como el que está en desarrollo. Cómo organización, utilizaremos las diferentes herramientas y capacidades que nos brinda GitHub (tanto propias, como de terceros y desarrolladas por nosotros mismos) para lograr un repositorio de código desde el cual se disparen los procesos de compilación y despliegue que, al ser automatizados, permitan una disminución en el tiempo del proceso.

GitOps

Dentro de DevOps, existe la filosofía de GitOps que dice que Git es la fuente absoluta de la verdad dentro de un sistema, por lo tanto, se requiere que la descripción de los estados deseados deban ser hechos mediante especificaciones declarativas, que se mantengan mediante un control de versiones; de manera de poder identificar que, cuando y quien hizo cierto cambio. Esto permite a los desarrolladores realizar labores relacionadas en la operación, de manera de cumplir el principio de usted lo crea, usted lo opera. Mas información aquí

Aspectos Técnicos

Para asegurar que los servicios entregados cumplen con los aspectos de calidad, debemos cumplir con lo siguiente:

Observabilidad

Es importante conocer en cada momento el estado interno de los sistemas, mediante una solución centralizada que permita, en una sola vista conocer el comportamiento actual de los sistemas. Es por ello que es necesario contar con mecanismos de generación de logs en las aplicaciones, así como un manejo adecuado de errores. Para ello es importante contar con:

Reporte de Salud

La aplicación debe tener un punto de entrada que reporte la salud de la aplicación. Normalmente expone la ruta /checkout/v1/healthcheck en la cual el sistema responde con un código HTTP 200, y de texto puede ser cualquiera, por ejemplo “OK”. Esto permitirá a los equipos de despliegue conocer si la aplicación sube correctamente, y si la misma se encuentra activa.

Respuestas de los microservicios REST

Tanto las respuestas esperadas, como los errores deben seguir el estandar de los servicios REST. Se puede revisar un ejemplo del mismo aquí

Seguridad

Todo servicio debe cumplir con los siguientes acuerdos básicos de seguridad:

  • No debe exponerse información sensible en el código
  • Toda información sensible debe ser cifrada
  • En caso de claves y tokens debe ser guardados en el servicio provisto para ello
  • Se debe asegurar que las imágenes y paquetes usados no tengan vulnerabilidades

Nombre de los Repositorios

De manera de estandarizar los procesos, y poder organizar los diferentes proyectos, se debe usar esta nomenclatura para los nombres de los repositorios:

Nomenclatura Descripción Ejemplo
fe-<nombre> Front End fe-unimarc
be-<nombre> Back End be-unimarc
bff-<nombre> Back End For Frontend bff-unimarc
db-[fe|be|bff|tool]-<nombre> Scripts de Base de Datos db-bff-unimarc
db-be-unimarc
app-[ios|and|hyb|vtx]-<nombre> Código para aplicaciones app-ios-unimarc
app-and-unimarc
app-vtx-promocion
pkg-<nombre> Package pkg-headless
tool-<nombre> Herramientas tool-onboarding
terraform-<nombre> Infraestructura como Código terraform-cluster
dataform-<Nombre de proyecto>-<Nombre de artefacto> Módulos de Dataform dataform-clientes360

Cobertura de Bugs


Para los bugs hemos definido, que todo proyecto en Github no debe comprometer ningún bug con severidad Blocker, Critical ni Major, los cuales incluso podrían condicionar la aprobación de un Pull Request

Mas información aquí


Cobertura de Vulnerabilities


Para vulverabilities hemos definido, que todo proyecto en Github no debe comprometer ninguna vulnerabilidad, siendo nuestra tolerancia cero dado que nuestro compromiso con la seguridad de nuestro software. Para complementar esta declaración, Sonarqube nos entrega feedback basado en los siguientes criterios de análisis:


  • SonarSource     : Para mas información aquí
  • OWASP Top 10  : Para mas información aquí
  • SANS Top 25      : Para mas información aquí
  • CWE                   : Para mas información aquí


Cobertura de Security Hotspots

Un Security Hotspots resalta un fragmento de código sensible a la seguridad que el desarrollador debe revisar. Tras la revisión, descubrirá que no hay amenaza o que necesita aplicar una solución para proteger el código./

Para Security Hotspots hemos definido, que todo proyecto en Github no debe comprometer ningun Security Hotspots, siendo nuestra tolerancia cero dado que nuestro compromiso con la seguridad de nuestro software.

Mas información aquí

Revisión de secretos expuestos

Otra parte importante del análisis de seguridad tiene que ver con el análisis de información sensible en el código como contraseñas en texto plano, token de autenticación, etc. Estos secretos que puedan estar definidos en el código pueden ser ubicados gracias al uso de trufflehog, el cual se encarga de analizar si existe algún secreto en alguno de los commits hechos en el repositorio. En este caso la solución es la eliminación del commit o de los commits ofensores del repositorio.

Mas información aquí

Home Flujo Seguridad VTEX Polymates