Está en la página 1de 26

Alejandro Canosa Casal Curso 2022-2023

Índice
Modelo de negocio

Con sede en A Coruña y una oficina en la misma ciudad , TroupFinder es una empresa
dedicada al mundo del deporte que se centra en facilitar la búsqueda de compañeros de
equipo y lugares adecuados para practicar deportes. A través de su plataforma en línea, los
usuarios pueden encontrar fácilmente otros jugadores con intereses similares y acceder a
información sobre las canchas o pistas más cercanas a ellos.

La plataforma es totalmente gratuita y está disponible para todo el mundo. La empresa


espera generar ingresos a través de publicidad pagada y asociaciones con tiendas
deportivas, que ofrecen una comisión por cada venta realizada a través de la página web de
TroupFinder.

El mercado del deporte se encuentra en un momento de crecimiento, especialmente a raíz


de la pandemia, que ha aumentado el interés por mantenerse en forma y practicar deportes.
Según la Encuesta Nacional de Deportes del Gobierno de España, el 59,6% de los
jóvenes mayores de 15 años practica deporte de forma regular u ocasional. Además, la
empresa no tiene grandes competidores en el mercado al que se dirige.

Entre los competidores más destacados se encuentra Meetup, una plataforma en línea que
permite a los usuarios crear y unirse a grupos para eventos y actividades. Aunque tiene una
gran base de usuarios, no se enfoca específicamente en deportes y no ofrece
características específicas para encontrar compañeros de equipo y lugares para practicar
deportes. Playo y SportPartner son otras opciones que se centran en el mundo del
deporte, pero su base de usuarios es más limitada y no son tan conocidas como otras
plataformas en línea.

En definitiva, TroupFinder tiene una gran oportunidad de crecer en un mercado en


constante expansión y con poca competencia directa.

Descripción externa

La plataforma funciona mediante un sistema de registro en el que los usuarios crean un


perfil con sus gustos deportivos y ubicación geográfica.

Una vez registrado, el usuario puede buscar compañeros de equipo según su deporte
preferido y ubicación geográfica. Además, puede filtrar la búsqueda según la edad y el nivel
de habilidad para encontrar compañeros de equipo adecuados.

TroupFinder también proporciona información sobre pistas o canchas cercanas que sean
relevantes para el deporte seleccionado por el usuario. Características como la tarifa, la
disponibilidad de instalaciones y las reseñas de otros usuarios ayudarán a los usuarios a
elegir el lugar adecuado.
Descripción Interna

La empresa está compuesta por distintos departamentos los cuales son:

Desarrollo de Software: Este grupo está formado por programadores y diseñadores, el


cual está enfocado en el desarrollo, tanto de la página web como de la aplicación, además
de la actualización de las mismas. Habrá 3 programadores y 2 diseñadores, aunque este
número puede ir creciendo a medida que la empresa se expande.

Marketing y promoción: Este equipo está formado por especialistas en marketing digital y
en redes sociales, dicho grupo se encarga de promocionar y dar a conocer tanto la página
web como la aplicación. En un principio habrá 3 trabajadores dentro de este equipo.

Atencion al Cliente: Este departamento estará formado por especialistas de atención al


cliente y se centrará en atender las peticiones y consultas de los clientes que tengan
problemas o dudas sobre nuestra plataforma. Dentro de este departamento se estima que al
inicio haya un total de 3 trabajadores.

Subcontrataremos a una empresa para la limpieza del local de trabajo.

Objetivos

Objetivos a corto plazo (1-2 años):

En los próximos uno o dos años, nuestro principal objetivo es establecer una base sólida
para TroupFinder, para ello, vamos a crear una plataforma estable y funcional que permita
a los usuarios obtener una experiencia agradable.

También vamos a trabajar duro para generar ingresos y garantizar la rentabilidad y el


crecimiento de la empresa, para conseguir esto, vamos a buscar acuerdos de publicidad y
asociaciones con tiendas deportivas.

Todo esto, sin descuidar la experiencia de nuestros usuarios, queremos ofrecerles una
experiencia satisfactoria y segura, garantizando la calidad de los servicios y la seguridad de
la plataforma.

Objetivos a medio plazo (3-5 años):

A medio plazo, nuestro objetivo es seguir creciendo de forma sostenible y consistente,


manteniendo la calidad del servicio y la satisfacción del usuario, para ello, vamos a fomentar
el crecimiento de la empresa y fortalecer la marca de TroupFinder.

Además pretendemos aumentar nuestras relaciones comerciales con las tiendas más
famosas del sector como Nike o Adidas.

También nos proponemos aumentar las funcionalidades de la plataforma.


Objetivos a largo plazo (5 años o más):

