Diferencia entre revisiones de «Instalación de servidores para aplicacións web»

De MediaWiki
Ir a la navegación Ir a la búsqueda
 
Línea 17: Línea 17:
 
Unha aplicación web pode ser menos potente que unha aplicación clásica (chamadas aplicación de escritorio) por non poder optimizar o seu código para a máquina na que se está executando (xa que non poden acceder a todo o ''hardware'' da computadora e así facer optimizacións). Pola contra as aplicacions web dependen da habilidade do navegador para manexar o ''hardware'' da máquina na que reside,
 
Unha aplicación web pode ser menos potente que unha aplicación clásica (chamadas aplicación de escritorio) por non poder optimizar o seu código para a máquina na que se está executando (xa que non poden acceder a todo o ''hardware'' da computadora e así facer optimizacións). Pola contra as aplicacions web dependen da habilidade do navegador para manexar o ''hardware'' da máquina na que reside,
  
As aplicacións web créanse en HTML e tecnoloxías asociadas (CSS, JavaScript...). Os navegadores non teñen capaciadde para compilar código de linguaxes clásicas mais si teñen intérpretes potentes para linguaxes incrustadas nas aplicaciones web (especialmente JavaScript).  
+
As aplicacións web créanse en HTML e tecnoloxías asociadas (CSS, JavaScript...). Os navegadores non teñen capaciadde para compilar código de linguaxes clásicas mais si teñen intérpretes potentes para linguaxes incrustadas nas aplicaciones web (especialmente JavaScript).
 +
 
 +
'''IMPORTANTE'''. Podes ler máis información no artigo sobre [[aplicacións web]].
  
 
== Arquitecturas web ==
 
== Arquitecturas web ==

Revisión actual del 12:41 18 ene 2023

Introducción

A arquitectura web define cómo se vai a xerarquizar a información dentro dun sitio web de forma racional e lóxica.

O seu obxectivo é a agrupación visual de información nun sitio web que permitirá o acceso intuitivo e a navegabilidade.

Existen unha serie de tecnoloxías a nivel de cliente e de servidor que debemos coñecer para implantar as nosas solucións web; a elección dependerá da dimensión, requisitos e custe do proxecto.

Aplicacións web

Unha aplicación é un software que permite ó usuario realizar unha determinada tarefa ou servizo. As aplicaciones clásicas creanse en linguaxes coma C. C++, Fortran, Pascal, etc.

Unha aplicación web é unha aplicación creada para ser executada nun cliente xa existente: un navegador (Google Chrome, Microsoft Edge, Mozilla Firefox, etc.). O hardware queda oculto ó programador, que só ve a capa de traballo que lle cede ó navegador.

As aplicación web son populares porque os usuarios xa coñecen e estan afeitos a traballar cos navegadores; para recorrer Internet y están muy acostumbrados a trabajar con ellos.

Unha aplicación web pode ser menos potente que unha aplicación clásica (chamadas aplicación de escritorio) por non poder optimizar o seu código para a máquina na que se está executando (xa que non poden acceder a todo o hardware da computadora e así facer optimizacións). Pola contra as aplicacions web dependen da habilidade do navegador para manexar o hardware da máquina na que reside,

As aplicacións web créanse en HTML e tecnoloxías asociadas (CSS, JavaScript...). Os navegadores non teñen capaciadde para compilar código de linguaxes clásicas mais si teñen intérpretes potentes para linguaxes incrustadas nas aplicaciones web (especialmente JavaScript).

IMPORTANTE. Podes ler máis información no artigo sobre aplicacións web.

Arquitecturas web

Hai tres elementos principais nunha aplicación web que permiten a conexión e o acceso a datos por parte de calquera petición dun cliente:

  1. Servidor web: é o servidor ou cerebro da arquitectura escoitando as peticions HTTP desde o navegador; realiza tamén consultas á base de datos para responder a esas peticións.
  2. Base de datos: é onde se almacenan un conxunto de datos organizados xerárquicamente. O servidor web require esa información ou a actualización/eliminación da mesma, e o sistema xestor de base de datos fai esa operación.
  3. Cliente web: é o que realiza as peticións o servidor web mediante un navegador e un sistema operativo concreto que é independente da arquitectura.

