# data[].attributes.body
Luis Alonso Andrade López
José Armando Reyes Rodriguez

# data[].attributes.body
Se trata de un modelo de diseño de software y sistemas informaticos en el que las aplicaciones se dividen en dos partes principales: Cliente y Servidor. Estas dos partes se comunican entre si a travez de la red como el internet o una red local para poder lograr un objetivo común.
Cliente: Aplicación o sistema que solicita y consume recursos o servicios proporcionados por el servidor. Puede ser una aplicación de escritorio, una aplicación web, una aplicación movil o cualquier otro dispositivo que solicite y muestre información al usuario.
Servidor: Sistema que proporciona los recursos o servicios solicitados por el cliente, los gestiona los recursos y los envia de vuelta al cliente.

# data[].attributes.body
Ventajas:
*Es escalable, pues se pueden agregar mas clientes o servidores.
*Se pueden centralizar datos en el servidor, para que sea más facil el mantenimiento.
*Permite implementar medidas de seguridad para protección de datos y controlar el acceso.
*Los cambios si son realizados en una parte, la otra parte puede seguir funcionando (ejemplo: si se está dando modificaciones en el cliente, el servidor puede seguir funcionando).

Desventajas:
*Puede llegar un punto en el que se genere mucha latencia.
*Llega un punto en el que la escalabilidad llega a ser un desafio, por la cantidad de clientes o de servidores.
*Si un servidor falla, puede afectar a los clientes que dependan de el.

# data[].attributes.body
Se puede utilizar en muchisimas aplicaciones de hoy en dia
que requieran comunicación en red, por ejemplo aplicaciones web, sistemas de bases de datos, aplicaciónes móviles, juegos en linea. Este modelo es de los más utilizados hoy en día por que prácticamente la mayoría de aplicaciones de hoy en dia se basan en la arquitectura cliente-servidor por que requieren de comunicación en red.

# data[].attributes.body
1. Aplicaciones web

2. Correo electrónico

3. Bases de datos

4. Sistemas de gestión de contenido (CMS)

5. Aplicaciones de mensajería instantánea

6. Juegos en línea

7. Sistemas de gestión de red

8. Sistemas de reservas y compras en línea

9. Aplicaciones de almacenamiento en la nube

10. Aplicaciones de banca en línea

11. Sistemas de videoconferencia y teleconferencia

# data[].attributes.body
1. Protocolos de comunicación:

HTTP/HTTPS

FTP (File Transfer Protocol)

TCP/IP

2. Servidores web:

Apache

Microsoft Internet Information Services (IIS)

3. Tecnologías de desarrollo web:

HTML (Hypertext Markup Language)

CSS (Cascading Style Sheets)

JavaScript

4. Bases de datos:

MySQL

Oracle Database

Microsoft SQL Server

5. Frameworks de desarrollo:

Ruby on Rails

Django

Express.js

6. Servidores de aplicaciones:

Tomcat

7. Tecnologías de virtualización y contenerización:

Docker

Kubernetes

8. Protocolos de mensajería:

MQTT (Message Queuing Telemetry Transport)

AMQP (Advanced Message Queuing Protocol)

9. Tecnologías de seguridad:

SSL/TLS.

Firewalls y sistemas de detección de intrusiones

10. Plataformas de nube:

Amazon Web Services (AWS)

Microsoft Azure

Google Cloud Platform

# data[].attributes.body
*CERVANTES H., Kazman R., Designing Software Architectures, A Practical Approach, SEI Series in Software Engineering, Addison-Wesley, 2016.

*Clements, P., Bachman, F., Bass, L., Garlan, D., Iver, J., Little, R., Merson, P., Nord, R., Stafford, J., Documenting Software Architectures: Views and Beyond, 2da. Ed., Addison-Wesley, 2011.

*RICHARDS, M., Ford N., Fundamentals of Software Architecture, An Engineering Approach, O´Reilly 2020.

*TAYLOR, R. N., MEDVIDOVIC, N. DASHOFY, E. M., Software Architecture: Foundations, Theory, and Practice, Wiley, 2009.

# data[].attributes.attachment_link.title
Modelo Cliente - Servidor ¿Qué es? Explicación Sencilla ✅