A largo plazo, nuestra prioridad será asegurar la rentabilidad y sostenibilidad de la empresa,


estableciendo un plan de crecimiento a largo plazo que nos permita mantener nuestra
posición en el mercado y seguir innovando en el sector deportivo.

Además nos proponemos conseguir la financiación suficiente para aumentar la


infraestructura, así como, contratar a más personal e invertir más en publicidad para
garantizar una expansión a nivel internacional.

Queremos ser una empresa viable y duradera, que siga ofreciendo servicios de alta calidad
y que pueda adaptarse a los cambios y desafíos del futuro.

Análisis de requisitos

Requisito 1 “Crear una infraestructura con disponibilidad 24x7”

Debemos crear una infraestructura que tenga disponibilidad siempre, ya que al


querer hacer un tipo de red social no podemos permitirnos que la página no este
operativa.

Requisito 2 “Crear una configuración de red adecuada”

Nuestra empresa tendrá distintos departamentos así como servidores con distintas
funciones, por tanto debemos crear una configuración de red en consecuencia y que
se adapte a nuestras necesidades.

Requisito 3 “Compra de mobiliario de oficina.”

Un requisito indispensable para la puesta en marcha de la empresa es la compra del


mobiliario de oficina.

Requisito 4 “Compra de los equipos de los empleados.”

Para que los empleados puedan trabajar es necesario que tengan unos equipos
adecuados a su trabajo.

Requisito 5 “Comprar equipo necesario para el montaje de la red”

A pesar de que la mayoría de nuestros servicios se alojarán en la nube,


necesitamos ciertos equipos de red para nuestra oficina.
Requisito 6 “Creación del Almacenamiento adecuado”

Nuestra empresa tendrá datos de usuarios y datos de nuestros empleados, así como
proyectos y datos de la misma empresa, por tanto debemos configurar el almacenamiento
de forma adecuada y que tenga resistencia a fallos, hay ciertos datos que no nos podemos
permitir perder. También debemos escoger el lugar adecuado para almacenar cada tipo de
dato.

Requisito 7 “Adquisición de licencias”

Es necesario adquirir ciertas licencias para nuestros equipos, ante cualquier duda
siempre se priorizaron las licencias open source, para abaratar los costes lo máximo
posible.

Requisito 8 “Implementación de mecanismos de autenticación”

Se necesitan mecanismos de autenticación tanto para la oficina como para la


plataforma, ya que habrá usuarios con distintos permisos dentro de la plataforma, y
en la oficina necesitamos controlar quién se puede o no conectar.

Requisito 9 “Creación de la página web”

Ya que nuestra actividad económica se basa en la propia página web, es el apartado más
importante , por tanto , debemos poner todo nuestro empeño en su creación.

Requisito 10 “Implementación de servidores necesarios.”

Nuestra empresa necesita ciertos servidores para funcionar de la mejor manera posible, a
pesar de no ser servidores tan importantes como la página web son necesarios para un
funcionamiento óptimo de la empresa, un ejemplo sería un servidor de correo.
Planificación temporal y de recursos

Instalación de Hardware: Se van a instalar y montar todos los equipos necesarios en la


oficina de la empresa. (3 personas)

Contratación de la Nube: Contratación de todos los servicios y servidores necesarios en la


nube. (1 persona)

Instalación de Software: Instalación del software pertinente en todos los equipos que lo
requieran. (3 personas)

Configuración de red: Configuración de toda la red para permitir la comunicación entre


todos los equipos y servidores (2 personas)

Configuración de Servidores: Configuración de todos los servidores, tanto los de la oficina


con los de la nube (3 personas)

Seguridad: Implementación de la seguridad en los equipos de la empresa (3 personas)

Creación de la web: Creación de la página web y de la aplicación, dicha actividad es la


más importante ya que la página web y la aplicación son el corazón de la empresa. (3
personas)

Creación de la Base de Datos: En este paso se va a diseñar y a crear la base de datos


pertinente. (2 personas)
Implementación de la Base de Datos: Esta fase consiste en implementar en los
servidores que lo necesitan la base de datos creada anteriormente. (1 persona)

Test: En esta última fase se van a ejecutar los tests finales para comprobar si todo funciona
como debería. (1 persona)

Solución planteada

Una vez expuestos los requisitos debemos plantear una solución y la primera cuestión que
queremos aclarar es donde vamos a alojar la infraestructura.

La mayor parte de la infraestructura , por no decir toda, se alojará en la nube, ya que esto
nos permite tener la disponibilidad requerida además de ser más barato que comprar todos
los servidores necesarios y montarlos en la oficina, además de la disponibilidad esto nos
permitirá ajustar los requisitos de los servidores en función de las circunstancias, es decir ,
los días que tengamos picos de actividad podemos aumentar la memoria por ejemplo y el
resto de días tener menor memoria abaratando los costos de la nube.

