Fundamentos de Arquitectura de Software, Concurrencia y Virtualización
Clasificado en Informática
Escrito el en
español con un tamaño de 4,38 KB
Docker y Virtualización
Una imagen Docker es una plantilla estática con la aplicación y sus dependencias, mientras que un contenedor es una instancia en ejecución de dicha imagen. Docker permite empaquetar aplicaciones para garantizar su funcionamiento consistente en distintos entornos.
- Dockerfile: Define la construcción de la imagen mediante instrucciones como
FROM,COPY,RUNyCMD. - Docker Compose: Facilita la gestión de múltiples contenedores mediante un archivo
docker-compose.yml. - Volúmenes: Permiten la persistencia de datos y el intercambio de archivos entre el host y el contenedor.
La arquitectura de Docker se compone de cliente, daemon, imágenes, contenedores y registries. A diferencia de las máquinas virtuales (VM), que virtualizan hardware completo y ejecutan su propio sistema operativo, los contenedores comparten el kernel del host, lo que los hace más livianos y rápidos.
Seguridad Informática
La seguridad se basa en cuatro pilares: confidencialidad, integridad, disponibilidad y autenticación. Las amenazas principales incluyen:
- Interrupción: Ataque a la disponibilidad (ej. DoS).
- Intercepción: Ataque a la confidencialidad (ej. captura de contraseñas).
- Modificación: Ataque a la integridad (ej. alteración de archivos).
- Fabricación: Ataque a la autenticidad (ej. transacciones falsas).
Deadlock (Interbloqueo)
Un deadlock ocurre cuando un conjunto de procesos queda bloqueado al esperar recursos retenidos por otros procesos del mismo conjunto. Las cuatro condiciones necesarias son:
- Exclusión mutua: Recursos no compartibles.
- Retención y espera: Procesos que retienen recursos mientras esperan otros.
- No apropiación: Los recursos no pueden ser quitados por la fuerza.
- Espera circular: Cadena de procesos esperando recursos entre sí.
Programación Concurrente en Ada
En Ada, una task es una unidad de ejecución concurrente. El Main arranca automáticamente. Las tareas pueden sincronizarse mediante entries y la instrucción accept, bloqueándose hasta que se invoque la tarea correspondiente.
Microservicios vs. Monolito
La arquitectura monolítica es simple al inicio pero difícil de escalar. Los microservicios, por el contrario, son unidades independientes que permiten escalabilidad y despliegue individual, aunque aumentan la complejidad de la red y la consistencia de datos. Un API Gateway actúa como punto de entrada centralizado para gestionar peticiones, seguridad y balanceo.
Cloud Computing y Virtualización
El Cloud Computing ofrece servicios bajo demanda:
- IaaS: Infraestructura (servidores, redes).
- PaaS: Plataforma de desarrollo.
- SaaS: Aplicaciones listas para usar.
Sincronización: Semáforos y Monitores
Para gestionar regiones críticas, se utilizan herramientas de sincronización:
- Semáforos: Utilizan operaciones atómicas
P(espera) yV(señal). - Monitores: Encapsulan variables y procedimientos, garantizando exclusión mutua automática y mayor claridad que los semáforos.
Ejemplo de Semáforo en Ada
with Ada.Text_IO; use Ada.Text_IO;
procedure Main is
task type Semaforo is
entry Iniciar(Valor : in Integer);
entry P;
entry V;
end Semaforo;
task body Semaforo is
Disponible : Integer := 0;
begin
accept Iniciar(Valor : in Integer) do
Disponible := Valor;
end Iniciar;
loop
select
when Disponible > 0 =>
accept P;
Disponible := Disponible - 1;
or
accept V;
Disponible := Disponible + 1;
end select;
end loop;
end Semaforo;
S : Semaforo;
begin
S.Iniciar(3);
end Main;