En 2018, decidí utilizar mi tiempo libre para ayudar a modernizar el negocio de un miembro de la familia. En el camino, quería adquirir algo de experiencia y comprensión de AWS.
Al final, descubrí que dedicaba casi todo mi tiempo libre a aprender conceptos de infraestructura de nube de AWS. Solo me quedaba una pequeña fracción de mi tiempo para concentrarme en crear la solución moderna basada en la nube que tenía en mente originalmente. Mientras planificaba más solicitudes de funciones para la aplicación, me di cuenta de que necesitaba un mejor enfoque.
A principios de 2020 descubrí Heroku. Como no necesitaba preocuparme por las configuraciones subyacentes de la nube, podía concentrar mi tiempo en agregar nuevas funciones.
El ecosistema Heroku funcionó muy bien para mi caso de uso simple, pero comencé a preguntarme sobre casos de uso más complejos. ¿Qué pasa con el escenario en el que un conjunto de servicios privados y seguros necesitan interactuar entre sí para una solución de procesamiento de pagos?
¿Este caso de uso me obligaría a vivir en el ecosistema de uno de los tres grandes proveedores de servicios en la nube? Voy a descubrirlo.
Durante varios años, tuve la suerte de trabajar en un entorno que valoraba el ciclo de vida de DevOps . El equipo de DevOps manejó todo lo relacionado con la nube por mí, por lo que pude concentrarme en diseñar y crear microservicios para satisfacer las necesidades de mis clientes.
Durante esa época de mi vida, este entorno era la excepción, no la norma. Acabo de hacer una búsqueda de "empresas que carecen de conocimientos sobre infraestructura de nube" en mi navegador y los resultados arrojaron algunas conclusiones bastante sorprendentes:
Los principales resultados de búsqueda hablaron de una falta de comprensión de los conceptos básicos de la nube y de la necesidad de una formación crucial para que los equipos sean eficaces. La formación que necesitan la mayoría de los equipos suele quedar en el camino a medida que las demandas de los clientes y los resultados adquieren mayor prioridad.
Con este enfoque actual, la mayoría de las implementaciones en la nube se ven obligadas a avanzar a un ritmo más lento y, a menudo, están expuestas a vulnerabilidades desconocidas.
El estado actual de la seguridad de sus microservicios en la nube no es nada feliz.
El estado ideal para las soluciones nativas de la nube sería adherirse a una declaración de misión personal que establecí hace varios años:
“Concentre su tiempo en ofrecer características/funcionalidades que amplíen el valor de su propiedad intelectual. Aproveche los marcos, productos y servicios para todo lo demás”.
– J. Vester
En este contexto, aquellos con la directiva de impulsar soluciones nativas de la nube deberían poder avanzar a un ritmo que se alinee con los objetivos corporativos. No deberían verse frenados por la curva de aprendizaje asociada con la infraestructura de nube subyacente.
Entonces, ¿cómo se ve esto cuando nos enfrentamos a una solución en la nube que abarca múltiples microservicios , todos los cuales deben estar aislados del público y cumplir con las regulaciones (como SOC, ISO, PCI o HIPAA)?
Mi experiencia con Heroku 2020 fue positiva. Entonces quería ver cómo funcionaría con este caso de uso complejo. Fue entonces cuando descubrí Espacios Privados .
Los espacios privados están disponibles como parte de Heroku Enterprise. Son entornos dedicados para ejecutar microservicios dentro de una red aislada. Este enfoque permite a los equipos implementar sus servicios en una red que no está expuesta a la Internet pública. En el fondo, estos servicios funcionan exactamente igual que en mi caso de uso básico. Puedo configurarlos a través de la CLI de Heroku y comandos simples basados en Git pueden desencadenar implementaciones.
Para las necesidades de cumplimiento normativo, puedo apoyarme en Heroku Shield para ayudarme a cumplir con PCI DSS, HIPAA, ISO (27001, 27017 y 27018) y SOC (1, 2 y 3).
En un nivel alto, Heroku me permite implementar un diseño seguro nativo de la nube que se puede ilustrar así:
Aquí tenemos una implementación que aprovecha Heroku Shield, todo dentro de un espacio privado. Esto permite que una colección de microservicios, que utilizan varios lenguajes de programación diferentes, interactúen con las principales redes de tarjetas primarias y secundarias, al mismo tiempo que cumplen con diversos requisitos de cumplimiento normativo. Además, obtengo comunicaciones seguras con la plataforma Salesforce y GitLab.
Usando Heroku CLI, puedo poner en funcionamiento mi Espacio Privado y Heroku Shield. En Heroku, esto se llama Escudo de Espacio Privado . A continuación se muestran algunos ejemplos de alto nivel para trabajar en el proceso.
Para crear un nuevo espacio privado de Shield, usamos spaces:create
y agregar la opción --shield
.
$ heroku spaces:create payment-network --shield --team payments-team --region oregon Creating space payment-network in team payments-team... done === payment-network Team: payments-team Region: oregon State: allocating
Si el caso de uso requiere rangos de enrutamiento entre dominios sin clases (CIDR), puedo usar los indicadores --cidr
y --data-cidr
.
Notarás que creé mi Espacio Privado en la región de Oregon. Puede crear un espacio privado en una de las 10 regiones disponibles (en EE. UU., Europa, Asia y Australia). Para obtener una lista de regiones disponibles, haga lo siguiente:
$ heroku regions ID Location Runtime ───────── ─────────────────────── ────────────── eu Europe Common Runtime us United States Common Runtime dublin Dublin, Ireland Private Spaces frankfurt Frankfurt, Germany Private Spaces london London, United Kingdom Private Spaces montreal Montreal, Canada Private Spaces mumbai Mumbai, India Private Spaces oregon Oregon, United States Private Spaces singapore Singapore Private Spaces sydney Sydney, Australia Private Spaces tokyo Tokyo, Japan Private Spaces virginia Virginia, United States Private Spaces
Para cada microservicio que necesita ejecutarse en el espacio privado payment-network
, simplemente agrego la opción --space
cuando ejecuto el comando apps:create
:
$ heroku apps:create clearing-service --space payment-network Creating app... done, clearing-service
Para otorgar a los consumidores acceso al espacio payment-network
, puedo mantener la lista permitida de IP confiables:
$ heroku trusted-ips:add 192.0.2.128/26 --space payment-network Added 192.0.2.128/26 to trusted IP ranges on payment-network ▸ WARNING: It may take a few moments for the changes to take effect.
Los equipos a menudo reciben instrucciones desde arriba para adoptar un enfoque nativo de la nube. Pero muchos equipos tienen una grave falta de comprensión cuando se trata de implementar arquitecturas de nube seguras. Si está utilizando uno de los tres grandes proveedores de nube, cerrar esta brecha tendrá un precio: probablemente no se cumplan los plazos esperados por el propietario del producto.
¿Existe una mejor opción para la implementación segura de la nube? Creo que Private Spaces combinado con Heroku Shield representa esa mejor opción. Para mí personalmente, también es importante que Heroku sea parte de la plataforma de soluciones de Salesforce, que tiene un historial de dedicación en brindar una alternativa de adopción de la nube enfocada en el éxito de sus clientes. Entonces sentí que esta era una estrategia a largo plazo a considerar.
¡Que tengas un gran día!