10 herramientas útiles para un proyecto de desarrollo software

Daniel Estiven Rico Posada
Bancolombia Tech
Published in
6 min readDec 28, 2020

El ciclo de desarrollo de software evolucionó de gran manera en los últimos años, siendo transformado principalmente por las propuestas de las comunidades Open Source, que cada día se hacen más importantes para organizaciones de cualquier tamaño.

Estas propuestas que surgieron de las comunidades Open Source y que hoy son adoptadas por organizaciones como Bancolombia, impactaron de manera muy positiva la calidad del software en distintos sentidos, desde aspectos relacionados a la seguridad y buenas prácticas de desarrollo, hasta iniciativas en pro de garantizar la estabilidad y resiliencia de los sistemas en producción.

Photo by Tim Mossholder on Unsplash

A continuación se encuentra un listado de herramientas utilizadas hoy en Bancolombia, en su mayoría Open Source, para abordar diferentes retos que se dan en las distintas fases del ciclo de desarrollo de software:

1. Sonarqube

Sonarqube es una gran herramienta para garantizar la escritura de código limpio y seguro de manera automática y continua. Tiene la capacidad de hacer análisis de código estático contribuyendo a crear una base de código mantenible, que evite la duplicidad, la ingesta de bugs y el incremento de la deuda técnica. Además, permite verificar la cobertura de pruebas unitarias.

Esta es una herramienta gratuita, si se usa para la construcción de proyectos Open Source, en caso contrario, requiere de un pago mensual.

Las reglas para el análisis estático de código son totalmente personalizables para que sean adaptadas a la guía de estilo de cada organización. Adicionalmente, permite la construcción de reglas propias para verificaciones personalizadas en el código.

En Bancolombia construimos una serie de reglas personalizadas en sonar que nos permiten verificar por ejemplo: cumplimiento de los principios de arquitectura limpia, configuración adecuada de los YAML de Kubernetes para Readiness Probe y Liveness Probe, validar el no uso de librerías prohibidas, verificar el uso de librerías obligatorias, etc.

Sonar puede añadirse en los pipelines de integración continua (CI, DevOps) para dar una retroalimentación temprana a los equipos de desarrollo sobre las posibles mejoras en el código que están construyendo día a día.

Link: https://www.sonarqube.org/

2. Hygieia

Es una iniciativa Open Source creada por Capital One para el monitoreo en tiempo real de los pipelines de CI/CD. Permite generar métricas y dashboards ejecutivos que apoyen la toma de decisiones a través del entendimiento de las fases del proceso DevOps. Además, es una gran herramienta para encontrar demoras o posibles puntos de mejora en el proceso.

En Bancolombia, cada uno de los proyectos tiene su respectivo dashboard en Hygieia, lo cual permite identificar el nivel de cumplimiento de las iniciativas en los diferentes pilares de DevOps (Continuous integration, Release Management, Continous Delivery, Continuous Testing, Configuration Management) y en las prácticas de Ingeniería de Software.

Por necesidades específicas de Bancolombia, hoy se trabaja sobre un fork de Hygieia que contiene unas personalizaciones y unas extensiones requeridas por los procesos de la organización. Próximamente, estas extensiones se convertirán en contribución Open Source al core de Hygieia.

Link: https://www.capitalone.com/tech/solutions/hygieia/

3. Azure Pipelines

Todos los proyectos de software deben contar con una herramienta para la construcción de pipelines (CI/CD) que fortalezca la automatización y reduzca los reprocesos, materializando los principios de la cultura DevOps.

Una de las herramientas más reconocidas en el mercado es Azure Pipelines, un servicio muy completo de la suite de Azure DevOps que es soportado actualmente por Microsoft. Este servicio cuenta con integración directa con servicios como Azure Boards, Azure Repos, entre otros, lo que facilita la gestión del ciclo de vida del software.

Actualmente, Azure Pipelines se encuentra en proceso de evolución hacia Github Actions como resultado de la compra de Github por parte de Microsoft.

Link: https://azure.microsoft.com/es-es/services/devops/pipelines/

4. Artifactory

Artifactory es uno de los servicios más reconocidos como repositorio de librerías, binarios e imágenes docker. Es una herramienta fundamental porque al interior de las organizaciones es bastante común requerir de un repositorio que actúe como única fuente de verdad para todos los paquetes e imágenes docker.

Uno de los casos comunes es la publicación de librerías internas que contienen lógica core de la organización, que al ser sensible, no puede ser enviada a repositorios públicos como npm o maven central. En este caso, se configuran los proyectos para que busquen sus dependencias en artifactory, el cual hará una búsqueda en las librerías privadas de la organización y luego servirá como puente para buscar el resto de librerías en los repositorios de dependencias públicos.

