Modelo de Aplicación

Compose

Nota: (Compose permite crear una aplicación en un contenedor o contenedores independiente de la plataforma. Este diseño es un conjunto de contenedores que funciona compartiendo recursos y las comunicaciones necesarias).

 

Compose-(Modelo de Aplicación)

-. Los componentes de una aplicación se llama (Servicios) . Un Servicio es un concepto abstracto implementado en plataformas mediante la ejecución de la misma imagen de contenedor la cual pude usarse la veces que se necesite .

-. Las comunicaciones entre los Servicios se realizan por medio de (Redes). Estas Redes establecer una ruta-IP entre contenedores dentro de Servicios conectados entre sí por supuesto son abstracción. Las opciones de Redes específicas de plataforma de bajo nivel se agrupan en la definición de Red.

-. Los Servicios de almacenar y compartir datos persistentes en (Volúmenes). Estos datos son tan persistentes como un montaje de sistema de archivos de alto nivel con opciones globales. Los detalles de implementación específicos de la plataforma real se agrupan en la definición de Volúmenes y se pude implementarse parcialmente en algunas plataformas.

-. Algunos Servicios requieren datos de (Configuración), la especificación define un concepto dedicado: “Configs”. Desde el contenedor de Servicios, las configuraciones son comparables a los Volúmenes, son archivos montados en el contenedor. Pero la definición real implica servicios y recursos de plataforma distintos.

Nota : cuando hablo de Plataforma hago referencias a Mac – Windows – Linux .

-. Un Secreto es un tipo específico de datos de configuración para datos confidenciales que no deben exponerse sin consideraciones de seguridad. Los Secretos están disponibles para los Servicios como archivos montados en los contenedores, pero los recursos específicos de la plataforma para proporcionar datos confidenciales son lo suficientemente específicos para darle una definición dentro de la especificación de Compose.

-. La diferenciación entre (Volúmenes) , (Configuraciones) y (Secreto). permite que las implementaciones ofrezcan una abstracción comparable a nivel de Servicio, pero cubran la configuración específica de recursos de plataforma adecuados para usos de datos bien identificados.

-. Un Proyecto es una implementación individual de una especificación de aplicación en una plataforma. El nombre de un Proyecto se usa para agrupar recursos y aislarlos de otras aplicaciones u otras instalaciones de Compose con parámetros distintos. Una implementación de Compose que crea recursos en una plataforma se prefijar los nombres de los recursos por proyecto y establecer la etiqueta com.docker compose.project.

-. El nombre del proyecto se puede establecer explícitamente mediante un name atributo de nivel superior. Compose ofrecer una forma de establecer un nombre de proyecto personalizado y anule este nombre, de modo que el mismo compose.yaml se pueda implementar dos veces en la misma infraestructura, sin cambios, simplemente pasando un nombre distinto.

Nota: Pasemos a ilustra los conceptos de las especificación de Compose, consiste en una aplicación Frotend y un service backend.

Frontend:

  • desarrollo del lado del cliente” se refiere a la práctica de producir HTML, CSS y JavaScript. Estos tres elementos se encargan de dar forma a la parte frontal de un sitio web o aplicación. Esto incluye los fondos, colores, texto, animaciones o efectos. Frontend es la parte de un programa o dispositivo a la que un usuario puede acceder directamente. Son todas las tecnologías de diseño y desarrollo web que corren en el navegador y que se encargan de la interactuar con el usuario.

Backend:

  • desarrollo del lado servidor” el encargado de procesar toda la información que alimenta a un frontend. Se compone de marcos, bases de datos o códigos. Para que un sitio web o aplicación funcionen, se requiere mucha información y datos que se almacenan en “la parte trasera” de un sistema informático. Backend es la capa de acceso a datos de un software o cualquier dispositivo, que no es directamente accesible por los usuarios. Contiene la lógica de la aplicación que maneja dichos datos. El Backend también accede al servidor, es una aplicación especializada que entiende la forma en la que el navegador hace solicitudes.

Nota: La interfaz (Frontend) se configura en tiempo de ejecución con un archivo de configuración HTTP administrado por la infraestructura, que proporciona un nombre de dominio externo y un certificado de servidor HTTPS inyectado por el almacén como Secreto seguro de la plataforma.

Nota: El backend almacena datos en un volumen persistente.

Nota: Ambos servicios se comunican entre sí en una red de nivel posterior aislada, mientras que el frontend también está conectado a una red de nivel frontal y expone el puerto 443 para uso externo. Para saber mas consultar el Post (Compose-Networking).

docker-compose.yml

  • services:
  •    frontend:
  •       image: awesome/webapp
  •       ports:
  •          – «443:8043»
  •       networks:
  •          – front-tier
  •          – back-tier
  •       configs:
  •          – httpd-config
  •       secrets:
  •          – server-certificate
  •    backend:
  •       image: awesome/database
  •       volumes:
  •          – db-data:/etc/data
  •       networks:
  •          – back-tier
  •    volumes:
  •       db-data:
  •          driver: flocker
  •          driver_opts:
  •             size: «10GiB»
  •    configs:
  •       httpd-config:
  •          external: true
  •    secrets:
  •       server-certificate:
  •          external: true
  •    networks:
  • # La presencia de estos objetos es suficiente para definirlos.
  •    front-tier: {}
  •    back-tier: {}

Comentemos docker-compose.yml:

  • Dos servicios, respaldados por imágenes de Docker: webapp y database
  • Un secreto (certificado HTTPS), inyectado en la interfaz
  • Una configuración (HTTP), inyectada en el frontend
  • Un volumen persistente, adjunto al backend
  • Dos redes

Nota: Este docker-compose.yml ilustra la distinción entre volúmes, configs y secrets. Si bien todos ellos están expuestos a contenedores de services como archivos o directorios montados, solo se puede configurar un volumes para acceso de lectura y escritura. Los secrets y las configs son de solo lectura. La configuración del volumes le permite seleccionar un controlador de volumes y pasar las opciones del controlador para ajustar la administración del volumes de acuerdo con la infraestructura real. Las configuraciones y los secrets se basan en los services de la plataforma y se declaran external porque no se administran como parte del ciclo de vida de la aplicación: la implementación de Compose utilizará un mecanismo de búsqueda específico de la plataforma para recuperar valores de tiempo de ejecución.

 

Recopilando:

Este es un ejemplo del modelo de aplicación que toca los services , network , volumes , configs , secrets y un marco de software, o framework, (es una plataforma para desarrollar aplicaciones de software) como Frontend: “desarrollo del lado del cliente” y Backend: “desarrollo del lado servidor”.

 

  • Referencias: Entorno-Moreluz
  • Referencias: docs.docker