No obstante a la hora de escoger el proveedor que se encargará de alojar todo en la nube


debemos tener en cuenta la normativa Europea y la normativa española sobre la protección
de datos, ya que recordemos que nuestros usuarios se tendrán que registrar introduciendo
sus datos , incluido su domicilio, ya que es indispensable para el buen funcionamiento de la
plataforma.

En la oficina tendremos una copia del servidor de backup, un NAS y un servidor LDAP para
la autenticación de los empleados, eso tiene su lógica, ya que si en algún momento la nube
se ve comprometida no perderemos todos los datos , además esto nos permite trabajar en
los proyectos almacenados aunque se nos caiga la conexión a internet (Recordemos que al
querer alojar casi todo en la nube tenemos una dependencia clara de la conexión a internet)
, por otra parte el NAS es para almacenar informes o trabajos de los empleados, esto se
hace así con el fin de ganar eficiencia ya que nos evitamos el posible retardo al trabajar con
dichos archivos y suplimos parte de esa dependencia de la conexión a internet, por último el
LDAP lo montamos en la oficina ya que tiene un alto nivel de sensibilidad y seguridad, al
alojarlo dentro de la oficina nos permite tener un mayor control sobre el.

Por otro lado los servidores que estarán alojados en la nube serán, un proxy inverso para
distribuir la carga entre nuestros servidores web y de aplicaciones, un contact center para
centralizar las llamadas de los clientes y distribuirlas a los agentes , un servidor de backup
para almacenar las copias de seguridad, un servidor de git donde se almacenará codigo de
nuestros desarrolladores y también necesario para la automatización, una base de datos
donde se almacenarán los datos de nuestros clientes, un servidor VPN para que nuestros
empleados se puedan conectar desde el exterior y un servidor DNS para resolver los
nombres internos.

Como ya se mencionó antes si tenemos que emplear algún tipo de software será software
libre, de hay que utilicemos con controlador de dominio OpenLDAP, además el sistema que
se va a emplear para los equipos de nuestros empleados será alguna distribución de
Ubuntu como Ubuntu Desktop.

Una vez realizadas las aclaraciones pertinentes damos paso a la solución planteada la cual
abarcara desde el diseño de la red hasta la seguridad de la empresa.

Diseño de comunicaciones externas

Para poder comunicarnos con los servidores en la nube y para poder trabajar correctamente
necesitamos una conexión a internet fiable, debido a que todos nuestros servidores se
alojan en la nube y necesitamos si o si la conexión a internet vamos a contratar dos
proveedores de internet distintos.

También debemos tener en cuenta que vamos a tener cierto tráfico hacia internet por tanto
debemos tener una tarifa acorde a las necesidades de nuestra empresa, por tanto las dos
tarifas que contratare serán las siguientes:

Simyo

- Fibra óptica simétrica de 600 Mb


- Instalación Gratis
Digi

- Fibra óptica simétrica de 500 Mb


- Instalación Gratis

Estas son las dos compañías que hemos seleccionado. Si bien es cierto que las
velocidades de transmisión en megabytes no son idénticas en ambas tarifas, esta diferencia
se debe a las particularidades de cada empresa. Sin embargo, hemos intentado seleccionar
las tarifas más similares y asequibles posibles.

En conjunto, el costo mensual de ambas tarifas será de 43 euros, un precio que


consideramos bastante razonable. Es importante destacar que algunas empresas ofrecen
velocidades de hasta 600 Mb por un costo similar de 40 euros.

Al tener 2 proveedores distintos podemos emplear balanceo de carga , para distribuir el


tráfico entre un proveedor u otro en función de la saturación, dicho balanceo se puede
configurar en los switches de capa 3 para que vayan distribuyendo el tráfico.
Diseño de comunicaciones Internas

La red de la empresa estará dividida en dos grandes partes, la primera sería la red de la
oficina donde estarán los equipos de los empleados y un par de servidores y la otra es la
nube donde estarán la mayoría de los servidores.

La red de la oficina estará compuesta por una red interna donde estarán los equipos de los
empleados y por una red de servidores donde estarán alojados los servidores de la oficina
(Backup, Nas y Ldap). A su vez también habrá distintas VLAN.

La red de la nube estará compuesta por una red perimetral o DMZ donde estarán los
servidores con acceso directo a internet y por una red interna donde estarán los servidores
que no deben tener acceso directo con internet.

El esquema resultante de dichas división sería el siguiente:

La red estará dividida por distintas vlans que separaran los equipos en función de su
finalidad: Atención al cliente , Marketing , Desarrollo , Administración , Servidores, Wifi y
BlackHole.

La creación de Vlans se hará empleando interfaces virtuales en los switches de capa 3, ya


que esto es mucho más eficiente que emplear el método router-on-a-stick, las vlans se
tendrán que crear en todos los switches y emplear los enlaces troncales donde sea
necesario.

Asignaremos el siguiente rango para toda nuestra entidad, 172.16.0.0/16 , el motivo para
utilizar dicha red es simplemente evitar las redes 192.168.1.0/24 ya que al querer permitir
que los empleados se conecten desde sus hogares debemos tener en cuenta las IP de sus
casas , es decir , si pusiesemos IPs dentro del rango 192.168.1.0/24 en la oficina más de
algún empleado tendría problemas para poder acceder a la VPN ya que las IP de nuestra
oficina colisionarian con las IP de su hogar.

El motivo por el cual escogimos la máscara 255.255.0.0 es por que así nos aseguramos
que tendremos IP suficientes para todos nuestros equipos, además dicha máscara nos
permite hacer suficientes subredes para toda nuestra empresa.

Dicho rango los dividiremos en redes /24 para cada una de las VLAN y para cada
departamento.

Teniendo todo esto en cuenta así quedarían las Vlan con sus respectivas redes asignadas:

Subred Puerta de enlace

Atención al cliente (Vlan 10) 172.16.1.0/24 172.16.1.254

Marketing (Vlan 20) 172.16.2.0/24 172.16.2.254

Desarrollo (Vlan 30) 172.16.3.0/24 172.16.3.254

Administración (Vlan 99) 172.16.0.0/24 172.16.0.254

Servidores (Vlan 40) 172.16.4.0/24 172.16.4.254

Wifi (Vlan 50) 172.16.5.0/24 172.16.5.254

BlackHole (Vlan 101) No IP No Gateway

Una aclaración que tenemos que hacer es que la vlan 101 o también llamada BlackHole es
una Vlan exclusiva para meter todas aquellas interfaces que no se estén usando en los
switches, esto con el objetivo de aumentar la seguridad y evitar cualquier brecha, también
mencionar que la vlan de administración es una vlan diseñada para poder administrar los
equipos y la red.
Para poder sostener todo esto vamos a emplear dos switches de capa 3 y dos switches de
capa 2, los switches de capa 3 serán los encargados de enrutar hacia las distintas vlans y
los switches de capa 2 son los que conectarán los equipos de cada departamento.

Los switches de capa 3 están conectados entre sí por varios cables empleando la
tecnología etherchannel, ya que esto nos permite aumentar el ancho de banda de las
conexiones.

Integración de redes y dispositivos

Ahora vamos a explicar cómo se van a integrar y a conectar los dispositivos entre sí.
Nuestro oficina tendrá solo una planta la cual estará dividida en dos partes, una donde se
alojarán los empleados y otra que actuará a modo de CPD ya que hay estarán el servidor
de Backup , el NAS y el LDAP, estos irán conectados a un switch de capa de 2 y aun SAI
para que nos dé tiempo a apagar todo correctamente en caso de caída de la electricidad.

Los cables que vamos a utilizar para interconectar todo serán cables UTP de categoría 6
con conector RJ-45, escogemos este tipo de cable ya que tienen un mayor ancho de banda,
mejor calidad de señal y mayor capacidad para transmitir a largas distancias en
comparación con cables de categoría inferior. Además, cumplen con los estándares
actuales de la industria y son bastante duraderos.

Estos cables estarán etiquetados para poder identificarlos con la mayor facilidad posible
además irán dentro de canaletas de plástico las cuales se podrán en la pared , techo o
suelo en función del caso. Los cables de los equipos de los empleados irán conectados a un
roseta central con conectores RJ-45, también irán guiados por canaletas en caso de que el
cable sea demasiado largo.

Los dispositivos de la red estarán conectados a un Switch de Capa 2, el cual a su vez


estará conectado a un Switch de Capa 3. Cada dispositivo estará asignado a una Vlan
específica según el departamento al que pertenezca. Además, los Switches de Capa 3
serán los encargados de asignar direcciones IP a cada dispositivo mediante el uso del
protocolo DHCP, también cabe mencionar que ambos switches de capa 3 se conectaran
entre sí empleando Etherchannel ya que esto nos permite agrupar varios cables físicos en
uno lógico, lo que nos brinda más ancho de banda.

Los switches de capa 3 irán conectados a un firewall , el cual, actuará también de proxy y
dicho firewall estará conectado a los routers que darán acceso a internet a toda nuestra
oficina.

