¿Cuál es el beneficio real de una arquitectura de tres niveles?

2

Según el título, ¿cuál es la ventaja real de usar una arquitectura de tres niveles, donde la interfaz de usuario en una capa, la segunda capa para la aplicación y la tercera capa para la base de datos? Puedo entender que, por ejemplo, si la interfaz de usuario está comprometida, los piratas informáticos tienen otras dos capas para piratear para obtener los datos. Sin embargo, en otro punto de vista, ¿no serían más lentas mis aplicaciones si mi base de datos está en otro servidor? Además, ¿una arquitectura de tres niveles siempre debe estar protegida por un firewall entre cada capa? En general, creo que si una capa está comprometida, significa que está comprometida ... sin importar qué tan bien proteja sus sistemas.

    
pregunta Pang Ser Lark 26.08.2015 - 06:57
fuente

2 respuestas

4

Una arquitectura de tres niveles no significa necesariamente que todos los niveles estén en servidores o procesos diferentes. Es más una cosa que abstraiga las partes de su aplicación que les permite interactuar solo con interfaces claramente definidas. En su caso, significa mantener la lógica de almacenamiento (base de datos) separada de la lógica de negocios (aplicación) y de mostrar de los resultados (HTML, CSS, ...). Esta separación es principalmente una separación lógica que permite una separación física más fácil si la necesita. La separación se puede hacer dentro de procesos (es decir, diferentes objetos para los niveles), o incluso diferentes sistemas.

La separación entre estas partes no se realiza principalmente debido a la seguridad, sino para que pueda comprender y administrar la aplicación más fácilmente. Hace posible realizar cambios en una capa sin muchos cambios en la otra capa, es decir, podría escalar la base de datos o incluso cambiar la base de datos subyacente sin mucho impacto en la capa de aplicación. O podría tener diferentes UI (web, aplicación móvil ...) idealmente sin cambiar la capa de aplicación y la base de datos.

Por supuesto, este tipo de separación también puede ser útil para la seguridad. Las interfaces claramente definidas entre los niveles facilitan la auditoría de la aplicación. También podría detectar y disuadir mejor los posibles ataques si realmente sabe cómo deben interactuar las partes entre sí. En resumen, la aplicación se puede hacer más robusta con menos esfuerzo, lo que ayuda a escalar, pero también ayuda en seguridad. Y si los diferentes niveles son en realidad procesos separados (que suele ser el caso con al menos un servidor web y una base de datos), podría colocarlos en diferentes ámbitos de seguridad, es decir, diferentes cuentas de usuario, diferentes contenedores, VM o incluso diferentes servidores. Esto ayuda a mantener el sistema más robusto y menos atacable también.

    
respondido por el Steffen Ullrich 26.08.2015 - 07:23
fuente
1

Hoy en día, el patrón Model-View-Controller se ha convertido en mucho más de lo que originalmente se pretendía que fuera:

Se utiliza para, por ejemplo, botones en una aplicación, la intención era desacoplar la Vista del Modelo y el Controlador, haciendo que el diseño, el comportamiento y la lógica del botón sean intercambiables, lo que resulta en una orientación a objetos , dinámica

Hoy en día se ha convertido en mucho más que un patrón de diseño de mejores prácticas para implementar cosas como botones en una aplicación.

Volviendo a su pregunta, creo que el beneficio de seguridad del uso del patrón MVC para el diseño de capas de aplicación es básicamente que tiene un diseño general mucho más claro, lo que hace que gran parte del potencial sea seguro errores relacionados imposibles.

por ejemplo no es posible hacer que el Controlador haga nada para lo que no fue creado al poder manipular la Vista, dado que el MVC está implementado correctamente.

    
respondido por el Gewure 26.08.2015 - 11:41
fuente

Lea otras preguntas en las etiquetas