Hoy Artifactory hace parte de las herramientas utilizadas en los pipelines de DevOps en Bancolombia para la administración de dependencias e imágenes docker.

Adicionalmente, Artifactory ofrece otras capacidades que puedes encontrar en: https://jfrog.com/artifactory/

5. Docker

Docker es un proyecto Open Source que automatiza el despliegue de aplicaciones en contenedores, lo cual permite tener una homologación del ambiente en el cual una aplicación va a ser ejecutada. Dando cada vez menos relevancia al sistema operativo o arquitectura del servidor donde se están ejecutando las aplicaciones y dejando a un lado la tradicional frase: “en mi local funciona”.

Es una de las herramientas que deben ser utilizadas por defecto, si se están construyendo aplicaciones nativas de nube orientadas a cumplir principios de escalabilidad y resiliencia.

Link: https://www.docker.com/

6. Liquibase

Es común encontrar empresas que tengan automatizados sus procesos de despliegue continuo e integración continua para lo relacionado al código de las aplicaciones, pero hay un punto que aún continua generando procesos operativos manuales y corresponde a los cambios en los esquemas de bases de datos.

Liquibase, es una herramienta que busca evitar estos procesos operativos, ofreciendo implementar pipelines de DevOps para los cambios en las bases de datos.

Al momento de escritura de este artículo, Bancolombia se encuentra en proceso de implementación de esta herramienta.

Link: https://www.liquibase.com/

7. Prometheus

Las aplicaciones empresariales requieren ser monitoreadas 24/7 a través de herramientas que faciliten la detección de errores y que permitan evitar fallas críticas en producción.

Prometheus es una iniciativa Open Source promovida por la Cloud Native Foundation que ofrece una solución de monitoreo con capacidad de generar métricas, alertamientos y dashboards de visualización sobre el comportamiento de las aplicaciones.

En Bancolombia se utilizan diferentes herramientas de monitoreo según la necesidad, Prometheus es una de las opciones para algunos casos de uso, pero adicionalmente se cuenta con otras opciones privativas como Dynatrace y New Relic.

Link: https://prometheus.io/

8. Prisma Cloud

La seguridad ha cambiado con la llegada de la nube, abriendo nuevas posibilidades para los atacantes alrededor de la explotación de vulnerabilidades en contenedores docker y en general en las aplicaciones cloud native.

Prisma Cloud es una herramienta que, además de otras posibilidades, ofrece la capacidad de analizar las vulnerabilidades que puedan presentarse en las imágenes docker base que se estén utilizando para el despliegue de las aplicaciones, reduciendo así las posibilidades de que un atacante vulnere nuestras sistemas.

Estos análisis pueden ser añadidos como una tarea en los pipelines para evitar que se desplieguen aplicaciones con imágenes base que contengan vulnerabilidades criticas conocidas.

Link: https://docs.paloaltonetworks.com/prisma/prisma-cloud.html

9. XRay

Decantarse por utilizar herramientas Open Source es una de las decisiones más positivas que una organización puede tomar; contribuye a generar soluciones de mayor calidad y a menores costos, pero trae consigo retos adicionales como el riesgo asociado por temas de compliance.

Cuando se utilizan herramientas Open Source es fundamental cerciorarse sobre lo que permite y lo que no permite la licencia que esta herramienta tenga asociada.

XRay es una herramienta que, además de otras capacidades, permite verificar de manera automática las licencias Open Source que se estén utilizando en todos los repositorios de código de la organización, generando alertamientos o bloqueos si se usan licencias no muy permisivas que puedan traerle problemas legales a la empresa.

Actualmente en Bancolombia se utiliza para la verificación de licencias Open Source y también para la verificación de vulnerabilidades en librerías.

Link: https://jfrog.com/xray/

10. Chaos Toolkit

Es la herramienta que permite implementar y automatizar los principios de Ingeniería del Caos. Es una manera sencilla de construir experimentos de caos, simulando la caída de servicios críticos en producción para medir, por ejemplo, el nivel de resiliencia de un sistema.

Al momento de escritura de este artículo Bancolombia se encuentra en proceso de implementación de esta herramienta.

Link: https://chaostoolkit.org/

Comentarios finales

Las herramientas anteriormente nombradas no son un listado exhaustivo de todo lo que se utiliza en el ciclo de vida del desarrollo de Software en Bancolombia, sino algunos ejemplos de las herramientas más útiles y los casos de uso en los que están generando más valor.

¿Hay alguna herramienta que consideras de gran utilidad y no está en el listado de este artículo? Compártela en los comentarios, puede ser de mucho valor para las personas que lean este artículo.

--

--