Vantaxes e inconvintes das aplicacións web

Algunhas vantaxes:

  • Non é preciso facer despregue e instalación nos equipos en que se vaian a utilizar; instálanse nun equipo, o servidor, e iso é suficiente para que se poidan utilizar de forma simultánea desde moitos equipos.
  • A súa xestión (copias de seguridade dos seus datos, corrixir erros e facer actualizacións, ...) é moi sinxela por estar instaladas únicamente no servidor.
  • Pódense utilizar en todos aqueles sistemas que dispoñan dun navegador web compatible independentemente das súas características (non é preciso un equipo potente) ou do seu sistema operativo.
  • Pódense utilizar desde calquier lugar con conexión ó servidor, por exemplo, desde dispositivos móbiles.

Algúns inconvintes son:

  • A interface de usuario das aplicacións web é a páxina que se amosa no navegador restrinxindo as características da interfaz a aquelas das páxinas web.
  • Non todos os navegadores web teñen as mesmas capacidades, polo que pode ser preciso facer adaptacións e moitas probas para o seu correcto funcionamento na maioría deles.
  • Dependemos dunha conexión co servidor para poder utilizarlas; se falla a conexión non poderemos acceder á aplicación web, e implica tráfico de rede (e consumo de datos en dispositivos móbiles).
  • A información que se amosa no navegador debe transmitirse desde el servidor o que non as fai axeitadas para tratamento de datos moi pesados en tempo real (por exemplo as aplicacións que manexan contido multimedia como as de edición de vídeo).

Evolución da tecnoloxía web

A tecnoloxía evolucionou de forma exponencial desde que comezou a era da informática ata os nosos días. No contexto da web ligado a tecnoloxía de Internet son moitos os compoñentes da web que evolucionaron. Entre outros:

  • Ancho de banda: o hardware de comunicacións era moi costoso e lento; é ahora máis económico e veloz.
  • Almacenamento: manexamos cantidades inxentes de información que se poden almacenar e explotar gracias ás investigacións e os dispositivos de almacenamento actuais, que non teñen nada que ver en capacidade, fiabilidade e rendemento cos pasados.
  • Información: dunha información moito máis estática pasamos a unha moito máis dinámica con máis interacción co usuario.
  • Computación: os procesadores, memoria e disco duro na actulidade permiten operacións moito máis rápidas.
  • Tecnoloxía: existe un amplio abanico de posibilidades que se poden implementar tanto no cliente coma no servidor axiliando o desenvolvemento dunha aplicación e aumentando a súa calidae; xa non é preciso partir de cero nin reinventar a roda.
  • Infraestruturas: engloba todo o mencionado.
Na actualidade existen unha variedade de posibilidades que antes non existían polo avance da tecnoloxía: existe alta disponibilidad, backup remoto, duplicidade de nodos en caso de fallo hardware e software, uso de intelixencia artificial e algoritmos adaptativos, explotación da información mediante a xestión de big data

Web 1.0

Nos inicios da informática o contido da web era estático e non existían protocolos de seguridade que permitiran a fiabilidade das conexións, cousa impensable na actualidade en cualquera organización.

Esta primera fase na que non existía interacción co usuario e as páginas web eran estáticas baseadas na linguaxe de marcas HTML denominouse Web 1.0. Tim Berners-Lee foi no ano 1991 o creador da primera páxina web con contido estático, onde existían marcas e botóns gif. A intearcción dos usuarios era soamente mediante email, foros e chats.

Web 1.5

Os desarrolladores investigaron sobre as posibilidades de ampliar esta primeira web e incluir máis funcionalidades; xurdiron as primeiras aplicacións web dinámicas que interactuaban con bases de datos no que alguns autores deron en denominar Web 1.5.

Web 2.0

A verdadeira evolución viu coa Web 2.0 ou web social na que se pasou á interacción total co usuario e un compoñente activo no modelo web.

Algúns ítems importantes foron:

  • Follas de estilo CSS que dan vistosidade as webs.
  • Uso de JSON.
  • Desenvolvemento en Ajax.
  • Soporte para os blogs.
  • Comezo das redes sociais.
  • Control total dos usuarios no manexo da información.

O seguinte avance significativo foi a aparición da Web 3.0, data web ou web semántica: un gran salto no avance tecnolóxico hacia a intelixencia artificial.

Algúns dos avances son:

  • Diseño reponsive.
  • Web multimedia.
  • Aplicacións intelixentes.
  • Web semántica máis intelixencia artificial.
  • Impulso á Web 3D.
  • Participación máis activa na rede.
  • CSS3.
  • HTML5

Tecnoloxías usadas en aplicacións web

Actualmente, a maioría das aplicacións web do mercado usan páxinas dinámicas que se executan no servidor web e se visualizan no cliente (navegador).

Existen páxinas de contido estático e dinámico; normalmente, cando existe contenido dinámico execútase código tanto no cliente coma no servidor.

Podes atopar información máis detallada de linguaxes no lado servidor e no lado cliente. A continuación indícanse algúnhas das alternativas.

IMPORTANTE. Podes ler o artigo sobre a Arquitectura cliente/servidor para coñecer as súas ventaxas e inconvintes.

No lado servidor

CGI (Common Gateway Interface)
Ó principio de Internet o servidor soamente podía executar programas de tipo C, Perl e línñas de comando Powershell. Estas instrucciones eran executadas polo sistema operativo e se transmitían ó navegador mediante o CGI.
ASP.NET (Active Server Pages)
Framework de desenvolvemento libre de Windows orientado a obxectos;existen versións para Linux ye Unix.
Java
Aínda que tamén se pode utilizar no lado cliente, destaca no seu uso no lado servidor polo grupo de tecnoloxías asociadoas: JSF (JavaServer Faces), JSP (JavaServer Pages) e os servlets.
Ruby
Linguaxe interpretada de propósito xeral, dinámica e flexible; é de alto nivel, software libre e multiplataforma.
Perl
Toma moitas características da linguaxe C e caracterízase pola súa destreza á hora de procesar texto. Apache conta cun módulo que permite executar programas deste tipo.
PHP
Linguaxe de propósito xeral dos máis usados no desenvolvemento backend. É motor de sistemas coma Wordpress, Drupal, Magento, Joomla, etc. Existen frameworks moi potentes (Laravel, Symfony, codeIgnition) que facilitan a súa programación. Permite acceso a bases de datos relacionais coma NoSQL (por exemplo MongoDB).
Python
Linguaxe interpretada moi poderosa, fácil de aprender e de alto nivel; é unha lenguaxe orientada a obxectos que destaca polo seu tipado dinámico.
Javascript
Linguaxe lixeira, interpretada e orientada a obxectos. Para aprendelo é preciso un coñocemento básico de HTML e CSS. Intervén sobre todo no contido dinámico e na interacción co usuario. Permite controlar ficheiros multimedia, creación de imaxes animadas, animación en 3D.
A linguaxe R é moi usada en tecnología web debido o crecemiento exponencial do Big Data.

Podes atopar máis información sobre algunhas destas linguaxes neste artigo

No lado cliente

HTML e CSS
HTML é a linguaxe de marcas que xurdíu xunto cos navegadores e o medio para transmitir información entre o cliente e o servidor. Posteriormente CSS (Cascading Style Sheets) permitíu deseñar gráficamente e maqueetar a páxina HTML. É unha especificación que parte do W3C da que na actualidade está publicada a versión 3. Non son propiamente linguaxes de programación, pero si linguaxes informáticas.
Javascript
Tradicionalmente empregado no cliente (os navegadores teñen que soportar o seu uso, e estar configurado para permitilo) coma recentemente no lado servidor (NodeJS). É unha linguaxe moi extendida porque na actualidade é soportado pola maioría de navegadores.
VBScript
É a competencia de Java que fixo Microsoft. Xa moi en desuso por non ser compatible coa mayoría dos navegadores (soamente con Internet Explorer). É unha linguaxe interpretada por Windows Scripting Host de Microsoft beseada na linguaxd de proramación de Visual Basic

En ambos

