Aplicacions al núvol amb PaaS i CaaS
Blog Detail Page
Blog Detail Page
Blog Detail Page

Aplicacions al núvol amb PaaS i CaaS

Blog Detail Page
Blog Detail Page
Blog Detail Page

Aprèn com aquests models optimitzen el desenvolupament i desplegament d'aplicacions.

Models de desplegament a CaixaBank Tech: PaaS i CaaS amb Kubernetes

A CaixaBank Tech treballem amb una plataforma al núvol basada en la tecnologia de Kubernetes. És una tecnologia que ofereix més agilitat i versatilitat. No obstant això, amb el canvi de la plataforma, hem hagut de canviar la manera de treballar i, per tant, hem deixat enrere la idea d’accedir a un servidor per pujar la nova versió del binari aplicatiu i reiniciar el servidor web perquè s’actualitzi la versió per passar a un model en el qual distribuïm el codi font i les eines són les encarregades de generar el contenidor Docker i de desplegar-lo en Kubernetes.

A CaixaBank Tech disposem de dos models diferents de desplegament de les aplicacions al núvol: Platform as a Service (PaaS) o Container as a Service (CaaS). En tots dos casos es basen en el mateix stack tecnològic:

  • GitLab
  • Eina pròpia per al CI/CD (basada en Jenkins)
  • Docker
  • Kubernetes

A continuació, explicarem els dos models de desplegament comentats.

PaaS (Platform as a Service)

Per a la solució al núvol de Platform as a Service (PaaS), proporcionem la plataforma amb la qual es construirà i desplegarà l’aplicació, entenent com a plataforma no tan sols la infraestructura, sinó també les imatges base Docker, els charts, etc. El llistat de recursos que proporcionem és:

  • Imatge Docker Base: disposem d’un catàleg de tecnologies base com Java, Python, PHP… Aquestes imatges es fan servir a les imatges Docker Multistage.
  • Imatge Docker Multistage: aquesta imatge es fa servir per construir el binari aplicatiu en el primer stage i el segon stage es tracta del mateix runtime A partir d’aquesta imatge, es genera la imatge Docker aplicativa que es desplega. En aquest punt també es revisa la qualitat del codi, vulnerabilitats…
  • Chart Helm: els charts es fan servir per desplegar les imatges aplicatives mitjançant la creació dels objectes de Kubernetes a partir de templates

Amb el conjunt de recursos que proporcionem com a solució de la plataforma aconseguim que l’equip s’abstregui de la solució de Kubernetes i se centri únicament en el codi aplicatiu a l’hora de fer el desenvolupament.

El flux de treball dels equips de desenvolupament representat en el diagrama és el següent:

  1. L’equip aplicatiu puja el codi de l’aplicació a GitLab.
  2. Quan han pujat el codi, fan servir l’eina de CI/CD per construir i distribuir la imatge Docker aplicativa al nostre Docker Registry.
  3. Abans de desplegar l’aplicació, des de l’eina, configuren l’entorn on es desplega l’aplicació: secrets, fitxes de configuració, URL públiques…
  4. Finalment, amb l’entorn configurat, fan servir l’eina de CI/CD per desplegar la versió de l’aplicació.
Aplicacions al núvol amb PaaS i CaaS

CaaS (Container as a Service)

Les solucions al núvol amb CaaS estan pensades per a casos excepcionals en què els PaaS no s’adapten a les necessitats o quan s’han de desplegar productes amb la seva pròpia imatge base. En comparació amb la solució PaaS, els equips aplicatius no tan sols són responsables del codi de l’aplicació, sinó també de preparar tots els objectes de desplegament de Kubernetes.

De soluciones CaaS en trobem de dos tipus diferents:

  • Basades en imatges Docker de producte
  • Basades en imatges Docker base del catàleg intern

Per a cada cas, el flux de treball dels equips és una mica diferent, per la qual cosa val la pena explicar tots dos models.

El flux de treball dels equips de desenvolupament si la imatge Docker és de producte és el següent.

  1. L’equip aplicatiu prepara els objectes de Kubernetes per desplegar-los: Deployment/StatefulSet, Service… i els puja a GitLab.
  2. Quan han pujat el codi, fan servir l’eina de CI/CD per construir i distribuir la imatge Docker aplicativa al nostre Docker Registry.
  3. Abans de desplegar l’aplicació, des de l’eina, configuren l’entorn on es desplega l’aplicació: secrets, fitxers de configuració, URL públiques…
  4. Finalment, amb l’entorn configurat, fan servir l’eina de CI/CD per desplegar la versió de l’aplicació.

El flux de treball dels equips de desenvolupament si la solució es basa en una imatge del catàleg intern és el següent.  

  1. L’equip aplicatiu puja el codi de la seva aplicació a GitLab.
  2. Preparen un Dockerfile que construirà el binari aplicatiu, a més de preparar el runtime del contenidor.
  3. Construeixen la imatge Docker aplicativa fent servir les eines de distribució.
  4. Preparen els objectes de Kubernetes: Deployment/StatefulSet, Service… i els pugen a GitLab.
  5. Abans de desplegar l’aplicació, des de l’eina, configuren l’entorn on es desplega l’aplicació: secrets, fitxes de configuració, URL públiques…
  6. Finalment, amb l’entorn configurat, es fan servir l’eina de CI/CD per desplegar la versió de l’aplicació.

La diferència entre una solució i l’altra es troba en què si es tracta d’una imatge de producte no cal codificar un DockerFile que prepari el runtime aplicatiu, ja que l’ofereixen com a solució de producte.

Aplicacions al núvol amb PaaS i CaaS

Comparació entre CaaS i PaaS en desplegament i gestió de vulnerabilitats

Després de veure quines implicacions té l’ús de cadascun dels models de desplegament, el CaaS pot resultar el més atractiu perquè dona l’oportunitat de tenir més control sobre el desplegament de l’aplicació en Kubernetes en haver de codificar-lo. La part negativa és que l’equip aplicatiu també és responsable de la imatge Docker, per la qual cosa qualsevol vulnerabilitat que detecti Seguretat s’ha d’arreglar o gestionar amb el proveïdor de la solució Docker de producte.

Pel que fa al PaaS, el benefici que té és que l’equip aplicatiu no necessita tenir coneixements en profunditat de Kubernetes perquè l’aplicació es desplegui i es pugui centrar completament en el codi. A més, l’apedaçat i la resolució de vulnerabilitats respecte de la imatge és responsabilitat de l’equip que proporciona la solució PaaS.


tags:

Comparteix:

Segueix llegint...