En los switches de capa 3 también emplearemos el protocolo llamado HSRP ya que este
nos proporciona redundancia de gateway en la red. Esto significa que si un switch de capa 3
falla , el otro dispositivo puede tomar su lugar para evitar interrupciones en la conectividad
de la red. Con esto tendremos un gateway activo y otro de reserva, esta variará en función
de la Vlan.
También mencionar que vamos a emplear ciertas medidas de seguridad como desactivar
los puertos que no se estén utilizando y asignarlos a la Vlan BlackHole y limitar las
direcciones MAC por puerto de modo que solo los equipos autorizados puedan conectarse a
través del switch.

Diseño de servicios de red.

Para asegurar el funcionamiento de la empresa es necesaria la implementación de ciertos


servicios de red, los cuales estarán repartidos entre la oficina y la nube. La nube nos
permite tener alta disponibilidad en nuestros servicios lo cual es bueno de cara a nuestros
usuarios.

Dentro de nuestra propia oficina como ya se comento solo tendremos tres servidores, un
NAS , un servidor de backup y un Ldap, ambos serán servidores independientes y no irán
virtualizados ya que no merece la pena la virtualización de tres servidores.

En la nube estarán el resto de servidores, la página web, el git corporativo, el dns etc. ya
que la nube nos ofrece escalabilidad, confiabilidad, flexibilidad geográfica y menores costos
iniciales, permitiendo un fácil mantenimiento y actualizaciones, y una respuesta rápida a los
cambios en la infraestructura.

Controlador de dominio Ldap

Uno de los principales servicios es el Ldap, el cual nos va a servir para la autenticación de
los empleados de la empresa, además de permitirnos la compartición de archivos.

Se ha decidido implementar LDAP como controlador de dominio principalmente por la


gratuidad del servicio, aunque también influyeron sus múltiples ventajas como la eficiencia
en la organización de datos, su flexibilidad y escalabilidad , su interoperabilidad etc.

Nuestro dominio se dividirá en unidades organizativas, las principales serán empleados y


equipos. Dentro de los empleados encontraremos dos unidades más usuarios y
departamentos, dentro de los usuarios estarán todos los empleados de la oficina y dentro de
departamentos estarán los propios departamentos que son 3: Desarrollo, Marketing y
atención al cliente, cada usuario estará asociado a un departamento específico. Dentro de
los equipos estarán todos los equipos de la empresa.
Los usuarios dispondrán de perfiles moviles, ademas de tener diferentes unidades de red:

Unidad personal: Unidad de uso personal para cada usuario

Archivos: Unidad donde se almacenarán datos que se quieran poner en común con el
departamento, cabe mencionar que cada departamento tendrá esta unidad separada, es
decir, los del departamento de marketing no podrán acceder a los archivos del
departamento de desarrollo. Dicha unidad será almacenada en un NAS.

Administración: Unidad donde se almacenarán datos referentes a la administración.

Gitlab

Otro de los servicios que se van a implementar en la empresa es un gitlab corporativo,


donde los empleados encargados del desarrollo y la automatización (La cual la haremos
empleando ansible ) crearán proyectos y subirán el código, con el objetivo de poder trabajar
en grupo y tener el código almacenado. Dentro del propio departamento de desarrollo
habrá distintos proyectos, si bien todos pueden ver el código de todos solo se podrá
modificar el código del proyecto al que pertenezcas.
DHCP

Dicho servicio nos permitirá asignar las IP de forma automatizada en los equipos de nuestra
empresa. Para poder asignar las IP por DHCP se configuraran los switches de capa 3 para
que actúen como servidor DHCP.

DNS

Necesitaremos un DNS interno para poder resolver los nombres de nuestro dominio
Troupfinder.local. Se utilizará Bind como DNS. El DNS solo será para resolver nombre
internos, para que nuestros clientes puedan resolver el nombre de nuestra página web se
comprara un dominio a una página externa.

Los reenviadores a utilizar en nuestro DNS para resolver nombres externos, serán los de
google con IP “8.8.8.8” y “8.8.4.4”.

A continuación se pone un ejemplo de configuración:

Servidor Web

El servidor web es el motor de nuestra empresa ya que es donde vamos alojar nuestra
principal fuente de ingresos que es la página web, el servidor web, no solo aloja la página
web si que también aloja la aplicación móvil, por esta razón disponemos de 2 servidores , ya
que no podemos permitir que nuestros usuarios experimenten un retardo muy notorio (Esto
se puede escalar e ir aumentando , es lo bueno de estar en la nube). La página web
funcionará sobre Apache, PHP y MySQL, la aplicación se va a servir de todo esto para
poder funcionar, ya que el propio servidor web dará servicios de backend a la aplicación.