Sen ser linguaxes de programación, é interesante coñecer as seguintes linguaxes:

XML
é unha linguaxe de marca que permite compartir datos e incluso o seu almacenamento con este formato nuhna base de datos. Estes ficheiros .xml útilizanse tamén para a configuración da moitas das aplicacións e dos servidores web e de aplicacións.
JSON
Acrónimo de JavaScript Object Notation: é un formato de texto sinxelo para o intercambio de datos. É texto plano (fácil de ler e escribir para os humáns) escrito na notación dos obxectos JavaScript, usado para enviar datos entre equipos, e é indepedente da linguaxe.

Arquitectura dunha aplicación web: arquitectura multicapa

Nunha aplicación de varias capas (multicapa ou multinivel), a funcionalidade da aplicación sepárase en áreas funcionais illadas, denominadas capas.

Normalmente, as aplicacións de varias capas están compostas por:

Cliente
Consiste nun programa (que pode ser un navegador ou aplicación desenvolta a medida) que realiza solicitudes ao nivel intermedio.
Intermedio
O nivel intermedio manexa as solicitudes dos clientes e procesa os datos das aplicaciones. Contén o negocio do sistema.
Datos
Recupera os datos e os almacena de forma permanente.

Por exemplo, unha aplicación web desenvolta en Java podería dividerse nestas capas (onde a parte de Java podería ser procesada por exemplo por Tomcat):

Capas dunha aplicación web accesible por un navegador, desenvolta a nivel intermedio con Java EE, e con conexión a bases de datos MariaDB ou SQLServer

Outro exemplo, neste caso con PHP, pódese ver neste diagrama:

O código php interprétase, e devólveselle resposta ao cliente

Cómpre facer dúas precisións:

  • o servidor web, pode estar configurado mediante módulos para poder procesar PHP directamente
  • e neste diagrama non se accede a base de datos na capa final, pero por descontado esto en PHP tamén sería posible comma no exemplo visto en Java

Servizos complementarios existentes no sistema informático: características

Análise de requisitos

Análise de requisitos e construcción de software

A enxeñería de requisitos do software é un proceso de descubrimento, refinamento, modelado e especificación. Refínanse en detalle oos requisitos do sistema e o papel asignado o software.

Tanto o desenvolvedor coma o cliente teñen un papel activo na enxeñería de requisitos (un conxunto de actividades que son denominadas análise). O cliente intenta replantear un sistema confuso, a nivel de descripción de datos, funcións e comportamentos, en detalles concretos. O desenvolvedor actúa coma interrogador, coma consultor, como persona que resolve problemas e coma negociador.

A análise e a especificación de requisitos poden parecer unha tarefa relativamente sinxela. Cuidado! As apariencias enganan!! O contido de comunicación é moi denso e abundan as ocasións para malas interpretaciones ou falta de información. A ambigüedade é moi habiual. O dilema ao que se enfrenta o enxeñeiro de software pode entenderse ben repetindo a famosa frase dun cliente anónimo:

“Sé que cree que entendió lo que piensa que dije, pero no estoy seguro de que se dé cuenta de que lo que escuchó no es lo que yo quise decir”.

A análise de requisitos é unha tarefa de enxeñaría do software que cubre o oco entre a definición do software a nivel sistema e o deseño de software.

A análise de requerimentos permite ao enxeñeiro/a de sistemas especificar as características operacionais do software (función, datos e rendemientos), indica a interfaz do software con outros elementos do sistema e establece as restriccións que debe cumprir o software.

Ampliación. Podes indagar máis sobre as tarefas de análise, as funcións e habilidades do analista e a enxeñaría de requisitos lendo este artigo

Clientes web

Os navegadores

Algúns dos navegadores máis usados

Son os clientes cos que podemos acceder os recursos web. Podedes ver:

Os máis coñecidos na actualidade son:

Algúns outros tamén relevantes:

  • Vivaldi, navegador rápido e privado con algunhas funcións únicas
  • Brave, navegador web seguro, rápido y privado con Adblocker

Algunhas diferenzas que poden decantar o seu uso a favor dun ou outro son:

Algo habitual será a posibilidade de extender a súa funcionalidade mediante complementos, plugins ou extensións

