CodeGym /Cursos /Frontend SELF ES /Modelo de producto

Modelo de producto

Frontend SELF ES
Nivel 48 , Lección 1
Disponible

11.1 Productos modernos

Productos modernos

Ya nadie llama programas a los productos modernos. Un producto moderno puede consistir en decenas de programas, cientos de servicios en línea y un montón de API que proporcionan las nubes del centro de datos donde está desplegado el producto.

Muchos productos modernos (si no todos) funcionan bajo la paradigma Cliente-Servidor. Esto es cuando en tu dispositivo (teléfono, portátil, computadora) hay un programa que se encarga de la comunicación con el usuario (contigo), y toda la funcionalidad crítica está en un servidor remoto, donde ocurre todo lo importante.

A veces, tu cliente puede comunicarse con varios servidores independientes, o el servidor de un producto puede comunicarse con el servidor de otro. Se forma una especie de red global de clientes y servidores, donde todos interactúan entre sí.

Por lo tanto, el modelo moderno de aplicaciones quizás sea mejor describirlo como la paradigma Cliente-Internet-Servidor. Hay demasiada comunicación compleja en juego. Incluso han aparecido los llamados «canales inteligentes de comunicación», que deciden por sí mismos a quién enviar tu solicitud y cuándo.

11.2 Clientes

Los programas cliente se pueden dividir, aproximadamente, en 4 categorías:

  • Cliente de escritorio — programa que se ejecuta en una computadora
  • Cliente móvil — aplicación para iOS o Android
  • Cliente web — sitio web/aplicación web que se ejecuta en un navegador
  • Cliente servidor — aplicación que se ejecuta en otro servidor

Y cada uno de ellos se puede desglosar en partes. Por ejemplo, un cliente web es un sitio o aplicación web, lo que significa que consiste de un Navegador y un Sitio que se carga en él. Los navegadores tampoco son todos iguales y pueden funcionar de manera diferente.

Pero incluso si tomamos el navegador más común, queda el sitio que se carga en él. Un sitio generalmente consiste de tres cosas:

  • HTML
  • CSS
  • JavaScript

No hay nada más sencillo, dirás tú, pero ya nadie escribe sitios solo en HTML y JavaScript. Ahora para desarrollar un sitio no se usan librerías, sino frameworks completos como React, Angular o Vue. Y no son sitios ahora, sino aplicaciones web completas. Con sus propias compilaciones, pruebas y paradigmas.

Tampoco se usa ya el CSS simple: ahora hay preprocesadores de CSS que ayudan a generarlo, e incluso hay frameworks completos de CSS. Dios mío, incluso hay frameworks de CSS completos para correo electrónico, para que tu mensaje se vea bien si alguien lo ve en un navegador o en la mayoría de los clientes de correo.

Nadie escribe en JavaScript tampoco: todas las grandes aplicaciones web se desarrollan en TypeScript, que luego se compila en JavaScript. Ya lo entiendes...

11.3 Internet e infraestructura

La comunicación entre cliente y servidor — ¿qué puede ser más simple? Pero incluso eso ya ha cambiado.

Primero, es probable que tu producto esté alojado en uno de los centros de datos modernos. Muchas empresas en todo el mundo ofrecen varios servicios de hosting para tus productos, tanto en sus servidores como en tus servidores físicos. Cualquier capricho por tu dinero.

Internet e infraestructura

El servidor físico ya no es físico. Todos los centros de datos modernos te ofrecen alquilar servidores virtuales. Esto es una especie de computadora virtual, y en un servidor físico puede haber decenas de ellas. Sin embargo, es conveniente para actualizar el servidor. Si necesitas más memoria, puedes agregarla a tu servidor virtual en unos minutos.

Pero incluso este enfoque ya está quedando obsoleto. Ahora está de moda mudarse a la nube: esto es cuando tu producto no solo está desplegado en un servidor virtual en el centro de datos, sino que utiliza activamente una gran infraestructura y servicios de esos centros de datos.

Necesitas un servidor para almacenar copias de seguridad: hay toda una infraestructura conveniente en la nube para eso. ¿Necesitas una base de datos con una fiabilidad del 99.9999999%? También la hay. ¿Kafka, RabbitMQ, NoSQL? Todo ya está ahí y se configura fácilmente. Solo paga, paga.

Estos centros de datos y nubes comienzan a convertirse en parte de tu producto. Por ejemplo, Amazon tiene muchos centros de datos en todo el mundo, por lo que ofrecen un servicio CDN: tu contenido público será almacenado en caché en todos los centros de datos de Amazon, y tus usuarios en todo el mundo lo recibirán más rápido.

O las solicitudes a la API de tu aplicación se pueden pasar a través del servicio Amazon Gateway API, que permite configurar muy flexiblemente el trabajo con tus servicios. Puedes distribuir la carga en diferentes servicios, repeler ataques DDoS, automatizar la carga de archivos, configurar un almacenamiento en caché inteligente, y mucho más.

Así, entre la aplicación cliente y tus servicios surge un montón de «comunicaciones inteligentes» que se pueden y deben configurar. Incluso si nunca vas a hacer esto personalmente, deberías saber que existen y pueden influir significativamente en el funcionamiento de tu programa.

Y eso que aún no hemos tocado temas como routers, torres 5G, satélites y cables de Internet bajo el océano. Envías un flujo de video desde tu servidor a tu cliente, y este falla porque el cliente tiene mala conexión y la conexión se interrumpe constantemente. ¿Adivina quién resolverá este problema?

11.4 Servidor

La palabra servidor puede referirse a muchas cosas bastante diferentes, así que te será útil conocer las más populares.

Servidor físico

Un servidor físico es un hardware que actúa como una computadora independiente con recursos (procesador, memoria, almacenamiento), que se utiliza para procesar datos y asegurar el funcionamiento de varias aplicaciones de software. Estos servidores se instalan en centros de datos, donde proveen el poder para alojar sitios web, aplicaciones, bases de datos y otros servicios.

Servidor virtual

Un servidor virtual es un servidor emulado por software que opera en el entorno de un servidor físico. Mediante tecnologías de virtualización, un servidor físico puede dividirse en varios servidores virtuales aislados, cada uno con su propio sistema operativo y que puede ser reiniciado y configurado independientemente.

Programa-servidor (ejemplo Nginx)

Un programa-servidor, como Nginx, es un software de servidor utilizado para manejar solicitudes de recursos web. Nginx es ampliamente conocido como un servidor web, pero también puede funcionar como proxy de correo y proxy inverso en arquitecturas con microservicios y como balanceador de carga.

Servidor de base de datos

Un servidor de base de datos es un servidor especializado utilizado para gestionar bases de datos y procesar solicitudes de las mismas. Proporciona almacenamiento centralizado de datos y su procesamiento, ofreciendo acceso a los datos a través de la red. Los servidores de bases de datos admiten el procesamiento de transacciones, búsqueda y modificación de datos, asegurando al mismo tiempo la fiabilidad y seguridad del almacenamiento de información. Ejemplos de servidores de bases de datos incluyen MySQL, PostgreSQL, Oracle Database y Microsoft SQL Server.

Y ahí, en algún lugar de un centro de datos en uno de los servidores virtuales, estará funcionando tu proyecto en React y Node.js, trabajando con una base de datos, recibiendo solicitudes desde NginX y enviando los logs de sus acciones a Splunk.

Pero gracias a tu código, millones de usuarios de tu producto serán felices. Usarán el producto, pagarán por él, y entonces el propietario del producto también será feliz. Las acciones de la empresa subirán, tú recibirás bonos con acciones, y también serás feliz. ¡Exactamente el ciclo de la felicidad en la naturaleza :)

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION