Está en la página 1de 7

UNIVERSIDAD EAFIT

ST0263: Tópicos Especiales en Telemática, 2021-1

ENUNCIADO PROYECTO 2
versión draft

Profesores: Edwin Montoya Múnera - emontoya@eafit.edu.co


Juan Carlos Montoya - jcmontoy@eafit.edu.co

Descripción:

Desplegar una aplicación de comunidad que represente un sistema de información del tipo
Sistema de Gestión de Contenidos (CMS, por sus siglas en inglés). En este caso se
seleccionará wordpress.

● Sistema de gestión de contenidos - Wikipedia, la enciclopedia libre


● WordPress - Wikipedia, la enciclopedia libre

Descripción del contexto de la aplicación:

El tema o contexto de aplicación, será diseñar e implementar una comunidad temática


alrededor de las materias y contenidos de las diferentes asignaturas del programa de
ingeniería de sistemas en EAFIT (páginas, documentos, foros, chats, eventos, calendario,
etc). Al respecto, se requiere que el grupo realice una especificación más detallada de los
requisitos funcionales.

Requerimientos:

1. Documento que plasme las especificaciones/requisitos funcionales y no funcionales


de la comunidad de aprendizaje para el programa de ingeniería de sistemas de
EAFIT.
2. La aplicación deberá ser instalada en Amazon Amazon Web Services (AWS). Se
instalará la versión de producción escalable y robusta (ambiente de producción).
3. Cada miembro del grupo debe instalar en su cuenta de AWS educate la versión
monolítica del proyecto. Para esto debe utilizar:
a. Contenedores, específicamente Docker. De igual forma se debe realizar la
ejecución de los servicios utilizando Docker-compose.
b. Cada miembro del grupo deberá solicitar un nombre de dominio para la
versión monolítica que va a desplegar.

Versión draft
c. Habilitar el acceso HTTPS al sitio web desplegado utilizando el CMS
wordpress. Para esto se requiere que cada miembro del grupo, gestione la
adquisición y configuración de un certificado (es un tipo de archivo) de
Secure Socket Layer (SSL) de alguna autoridad certificadora.
Nota: Para lograr esta actividad, se le sugiere que genere el certificado SSL
utilizando el proyecto “Let’s encrypt. Aquí puede encontrar certificados
gratuitos para el dominio solicitado. Tenga en cuenta que primero debe
solicitar su dominio para poder realizar este paso.
4. A nivel de diseño de la solución, se requiere que considere lo siguiente:
a. Diseñar el sistema para 20.000 usuarios, con un nivel de concurrencia del
10%.
b. Diseñar el sistema para un almacenamiento total de 500 GB.
c. Se requiere que los clientes se conecten por diferentes ISP distribuidos por
un mismo país (80% del tráfico) y fuera del país (20%), cada usuario estará
conectado por una conexión de banda ancha de mínimo 20 Mbps.
5. Solicitar y gestionar un nombre de dominio para la aplicación del grupo. (es posible
reusar el utilizado en el proyecto1)
6. A nivel de diseño e implementación, se requiere que su solución permita:
a. La utilización de balanceadores de carga tanto externos así como internos
con el fin de satisfacer requerimientos no funcionales de alta disponibilidad.
Igualmente que permitan distribuir el tráfico sobre diferentes instancias.
b. Crecimiento horizontal por clonación. Con esta característica se debe buscar
y propender de que, en caso tal la carga de tráfico exceda la capacidad actual
del sistema, se instancie una nueva para soportar la carga de tráfico.
c. Alta disponibilidad en la capa de servicios
d. Alta disponibilidad en la capa de persistencia de datos para el manejo de
archivos.
e. Alta disponibilidad en la capa de bases de datos para el manejo de la
información almacenada en el motor definido para esto.
f. Sistema de backup y restore de datos, contenidos, aplicaciones, etc.
Nota: En este este punto solo puede utilizar o emplear un servicios
administrado de AWS p.ej. RDS, S3, autoscaling group, etc
7. Se debe definir así como utilizar estrategias que permitan contar con sistema(s) para
el monitoreo de la operación para el sitio web desplegado. En este punto, se le
sugiere considerar herramientas como uptime, que le permitan realizar un
monitoreo del sitio web y generar las alertas necesarias en caso de presentarse una
falla.

Versión draft
8. Presupuesto y estimación del costo inicial y mensual de la operación del sistema. En
el ambiente de Producción. Dado que el proyecto se va a desplegar en nube
utilizando la plataforma de AWS, se sugiere que pueda utilizar la calculadora de AWS
con el fin de estimar los costos asociados al despliegue de la solución.
9. Seguridad:
a. Solicitar, gestionar y utilizar un certificado SSL válido para la aplicación del
grupo.
b. Análisis de vulnerabilidades del sistema en producción (ver OWASP)
c. Utilización de algunas técnicas y manejo de vulnerabilidades de OWASP
d. Política de gestión de claves de usuario (passwords)
e. Implementación de técnicas de autenticación de 2 factores, (ej: recuperación
de claves mediante correo, o SMS)

f. Implementar Single Sign on (SSO), con Active Directory, LDAP, o auth0, gmail,
e integrarlo al CMS.
10. Rendimiento
a. Se requiere que se puedan lograr tiempos de respuesta del sitio web
implementado que en promedio sean entre uno (1) y dos (2) segundos como
máximo.
b. Se hace necesario que realice pruebas de rendimiento a nivel de car
concurrencia (ej: jmeter o similar)
c. Performance tunning de la aplicación (wordpress), de la Base de datos, así
como de los diferentes servicios del sistema
d. Diseño e implementación de un servicio de Content Distribution Network
(CDN , p.ej, cloud fare, o alguna similar). Esto con el fin de ayudar a mejorar
los tiempos de respuestas (latencia) y así ofrecer una mejor experiencia al
usuario final.
e. Diseño e implementación de caché a nivel de base de datos.
f. Diseño e implementación a nivel de caché para el manejo de archivos
(locales)

Reglas:

● Los equipos de trabajo deben estar constituidos máximo por tres (3) alumnos. Cada
miembro del equipo, trabajará y responderá por la parte común y el aporte con un
atributo de calidad en el sistema escalable en nube.
● Realizar el despliegue del ambiente de producción en AWS.
● Cada miembro del equipo deberá desarrollar el marco de referencia del atributo de
calidad seleccionado (documento)

Versión draft
● Se realizará el despliegue en producción en Amazon IaaS/PaaS en Docker con
Kubernetes o algunas de las opciones de despliegue que el proveedor Amazon ofrezca.
También se podría hacer en otras nubes como Azure, Google o IBM (NO en proveedores
de hosting de aplicaciones como Heroku).

Entregables:

● Documento de especificación de la Comunidad de Aprendizaje


● Documento del análisis y diseño del sistema, con sus atributos de calidad. cada
estudiante debe responder por al menos un atributo de calidad.
● Aplicación CMS wordpress funcionando en la nube cumpliendo atributos como
escalabilidad, robustez, seguridad y buena relación costo/beneficio. El sitio debe contar
con nombre de dominio y certificado SSL gestionado por el grupo.
● Documentación técnica del proceso de instalación, así como de solicitud de los
diferentes servicios de terceros empleados: nube, SSL, DNS, CDN, etc.
● Gitlab del proyecto2 con todos las fuentes de la aplicación, adaptación, automatización
devops, documentación, etc.
● Presentación del proyecto2 a modo de pitch con los resultados en funcionalidad y
técnicos.

Rúbricas de evaluación:
1. Aplicación monolítica individual desplegada en Amazon, con nombre de dominio y
certificado SSL
2. Sistema funcionando correctamente con los 3 atributos de calidad en Nube
3. Implementación de devops en pruebas y producción
4. Códigos y Documentación completa en el repo gitlab

Documento final del proyecto2 en el gitlab:

Análisis y Diseño:

1. Definición de Equipo (integrantes, emails)


2. Asignación de roles y responsabilidades de cada integrante del equipo en el
desarrollo del Proyecto2.
3. Gitlab del Proyecto2
4. Especificación de requisitos no funcionales.
a. Disponibilidad
b. Rendimiento
c. Seguridad
5. Diseño para la Escalabilidad (disponibilidad, rendimiento y seguridad)

Versión draft
a. Qué patrones de arquitectura específicos (patrones de escalabilidad y
buenas prácticas) se utilizarán en el SISTEMA para apoyar esta escalabilidad:
i. Mejores prácticas
ii. Selección de tácticas
iii. Decisiones de diseño
b. Definición de Herramientas a utilizar
c. etc
6. Otra información que considere relevante, innovadora o diferenciadora en el
despliegue de la aplicación en el sistema.

Proceso de instalación:

1. Documentación del DNS


2. Documentación de certificados de seguridad
3. Documentación de los servicios utilizados AWS/otros y el proceso de instalación
monolítica individual en AWS
4. Documentación de los servicios utilizados AWS/otros y el proceso de instalación en
AWS.
5. Análisis de Costo de la solución. Inversión inicial y mensual.
6. Documentación de monitoreo y gestión

Planeación de semanas y Fecha de entrega:


• Semana 0.
• Activar la cuenta AWS Educate
• Crear VM en AWS EC2
• Instalar Docker en el VM de AWS EC2
• Instalar wordpress en su AWS EC2
• Semana 1: abril 5-9
• Enunciado
• Entendimiento, dudas, comentarios adicionales.
• Registro en google docs del equipo de trabajo.
• Creación del repo gitlab individual y del proyecto2
• Seleccionar el sistema CMS o LMS a implementar.
• Entender la arquitectura de despliegue de una aplicación en nube.
• Usar servicios de nube IaaS, PaaS, SaaS o una combinación de ambos,
lo más seguro es que utilizaran como base IaaS.

Versión draft
• Reusar el dominio www.domain.com del proyecto1 por equipos para el
proyecto 2. ahora el www y domain.com apuntará al producto de este
proyecto 2.
• Los trabajos individuales deberán ser desplegados en:
• www1.domain.com
• www2.domain.com
• www3.domain.com
• Solicitar certificado SSL en let’s encrypt para nuestro dominio y configurarlo
en wordpress.
• 1a opción: let’s encrypt (para la versión monolítica)
• 2a opción: CloudFlare (versión escalable)
• Transferir el dominio de freenom hacia cloudflare para que allí se maneje, y
se aproveche otras características de este proveedor: gestión dns, CDN,
seguridad, monitoreo, etc.
• Lectura detallada de la documentación técnica de la aplicación a desplegar.
• leer muy bien, las especificaciones y requisitos para montar
wordpress (página de wordpress oficial)
• Descargar, Instalar y Correr la aplicación en AWS EC2
• En Docker únicamente
• Documentación hasta la fecha
• Semana 2:
• Realizar el análisis y el diseño del sistema en nube. (buscar arquitectura de
referencia de Moodle, drupal o wordpress en aws, buscar google y en
docs.aws)
• Realizar el aprovisionamiento de los recursos tecnológicos para el proyecto.
• Documentación del proceso. (en la bitácora del proyecto2)
• Diseño e implementación para alta disponibilidad
• Diseño e implementación para rendimiento
• Diseño e implementación para seguridad
• documentación del proceso.
• Semana 3: abril 19 - 23
• Monitoreo
• Pruebas
• Continuidad del servicio (tolerancia a fallos, backup, restore, recuperación
ante desastres)
• Valoración de la solución
• Entrega total Proyecto2
• Semana 4: abril 26 - 30

Versión draft
• Sustentación individual / grupal (rúbricas 3,4,5)

Versión draft

También podría gustarte