ARQUITECTURA DE APLICACIONES WEB

Download Report

Transcript ARQUITECTURA DE APLICACIONES WEB

ARQUITECTURA DE
APLICACIONES WEB
APLICACIONES WEB
Aplicaciones que los usuarios pueden utilizar
accediendo a un servidor web a través de
Internet o de una intranet mediante un
navegador.
Es una aplicación software que se codifica en
un lenguaje soportado por los navegadores
web en la que se confía la ejecución al
navegador
Existen aplicaciones como los webmails, wikis,
weblogs, tiendas en línea son ejemplos bien
conocidos de aplicaciones web.
Una página Web puede contener elementos
que permiten una comunicación activa entre
el usuario y la información.
Por ejemplo rellenar y enviar formularios,
participar en juegos diversos y acceder a
gestores de base de datos de todo tipo.
Una aplicación Web es una extensión
dinámica de la web o una aplicación de
servidor.
Existen 2 tipos de aplicaciones Web
• Orientada a la presentación
• Orientada al servicio
Orientada a la presentación
• Genera paginas web interactivas que
contienen varios tipos de lenguaje de marca
(HTML, XML, etc.) y contenido dinámico en
respuesta a peticiones.
Orientada al servicio
• Estas paginas implementan el punto final del
servicio web.
• Las aplicaciones orientadas a la presentación
frecuentemente son clientes de las
aplicaciones web orientadas al servicio.
La iteración entre un cliente Web y una aplicación Web.
1. cliente envía una petición HTTP al servidor web
2. Las tecnologías Java server convierten la
petición un objeto HTTPServetRequest
3. Esta petición es deliberada a un componente Web, el
cual puede interactuar con JavaBeans y otros para
generar un contenido dinámico
4. El componente web puede generar un objeto
HTTPServletResponse
5. El servidor web convierte este objeto en una
respuesta HTTP y es enviada a su cliente.
Una Arquitectura define: un conjunto de
elementos, conectores, restricciones y un
sistema de control que caracterizan a un
sistema o a una familia de sistemas.
ARQUITECTURA DE DOS CAPAS
La WWW está basado en el modelo Cliente / Servidor.
• El Cliente principal en el WWW son los browsers o
navegadores que solicitan información al Servidor.
• El Servidor son los Servidores Web que proporcionan
documentos y contenidos multimedia a los clientes a
través de la red
• Esta arquitectura consiste básicamente en un
cliente que realiza peticiones a otro programa
(el servidor) que le da respuesta.
• La separación entre cliente y servidor es una
separación de tipo lógico, donde el servidor no se
ejecuta necesariamente sobre una sola máquina
ni es necesariamente un sólo programa.
• Los tipos específicos de servidores incluyen los
servidores web, los servidores de archivo, los
servidores del correo, etc. Mientras que sus
propósitos varían de unos servicios a otros, la
arquitectura básica seguirá siendo la misma
• La red cliente-servidor es aquella red de comunicaciones en
la que todos los clientes están conectados a un servidor, en
el que se centralizan los diversos recursos y aplicaciones
con que se cuenta; y que los pone a disposición de los
clientes cada vez que estos son solicitados.
Esto significa que todas las gestiones que se realizan se
concentran en el servidor, de manera que en él se disponen
los requerimientos provenientes de los clientes que tienen
prioridad, los archivos que son de uso público y los que son
de uso restringido, los archivos que son de sólo lectura y los
que, por el contrario, pueden ser modificados, etc. Este tipo
de red puede utilizarse conjuntamente en caso de que se
este utilizando en una red mixta
En la arquitectura C/S el remitente de una solicitud es conocido como cliente. Sus características son:
- Es quien inicia solicitudes o peticiones, tienen por tanto un papel activo en la comunicación
- Espera y recibe las respuestas del servidor.
- Por lo general, puede conectarse a varios servidores a la vez.
- Normalmente interactúa directamente con los usuarios finales mediante una interfaz gráfica de
usuario.
- Al contratar un servicio de redes , se tiene que tener en la velocidad de conexión que le otorga al
cliente y el tipo de cable que utiliza , por ejemplo : cable de cobre ronda entre 1 ms y 50 ms.
Al receptor de la solicitud enviada por el cliente se conoce como servidor. Sus características son:
-Al iniciarse esperan a que lleguen las solicitudes de los clientes, desempeñan entonces un papel
pasivo en la comunicación
-Tras la recepción de una solicitud, la procesan y luego envían la respuesta al cliente.
- Por lo general, aceptan conexiones desde un gran número de clientes (en ciertos casos el número
máximo de peticiones puede estar limitado).
- No es frecuente que interactúen directamente con los usuarios finales
Ventajas
• Centralizacion del control
• Escalabilidad
• Facil mantenimiento
Desventajas:
• Congestión del trafico
• El cliente no dispone de los recursos que
pueden existir en el servidor
Ejemplos
• wikipedia
• Juegos on line
ARQUITECTURA DE 3 CAPAS
Arquitectura en 3 capas
• Capa de datos
• Capa de negocios
• Capa de presentación
La WEB
• Al conectarnos a internet estamos navegando
en 3 capas.
– Al abrir un formulario web de inscripción (capa de
presentación)
– Después de enviar la información esta es
verificada (capa de negocios).
– Finalmente la información es grabada en una base
de datos (capa de datos).
Ejemplo
Capa de datos
Capa de Negocio
Capa de Presentación
Capa de datos
•
•
•
•
Base de datos
Tablas
Procedimientos almacenados
Componentes de datos
Capa de datos Microsoft
•
•
•
•
•
ADO .NET
SQL SERVER 20000
Procedimientos almacenados
Componentes (c#, vb, c++, j#)
XML
Capa de Negocio
•
•
•
•
Reglas del negocios
Validaciones
Cálculos
Flujos y procesos
Capa de Negocios Microsoft
• Lenguajes de Componentes (c#, vb, c++, j#)
– Componentes Locales
– Componentes Web (Servicios web)
• Comunicación entre componentes utilizando
el SOAP y XML
Web Services
• Permiten publicar componentes de
negocios(Web Services) en un servidor web.
• Estas componentes pueden ser llamadas
desde otros servidores o clientes utilizando
SOAP.
• Simple Object Access Protocol (SOAP) es un
protocolo para el intercambio de la
información basado en HTTP y XML
Capa de Presentación
• Formularios
• Informes
• Respuestas al usuario
Capa de Presentación Microsoft
•
•
•
•
•
•
•
ASP .NET
ASP
XML, XSL
HTML
JAVASCRIPT , VBSCRIPT
Vb Form
Word, Excel
Extensible Markup Language (XML)
• Meta Lenguaje de Marcación es un lenguaje
estandar similar al html, que permite la
comunicación entre los sistemas de
información.
• Tiene una estructura de árbol.
• Se recomienda usarlo en la comunicación
entre las componentes de Presentación con
las de Negocios
Ejemplo
DB
COMPONENTES
DATOS
C# o VB .NET
HTML
FORMULARIO
JAVASCRIPT
XML
INFORMACIÓN
COMPONENTES
NEGOCIO
C# o VB .NET
WEB SERVICE
PRESENTACION
ASPX
XSL
HOJA DE ESTILO
XML
INFORMACIÓN
PROCESADA
LENGUAJES DE PROGRAMACION
DEL LADO DEL CLIENTE
Un lenguaje del lado cliente es totalmente
independiente del servidor, lo cual permite
que la página pueda ser albergada en
cualquier sitio.
Para que la pagina se pueda ver bien es
necesario tener instalados los plug-in
adecuados.
.
El navegador es una especie de aplicación
capaz de interpretar las órdenes recibidas en
forma de código HTML fundamentalmente y
convertirlas en las páginas que son el
resultado de dicha orden.
Los lenguajes de lado cliente (entre los cuales
no sólo se encuentra el HTML sino también el
Java y el JavaScript los cuales son simplemente
incluidos en el código HTML) son aquellos que
pueden ser directamente "digeridos" por el
navegador y no necesitan un pretratamiento.
HTML
El lenguaje llamado HTML indica al navegador
donde colocar cada texto, cada imagen o cada
video y la forma que tendrán estos al ser
colocados en la página.
Este lenguaje consta de etiquetas que tienen
esta forma <B> o <P>. Cada etiqueta significa
una cosa.
JAVASCRIPT
Javascript es un lenguaje de programación utilizado
para crear pequeños programitas encargados de
realizar acciones dentro del ámbito de una página
web.
Se trata de un lenguaje de programación del lado del
cliente, porque es el navegador el que soporta la
carga de procesamiento. Su uso se basa
fundamentalmente en la creación de efectos
especiales en las páginas y la definición de
interactividades con el usuario.
APPLETS DE JAVA
Se trata de pequeños programas hechos en Java, que
se transfieren con las páginas web y que el
navegador ejecuta en el espacio de la página.
• Los applets de Java están programados en Java y
precompilados.
La principal ventaja consiste en que son
mucho menos dependientes del navegador
que los scripts en Javascript, incluso
independientes del sistema operativo del
ordenador donde se ejecutan.
Además, Java es más potente que Javascript,
por lo que el número de aplicaciones de los
applets podrá ser mayor
Como desventajas en relación con Javascript
cabe señalar que los applets son más lentos
de procesar y que tienen espacio muy
delimitado en la página donde se ejecutan, es
decir, no se mezclan con todos los
componentes de la página ni tienen acceso a
ellos.
VBScript
• Es un lenguaje de programación de scripts del
lado del cliente, pero sólo compatible con
Internet Explorer.
• El funcionamiento de Visual Basic Script para
construir efectos especiales en páginas web
FLASH
Flash es una tecnología, y un programa, para
crear efectos especiales en páginas web. Con
Flash se hacen páginas dinámicas del lado del
cliente.
CSS
CSS, es una tecnología que nos permite crear
páginas web de una manera más exacta.
LENGUAJES DE PROGRAMACIÓN
DEL LADO DEL SERVIDOR
• Un lenguaje del lado del servidor es aquel que
se ejecuta en el servidor web, justo antes de
que se envíe la página a través de Internet al
cliente. Las páginas que se ejecutan en el
servidor pueden realizar accesos a bases de
datos, conexiones en red, y otras tareas para
crear la página final que verá el cliente
Son aquellos lenguajes que son reconocidos,
ejecutados e interpretados por el propio
servidor y que se envían al cliente en un
formato comprensible para él.
CGI
Es el sistema más antiguo que existe para la
programación de las páginas dinámicas de
servidor. Actualmente se encuentra un poco
desfasado por la dificultad con la que se
desarrollan los programas y la pesada carga
que supone para el servidor que los ejecuta.
Los CGI se escriben habitualmente en el
lenguaje Perl, C, C++ o Visual Basic.
PEARL
Perl es un lenguaje de programación
interpretado. Esto quiere decir que el código
de los scripts en Perl no se compila sino que
cada vez que se quiere ejecutar se lee el
código y se pone en marcha interpretando lo
que hay escrito.
ASP.net
ASP (Active Server Pages) es la tecnología
desarrollada por Microsoft para la creación de
páginas dinámicas del servidor. ASP se escribe
en la misma página web, utilizando el lenguaje
Visual Basic Script o Jscript (Javascript de
Microsoft).
PHP
PHP es el acrónimo de Hipertext Preprocesor.
Es un lenguaje de programación del lado del
servidor gratuito e independiente de
plataforma, rápido, con una gran librería de
funciones y mucha documentación.
JAVA SERVER PAGES
• Es una tecnología orientada a crear páginas
web con programación en Java.
• Con JSP se hacen aplicaciones web que se
ejecutan en variados servidores web, de
múltiples plataformas, ya que Java es en
esencia un lenguaje multiplataforma. Por
tanto, JSP se escriben con editores
HTML/XML habituales.
AMBIENTES PARA EL DESARROLLO
DE APLICACIONES WEB
• Un entorno de desarrollo integrado (IDEIntegrated Development Environment -) es una
aplicación de software que ofrece servicios
integrales a los programadores de
computadoras para el desarrollo de software
Un IDE normalmente se compone de:
•
•
•
•
•
•
Un editor de texto
Un compilador.
Un intérprete.
Herramientas de automatización.
Un depurador.
Posibilidad de ofrecer un sistema de control de
versiones.
• Factibilidad para ayudar en la construcción de
interfaces gráficas de usuario.
Para PHP se tienen las siguientes herramientas
•
•
•
•
Zend Studio
Open Komodo Project
Eclipse + phpEclipse
etc
Dreamweber es una herramienta que permite
trabajar con
•
•
•
•
•
•
•
ASP JavaScript
ASP VBScript
ASP.NET C#
ASP.NET VB
COLDFUSION
JSP
PHP MySQL
Joomla es un Sistema de Gestión de
Contenidos (CMS) que le ayuda a construir
sitios web y otras aplicaciones online
potentes.
Entre los diferentes usos que la gente da a Joomla!
están:
•
•
•
•
•
•
•
•
•
•
Webs corporativas o portales
Comercio electrónico
Pequeños sitios de negocios
Webs de organizaciones o ONGs
Aplicaciones gubernamentales
Intranets y extranets corporativas
Webs de escuelas o agrupaciones
Páginas personales o familiares
Portales de comunidades
Revistas y periódicos
• WordPress es un sistema de gestión de contenido
enfocado a la creación de blogs (sitios web
periódicamente actualizados). Desarrollado en PHP y
MySQL.
METODOLOGIA PARA EL
DESARROLLO DE APLICACIONES
WEB
Las aplicaciones Web exigen funcionalidad,
confiabilidad, usabilidad y eficiencia entre
otras características de calidad.
La utilidad y crecimiento de las aplicaciones
Web genera grandes desafíos como son los de
controlar y mejorar su calidad.
Aunque las aplicaciones Web están creciendo
rápidamente tanto en uso como en aceptación, son
las mismas metodologías de desarrollo las que no
tratan de manera adecuada y profunda los atributos
de calidad. Estas situaciones traen como
consecuencia que los atributos de calidad de los
sistemas basados en la Web tales como la
funcionalidad, confiabilidad, mantenibilidad,
usabilidad y portabilidad no se les da la debida
consideración que se merecen durante el proceso de
desarrollo.
• En la ingeniería software se denomina
aplicación web a aquellas aplicaciones que los
usuarios pueden utilizar accediendo a un
servidor web a través de Internet o de una
intranet mediante un navegador.
• Ingeniería Web es el proceso utilizado para
crear, implantar y mantener aplicaciones y
sistemas Web de alta calidad
Control y garantía de la calidad
•
•
•
•
•
•
Usabilidad
Funcionabilidad
Fiabilidad
Seguridad
Eficiencia
Mantenibilidad
Las actividades que forman parte del proceso son:
• Formulación identifica objetivos y establece el
alcance.
• Planificación genera la estimación del costo general
del proyecto, la evaluación de riesgos y el calendario
del desarrollo y fechas de entrega.
• Análisis especifica los requerimientos e identifica el
contenido.
• Modelado se compone de dos secuencias paralelas
de tareas. Una consiste en el diseño y producción del
contenido que forma parte de la aplicación. La otra,
en el diseño de la arquitectura, navegación e interfaz
de usuario.
• Generación de páginas se integra contenido,
arquitectura, navegación e interfaz para crear
estética o dinámicamente el aspecto más visible de
las aplicación, las páginas.
• Prueba busca errores a todos lo niveles: contenido,
funcional, navegacion, rendimiento, etc.
• Finalmente, el resultado es sometido a la evaluación
del cliente.
Hay cuatro aspectos importantes a tener en cuenta
en el desarrollo de tácticas de control de
configuración para la Web.
• Contenido: Considerando la dinamicidad con la que
el contenido se genera, es tarea compleja organizar
racionalmente los objetos que forman la
configuración y establecer mecanismos de control.
• Personal: Cualquiera realiza cambios. Hay mucho
personal no especializado que no reconoce la
importancia que tiene el control del cambio.
• Escalabilidad: Es común encontrar aplicaciones que
de un día para otro crecen considerablemente. Sin
embargo, las técnicas de control no escalan de forma
adecuada.
• Política: ¿Quién posee la información? ¿Quién
asume la responsabilidad y coste de mantenerla?
La Gestión del Proceso
En un proceso tan rápido como es el proceso de
Ingeniería Web, donde los tiempos de desarrollo y
los ciclos de vida de los productos son tan cortos por
la gestión es impresindible. Entre los aspectos que
añaden dificultad a la gestión destacamos:
• Alto porcentaje de contratación a terceros
• El desarrollo incluye una gran variedad de personal
técnico y no técnico trabajando en paralelo
• El equipo de desarrollo debe dominar aspectos tan
varidos como, software basado en componentes,
redes, diseño de arquitectura y navegación, diseño
gráfico y de interfaces, lenguajes y estándares en
Internet, test de aplicaciones Web, etc, lo que hace
que el proceso de búsqueda y contratación de
personal sea arduo.
• ¿Qué marca la diferencia?
A modo de breve resumen enumeramos las
siguientes diferencias:
• Confluencia de disciplinas: Sistemas de información,
ingeniería software y diseño gráfico que requiere
equipos multidisciplinares y polivalentes. Ciclos de
vida y tiempo de desarrollo muy cortos
• Cambio continuo:
• Necesidad de soluciones que permitan
flexibilidad y adaptación conforme el proyecto
cambia.
• Requisitos fuertes de seguridad, rendimiento y
usabilidad.
ASPECTOS DE SEGURIDAD
Las aplicaciones Web están más expuestas a
ataques.
Se pueden tener ataques en tres niveles:
– A la computadora del usuario.
– Al servidor.
– A la información en tránsito.
La seguridad en Web tiene 3 etapas primarias:
– Seguridad de la computadora del usuario.
– Seguridad del servidor Web y de los datos
almacenados ahí.
– Seguridad de la información que viaja entre el
servidor Web y el usuario
Seguridad de la computadora del usuario
• Los usuarios deben contar con navegadores y
plataformas seguras, libres de virus y
vulnerabilidades. También debe garantizarse
la privacidad de los datos del usuario.
Seguridad del servidor Web y de los datos
almacenados ahí
• Se debe garantizar la operación continua del
servidor, que los datos no sean modificados
sin autorización (integridad) y que la
información sólo sea distribuida a las personas
autorizadas (control de acceso).
• Seguridad de la información que viaja entre
el servidor Web y el usuario.
Garantizar que la información en tránsito no
sea leída (confidencialidad), modificada o
destruida por terceros. También es importante
asegurar que el enlace entre cliente y servidor
no pueda interrumpirse fácilmente
(disponibilidad).
Recomendaciones de seguridad.
Recomendaciones: Asegurar el
servidor
Se deben considerar los siguientes puntos:
• Asegurar el servidor en una forma
fundamental: el sistema operativo, ya sea por
medio de actualizaciones (parches) y
habilitando los mecanismos propios de la
plataforma.
• Garantizar la seguridad del servidor Web
propiamente (IIS, Apache, etc.)
• Auditar las aplicaciones que interactúan en las
dos capas anteriores (módulos, bibliotecas).
Recomendaciones: Asegurar la
información en tránsito
Esto se puede lograr por diversos medios:
• Asegurando la red físicamente (switches en
lugar de hubs).
• Esconder la información (esteganografía).
• Cifrar la información (criptografía) por medio
de algoritmos diversos (SSL, VPNs).
Recomendaciones: Asegurar el
equipo del usuario
Vulnerar el equipo del usuario quizás no tenga el
impacto de vulnerar el servidor, sin embargo
es un problema más difícil de erradicar (1
servidor, 5000 clientes):
• Aplicar actualizaciones (parches) al sistema
operativo.
• Uso de antivirus, firewalls personales.
• Educación de los usuarios.
Fallas de seguridad mas comunes
• Cross Site Scripting (XSS). Las vulnerabilidades de XSS
originalmente abarcaban cualquier ataque que permitiera
ejecutar código de "scripting” en el contexto de otro sitio web
• Injection Flaws
• Insecure Remote File Include
• Insecure Direct Object Reference
• Cross Site Request Forgery (CSRF)
• Information Leakage and Improper Error Handling
• Broken Authentication and Session Management
• Insecure Cryptographic Storage
• Insecure Communications
• Failure to Restrict URL access