Ir al contenido principal
BlogRedesUtilice una VLAN o VPC para proteger su aplicación con una arquitectura de tres niveles

Utilice una VLAN o VPC para proteger su aplicación con una arquitectura de tres niveles

La arquitectura de tres niveles utiliza un nivel de datos, otro de aplicación y otro de presentación.

Aislar su red en una VPC tiene importantes ventajas de seguridad, como permitir la colaboración privada y almacenar la información sensible adecuadamente.

En el lado del desarrollo, el aislamiento de la red también permite desplegar aplicaciones web de varios niveles. La jerarquización de la aplicación permite segmentar las capas con y sin acceso público a Internet. Esto se utiliza a menudo para aislar la capa de base de datos de la Internet pública, al tiempo que permite que los parches y las actualizaciones de software se extraigan de una capa superior en lugar de la Internet pública directamente. Además de disminuir la superficie de ataque, esto puede permitir despliegues multiregión.

Existen numerosas formas de ejecutar múltiples capas, pero normalmente se puede confiar en unas pocas formas básicas que maximizan la escalabilidad, la seguridad y la fiabilidad. Uno de los diseños más habituales es la arquitectura de tres capas, especialmente popular en entornos basados en la nube.

Una aplicación de tres niveles consta de tres capas diferentes que residen en servidores distintos y pueden desarrollarse y administrarse con un alto grado de independencia. Estas partes son:

  1. Presentación: La interfaz externa que gestiona la comunicación entre el usuario y la aplicación, que suele consistir en un servidor web con HTML y código de desarrollo web adjunto.
  2. Aplicación: Una aplicación personalizada que proporciona la lógica de negocio necesaria y pega la aplicación.
  3. Datos: Un sistema de base de datos para almacenar y recuperar los datos utilizados con la aplicación.

Estos tres niveles funcionan como servicios independientes que se comunican a través de API basadas en red. Los problemas de seguridad y rendimiento a menudo exigen que los niveles de aplicaciones y datos residan en la misma red local detrás de un cortafuegos común, pero la separación de cada capa ofrece la posibilidad de desplegar cada componente en hardware diferente o incluso en ubicaciones físicas distintas. La flexibilidad aquí dependerá drásticamente de los requisitos de su aplicación.

El siguiente diagrama muestra una vista real de una aplicación web básica de tres niveles. El servidor web en el nivel de presentación proporciona una interfaz a un usuario que trabaja en una ventana del navegador. En el extremo opuesto, el nivel de datos adopta la forma de una base de datos, que puede ser un único sistema o un clúster presentado a la red como una única entidad. Las opciones de código abierto más populares para el nivel de base de datos incluyen MySQL, MariaDB y PostgreSQL para SQL y MongoDB y Cassandra para NoSQL.

Figura 1: La arquitectura de tres niveles divide una aplicación web en un nivel de presentación, un nivel de aplicación y un nivel de datos.

Entre el servidor web y la base de datos se encuentra el nivel de aplicación, donde probablemente pasará la mayor parte de su tiempo de codificación. La capa de Aplicación contiene el código personalizado y la lógica de negocio que necesitas para que la aplicación cumpla sus objetivos. En el front-end, el servidor web envía consultas al nivel de aplicación. La capa de aplicación responderá al servidor web y éste dará formato a los datos y los presentará al usuario. En el back-end, el nivel de aplicación consulta la base de datos, recibe los datos y los procesa para añadir inteligencia y conocimiento al usuario.

Como ejemplo muy sencillo, la base de datos podría almacenar los registros de ventas de una empresa. El usuario introduce una solicitud para recibir las ventas medias diarias de un producto específico en una ubicación específica durante un intervalo de tiempo determinado. El servidor web envía la solicitud al nivel de aplicación. El nivel de aplicación formula una consulta a la base de datos, recibe los datos sin procesar, realiza los cálculos necesarios y devuelve la respuesta al servidor web.

Figura 2: Un usuario solicita un conjunto de información a la capa de presentación, que la capa de aplicación traduce en una consulta a la base de datos.

No existe una solución conveniente para el nivel de aplicación que sea equivalente a, por ejemplo, un servidor web Apache para el nivel de presentación o una base de datos MongoDB para el nivel de datos. En su lugar, el código personalizado se suele escribir en Python, PHP o Ruby para el nivel de aplicación. Sin embargo, existen algunos marcos de programación que te ayudarán a escribir el código de forma más eficiente, como Django (para Python), Rails (para Ruby) y Symfony (para PHP).

El nivel de aplicación podría, en teoría, combinarse con el nivel de presentación proporcionando al servidor web el código necesario para realizar consultas directas a una base de datos, pero esto sería poco práctico para la lógica empresarial más compleja y anularía muchas de las ventajas de segmentar las aplicaciones.

Una de las ventajas más importantes es el aumento de la seguridad con una menor superficie de ataque. Como se muestra en la Figura 1, una solución de tres niveles minimiza la parte de la aplicación que debe residir frente al cortafuegos. El servidor web se comunica a través de una dirección segura API. El resto de la actividad se encuentra detrás del cortafuegos y, lo que es más importante, en un espacio de direcciones privado al que no se puede acceder desde Internet. Las inyecciones SQL, en particular, son una de las vulnerabilidades más comunes y una de las más destructivas. Pueden evitarse aislando y protegiendo toda comunicación directa con la base de datos.

Otra ventaja de la aplicación en tres niveles es la fiabilidad. Una interrupción en un nivel tiene menos probabilidades de afectar a los otros niveles cuando cada nivel se ejecuta en un servidor independiente o se separa aún más en hardware diferente o en otro centro de datos por completo. Esto también nos da posibilidades de escalabilidad. Como los componentes funcionan de forma independiente, pueden crecer independientemente. Por ejemplo, si el acceso a la base de datos es un cuello de botella para el rendimiento, se pueden añadir nodos al clúster de base de datos con una interrupción mínima del funcionamiento general.

Un enfoque de tres niveles también puede optimizar el proceso de desarrollo. Las API que conectan los niveles separan los componentes de forma que se fomenta la eficiencia en la división del trabajo. Los desarrolladores y administradores web pueden operar y mantener el servidor web, mientras que los desarrolladores y administradores de bases de datos pueden ejecutar el sistema de bases de datos. En el medio, los especialistas en el marco que está utilizando para el nivel de aplicación pueden centrar su atención en el código de la aplicación. En un escenario DevOps, por ejemplo, los desarrolladores de aplicaciones pueden crear y probar una nueva versión del código de la aplicación fuera de línea, cambiándolo fácilmente con un efecto mínimo en las operaciones.

Si estás empezando a crear una aplicación web, considera una arquitectura de tres niveles. En los entornos actuales de contenedores y en la nube, es fácil separar los componentes en diferentes sistemas, y verás recompensados tus esfuerzos con una aplicación más fiable, más segura y más escalable.

Empiece a utilizar Linode hoy mismo para crear sus capas de aplicación.

Recursos: Primeros pasos con las VLAN | Aplicaciones entre centros de datos

Linode Soluciones: VLANs | Bases de datos gestionadas


Comentarios (1)

  1. Author Photo

    You can eliminate the “NAT” in Figure 1. It’s not needed in an IPv6 world. A proper firewall will suffice.

Dejar una respuesta

Su dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *.