0% encontró este documento útil (0 votos)
3 vistas49 páginas

Historia y Creación de Aplicaciones Web

Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
3 vistas49 páginas

Historia y Creación de Aplicaciones Web

Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

UD1: Conceptos

generales sobre
aplicaciones web
Índice

• Historia de la web
• Aplicaciones web: funcionamiento
• Creación de aplicaciones web
Historia de la
web
¿Quién es?
Tim Berners-
Lee
Orígenes de la web
• La web aparece por primera vez en 1989, cuando Berners-Lee
trabajaba en el CERN (Ginebra, Suiza).
• Nace principalmente con una orientación científica.
• A finales de 1990 había desarrollado ya un servidor web y un
navegador.
• La primera página web: [Link]
Qué es la web
• La web NO es Internet. No son sinónimos. La web funciona a través de
Internet.
• Hace referencia al conjunto de documentos y recursos que están
enlazados entre ellos a través de hipervínculos.
• Utiliza principalmente el HyperText Markup Language (HTML) como
herramienta para dar formato a los documentos.
Evolución de la web:
inicios

Primeras versiones y documentos con uso.


Funcionaba en un navegador desarrollado en y
para un ordenador NeXT.
A partir de 1991, se publica el software web,
incluyendo un navegador con una interfaz
básica para otros dispositivos.

Fuente: CERN
Evolución de la web: inicios
• Este mismo año empezaron a publicarse nuevos navegadores web,
especialmente orientados a X-Window (no es Windows).
• En 1993 se publicó el navegador Mosaic, que tuvo versiones para PC
y Mac. Además, se publicó de manera gratuita el código de la WWW.
• Esto popularizó la tecnología y en 1994 se celebraron dos
conferencias, alcanzando el hito de 10000 servidores y 10 millones
de usuarios.
• Ese mismo año se fundó el International World Wide Web Consortium
(W3C), que se encarga de desarrollar los estándares para la web.
Evolución de la web: Web 1.0
• Abarca el periodo entre 1989 (creación de la web) y 2004.

• Era principalmente unidireccional: del servidor al cliente.

• Diferentes versiones de HTML se publicaron en este periodo:

• HTML (inicial), HTML 2 (1995), HTML 3 (1997) y HTML 4 (1997)

• Aparición de directorios web (previos a los motores de búsqueda): Yahoo!.

• Introducción de CSS y Javascript en los diferentes navegadores.