Para poder crear la página web se emplea un CMS como joomla y para crear la aplicación
se empleare un IDE como Visual Studio code y se usará Java.

Servidor Backup

Servidor dedicado al almacenamiento de las copias de seguridad de las máquinas de


nuestra empresa, dispondremos dos servidores de Backup uno situado en la nube y otro
situado en la oficina, esto para que haya redundancia y no dependamos al 100% de la
nube. Las copias de seguridad se harán de forma automatizada empleando Ansible.

VPN

Contar con un servidor VPN resulta fundamental para posibilitar que nuestros empleados
puedan conectarse desde sus hogares a la oficina, lo cual abre un amplio abanico de
posibilidades en cuanto al teletrabajo. Además de esto, esta solución ofrece una protección
sólida en términos de seguridad y privacidad de las conexiones, asegurando la
confidencialidad de la información corporativa.
Gestor base de datos

Utilizaremos MySql como gestor de la base de datos, usaremos la versión comunity ya que
esta es gratuita.

Se utilizará la última versión disponible que actualmente es la 8.0.33 y utilizaremos el motor


de almacenamiento por defecto de Mysql, InnoDB

Firewall

Utilizaremos Pfsense como firewall tanto en la nube para filtrar las conexiones indeseadas y
en la oficina tendremos un firewall físico ya que no son excesivamente caros, además no
tendremos ninguna plataforma de virtualización.

Contact Center

Si queremos tener una atención al cliente adecuada necesitaremos de los servicios de un


contact center para poder distribuir las llamadas a los agentes que estén disponibles y
gestionar los correos entrantes al departamento de atención al cliente.

Correo Electrónico

El correo electrónico es una parte importante de la empresa ya que es una de las vías que
tenemos de comunicación con nuestro clientes , ya que es una de las vías principales de
comunicación actualmente.

Dicho servicio será externalizado y lo contrataremos con google ya que esto no da acceso a
su workspace y esto es muy útil para nuestros empleados, porque además del propio correo
esto nos proporciona un calendario para poder marcar las reuniones, un chat ciertos
programas ofimáticos etc.

Diseño de la base de datos

La base de datos se diseñará para TroupFinder una empresa cuya principal fuente de
ingresos es la página web. Antes de crear el diagrama debemos exponer los
requerimientos:

Nuestro objetivo principal es proporcionar a los usuarios una plataforma donde puedan
encontrar compañeros de equipo y lugares apropiados para jugar sus partidos, basándose
en su ubicación geográfica. Además, queremos permitir a cada usuario crear grupos, tanto
públicos como privados, para invitar a sus amigos y así poder acordar el día y el lugar para
practicar su deporte favorito. También ofrecemos un calendario donde se mostrarán los
próximos partidos.

La página web contará con diversas características adicionales para mejorar la experiencia
del usuario. Tendremos un sistema de mensajería que permitirá a los usuarios comunicarse
con sus amigos, así como un sistema de amistad para agregar personas a su lista de
amigos. Además, habrá una sección de estadísticas donde los usuarios podrán registrar los
resultados de cada partido. También implementaremos un sistema de valoración que
permitirá a los usuarios calificar las habilidades de cada jugador (La valoración se hará con
estrellas de 0 a 10).

Dado que somos una plataforma deportiva, contaremos con una sección de noticias
relacionadas con el deporte preferido de cada persona. Los anuncios que se mostrarán en
la página serán externos, excepto por las colaboraciones pagadas con marcas del sector.
Nos esforzamos por brindar a nuestros usuarios una experiencia completa y satisfactoria en
nuestra plataforma.

Modelo entidad Relación

Una vez expuestas las tablas que se van a crear, vamos a mostrar el diagrama ER
resultante:
Modelo Relacional

A continuación se muestra el modelo relacional creado a partir del diagrama expuesto


anteriormente:
Implementación

Se ha elegido MySQL Community Server como el administrador de base de datos. Para


llevar a cabo la implementación, se proporciona el contenido del archivo .SQL que creará la
estructura básica de la base de datos:

-- Creación de la base de datos

CREATE DATABASE troupfinder;

USE troupfinder;

-- Crear la tabla Usuarios

CREATE TABLE Usuarios (


Id_usuario INT(10) NOT NULL,
Nombre VARCHAR(50) NOT NULL,
Apellido VARCHAR(50),
Dirección VARCHAR(100) NOT NULL,
Media_Punt FLOAT,
PRIMARY KEY (Id_usuario)
);

-- Crear la tabla Amigos

CREATE TABLE Amigos (


Id_Usuario INT(10) NOT NULL,
Id_Amigo INT(10) NOT NULL,
FOREIGN KEY (Id_Usuario) REFERENCES Usuarios (Id_usuario) ON UPDATE
CASCADE ON DELETE RESTRICT,
FOREIGN KEY (Id_Amigo) REFERENCES Usuarios (Id_usuario) ON UPDATE CASCADE
ON DELETE RESTRICT,
PRIMARY KEY (Id_Usuario, Id_Amigo)
);

-- Crear la tabla Grupos

CREATE TABLE Grupos (


Id_Grupo INT(10) NOT NULL,
Id_Creador INT(10) NOT NULL,
Nombre VARCHAR(50) NOT NULL,
Tipo VARCHAR(10) NOT NULL,
FOREIGN KEY (Id_Creador) REFERENCES Usuarios (Id_usuario) ON UPDATE
CASCADE ON DELETE RESTRICT,
PRIMARY KEY (Id_Grupo)
);
-- Crear la tabla Miembros_Grupos

CREATE TABLE Miembros_Grupos (


Id_Usuario INT(10) NOT NULL,
Id_Grupo INT(10) NOT NULL,
FOREIGN KEY (Id_Usuario) REFERENCES Usuarios (Id_usuario) ON UPDATE
CASCADE ON DELETE RESTRICT,
FOREIGN KEY (Id_Grupo) REFERENCES Grupos (Id_Grupo) ON UPDATE CASCADE
ON DELETE RESTRICT,
PRIMARY KEY (Id_Usuario, Id_Grupo)
);

-- Crear la tabla Deportes

CREATE TABLE Deportes (


Id_Deporte INT(10) NOT NULL,
Nombre VARCHAR(50) NOT NULL,
Descripción VARCHAR(100) ,
PRIMARY KEY (Id_Deporte)
);

-- Crear la tabla Gustos_Deportivos

CREATE TABLE Gustos_Deportivos (


Id_Usuario INT(10) NOT NULL,
Id_Deporte INT(10) NOT NULL,
FOREIGN KEY (Id_Usuario) REFERENCES Usuarios (Id_usuario) ON UPDATE
CASCADE ON DELETE RESTRICT,
FOREIGN KEY (Id_Deporte) REFERENCES Deportes (Id_Deporte) ON UPDATE
CASCADE ON DELETE RESTRICT,
PRIMARY KEY (Id_Usuario, Id_Deporte)
);

-- Crear la tabla Partidos

CREATE TABLE Partidos (


Id_Partido INT(10) NOT NULL,
Id_Creador INT(10) NOT NULL,
Id_Deporte INT(10) NOT NULL,
Id_Lugar INT(10) NOT NULL,
Fecha DATE NOT NULL,
FOREIGN KEY (Id_Creador) REFERENCES Usuarios (Id_usuario) ON UPDATE
CASCADE ON DELETE RESTRICT,
FOREIGN KEY (Id_Deporte) REFERENCES Deportes (Id_Deporte) ON UPDATE
CASCADE ON DELETE RESTRICT,
FOREIGN KEY (Id_Lugar) REFERENCES Ubicacion_Juego (Id_Lugar) ON UPDATE
CASCADE ON DELETE RESTRICT,
PRIMARY KEY (Id_Partido) );
-- Crear la tabla Participantes_Partido

CREATE TABLE Participantes_Partido (


Id_Usuario INT(10) NOT NULL,
Id_Partido INT(10) NOT NULL,
FOREIGN KEY (Id_Usuario) REFERENCES Usuarios (Id_usuario) ON UPDATE
CASCADE ON DELETE RESTRICT,
FOREIGN KEY (Id_Partido) REFERENCES Partidos (Id_Partido) ON UPDATE CASCADE
ON DELETE RESTRICT,
PRIMARY KEY (Id_Usuario, Id_Partido)
);

-- Crear la tabla Ubicacion_Juego

CREATE TABLE Ubicacion_Juego (


Id_Lugar INT(10) NOT NULL,
Id_Deporte INT(10) NOT NULL,
Nombre VARCHAR(50) NOT NULL,
Ubicación VARCHAR(100) NOT NULL,
FOREIGN KEY (Id_Deporte) REFERENCES Deportes (Id_Deporte) ON UPDATE
CASCADE ON DELETE RESTRICT,
PRIMARY KEY (Id_Lugar)
);

-- Crear la tabla Mensajes