Cliente feito a demanda

Tamén é posible desenvolver un cliente específico distinto do navegador, que comunique de igual xeito cun modelo cliente-servidor, sen precisar quedar restrinxido as características e limitacións dun navegador.

Procesamento de código: linguaxes de guións de cliente e servidor

Servidor web

O servidor web é un programa ou sistema de información que devolve información en forma de páxinas web cando recibe peticións por parte dos usuarios, xeneralmente a través de navegadores web. Resumidamente, é o software que sirve páxinas web aos usuarios para que as poiden visualizar a través dos seus navegadores.

Comunicación petición-resposta entre navegador e servidor web

Estes son os servidores web máis comúns:

Apache HTTP Server
Servidor web gratuito e de código abierto; desenvolto e mantido pola Apache Software Foundation (ASF). É dos máis populares, aínda que nos últimos anos está perdendo cuota de mercado en favor de Nginx
Nginx
Servidor web tamén gratuíto e de código abierto, que destaca polo seu alto rendemento. Lanzado en 2004, pugna por roubarlle o liderazgo o servidor de Apache.
Microsoft-IIS (Microsoft Internet Information Services)
Servidor web de Microsoft, lanzado no ano 1995. Conta con múltiples características de seguridade e mecanismos de autenticación integrados. É habitual o seu uso para aloxar sitios estáticos e aplicacións web ASP.NET (aínda que tamén permite o seu uso con PHP)

Sistema xestor de base de datos

Partiremos dunha clasificación atendendo a se son sofware propietario ou sofware libre, no que só falaremos de bases de datos relacionáis.

SXBD relacional libre

MySQL

MariaDB

Postgree SQL

SXBD relacional comercial

Oracle

Microsoft SQL Server

Outros SXBD

Desde fai anos existen no mercado bases de datos nativas XML (eXistDB, BaseX, Tamino, etc). E na actualidade, están collendo máis forza o uso de bases de datos coñecidas coma NoSQL (Not Only SQL), coma son MongoDB, Cassandra, etc.

Módulos e compoñentes necesarios

Instalación integrada e Utilidades de proba

Contornos integrados

Unha pila (Stack) é un conxunto probado de software para crear aplicaciones web. As máis comúns son:

LAMP
Fai referencia ao uso de Linux, Apache, MySQL/MariaDB e PHP (tamén pode ser Python ou Perl) coma plataforma de desenvolvemento web. Foi unha das primeiras pilas de software de código abierto para a web e sigue sendo unha das formas máis comúns de crear aplicacións web: algunhas das aplicaciones web de código aberto máis populares na actualidade executanse en pila LAMP, coma WordPress, Joomla, Drupal, MediaWiki ou Moodle).
WAMP
A mesma pila que LAMP pero empregando Windows coma Sistema Operativo no canto de Linux
WISA
Fai referencia a Windows, IIS, SQL server e ASP.NET. Orientada a tecnoloxías de Microsoft.
MEAN
Pila máis moderna e baseada en JavaScript. Fai referencia a MongoDB, ExpressJS, AngularJS e NodeJS

Utilidades de proba

Para facer peticións a un servidor web, e ver o resultado que devolven, hai entre outras estas ferramentas:

  • Zap
  • Fiddler

Permiten comprobar o funcionamento, facer ataques, auditorías de seguridade....

Para comprobar que un servidor web ten o intérprete PHP, e coñecer a súa versión, podemos desde liña de comandos:

php -v

Para comprobar que efectivamente procesa código PHP, e coñecer en detalle a súa configuración, podemos usar a función phpinfo de PHP, dentro dun ficheiro que poida ser servido polo servidor web. O código será tal que así:

<?php
// Amosa toda a información
phpinfo();

// Amosa información dos módulos
phpinfo(INFO_MODULES);
?>

E accedendo co navegador a súa ruta, veremos que funciona correctamente se amosa a información:


Para xestionar a base de datos, podemos instalar a interfaz phpMyAdmin.

Finalmente, para probas de rendemento e carga, podemos usar ferramentas coma Apache JMeter.


Referencias

ASP

HTML