• En 1995 aparece Apache como servidor web, que incluía módulos (Perl,
PHP) que permitían la creación de páginas dinámicas.
Evolución de la web: Web 2.0
• Periodo: 2004 – actualidad.
• No implica un cambio de estándares, sino de cómo se usa la web.
• La comunicación ya no es unidireccional: ahora los usuarios aportan
contenido.
• Popularización de plataformas como Google, Youtube, Facebook,
blogs, foros, e-commerce, etc.
• Incluye una nueva versión del estándar HTML (la quinta).
Evolución de la web: Web 3.0
• Hace referencia, principalmente, al concepto de web semántica.
• El objetivo es que la web pueda ser procesada por máquinas con el
fin de intercambiar información.
• Se requieren estándares diferentes a HTML (por ejemplo, RDF o XML).
• Refleja también la aspiración de crear una web descentralizada que
aproveche el desarrollo tecnológico y utilice herramientas como
blockchain o inteligencia artificial.
• Se trata de una idea en desarrollo y que se puede discutir si está
parcialmente implementada con IoT o servicios API.
Aplicaciones
web:
funcionamiento
Arquitectura cliente-servidor
• A nivel más básico, la web funciona a través del protocolo HTTP, que
opera sobre TCP/IP.
• Los clientes realizan peticiones HTTP a los servidores, que las
procesan y devuelven una respuesta.
Localización de los recursos
• Para poder acceder a los recursos de un servidor web y dirigir
correctamente la petición, los clientes necesitan conocer el
destinatario.
• Para ello, los recursos web se identifican mediante una URL (Uniform
Resource Locator).
• Normalmente, esta URL utiliza un dominio para identificar al servidor.
• Es necesario el uso de DNS (Domain Name System) para traducir de
nombres de dominio a direcciones IP.
Algunos riesgos o consideraciones
• Debemos tener en cuenta posibles sobrecargas de nuestro servidor
web.
• Este puede verse incrementado por diversas razones:
• Popularidad del sitio y cantidad de visitantes reales.
• Ataques de denegación de servicio (DDoS).
• Errores de configuración de software o fallos (tanto de software
como de hardware).
• Existen formas de reducir o mitigar estos problemas.
Escalabilidad
La escalabilidad es una propiedad que hace referencia a la posibilidad
de aumentar la carga y el tráfico de una aplicación o página web sin que
se produzcan fallos de funcionamiento.
Se puede dividir en dos tipos:
• Vertical
• Horizontal
Escalabilidad vertical
Hace referencia a la posibilidad de aumentar los recursos de una misma
máquina para proporcionar un mayor rendimiento.
Sin embargo, se trata de un tipo de escalabilidad limitada, puesto que
las mejoras en el hardware de una máquina son finitas.
A nivel de funcionamiento de la aplicación, es transparente, ya que los
cambios se producen a nivel de hardware.
Por ejemplo, aumentar la memoria RAM de un servidor o cambiar su
disco duro por uno de estado sólido serían casos de escalabilidad
vertical.
Escalabilidad horizontal
En este caso, se reparte la carga de trabajo entre diferentes máquinas
similares (cluster), de manera que la aplicación debe estar diseñada e
implementada teniendo en cuenta este modelo de escalabilidad, por lo
que, a diferencia de la vertical, no es transparente.
Si fuese necesario añadir más capacidad, basta con incluir más
máquinas en el cluster.
Sin embargo, este tipo de escalabilidad aumenta la complejidad de las
aplicaciones y requiere el uso de balanceadores de carga, así como
suele suponer un mayor coste debido a la infraestructura necesaria.
Otras medidas de protección
Además del uso de balanceadores de carga, se pueden tomar algunas
protecciones adicionales frente a posibles ataques de Denegación de
Servicio:
• Cierre de todos aquellos puertos que no sean necesarios para el
funcionamiento correcto de nuestro servicio.
• Utilización de Firewalls.
Aplicaciones
web: creación
El ciclo de vida del software
• Este concepto hace referencia a las diferentes fases por las que pasa
el desarrollo y la creación de un nuevo software.
• Todas y cada una de las fases son sumamente importantes para
garantizar el éxito del proyecto.
El ciclo de vida del software
• Las fases del ciclo de vida del software son:
• Análisis y especificación de requisitos.
• Diseño.
• Implementación.
• Pruebas.
• Despliegue.
• Mantenimiento.
Análisis y especificación de requisitos
• Debemos conocer la problemática que debe resolver nuestro
software.
• Debe existir una comunicación apropiada entre el cliente y el equipo
de desarrollo.
• Como resultado, debe obtenerse una especificación de los requisitos
que el programa debe cumplir.
Diseño
• Cuando conocemos los requisitos, debemos diseñar nuestra solución
ANTES de empezar con cualquier tipo de implementación o escritura
de código.
• El diseño nos ayudará a optimizar posteriormente la implementación
de nuestra aplicación.
• En esta fase se generará documentación que facilitará las tareas de
validación y mantenimiento posteriormente.
• Es fundamental concluir esta fase con una validación de nuestro
diseño antes de iniciar la implementación, para comprobar que la
solución que hemos planteado es válida.
Implementación
• En esta fase es cuando llevamos a código el diseño que hemos
realizado en las fases anteriores.
• Es importante seguir a rajatabla la documentación generada en la
fase de diseño para evitar introducir errores.
• Para la correcta ejecución del programa, puede ser necesario
compilarlo (excepto si es un lenguaje interpretado, por ejemplo).
• Este proceso puede indicar errores en la codificación que deberemos
resolver.
Pruebas
• Esta es una fase crítica.
• Se debe verificar que el software funciona, y que, además, cumple con
los requisitos que se han especificado en la fase de análisis.
• Se pueden realizar diferentes tipos de pruebas:
• Pruebas unitarias: comprueban el funcionamiento de algún módulo
concreto.
• Pruebas de integración: abarcan la interacción de los diferentes
módulos y el programa completo.
• Pruebas de aceptación: determinan si el software creado se adapta a
las expectativas de los clientes/usuarios.
Pruebas
• En caso de fallar alguna prueba, y según la metodología empleada, se
deberá volver a la fase donde se encuentre el error.
• El coste de corregir errores se incrementa cuanto más atrás haya que
volver en el proceso de software.
Despliegue
• Una vez validado el software a través de las diferentes pruebas, se
pasa a la fase de despliegue.
• Consiste en la puesta en funcionamiento de la aplicación, ya sea en
un servidor en producción, o en la distribución de una aplicación de
escritorio a clientes o en el entorno de una empresa.
• Pueden producirse errores también en esta fase si no se realiza
correctamente, por lo que es conveniente planificar el despliegue
adecuadamente.
Mantenimiento
• Cuando ya se ha desplegado el software en el entorno
correspondiente, se pasa a la fase de mantenimiento.
• En esta fase el objetivo es solucionar los problemas de
funcionamiento o realizar las modificaciones que el programa pueda
requerir mientras exista soporte.
• Por ejemplo, podría consistir en solucionar vulnerabilidades de
seguridad no detectadas previamente.
• También podría incluir la adición de nuevas funcionalidades.
Tecnologías de
creación de
aplicaciones
web
Entorno de desarrollo
• Para la fase de implementación, es conveniente utilizar un entorno de
desarrollo específico para la codificación de software, puesto que
contiene una serie de herramientas que facilitan el proceso.
• Algunos ejemplos de entornos de desarrollo son:
• Visual Studio Code (el que se utilizará en clase).
• Eclipse
• NetBeans
Entorno de desarrollo
Lenguajes de marcas y de script de
cliente
• HTML es el lenguaje de marcas utilizado para dar formato a los sitios
web.
• Se puede combinar en el entorno cliente con el uso de hojas de estilo
(CSS) en el aspecto visual.
• Además, se puede añadir funcionalidad interactiva mediante el uso
de lenguajes de script como JavaScript (o alguna de sus librerías
derivadas).
Lenguajes de lado de servidor
• Son necesarios para poder generar contenido dinámico en las
respuestas a las peticiones de los clientes.
• Se pueden utilizar aplicaciones escritas en Java.
• Otra opción son los lenguajes interpretados como PHP, que es el que
usaremos.
Sistemas de gestión de base de datos
• Habitualmente, es necesario el uso de bases de datos para almacenar
información.
• Por ejemplo, las cuentas de usuario de un sitio web con restricciones
de acceso que requieren autenticación.
• Para ello, debe haber un SGBD accesible desde el servidor, al cual se
conectará para realizar las operaciones necesarias.
• Algunos de los sistemas más populares son:
• MySQL
• Oracle
• Microsoft SQL Server
Sistemas de gestión de base de datos
• Habitualmente, es necesario el uso de bases de datos para almacenar
información.
• Por ejemplo, las cuentas de usuario de un sitio web con restricciones
de acceso que requieren autenticación.
• Para ello, debe haber un SGBD accesible desde el servidor, al cual se
conectará para realizar las operaciones necesarias.
• Algunos de los sistemas más populares son:
• MySQL
• Oracle
• Microsoft SQL Server
Servidor web
El servidor web es el que se encarga de manejar las peticiones y de
redirigirlas donde sea necesario (devolver el archivo o ejecutar otro
programa).
• Algunos de servidores web más populares son:
• Apache (libre)
• Nginx (libre)
• Microsoft IIS (propietario)
• LiteSpeed (propietario)
• [Link] (libre)
Navegador web
El navegador web se encarga de iniciar las peticiones HTTP que son
enviadas al servidor, pero también de procesar las respuestas a las
mismas para mostrar y renderizar su contenido.
Algunos de los más populares son:
• Mozilla Firefox
• Google Chrome
• Microsoft Edge
• Opera
• Safari
Despliegue de aplicaciones
Una vez implementadas y probadas las aplicaciones, existen
diferentes alternativas respecto a dónde desplegarlas.
• Despliegue en servidor local o propio: se realiza en máquinas de
la empresa/desarrollador que tendrán instalados todos los
componentes necesarios.
• Despliegue en la nube: se utilizan las herramientas y servicios de
cloud computing para desplegar las aplicaciones web
implementadas.
Cloud
computing
¿Qué es?
La computación en la nube (Cloud Computing) es, simplemente, el
uso de sistemas de cálculo, aplicaciones o almacenamiento a través
de Internet, en lugar de hacerlo en un ordenador local.
Existen varias modalidades:
• Software as a Service (SaaS)
• Platform as a Service (IaaS)
• Infrastructure as a Service (IaaS)
Software as a Service
• Consiste en el uso de diferentes aplicaciones de manera remota,
a través de Internet.
• Normalmente se utilizan aplicaciones web para proporcionar el
servicio.
• Un ejemplo sería Microsoft 365 en la web, Google Docs,
aplicaciones en Azure…
• Se cobra por uso, lo que para muchas empresas puede suponer
un ahorro.
Platform as a Service
• Ofrece servicios para la implementación de software a través de
la nube. A diferencia de SaaS, no son aplicaciones directamente
usables, sino librerías o servicios para implementación.
• Algunos ejemplos serían Azure, Google App Engine, etc.
• Simplifican el trabajo de desarrollo al proporcionar partes y
componentes que solo deben ser utilizados, no implementados
desde cero.
Infrastructure as a Service
• Ofrece dispositivos, capacidad de cálculo, almacenamiento, etc
en la nube, de manera que se puede “alquilar” sin tener que
instalar nuestro propio hardware.
• Algunos ejemplos son Amazon Web Services, DigitalOcean, otros
servicios de Azure…
• También se suele pagar por uso.
Servidor
Apache
Introducción y funcionamiento
Un servidor web es un programa en ejecución continua que espera la
llegada de peticiones por parte de clientes y proporciona una respuesta
cuando estas llegan.
Apache es uno de los servidores web más populares, y, como ya vimos,
es de código abierto. Está disponible para Windows y GNU/Linux.
Se desarrolla dentro del proyecto HTTP Server (httpd) de Apache
Software Foundation, y se distribuye utilizando la licencia Apache, que
permite la distribución de derivados, tanto de código abierto como
cerrado, a partir del código fuente original.
Arquitectura
• Se estructura en módulos.
• Cada módulo tiene un conjunto de funciones específicas de un aspecto del
servidor.
• Utiliza un archivo binario, httpd, que contiene un conjunto de módulos que
han sido compilados.
• Los módulos se pueden activar o desactivar al arrancar el servidor.
• Tres tipos de módulos:
• Base: encargados de las funciones básicas.

• Multiproceso: unen los puertos de las máquinas atendiendo las peticiones.

• Adicionales: añaden funcionalidad complementaria al servidor.


UD1: Conceptos
generales sobre
aplicaciones web

También podría gustarte