CREATE TABLE Mensajes (


Id_Mensaje INT(10) NOT NULL,
Id_Emisor INT(10) NOT NULL,
Id_Receptor INT(10) NOT NULL,
Contenido VARCHAR(500) NOT NULL,
FOREIGN KEY (Id_Emisor) REFERENCES Usuarios (Id_usuario) ON UPDATE CASCADE
ON DELETE RESTRICT,
FOREIGN KEY (Id_Receptor) REFERENCES Usuarios (Id_usuario) ON UPDATE
CASCADE ON DELETE RESTRICT,
PRIMARY KEY (Id_Mensaje)
);

-- Crear la tabla Valoraciones

CREATE TABLE Valoraciones (


Id_Valoración INT(10) NOT NULL,
Id_Valorado INT(10) NOT NULL,
Puntuación FLOAT ,
FOREIGN KEY (Id_Valorado) REFERENCES Usuarios (Id_usuario) ON UPDATE
CASCADE ON DELETE RESTRICT,
PRIMARY KEY (Id_Valoración)
);
-- Crear la tabla Deporte_Asociado

CREATE TABLE Deporte_Asociado (


Id_Grupo INT(10) NOT NULL,
Id_Deporte INT(10) NOT NULL,
FOREIGN KEY (Id_Grupo) REFERENCES Grupos (Id_Grupo) ON UPDATE CASCADE
ON DELETE RESTRICT,
FOREIGN KEY (Id_Deporte) REFERENCES Deportes (Id_Deporte) ON UPDATE
CASCADE ON DELETE RESTRICT,
PRIMARY KEY (Id_Grupo, Id_Deporte)
);

Diseño de software y paquetes de software

El software a utilizar será en gran medida open-source, principalmente debido a que este
tipo de software es gratuito.

Los sistema operativos que se van a utilizar serán los siguientes:

- Los servidores se instalarán Ubuntu Server 22.04 LTS sin interfaz gráfica.
Escogemos dicho sistema para los servidores ya que es gratuito, es compatible con
los diferentes servicios que vamos a emplear y hay bastante documentación de este
sistema gracias a la activa comunidad que tiene, además de ofrecer rendimiento,
estabilidad, seguridad y flexibilidad.

- Tanto para los empleados que trabajarán en marketing como para los que
trabajarán en Atención al cliente se instalará Ubuntu Mint en sus equipos ya que es
un sistema bastante amigable con los usuarios, tiene amplia documentación y es
gratuito.

- Para los desarrolladores se instalará Fedora, ya que es un sistema enfocado para


desarrolladores que viene con un conjunto de herramientas para el desarrollo,
además es fácil de usar y gratuito.

Ahora que sabemos que sistemas operativos vamos a emplear, es conveniente que
nombremos las aplicaciones que se van a instalar para cada departamento.

Primero empecemos por las aplicaciones comunes para todos los departamentos:

- Como navegador web se instalará Google Chrome, usamos dicho buscador por
varias razones, la principal es que vamos a emplear Google Workspace y este
navegador tiene integradas las herramientas de google, también es gratuito y fácil de
usar.

- Como gestor de contraseñas se utilizará Bitwarden, ya que es de código abierto,


fácil de utilizar y bastante seguro.
- Como antivirus instalaremos emplearemos ClamAV ya que ofrece protección contra
malware con actualizaciones frecuentes y capacidad de detección de diversos tipos
de amenazas, además es gratuito.

Una vez expuestas las aplicaciones comunes a todos los departamentos, vamos a mostrar
que aplicaciones exclusivas tendrá cada departamento.

Las aplicaciones exclusivas para los empleados del departamento de Desarrollo son las
siguientes:

- Git: Se instalará git en todos los equipos de los empleados del departamento de
Desarrollo, ya que tendremos un servidor de git alojado en la nube donde los
empleados podrán subir su código para hacer proyectos colaborando con sus
compañeros.

- Visual Studio Code: Se instalará la herramienta Visual Studio Code para poder editar
el código pertinente de la página web y la aplicación, además incluye soporte para la
depuración, control integrado de Git y es gratuito.

- Docker: Los desarrolladores tendrán docker instalado para que puedan hacer las
pruebas que crean oportunas dentro de los contenedores.

- Selenium: Selenium es una herramienta de automatización de pruebas para


aplicaciones web, esto nos permite agilizar las pruebas web, mejorar la calidad del
software y ahorrar tiempo y recursos a los desarrolladores.

- Trello: Trello es una herramienta de gestión de proyectos con tableros visuales, se


decidió instalar porque facilita la organización, asignación y seguimiento de tareas
de manera colaborativa, mejorando la productividad y la comunicación del equipo.

- Ansible: Herramienta para la automatización de tareas, dicha herramienta la van a


aprovechar tanto los desarrolladores como tal como los administradores.

Las aplicaciones exclusivas para los empleados del departamento de Marketing son las
siguientes:

También podría gustarte