Ingeniería de Software
Ingeniería de Software
Ingeniería de Software
Ingeniería en Software II
2021-2023
Actividad Entregable 1
Esta actividad tiene como propósito llevar a cabo una investigación sobre la
arquitectura de software de dos sistemas comerciales actuales, en la que se
identifique y describa sus componentes y se establezca similitudes y
diferencias.
INTRODUCCIÓN
OBJETIVO
Descripción de la actividad
Spotify
Es un software comercial, cuyo propósito es la distribución de música mediante una
plataforma o aplicación que permite a los usuarios acceder a contenido multimedia.
La aplicación sigue un modelo freemium: Los servicios básicos están disponibles de
forma gratuita, mientras que las características avanzadas necesitan de una cuenta
Premium. Esta cuenta Premium permite la reproducción sin anuncios, en alta calidad
y, para las versiones móviles, la elección de la canción a reproducir en cada
momento. La versión gratuita para dispositivos móviles sólo permite la reproducción
de listas o el contenido disponible de un artista de forma aleatoria. El 70% de los
beneficios que se obtienen se pagan en forma de royalties a artistas y discográficas,
mientras que el 30% restante queda para la compañía.
Arquitectura de software
Spotify es una empresa que ha ido evolucionando y aplicando el concepto de que si
una empresa desea una moverse rápido y mantenerse innovadora en un mercado
altamente competitivo requiere una arquitectura que pueda escalar.
Partiendo de este concepto la empresa planteo un ciclo de desarrollo de arquitectura
basado en 3 etapas que son:
Diseño: Ante dichas necesidades Spotify llegó a la conclusión de que, para poder
dar solución a los requerimientos establecidos y a su vez poder escalar a cientos de
millones de usuarios, debía plantar un sistema que permita escalar los componentes
de forma independiente. Y fue así que decidió construir una arquitectura de micro-
servicios con equipos full-stack autónomos a cargo, para evitar el infierno de
sincronización dentro de la organización. Estos equipos son autónomos y su misión
no se superpone con la misión de otros equipos. Y este diseño se adaptó de forma
óptima que al día de hoy cuenta con alrededor de 90 equipos, 600 desarrolladores y
5 oficinas de desarrollo en 2 continentes que crean el mismo producto.
La arquitectura de software basada en micro-servicios de spotify le permite reducir
drásticamente las grandes fallas ya que le permiten tener una gran cantidad de
servicios inactivos al mismo tiempo sin que los usuarios lo noten, debido a que los
servicios individuales que podrían fallar no están haciendo demasiado, por lo que no
pueden arruinar la experiencia de usar Spotify.
Para el lado de los usuarios o clientes, estos mantienen una conexión permanente a
un servicio llamado “accesspoint”, que trabaja mediante un router muy potente,
permitiendo la comunicación con los servicios necesitados. El protocolo entre los
clientes y accesspoint es propio de spotify, y funciona mediante un socket
multiplexado sobre TCP. Este maneja un lenguaje en C++. El objetivo principal del
Accesspoint es manejar el estado de la autenticación, login del usuario, tasa de
enrutamiento, entre otros.
Un diagrama representativo de la arquitectura de software de Spotify es el siguiente:
Salesforce
Es un software comercial de baja demanda, que se basa en una plataforma de
gestión de relaciones con los clientes (CRM) mediante la gestión de marketing,
ventas, comercio, servicios y TI.
Sus servicios se basan en la nube mediante una plataforma multiusuario, dicha
plataforma mantiene tecnología de metadatos (conjunto de datos que describen el
contenido informativo de un recurso, de archivos o de información de los mismos), y
trabajan bajo servicios de datos, inteligencia artificial y API para el desarrollo.
Arquitectura de Software
La arquitectura de Salesforce se basa en un patrón de 2 arquitecturas de software
que son: arquitectura en capas y arquitectura basada en eventos. En la primera
arquitectura los componentes del software o aplicación están organizados en capas
horizontales, en este caso encontramos 3 capas de distribución de componentes
que son:
1. Aplicaciones (Diferentes servicios o componentes del sistema)
2. Plataforma (Base del programa que conecta las aplicaciones con el servidor)
3. Salesforce (Servidor que resguarda la información y datos de los clientes)
Esta arquitectura es la base de toso los procesos del software y permiten una
funcionalidad optima del aplicativo a nivel de clientes y servidores. Sin embargo,
para entablar una comunicación más estratégica con los usuarios, Salesforce
plantea una segunda arquitectura de software basada en eventos.
Función Individual:
Los microservicios nacen con la idea primordial de dividir los sistemas en partes
individuales, permitiendo que se puedan tratar y abordar los problemas de manera
independiente sin afectar al resto.
Para cubrirlas cada una de las necesidades, se utilizan microservicios, los cuales
tienen una serie de características que nos permiten desarrollar el producto de forma
ágil.
Función en Conjunto:
Una arquitectura de microservicios funciona con un conjunto de pequeños servicios
que se ejecutan de manera autónoma e independiente.
Figura 10: Arquitectura de microservicios.
Fuente: (Decide, 2019)
Función Individual:
Función en Conjunto:
Como vimos Salesforce tiene dos arquitecturas, en ella actúa la de tres capas y la
arquitectura orientada a eventos, en donde cada capa tiene que actuar el publicador
y suscriptor para el envío de mensajes.
En la tercera capa esta la BD junto con el consumidor, de manera que los procesos
que realice, se vayan generando en la Base de datos, y donde diagnostica el evento
y notifica al servidor o al cliente.
Similitudes Diferencias
Para comunicarse lo hacen en Procesamiento de flujo de
forma horizontal así solo se elementos a través de una
comunican con su inmediata plataforma de transmisión de
capa o evento. datos. A través de capas realiza
Su facilidad para desarrollar una descomposición funcional
aplicaciones y además de para mejorar su escalabilidad,
implementar un enfoque de utilización de recursos.
programación. Toda su estructura se basa en
Presentan un gran volumen de eventos, mientras que la otra
datos y velocidad para el IOT. estructura se basa en capas.
Ambos son patrones de diseño El enfoque que realiza siempre
que actúan en tiempo real y que es bajo eventos, desde producto
están listos para responder a al consumidor. Mientras que por
cualquier acción en respuesta a capas va desde una capa cliente
una orden dada. y pasa por varios procesos hasta
la capa de la base de datos.
Conclusiones
Bibliografía: