SD - Guía 00 - Introducción - Desarrollo Full Stack
SD - Guía 00 - Introducción - Desarrollo Full Stack
SD - Guía 00 - Introducción - Desarrollo Full Stack
Introducción
El desarrollo de una aplicación distribuida profesional, como por ejemplo las actuales aplicaciones Web,
involucra multitud de tecnologías, herramientas, frameworks, perfiles profesionales tanto para su
diseño e implementación, como para su posterior mantenimiento. Para facilitar el trabajo, el diseño y el
desarrollo de este tipo de aplicaciones se suelen dividir en front-end (determina y proporciona la
interfaz con la que el usuario interactuará con la aplicación o servicio) y en back-end (contiene la lógica
de negocio de la aplicación en forma de servicios desacoplados).
Debido a la cantidad de herramientas que intervienen para proporcionar cobertura a cada tarea y a cada
componente, la cantidad de alternativas para cada una de ellas, y la gran variedad de tecnologías y
herramientas nuevas que aparecen cada día, es importante centrarse en un conjunto (una pila o stack)
de tecnologías y herramientas que facilite el desarrollo de la aplicación, cubriendo todas las
necesidades, trabajando de forma conjunta en un proyecto para crear una aplicación Web. Es por esta
razón que a este tipo de desarrollos y a sus desarrolladores se les suele denominar Full Stack.
En esta práctica nos centraremos en una pila basada en javascript conocida como pila MEAN (MEAN
Stack). Su nombre proviene de las principales herramientas y tecnologías que la conforman (figura 1):
Mongodb, Express, Angular y Nodejs.
Figura 1. Tecnologías involucradas en un desarrollo basado en la pila MEAN, junto con la relación entre los
diferentes componentes dentro de una Arquitectura Empresarial de n-Niveles.
1
DISEÑO E IMPLEMENTACIÓN DE SISTEMAS DISTRIBUIDOS
2
DISEÑO E IMPLEMENTACIÓN DE SISTEMAS DISTRIBUIDOS
Requisitos
Para realizar las prácticas, se debe contar con los siguientes elementos:
Equipo con Windows, Linux u OS X con conexión a Internet. Preferiblemente una máquina
virtual con la última versión estable de Linux.
Tener instaladas las siguientes aplicaciones:
o Visual Studio Code + Plugins para Node, JS y TS.
o Postman.
o NodeJS (node y npm).
o Git (y una cuenta con un repositorio en GitHub o Bitbacket, por ejemplo).
o MongoDB.
Conocimientos básicos de administración de SO, JS, HTML y CSS
Entregas
Se realizará una entrega a través de la aplicación UACloud en las fechas y formas que indicará el
profesor.
Dicha entrega debe contener, como mínimo, la documentación relacionada en el apartado anterior
junto con toda la documentación que se considere adecuada:
Crear una memoria que será similar a la presente guía, pero:
o documentando cada apartado de las guías con capturas de pantalla cuando sea
conveniente (por ejemplo, la interacción con Postman).
o corrigiendo (si fuera necesario) el guion (bien por erratas o, sobre todo, por cambio de
las versiones, directorios, etc.),
o indicando y actualizando las aplicaciones, librerías y sus respectivas versiones por las
que hayan optado (si es el caso),
o creando un glosario de términos en los que se explique brevemente cada término,
acrónimo, etc. (por ejemplo: API, REST, RESTful, express, node, CRUD, Mongo, …).
o Instalar y configurar las aplicaciones y librerías indicadas (documentando las decisiones
tomadas)
Crear un PDF con toda la documentación
Proporcionar las URLs de los repositorios en los que estén los componentes del proyecto. Si
dichos repositorios son privados (que deberían serlo), se proporcionará también una contraseña
de aplicación para poder acceder a su contenido.
Contenido
A lo largo del curso se irá completando este documento con la publicación de diferentes guías en las que
se especificará qué se debe hacer en cada práctica.
Las guías básicas que se publicarán son:
Guía 1. Preparación del Back-End.
Guía 2. Creación de un API RESTFul Básico.
Guía 3. Servicio Web CRUD mediante API RESTFul y MongoDB.
Guía 4. Asegurando las rutas de nuestro Servicio Web.
Guía 5. Seguridad (II).
Guía 6. Servicios Web RESTFul de Registro y Autenticación.
3
DISEÑO E IMPLEMENTACIÓN DE SISTEMAS DISTRIBUIDOS
NodeJS y SSL/TLS
https://www.sitepoint.com/how-to-use-ssltls-with-node-js/
https://blog.mgechev.com/2014/02/19/create-https-tls-ssl-application-with-express-nodejs/
Seguridad adicional
https://expressjs.com/es/advanced/best-practice-security.html
Evolución de CSS
https://juanda.gitbooks.io/webapps/content/css/evolucion.html