UD1. Tecnologías de las aplicaciones web.pdf
Document Details
Uploaded by Deleted User
Full Transcript
UD.1: Tecnologías de las aplicaciones web. Implantación de Aplicaciones Web (IAW) CFGS ASIR Mara Vañó Alonso Curso 2024-2025 1 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) Índice Índice Arquitectura...
UD.1: Tecnologías de las aplicaciones web. Implantación de Aplicaciones Web (IAW) CFGS ASIR Mara Vañó Alonso Curso 2024-2025 1 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) Índice Índice Arquitectura de una aplicación web Introducción Arquitectura Cliente/Servidor Servidores y páginas web Servidores web Tipos de páginas web Lenguajes de programación del lado del servidor Los lenguajes del lado del cliente Los lenguajes del lado del servidor Preparación del entorno del desarrollo Herramientas de programación básicas Entornos de programación en servidor Control de versiones Herramientas para gestión de bases de datos Herramientas para administración de bases de datos Pilas de software Herramientas de Depuración en PHP Escáneres de seguridad y errores de código PHP Herramientas IA para el Desarrollo y Diseño de páginas web 2 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) Arquitectura de una aplicación web Introducción Cuando se habla de las páginas web, se hace referencia a las páginas que se tiene acceso a través de internet. Estas páginas utilizan el sistema de distribución de hipertexto World Wide Web, que se necesita para transmitir la información de los diferentes elementos de la página. El lenguaje más habitual para ello es el HTML, aunque es posible utilizar otros lenguajes. Los elementos que se transmiten por internet utilizan protocolos, que son las reglas que están predefinidas para estandarizar el intercambio de información como HTTP o HTTPS para transmitir la información de las páginas web, FTP o SSH para transmisión de archivos, etcétera. Para poder ver la información de internet es muy común utilizar programas que mediante los protocolos anteriores permitan recibir o enviar la información. Estos programas suelen llamarlos software cliente y software servidor. Algunos ejemplos del software cliente para poder acceder a un sitio web son aquellos que se conocen como navegadores web como Google Chrome, Microsoft Edge o Mozilla Firefox entre otros. Estos se encargan de traducir el lenguaje de marcas HTML en lenguaje fácilmente legible para el usuario. Además, son los que mediante el uso de estilos CSS permiten ver correctamente todos los elementos de la interfaz de la página web (textos, imágenes, botones, enlaces, etcétera). La información en Internet está almacenada en conjuntos de ordenadores a los que llamamos servidores. Estas máquinas suelen estar conectadas a Internet 24 horas al día 365 días al año, ofrecen diferentes tipos de servicios a los ordenadores que son sus clientes. De este modo se establece una relación en la que un servidor ofrece algo y uno o varios clientes lo consultan pudiendo compartir los recursos tanto lógicos como físicos del servidor. 3 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) Los ordenadores que ejercen como servidor no tienen por qué compartir características de software o hardware con el cliente de modo que son independientes entre ellos. Los servidores suelen tener algún servicio que está esperando recibir las llamadas de los clientes, estos servicios ofrecen información mediante el software del servidor de un modo asíncrono, por lo que pueden recibir múltiples llamadas a la vez y compartir recursos con varios clientes al mismo tiempo. Los servicios son la unidad básica de diseño y están escuchando un puerto concreto del equipo esperando peticiones del software cliente a dicho puerto para proporcionarles la información solicitada (si existe). Algunos ejemplos de estos programas que ofrecen información a los navegadores web (como páginas web) podrían ser los servidores web como Apache, Nginx o IIS, entre otros. ¡Importante! No se debe confundir una máquina cliente y una máquina servidor, con un software cliente y un software servidor. Las máquinas cliente o servidor son ordenadores que pueden contener software cliente, software servidor o ambos en la misma máquina de modo que pueden atender peticiones suyas o de otras máquinas a través de la red. Para poder solicitar la información a un servidor, los clientes deben disponer de cierta información que permita obtener los recursos concretos deseados de toda la posible información que tiene el servidor. En primer lugar, el cliente necesitará saber el protocolo de red que debe usar para comunicarse, por ejemplo, si se intenta acceder a una página web que permita encriptar la información que se transmite, se deberá usar el protocolo HTTPS. A continuación, se deberá conocer a qué servicio del servidor se le va a solicitar dicha información, por ejemplo, si se quiere obtener una imagen de una página web deberá utilizar el servicio WWW. 4 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) Además, otra parte imprescindible para poder hablar con el servidor es conocer su dominio. El dominio es el nombre que se le da a la IP del servidor, que es la dirección donde reside el servidor y donde se encuentra la información. Por ejemplo, si la imagen está en mi servidor personal, podría tener un dominio como “mvano.es”. Una vez se conozca el dominio, y se sepa en qué servidor consultar, a qué servicio y mediante qué protocolo, se necesita saber la ruta donde está almacenada la imagen. Por ejemplo, habitualmente las imágenes de una página web suelen almacenarse en directorios llamados “img” o con un nombre similar. Por último, es necesario saber el nombre del recurso y su extensión, por ejemplo foto.jpg. Para poder indicarle al cliente la información anterior hay que formar una URL. Esta es una secuencia de caracteres con la información anterior ordenados y siguiendo un estándar para que permita localizar los recursos a través de Internet y que puedan ser localizados dentro del servidor. Ejemplo estructura URL: Protocolo de red://Servicio.Dominio/Ruta/nombre del archivo Ejemplo de URL: https://www.ggarrido.es/img/foto.jpg ¡Importante! Un mismo servicio puede funcionar por diferentes puertos al mismo tiempo, accediendo a información distinta o usando distinto protocolo, dependiendo del puerto. Por ejemplo, es muy común que un servicio que ofrezca páginas web (servidor web) atienda al puerto 80 para el protocolo HTTP, y al puerto 443 para el protocolo HTTPS. También podría atender usando el mismo protocolo (por ejemplo, HTTP) al puerto 80 para las peticiones normales y al 8080 para webs específicas (webs internas de la empresa, un NAS, etcétera). 5 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) Arquitectura Cliente/Servidor La arquitectura Cliente/Servidor es un modelo de comunicación entre varios dispositivos utilizando la misma red de modo que dividen la capacidad de proceso entre ellos. Como se ha visto anteriormente, el cliente es el ordenador encargado de realizar las peticiones y recibir la información, mientras que el Servidor (pueden ser más de una máquina), es el dispositivo que tiene uno o varios servicios activos que están a la espera de recibir las llamadas de los clientes para contestarles con la información solicitada. Los servidores a su vez también pueden funcionar como clientes para otros servidores. De este modo se pueden separar los diferentes servicios entre múltiples maquinas mejorando así su rendimiento. Entre los servidores y los clientes se intercambian mensajes para comunicarse. Los servidores proporcionan un código como respuesta a la petición solicitada dentro de estos mensajes, por ejemplo, si todo va bien el servidor manda un mensaje HTTP 200 OK al cliente, indicando que todo ha funcionado correctamente, y si no se dispone de una información concreta, por ejemplo, una página web, el servidor web enviara un mensaje HTTP 404 NO SE ENCUENTRA LA PÁGINA SOLICITADA. Enlace Online Ver video ejemplo de explicación de la arquitectura Cliente/Servidor: ArquitecturaCliente/Servidor: https://www.youtube.com/watch?v=xjJVqfzR-fg Para comunicarse, el cliente y el servidor cuentan con software intermedio (Middleware) que permite comunicar al cliente con el servidor y viceversa. 6 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) Por ejemplo, Si un cliente web quiere visitar una página web, el middleware traducirá la URL que le proporciona el cliente para conocer la ubicación del servidor y realizará la petición. Una vez llegue la petición al servidor web, este interpretará la petición y proporcionará los recursos solicitados al middleware, quien los redirigirá al cliente web. Existen diferentes tipos de middleware: Middleware general: Este software cuenta con los servicios generales que requieren todos los clientes y servidores como el software para las comunicaciones (TCP/IP), software de autenticación, el software de comunicación entre el cliente y el servidor, etcétera. Middleware de servicios: Este software es el que se asocia a un servicio en particular por ejemplo software que conecta dos BD conectarse a una red cliente/servidor (ODBC), software permite que objetos creados en distintos lenguajes coexistan en una misma red (CORBA), software asociado a productos de seguridad específicas (Sockets), etcétera. Para realizar las comunicaciones ente cliente y servidor por internet mediante el middleware general de comunicaciones se utiliza el protocolo TCP/IP. Este permite un intercambio de datos fiable dentro de una red, definiendo los pasos a seguir desde que se envían los datos (en paquetes) hasta que son recibidos. El protocolo TCP/IP es el protocolo estándar para conectarse a Internet y navegar entre los servidores web ya que tiene la ventaja de ser multiplataforma y se puede adecuar a diferente hardware y redes de comunicación, de modo que está diseñado para enrutar y analizar la red monitorizando su funcionamiento. Por otra parte, este protocolo no distingue bien entre interfaces, protocolos y servicios lo cual afecta al desarrollo de nuevas tecnologías que dividen entre estos elementos consiguiendo mejoras de rendimiento, velocidad o seguridad. Además, puede ser más lento y ofrecer menor rendimiento para servidores de ficheros o con redes de bajo volumen de datos. 7 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) El protocolo TCP/IP está compuesto por: TCP (Protocolo de Control de Transmisión): Permite establecer una conexión y el intercambio de datos entre dos anfitriones. IP (Protocolo de internet): proporciona direcciones numéricas para referenciar a cada equipo de una red. Estas direcciones numéricas pueden ser de diferentes tamaños según su versión: La versión IPv4 que son secuencias de 4 números de 8 bits (entre 0 y 255) separados por puntos. Por ejemplo 192.168.0.1. La versión IPv6 que se componen de secuencias de 8 números de 16 bits (entre 0 y 65535) separados por puntos. Por ejemplo 2001:0000:3238:DFE1:63:0000:0000:FEFB. Las direcciones numéricas son difíciles de recordar, por lo que existen los dominios, que proporcionan un texto más fácil de recordar. Los servidores DNS traducen estos textos a las direcciones numéricas. Enlace Online Ver video ejemplo de funcionamiento de un servidor DNS: ¿Cómo funciona el DNS? https://www.youtube.com/watch?v=t7EGv2I5FpM 8 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) Servidores y páginas web Servidores web Los servidores web (también conocidos como servidores HTTP) son un tipo de servidores utilizados para la distribución (entrega) de contenido web en redes internas o en Internet. Utilizan el protocolo HTTPS para cifrar la información que trasmite desde el cliente y hacia este, y junto a la autenticación, que limita el acceso a ciertas páginas web, proporcionando una capa de seguridad a las páginas web. Por otro lado, los servidores web cuentan con redireccionamiento que permiten reenviar al usuario desde una página web a otra, siendo totalmente transparente para el usuario. Además, para poder acelerar la carga y la navegación del usuario, utilizan el almacenamiento en caché de documentos dinámicos evitando sobrecargar el servidor web y envían y procesan cookies para almacenar cierta información en el navegador del usuario. El protocolo HTTP define un conjunto de métodos de petición que utiliza el cliente web para indicar la acción que se desea realizar para un recurso determinado. Estos métodos sirven para intercambiar información entre el cliente y el servidor. Método POST: en la solicitud de información los datos enviados no son visibles por el usuario. Método GET: la solicitud de información viene identificada en la propia URL. Método PUT: reemplaza todas las representaciones actuales del recurso de destino con la carga útil de la petición. 9 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) Método DELETE: borra un recurso específico. Es muy común la confusión de servidores web entre las maquinas hardware que contiene los servicios y el software que permite el acceso y gestiona las páginas web. Por ello, y para distinguirlos, veremos que existen diferentes tipos de "servidores web HW" como maquinaria hardware y "servidores web SW" como el software que permite la gestión web. Los tipos de "servidores web HW" son la clasificación de servidores que se pueden encontrar por internet a la hora de contratar un servicio de hosting web. Estos suponen una limitación de recursos de hardware que puede encontrarse en una o múltiples maquinas. De este modo al contratar un servidor web HW se obtendrán unas características de hardware concretas simulando una maquina donde podremos instalar el software (dependiendo de lo contratado) necesario para subir y mantener las páginas web. Entre los diferentes tipos cabe destacar el servidor compartido, servidor dedicado y el VPS. Servidor compartido o Web Hosting: permite tener una cantidad de recursos hardware que son exclusivos de un cliente, sino que son utilizado por múltiples clientes. Estos recursos suelen ser bastante limitados y no todos son ampliables por lo que, para hacer uso de recursos extra, los clientes pagan diferentes tarifas dependiendo de las ampliaciones de los recursos que requieran en estos servidores. Servidor dedicado: permite tener una cantidad de recursos hardware dedicados como si se tratase de una maquina propia. Habitualmente se permite instalar y realizar configuraciones avanzadas, puesto que esto no afecta al resto de clientes de la máquina. Por ello suelen tener un coste más elevado y su mantenimiento suele llevarse a cabo por el propio cliente o tener un coste adicional. Servidor virtual privado (VPS): ofrece un servicio similar a una máquina virtual. Esto permite simular una maquina física como si dé un servidor dedicado se tratase, pero con la ventaja de poder contratar los recursos de forma dinámica. De este modo según la demanda que tenga el servidor, la compañía puede establecer ampliaciones automáticas de los recursos por un coste adicional acordado. Cuando los requisitos son más bajos, el cliente puede limitar la cantidad de recursos hasta llegar a un mínimo contratado. 10 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) Actualmente también existe otro modelo de servicio en el que un proveedor externo aloja y mantiene la infraestructura central que incluye hardware, software, almacenamiento, servidores, espacio del centro de datos, redes y servicios de redes en nombre del cliente. Esto significa que a los clientes solo se les cobra por la infraestructura que utilizan junto con la facilidad de alojar las aplicaciones en un entorno altamente seguro y escalable. Este modelo se llama Infraestructura Como Servicio (IaaS) algunos de los principales proveedores son Amazon Web Service (AWS), Microsoft Azure y Google Cloud Platform. Los "servidores web SW" son el software que permite la gestión web. Algunos de los más destacados son: Apache HTTP: es un servidor web de código abierto que tiene la ventaja de ser y multiplataforma y estar optimizado para sistemas UNIX, Microsoft y MacOS, por lo que es muy versátil para los desarrolladores informáticos. Su código es confiable y estable y cuenta con una enorme comunidad y soporte para el mismo. Además, su configuración permite el uso simplificado para principiantes, así como la incorporación de módulos que permiten añadir mejoras de rendimiento o más funcionalidades. Por otro lado, la flexibilidad a la hora de añadir opciones y módulos adicionales, y pese a tener actualizaciones y parches con frecuencia, puede llevar a tener vulnerabilidades de seguridad en el mismo. 11 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) Internet Information Services (IIS): es el servidor web más utilizado para aplicaciones ASP.NET ya que está diseñado para el sistema operativo de Microsoft, por lo que las aplicaciones web que funcionan en él, deberán contratar un hosting Windows. Puesto que no es un servidor web de código abierto, instalar módulos nuevos es difícil, pero se adapta fácilmente a las herramientas de Windows y su paquetería. Además, cuenta con diferentes niveles de autenticación, lo que lo convierte en un servidor web muy seguro. Nginx: es un servidor web de alto nivel gratuito (aunque también existe una versión comercial) que destaca por su alto rendimiento ya que puede mantener más de diez mil conexiones simultaneas con poca memoria, es muy escalable y ligero por lo que requiere menos recursos. Incluye además funciones como servidor proxy reverso HTTP, balanceador de carga, así como POP3 y IMAP. Además, es de código abierto y multiplataforma compatible con varios sistemas como UNIX, Microsoft y MacOS. Apache Tomcat: es un contenedor de servlet Java de código abierto que funciona como un servidor web. Un servlet de Java es un programa de Java que proporciona o amplía las capacidades de java para funcionar como un servidor. Aunque los servlets pueden responder a cualquier tipo de solicitudes, generalmente implementan aplicaciones alojadas en servidores web. 12 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) Tiene la ventaja de ser poco pesado y usar pocos recursos. Además, se puede integrar fácilmente con Apache HTTP y mediante el uso de Tomcat Manager o la línea de comandos se pueden usar de un modo muy sencillo. Por otro lado, no soporta todas las librerías de Java y su configuración base es poco intuitiva. Tipos de páginas web En internet se pueden encontrar más de mil millones de páginas web, todas ellas con una finalidad y uso distinto. Todas ellas se pueden clasificar de diferentes modos o categorías, pero el más habitual es según la carga de contenido. Según dicho criterio las páginas web se dividen en dos grupos páginas web estáticas y páginas web dinámicas. Según la carga de contenido, las páginas web se dividen en: Páginas web estáticas: son aquellas cuya información no cambia y tienen el mismo contenido independientemente de la región, día, hora, etcétera, mientras el desarrollador no toque su contenido interno. Estas están habitualmente formadas por el lenguaje HTML y los estilos necesarios para la correcta visualización de su interfaz. También pueden contar con funcionalidades aportadas por lenguajes del lado del cliente. Por ejemplo, la página de un sitio web de una empresa que solo describe sus servicios y su información de negocio, no suele variar en el tiempo y siempre mostrara la misma información. Páginas web dinámicas: son aquellas que se generan en el momento de la petición al servidor, de modo que parte de la información puede provenir de una base de datos o crearse en el momento que se realice la petición. Estas ,el contenido HTML y los estilos segeneran de un modo dinámico haciendo uso de lenguajes adicionales del lado cliente y/o del lado servidor. Un ejemplo de funcionamiento habitual de este tipo de páginas es que la información cambiante o dinámica se almacena en la base de datos no en la misma página web. Cuando el cliente solicita la página web, el servidor, mediante el lenguaje del lado del servidor, realizará una petición a la base de datos para obtener la información y la 13 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) proporciona al navegador donde, mediante el lenguaje del lado cliente, se le proporciona las funcionalidades específicas a esta. Por ejemplo, cuando accedemos a un sitio web de un periódico o de una revista, estas suelen tener noticias y publicaciones que habitualmente se renuevan diariamente. Por lo que el contenido que visualizamos en la página dependerá del día, hora o incluso del país desde donde la visitemos. Enlace Online Ver video explicativo de páginas web estáticas y dinámicas: https://www.youtube.com/watch?v=LABbBI5O3GA Dentro de las diferentes paginas dinámicas, se pueden encontrar cuatro tipos de páginas que predominan. Estas son: Tiendas virtuales o comercios electrónicos suelen permitir pagos electrónicos para la compra de distintos productos o servicios que el usuario puede adquirir. Estas tienen un panel de administración protegido por una autentificación donde el cliente puede ver sus datos o compras realizadas y el administrador puede subir, actualizar o eliminar los productos y se gestionar los pedidos, pagos, facturas, etcétera. Gestor de contenidos son paginas dinámicas que permiten mediante su panel de administración, crear, administrar y publicar todo el sitio web sin necesidad de tener conocimientos de programación. Además, cuentan con módulos o extensiones que son funcionalidades adicionales que se pueden añadir a la web sin necesidad de programarlas, de este modo con un limitado conocimiento de programación es posible conseguir un sitio web muy completo. 14 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) Las aplicaciones web son herramientas donde su funcionalidad se ha creado en un entorno web de modo que permiten acceder a ellas desde un navegador web y haciendo uso de un servidor web de un modo dinámico. Algunos ejemplos pueden ser correos electrónicos, paquetes de ofimática online, buscadores, etcétera. 15 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) Lenguajes de programación del lado del servidor Las páginas web dinámicas se dividen en dos partes, la parte que puede ver el usuario final (frontend) y la parte que se encarga de que toda la lógica de una página web funcione de un modo transparente para el usuario, que se produce en el servidor (backend). Depende de la parte en la que se programen las funcionalidades existen diferentes lenguajes de programación Los lenguajes del lado del cliente Los lenguajes de la parte cliente proporcionan la funcionalidad de la página web que puede ver el usuario, de modo que su ejecución se produce en el navegador web. JavaScript (JS): Sigue siendo el lenguaje dominante del lado del cliente, impulsado por su adopción masiva, grandes ecosistemas de librerías/frameworks como React, Angular y Vue.js. Es un lenguaje interpretado, dinámico, débilmente tipado y multiplataforma que se ejecuta en los navegadores web. Su continua evolución con nuevas características como los módulos ES6 lo mantiene actualizado. 16 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) TypeScript: Es un superconjunto tipado de JavaScript que se transpila a JS. Brinda mejores herramientas de desarrollo, autocompletado, refactorización de código y soporte para programación orientada a objetos. Es muy utilizado con frameworks como Angular y React para aumentar la escalabilidad y mantenibilidad del código. WebAssembly (Wasm): Es un formato binario portable que permite ejecutar código de bajo nivel como C/C++/Rust en navegadores web con un rendimiento cercano al nativo. Ofrece una alternativa más rápida y eficiente que JavaScript para ciertas cargas de trabajo intensivas. Svelte: Es un compilador de componentes web que convierte el código en JavaScript óptimo y eficiente. Se enfoca en la creación de interfaces de usuario modernas con un enfoque reactivo y declarativo. Solid.js: Es un framework de JavaScript reactivo y declarativo que destaca por su alta velocidad de renderizado y su tamaño pequeño. Utiliza un enfoque similar a React pero con un rendimiento y tamaño de archivo mejorados. Stencil: Es un compilador para generar Componentes Web Reutilizables que funcionan en cualquier marco de front-end moderno. Permite crear componentes web estándar y 17 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) encapsulados que se pueden reutilizar en diferentes proyectos y frameworks. Lit: Es una biblioteca ligera para crear componentes web rápidos y modernos utilizando APIs web estándar como Web Components. Ofrece un enfoque simple y eficiente para construir interfaces de usuario reutilizables. Los lenguajes del lado del servidor Python: Es un lenguaje de propósito general, fácil de aprender y con una gran cantidad de bibliotecas para tareas como aprendizaje automático, análisis de datos, desarrollo web, scripting, entre otros. Se destaca por su sintaxis limpia y legible, así como por su amplio ecosistema de frameworks y herramientas. PHP: Sigue siendo ampliamente utilizado para desarrollo web, especialmente en aplicaciones de pequeña y mediana escala. Se destaca por su curva de aprendizaje baja, gran disponibilidad de hosting económico y una extensa comunidad de desarrolladores. Cuenta con múltiples frameworks populares como Laravel, Symfony y CodeIgniter. 18 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) Java: Es uno de los lenguajes más antiguos pero aún muy utilizados, especialmente en aplicaciones empresariales y de gran escala. Destaca por su robustez, rendimiento, herramientas de desarrollo maduras y una amplia gama de frameworks y librerías como Spring, Hibernate y Jakarta EE. Rust: Es un lenguaje enfocado en seguridad, concurrencia y rendimiento. Es muy utilizado en sistemas críticos, aplicaciones de alto rendimiento y proyectos que requieren un control estricto de la memoria. Cuenta con un sistema de tipos y propiedad de memory safety que lo hacen muy confiable. Go: Es un lenguaje simple, concurrente y de alto rendimiento. Es muy popular para el desarrollo de servicios web, aplicaciones de red y sistemas distribuidos debido a su facilidad de uso, rendimiento y soporte nativo para la concurrencia. 19 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) Deno: Es un entorno de ejecución seguro y moderno para JavaScript y TypeScript, diseñado como una alternativa más segura y eficiente a Node.js. Ofrece características como importación de módulos seguros, permisos de acceso granulares y compatibilidad nativa con TypeScript. Elixir: Es un lenguaje funcional diseñado para construir aplicaciones escalables y tolerantes a fallos basadas en la máquina virtual Erlang. Es conocido por su capacidad para manejar cargas de trabajo concurrentes y distribuidas de manera eficiente. Kotlin: Es un lenguaje moderno y seguro que se utiliza cada vez más en el desarrollo de servidores, especialmente en el ecosistema Java. Combina características de programación orientada a objetos y programación funcional, y es ampliamente adoptado por su interoperabilidad con Java y su enfoque en la seguridad de tipos. Swift: Aunque inicialmente diseñado por Apple para el desarrollo de aplicaciones iOS, Swift ahora también se está utilizando para el desarrollo del lado del servidor. Ofrece un rendimiento sobresaliente, seguridad de tipos y una sintaxis moderna y expresiva. 20 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) Preparación del entorno de desarrollo Herramientas de programación básicas A la hora de empezar a programar se debe disponer de herramientas que no son estrictamente necesarias para el desarrollo o gestión del código, pero si necesarias a la hora de planificar o de visualizar correctamente el resultado de este. Entre las muchas herramientas que se pueden requerir, las principales que pueden afectar a al desarrollo web en entorno servidor son: Navegadores: son el software que funciona como cliente web y permite mostrar las páginas web. Son los encargados de consultar al servidor web y mostrar los recursos que este envíe. Los principales navegadores en la actualidad son Google Chrome, Mozilla Firefox, Microsoft Edge, Safari, Opera. Herramientas de tratamiento de imágenes: son el software que permite modificar las imágenes que se mostraran en la web. Estas deben tener un tamaño adecuado al que van a ocupar en la pantalla ya que, de no ser así, en ocasiones es necesario contar con un extra de espacio en el servidor o recurrir a servidores externos para almacenarlas. Los principales editores de imágenes son GIMP (software libre), Adobe Photoshop (software propietario) para el tratamiento de imágenes no vectoriales y Adobe Ilustrador (software propietario) para el tratamiento de imágenes vectoriales. 21 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) Herramientas de Diagramas UML: son el software diseñado para planificar los diagramas y las funcionalidades de la web. Estos permiten hacer un diagrama sobre la estructura de la web de marca personal y el enlazado interno que tendrá dicha web, entre otras cosas. Los principales programas de Diagramas UML son GitMind (online y software libre), Visio (propiedad de Microsoft y muy potente) y Draw.io (online, software libre y con muchas características). Entornos de programación en servidor Para poder crear un programa o una web es muy recomendado contar con un entorno que permita realizar y editar los diferentes archivos de estos. Dentro de los entornos de programación podemos distinguirlos según sus utilidades dos tipos: Editores de código: son editores de texto con varias funciones que facilitan el proceso de escritura de código ayudando a identificar la sintaxis del lenguaje, cambiando el color de las etiquetas, cerrando etiquetas abiertas, etc. Algunos de estos se les pueden añadir extensiones que permiten ampliar sus funcionalidades llegando a ser casi tan potentes como los IDE. Entorno de desarrollo integrado (IDE): son herramienta de desarrollo de software que se utilizan para escribir, generar, probar y depurar un programa todo ello bajo una interfaz de 22 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) usuario. Los IDE pueden ser genéricos, por lo que pueden manejar múltiples lenguajes para diferentes tipos de desarrollos o plataformas, o bien ser específicos focalizándose en unos pocos lenguajes para el desarrollo de aplicaciones concretas. Existen multitud de editores de código e IDEs, algunos de los que permiten el desarrollo para lenguajes de entorno a servidor y que aceptan PHP son los siguientes: Netbeans es un IDE muy utilizado para trabajar con Java que también puede ser configurado para trabajar con PHP, HTML, CSS y JavaScript. Puedes instalar diferentes extensiones de diferentes frameworks de PHP como CakePHP o Laravel y frameworks de JavaScript como jQuery o Angular. PHPStorm es un IDE que cuenta con multitud de características para el desarrollo web, proporciona acceso e integración con diferentes sistemas de control de versiones, bases de datos, funciona con Zend Debugger y Xdebug y es compatible con los frameworks Symfony, Zend, Yii, CakePHP y Laravel e incluso con los principales sistemas de gestión de contenidos. Además, permite la edición en vivo de tecnologías frontend como CSS, Sass, HTML5, CoffeeScript, TypeScript, JavaScript, entre otras. 23 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) Eclipse es un IDE que permite el desarrollo de una inmensa cantidad de lenguajes de programación, aunque también se pueden incorporar extensiones para trabajar con diferentes frameworks de PHP y de JavaScript. Atom, Sublime Text y Visual Studio Code son dos editores de código muy ligeros para trabajar con cualquier tipo de archivos. Tienen un gestor de paquetes para instalar funcionalidades extra y pudiendo programar en multitud de lenguajes como PHP, JavaScript, CSS, HTML, etcétera. Control de versiones Las herramientas de control de versiones ayudan a los desarrolladores a realizar un seguimiento de todos los cambios realizados en los archivos por cada desarrollador, pudiendo volver atrás en dichos cambios si es necesario. Algunas de estas herramientas son: Git: es un sistema de control de versiones distribuido, diseñado para obtener un alto rendimiento, seguridad y flexibilidad, de modo que la copia del código de cada desarrollador se considera un repositorio que alberga el historial de todos los cambios realizados. Mercurial: es de control de versiones distribuido, enfocado en el rendimiento y escalabilidad que se caracteriza por la gestión robusta de archivos de texto y binarios aportando capacidades avanzadas de ramificación e integración. Subversion: es un sistema de control de versiones centralizado, en el que existe un repositorio que dispone de todo el historial de todas las versiones del software. Los desarrolladores trabajan en el mismo proyecto, pero en diferentes partes independientes, también llamadas ramas. Una vez se termina de implementar el nuevo código, se mezclan las 24 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) ramas unificándolas en una rama principal. Para facilitar la visualización, así como el mezclado, entre otras opciones que se pueden hacer, existen herramientas visuales que permiten gestionar el proyecto. Algunas de estas herramientas son: Sourcetree: para Mac OS X y Windows, que permite gestionar proyectos que usen Mercurial o GIT. GitKraken: herramienta multiplataforma que permite gestionar proyectos GIT. Puesto que los cambios realizados en una parte del software pueden ser incompatibles con los que ha hecho otro desarrollador al mismo tiempo, el programa detectará este "conflicto". Los desarrolladores deben ponerse de acuerdo en qué código deben mantener y cuál eliminar o adaptar. Los sistemas muestran estos conflictos en consola o dejando en el archivo ambos códigos. Para facilitar la visualización y selección del código correcto, existen herramientas visuales como Kdiff3, Meld o Diffmerge. Herramientas para gestión de bases de datos Para crear paginas dinámicas los proyectos suelen contar con una base de datos, ya sea propia o mediante una Api de terceros, desde donde se obtiene la información y donde se almacenan los datos aportados por los usuarios. 25 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) Entre los diferentes gestores de bases de datos, los principales y más utilizados en la actualidad, para la creación de proyectos web o móviles son: MySQL y MariaDB: y su variación MariaDB son los gestores de base de datos basa en el lenguaje de consultas estructurado SQL, de código abierto y multiplataforma más populares utilizados en la web. Estos han demostrado ser muy eficaces, fiables y sencillos de utilizar. Se basan en la arquitectura cliente/servidor y soportan Unicode y SSL, así como la posibilidad de realizar consultas de caché. SQL Server: SQL Server es un gestor de base de datos basa en el lenguaje de consultas estructurado SQL, desarrollado por Microsoft, utiliza el lenguaje Transact-SQL (T-SQL) que añade ciertas características al SQL estándar como incluir programación procedimental, variables locales, funciones para procesamiento de strings y de fechas etcétera. Además, tiene una fácil escalabilidad y una fuerte seguridad. PostgreSQL: es un potente gestor de bases de datos multiplataforma relacional y orientado a objetos y modo que extiende las funciones de SQL básico. Además, admite herencia de tablas, transacciones, integridad referencial de clave foránea, disparadores, vistas, etcétera. MongoDB: es un gestor de bases de datos abierto NoSQL orientada a documentos (almacena los datos en documentos similares a JSON), con gran escalabilidad horizontal, flexibilidad y permite tener distribución geográfica y balanceo de carga siendo apta para proyectos de alta disponibilidad. SQLite: es un gestor de bases de datos SQL autónoma sin servidor que utiliza un único archivo para almacenar la base de datos muy compacto, proporciona una alta confiabilidad, integrado, completo y muy fácil de gestionar o mantener. Es comúnmente utilizado para proyectos móviles dado su poco peso. Herramientas para administración de bases de datos Para gestionar el contenido de las bases de datos de un modo más visual, existe software que permite la administración de las mismas sin tener que utilizar la consola: 26 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) phpMyAdmin: Es un administrador de base de datos de código abierto, multilenguaje, construido con PHP, cuya interfaz es mediante el navegador web. Es una de las herramientas más utilizadas y ampliamente usada junto con XAMPP. Permite administrar bases de datos MySQL y MariaDB en varios servidores, así como importar y exportar datos en formatos como CSV y SQL. pgAdmin: Sigue siendo la plataforma de código abierto de administración y desarrollo de bases de datos para PostgreSQL más popular. La interfaz es sencilla y permite gestionar rápidamente registros, tablas y otras tareas de administración. DBeaver: Es una herramienta de código abierto multiplataforma con gran adopción para administrar bases de datos relacionales y no relacionales. Soporta una amplia gama de sistemas de bases de datos, como PostgreSQL, MySQL, SQLite, Oracle, SQL Server, MongoDB, Cassandra, entre otros. Cuenta con una interfaz intuitiva y características avanzadas como edición SQL, creación de diagramas ER, importación/exportación de datos y scripting. Adminer: Continúa siendo un administrador de base de datos de código abierto, multilenguaje, sencillo y personalizable con PHP. Soporta múltiples bases de datos relacionales y no relacionales, como MySQL, PostgreSQL, SQLite, MongoDB, Elasticsearch y más. Robo 3T (Antes Robot 3T): Sigue siendo un administrador de base de datos de MongoDB de código abierto, multiplataforma y ligero. Integra la consola en la interfaz para facilitar las consultas y proporciona herramientas para visualizar y explorar datos. TablePlus: Es un moderno administrador de bases de datos multiplataforma y de código abierto con creciente adopción. Soporta bases de datos relacionales como PostgreSQL, MySQL, SQLite, SQL Server y bases de datos NoSQL como MongoDB, Redis y Elasticsearch. Destaca por su interfaz elegante y su facilidad de uso. Beekeeper Studio: Es una herramienta de administración de bases de datos moderna y multiplataforma. Soporta bases de datos relacionales como PostgreSQL, MySQL, SQLite, SQL Server y bases de datos NoSQL como MongoDB, Couchbase, Elasticsearch y 27 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) DynamoDB. Ofrece una interfaz intuitiva, autocompletado de consultas y opciones de visualización avanzadas. También existen soluciones en la nube para administrar bases de datos, como AWS Data Migration Service, Azure Data Studio y Google Cloud SQL, pero su uso varía según los requisitos específicos del proyecto. Pilas de software Las pilas de software, también conocidas como Software Stack, son un conjunto de componentes de software preparados para dar toda la funcionalidad necesaria para el desarrollo de una aplicación. En concreto, para las aplicaciones web, la pila de software se compone de las iniciales de la arquitectura que se componen un sistema operativo, un servidor web, una base de datos y uno o varios intérpretes de lenguaje de programación. Los más conocidos para el desarrollo web en el entorno del servidor son las siguientes: XAMPP, LAMP, WAMP, MAMP: Todas ellas están compuestas por Apache, MySQL (también suelen tener preinstalado PHPMyAdmin), PHP y en el caso de XAMPP también cuenta con Perl. La diferencia principal entre ellas es el sistema operativo original para el que están desarrolladas. En principio, XAMPP era multiplataforma, LAMP para los sistemas operativos Linux, WAMP para Windows y MAMP para Mackintosh (aunque actualmente también es compatible con Windows). 28 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) También es posible encontrar variaciones para otros servidores web, como por ejemplo LEMP que es idéntico a LAMP, pero para el servidor NGINX. Por otro lado, existen otras opciones más focalizadas a infraestructuras determinadas, por ejemplo, WISA está focalizada para el sistema operativo Windows Server donde utilizara el servidor Internet Information Services (IIS) utilizando el sistema de gestión de bases de datos relacional SQL Server, con el framework de programación ASP.NET. En este caso, la pila tiene la arquitectura de los productos de Microsoft. También existen otras pilas de software que son independientes del sistema operativo. Estas se centran en dar la funcionalidad proporcionando las herramientas y frameworks necesarios para crear una aplicación web completa. Uno de estas plataformas muy utilizada es MEAN, que se compone de la base de datos NoSQL MongoDB, el servidor Express.js, el framework de parte del cliente Angular, y el framework de parte del servidor Node.js. Otra opción es MEEN, con Ember.js de parte del cliente, o MERN, con React.js de parte del cliente. Herramientas de Depuración en PHP Las herramientas de depuración, comúnmente conocidas como depuradores o debuggers, son programas que permiten a los desarrolladores buscar errores (también llamados bugs) en el código. Estos errores pueden ser analizados y corregidos. Aquí están algunas de estas herramientas ordenadas por su uso en el mercado actual: Xdebug es una extensión de PHP para el manejo de errores que mejora la función var_dump() de PHP. Agrega seguimientos para avisos, advertencias, errores y excepciones apilados (de manera secuencial). Kint es una herramienta de depuración que muestra información sobre variables y trazas. El proceso de depuración se presenta en un formato plegable y estilizado que es fácil de entender y manejar. Whoops es un framework de manejo de errores apilado que es sencillo pero potente. Permite la administración de errores para PHP y muestra los errores en una interfaz clara e intuitiva, lo que facilita la depuración de los proyectos web. 29 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) PHP DebugBar es una herramienta de depuración que integra una serie de componentes de recolección de datos en una barra de depuración. Esta barra de depuración muestra información sobre consultas de base de datos, excepciones, mensajes de log y más. Krumo ofrece a los ingenieros un bloque simple que puede ser configurado para mostrar todos los componentes de un array o objeto dado. Muestra datos organizados de casi cualquier variable PHP. Pinba es una herramienta de depuración basada en MySQL que proporciona estadísticas en tiempo real para PHP. Pinba no solo mide el tiempo de ejecución de PHP, sino también el tiempo de las consultas de MySQL. Escáneres de seguridad y errores de código PHP Los escáneres de seguridad son una posibilidad más ampliada que las herramientas de depuración de código. Estos suelen ser aplicaciones independientes o extensiones de IDE o del editor de código que, además de poder comprobar los errores de codificación, también proporcionan datos sobre lo seguro y robusto que es dicho código. Dado que la ciberseguridad es una de las preocupaciones más importantes para las empresas en la actualidad, existen diferentes herramientas y cada día se crean más. Aquí están algunos ejemplos de estos escáneres ordenados por su uso en el mercado actual: RIPS es uno de los escáneres de seguridad de código PHP más populares. Es una herramienta de análisis de código estático que se integra a través del ciclo de vida de desarrollo para encontrar problemas de seguridad en tiempo real. Puedes clasificar el hallazgo según el cumplimiento y el estándar de la industria para priorizar las correcciones. 30 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) PHPStan es una herramienta de análisis estático de código PHP que se centra en la detección de errores en el código sin necesidad de ejecutarlo. Utiliza técnicas avanzadas para entender el contexto del código PHP. Mejora la calidad del código al detectar errores antes de que el código entre en producción. Ayuda a mantener un código más limpio y menos propenso a errores. SonarPHP de SonarSource utiliza técnicas de flujo de datos y coincidencia de patrones para encontrar vulnerabilidades en códigos PHP. Es un analizador de código estático e integra con Eclipse, IntelliJ. SonarSource verifica el código con más de 140 reglas y también admite reglas personalizadas escritas en Java. Exakat es una plataforma online que permite escanear el código PHP, desde la versión 5.6 hasta la versión 8, de una página web. Se puede integrar con plataformas GIT como GITLAB o GITHUB de modo que no utiliza el PC del usuario para realizar las comprobaciones. PHP Malware Finder (PMF) es una solución auto-alojada para ayudarte a encontrar posibles códigos maliciosos en los archivos. Se sabe que detecta datos poco fiables, encoders, ofuscadores, código shell web. Herramientas IA para el Desarrollo y Diseño de páginas web La integración de herramientas basadas en inteligencia artificial (IA) está revolucionando el desarrollo de aplicaciones web. Estas herramientas facilitan la automatización de tareas, mejoran la eficiencia del desarrollo, diseñan contenido visual o textual que se alinee con la estrategia de marketing del sitio web. 31 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) DALL-E y MidJourney son herramientas generadoras de imágenes IA que permiten crear imágenes realistas a partir de descripciones textuales. Son ideales para diseñadores y desarrolladores que desean generar imágenes únicas y personalizadas para sus sitios web sin necesidad de contar con habilidades avanzadas en diseño gráfico. Canva y Wepik: son editores online que permiten a los usuarios crear diseños gráficos y visuales de manera rápida y eficiente. Son herramientas excelentes para diseñadores web que necesitan producir material visual atractivo sin invertir demasiado tiempo. DinoBRAIN y Grammarly: son herramientas que utilizan IA para optimizar el copywriting. Es útil para mejorar la efectividad de los mensajes publicitarios y promocionales, asegurando que el contenido no solo sea atractivo, sino también efectivo para alcanzar objetivos específicos de marketing. 32 / 33 UD1. Tecnologías de las aplicaciones web.md Implantación de Aplicaciones Web (IAW) GitHub Copilot, ChatGPT, Claude o Bard son un modelo de lenguaje avanzado que puede ser integrado en herramientas de desarrollo para ofrecer asistencia mediante conversación. Puede responder preguntas, explicar conceptos de programación, y generar código basado en descripciones en lenguaje natural. 33 / 33