Domine los términos esenciales para tener éxito en sus entrevistas de diseño de sistemas con explicaciones, ejemplos prácticos y recursos completos
El desempeño en la entrevista de diseño de sistemas siempre es un factor crítico para validar si un candidato puede idear sistemas escalables y eficientes. El conocimiento de las principales terminologías sin duda ayudará a tener éxito en ellas. A continuación, se presentan las 50 terminologías más importantes que debe conocer en la entrevista de diseño de sistemas, que explicaremos con definiciones y ejemplos prácticos, junto con recursos adicionales para aprender.
1.Escalabilidad
- Definición : Es la capacidad de un sistema para soportar una mayor carga añadiendo recursos.
- Ejemplo : adición de más servidores para gestionar el aumento del tráfico web.
- Más información : ¿Qué es la escalabilidad y cómo lograrla?
2. Balanceador de carga
- Definición : Dividir el tráfico de red entrante entre varios servidores para que ningún servidor procese una gran cantidad de carga.
- Ejemplo : equilibrio de carga del tráfico web en varias instancias EC2 mediante el servicio AWS Elastic Load Balancer (ELB).
- Más información : Descripción del balanceador de carga
3. Microservicios
- Definición: Es un patrón arquitectónico que fuerza la estructuración de una aplicación como una colección de servicios acoplados de forma flexible.
- Ejemplo: dividir una aplicación monolítica en servicios independientes responsables de la gestión de usuarios, el procesamiento de pagos y el envío de notificaciones.
- Más información : ¿Qué son los microservicios?
4. Teorema CAP
- Definición : Establece que, en el mejor de los casos, solo se pueden obtener dos de tres garantías en un sistema distribuido: consistencia, disponibilidad y tolerancia a la partición.
- Ejemplo : cuándo intercambiar consistencia por disponibilidad (y viceversa) en el diseño de bases de datos distribuidas.
- Más información : Comprensión del teorema CAP
5. Fragmentación
- Definición : Implica dividir una base de datos grande en fragmentos más pequeños llamados fragmentos para una mejor gestión.
- Ejemplo : fragmentación de una base de datos de usuarios según la región geográfica.
- Más información : Explicación de la fragmentación de bases de datos
6. Latencia
- Definición : Se define como el tiempo que tardan los datos en viajar del punto A al punto B.
- Ejemplo : Medir el retraso en la entrega de un mensaje a través de una aplicación de chat.
- Más información : ¡La latencia explicada!
7. Rendimiento
- Definición : Una medida de la cantidad de datos que un sistema procesa en un período de tiempo determinado.
- Ejemplo : Solicitudes procesadas por un servidor web en un segundo.
- Más información : Rendimiento en redes informáticas
8. Caché
- Definición : Cualquier componente de hardware o software que almacena datos para evitar futuras solicitudes de los mismos datos, entregándolos rápidamente.
- Ejemplo : Implementación del almacenamiento en caché de Redis para consultas de base de datos repetidas.
- Más información : Explicación del almacenamiento en caché
9. Red de distribución de contenido (CDN)
- Definición : Un sistema de servidor, geográficamente disperso, que muestra contenido web a un usuario en función de la ubicación geográfica desde la que accede.
- Ejemplo : uso de CDN de Cloudflare para una carga más rápida de páginas web.
- Más información : ¿Qué es una CDN?
10. API REST
- Definición : un tipo de estilo arquitectónico diseñado para crear servicios web donde se accede a los datos y se manipulan mediante solicitudes HTTP.
- Ejemplo : Diseño de la API de redes sociales según los principios REST (transferencia de estado representacional).
- Más información : Tutorial de API REST
11. GraphQL
- Definición : Es un lenguaje diseñado para consultar datos, por lo que es mucho más potente, eficiente y flexible que REST.
- Ejemplo : usar GraphQL para consultar información del usuario en una sola solicitud.
- Más información : Introducción a GraphQL
12. ÁCIDO
- Definición : Un conjunto de propiedades que garantizan el procesamiento confiable de las transacciones de bases de datos. Las propiedades son atomicidad, consistencia, aislamiento y durabilidad.
- Ejemplo : Garantizar que una transacción bancaria tenga propiedades ACID evita que se corrompan los datos.
- Más información : Propiedades ACID en bases de datos
13. BASE
- Definición : Una alternativa a ACID que enfatiza la disponibilidad y la tolerancia a las particiones por sobre la consistencia estricta. Básicamente, un sistema disponible, de estado flexible y eventualmente consistente.
- Ejemplo : Diseño de una base de datos NoSQL altamente disponible y eventualmente consistente.
- Más información : BASE vs ÁCIDO
14. NoSQL
- Definición : Un tipo de base de datos diseñada para promover el almacenamiento y la recuperación de datos modelados de maneras distintas a las relaciones tabulares utilizadas en bases de datos relacionales.
- Ejemplo : uso de MongoDB para un almacén de datos basado en documentos.
- Más información : ¿Qué es una base de datos NoSQL?
15. SQL
- Definición: Es el lenguaje estándar utilizado para almacenar, manipular y recuperar datos en bases de datos relacionales.
- Ejemplo: escribir consultas SQL para recuperar datos de una base de datos relacional.
- Más información : Tutorial de SQL
16. Indexación de bases de datos
- Definición : Es una técnica de estructura de datos que permite la búsqueda rápida y el acceso a los datos de una base de datos.
- Ejemplo : crear una indexación en la columna de ID de usuario para mejorar la velocidad de búsqueda.
- Más información : Indexación de bases de datos
17. Replicación
- Definición : Un proceso de copia y mantenimiento de objetos de base de datos en una multitud de bases de datos que conforman un sistema de base de datos distribuido.
- Ejemplo : implica permitir que una base de datos esté altamente disponible en diferentes ubicaciones geográficas mediante la replicación.
- Más información : Replicación de bases de datos
18. Conmutación por error
- Definición : Un modo operativo de respaldo en el que las funciones de los componentes del sistema son asumidas por otros componentes del sistema en caso de pérdida de un componente principal del sistema.
- Ejemplo : Conmutaciones por error automáticas integradas a servidores en espera en caso de una falla del servidor de sus aplicaciones de Internet.
- Más información : Failover vs recuperación ante desastres
19. Puerta de enlace API
- Definición : Un servidor que se ubica al frente de una API, recibe solicitudes de API, aplica políticas de limitación y seguridad y luego las reenvía a servicios back-end.
- Ejemplo : uso de AWS API Gateway para administrar API.
- Más información : ¿Qué es una API Gateway?
20. Malla de servicios
- Definición : Una capa de infraestructura dedicada para facilitar las comunicaciones de servicio a servicio entre microservicios.
- Ejemplo : Integración de Istio como una malla de servicios para la gestión de interacciones de microservicios.
- Más información : Introducción a Service Mesh
21. Computación sin servidor
- Definición : Una implementación de computación en la nube que “permite dinámicamente la asignación de recursos de la máquina por parte del proveedor de la nube”.
- Ejemplo : ejecute código de backend sin ningún aprovisionamiento de servidor en su extremo usando AWS Lambda.
- Más información : ¿Qué es la informática sin servidor?
22. Arquitectura basada en eventos
- Definición : Un paradigma de arquitectura de software que fomenta la generación, detección, consumo y reacción ante eventos en general.
- Ejemplo : Diseñar un sistema con comunicaciones de eventos entre microservicios utilizando Apache Kafka.
- Más información : Arquitectura basada en eventos
23. Arquitectura monolítica
- Definición : Una arquitectura de software en la que todos los elementos están integrados en una única aplicación y se ejecutan como un único servicio.
- Ejemplo : antiguas aplicaciones empresariales tradicionales creadas como una única unidad de gran tamaño.
- Más información : Arquitectura monolítica vs. arquitectura de microservicios
24. Sistemas distribuidos
- Definición : Un modelo en el que los componentes ubicados en computadoras en red se comunican entre sí y coordinan sus acciones pasando mensajes.
- Ejemplo : Diseño de un sistema de archivos distribuido como Hadoop.
- Más información : Introducción a los sistemas distribuidos
25. Cola de mensajes
- Definición : Este método permite la comunicación asincrónica de servicio a servicio tanto en arquitecturas sin servidor como en arquitecturas de microservicios.
- Ejemplo : usar RabbitMQ para poner en cola mensajes entre servicios.
- Más información : Explicación de las colas de mensajes
26. Modelo Pub/Sub
- Definición: Un patrón de mensajería en el que los remitentes (editores) publican mensajes de forma tan abstracta que cualquiera de ellos puede ser accedido por los destinatarios sin que el remitente tenga que conocer siquiera la identidad de los receptores de destino (suscriptores).
- Ejemplo: Un sistema de notificación que utiliza Google Cloud Pub/Sub.
- Más información : Mensajería de Pub/Sub
27. Particionado de datos
- Definición : División de una base de datos en partes más pequeñas y manejables.
- Ejemplo : Particionar una tabla en una base de datos por fecha para permitir una ejecución de consultas ultrarrápida.
- Más información : Particionamiento de bases de datos
28. Escala horizontal
- Definición : Aumentar la capacidad agregando más máquinas o nodos dentro de un sistema.
- Ejemplo : agregar más servidores web para gestionar un volumen creciente de tráfico de usuarios.
- Más información : Escala horizontal vs. vertical
29. Escalado vertical
- Definición : Actualizar una máquina ya existente con más potencia en forma de CPU o RAM.
- Ejemplo : actualizar la RAM de un servidor para que pueda manejar más solicitudes a la vez.
- Más información : Escala horizontal vs. vertical
30. Limitación de velocidad
- Definición : Significa controlar la velocidad del tráfico que el controlador de interfaz de red está enviando o recibiendo.
- Ejemplo : Limitar el uso de una API para evitar comportamientos abusivos.
- Más información : Comprender la limitación de velocidad
31. Patrón de disyuntor
- Definición : Un patrón de diseño utilizado en el desarrollo de software moderno, aplicado para detectar fallas y encapsular la lógica de evitar que una falla se repita constantemente.
- Ejemplo : manejo de llamadas de servicio remoto fallidas mediante un disyuntor en una arquitectura de microservicios.
- Más información : Patrón de disyuntor
32. Consistencia de los datos
- Definición : Garantizar que los datos sean los mismos en múltiples instancias y no estén dañados.
- Ejemplo : Mantener la consistencia de los datos del usuario a través de múltiples réplicas de una base de datos.
- Más información : Modelos de consistencia de datos
33. Consistencia eventual
- Definición : Un modelo de consistencia utilizado en la computación distribuida con el objetivo de lograr alta disponibilidad, que establece que las actualizaciones de un sistema eventualmente se propagarán y se reflejarán en todos los nodos.
- Ejemplo : Amazon DynamoDB proporciona un modelo eventualmente consistente para la operación de lectura.
- Más información : Consistencia eventual
34. Fuerte consistencia
- Definición : Un modelo de consistencia que garantiza que cada lectura obtenga la escritura más reciente en una unidad de datos determinada.
- Ejemplo : Utilización de una fuerte consistencia en un sistema de transacciones financieras.
- Más información : Fuerte consistencia
35. Contenerización
- Definición : Básicamente, esto ocurre cuando una aplicación y sus dependencias se encapsulan en un contenedor para ejecutarse en cualquier entorno computacional.
- Ejemplo : usar Docker para contenerizar las aplicaciones para su implementación en varios entornos, como desarrollo, prueba, producción, etc.
- Más información : ¿Qué es la contenerización?
36. Kubernetes
- Definición: Una plataforma de código abierto que automatiza el proceso de implementación, escalamiento y operación de contenedores de aplicaciones.
- Ejemplo: ejecutar e implementar aplicaciones en contenedores utilizando Kubernetes.
- Más información : Documentación de Kubernetes
37. Escalado automático
- Definición : Ajuste automático de la cantidad de recursos computacionales en función de la carga de usuarios.
- Ejemplo : utilizar la función de escalamiento automático de AWS EC2 para ajustar dinámicamente la cantidad de instancias.
- Más información : Explicación del escalado automático
38. Multi-inquilino
- Definición: Arquitectura donde una única instancia de una aplicación de software sirve a múltiples consumidores/clientes.
- Ejemplo: las aplicaciones SaaS, como Salesforce, utilizan múltiples inquilinos en la prestación de servicios a sus diferentes categorías de clientes.
- Más información: ¿ Tenencia única versus tenencia múltiple?
39. Reducción de carga
- Definición : Reducir algunas demandas o degradar servicios para mantener la salud del sistema general bajo alta carga.
- Ejemplo : Esto desactivará todos los servicios no esenciales durante las horas pico de tráfico.
- Más información : Reducción de carga
40. Idempotencia
- Definición : Propiedad de algunas operaciones matemáticas y de informática que establece que tienen el mismo efecto si se repiten más de una vez.
- Ejemplo : una solicitud HTTP DELETE es idempotente.
- Más información : Idempotencia en las API
41. Cuórum
- Definición : El número mínimo de votos necesarios para confirmar una transacción distribuida.
- Ejemplo : Básicamente, la replicación basada en quórum garantiza que exista consistencia en la base de datos distribuida.
- Más información : Sistemas de quórum
42. Orquestación
- Definición : Un patrón de interacción de servicios donde un coordinador central controla la interacción entre servicios.
- Ejemplo : utilizar un motor de flujo de trabajo para gestionar un proceso empresarial de varios pasos.
- Más información : Orquestación
43. Coreografía
- Definición : Un patrón de interacción de servicios en el que cada servicio es autónomo e interactúa con otros a través de eventos; no habrá ningún coordinador u orquestador.
- Ejemplo : Microservicios que se comunican a través de un bus de eventos en un patrón de coreografía.
- Más información : Coreografía vs. Orquestación
44. Registro de servicios
- Definición : Una base de datos que realiza un seguimiento de las instancias de microservicios.
- Ejemplo : uso del registro de servicios Eureka en una arquitectura de microservicios.
- Más información : Registro y descubrimiento de servicios
45. Limitación de la tasa de API
- Definición : Significa controlar cuántas solicitudes puede realizar un cliente contra una API dentro de un período de tiempo determinado.
- Ejemplo : Limitar las solicitudes a una API a 100 por minuto para evitar abusos.
- Más información : Limitación de velocidad de API
46. Almacén de datos
- Definición: Un sistema que ayuda en la generación de informes y análisis de datos de negocio; el centro de Business Intelligence.
- Ejemplo: Amazon Redshift se puede implementar en el almacenamiento de datos.
- Más información : ¿Entiendes el almacén de datos?
47. Lago de datos
- Definición: Un sistema o repositorio donde los datos se guardan en formato nativo/sin procesar, generalmente como blobs de objetos o archivos.
- Ejemplo: escalamiento de petabytes para almacenar y gestionar datos estructurados y no estructurados en un lago de datos.
- Más información : Data Lake
48. OLAP
- Definición: Procesamiento analítico en línea: La categoría de software que permite el análisis de datos guardados en una base de datos.
- Ejemplo: Uso de los cubos OLAP para consultas analíticas puntuales y arbitrarias.
- Más información : OLAP explicado
49. Transferencia de archivos OLTP
- Definición : Procesamiento de transacciones en línea: una clase de sistemas que gestionan aplicaciones orientadas a transacciones.
- Ejemplo : uso de sistemas OLTP para la gestión de datos de transacciones, como en los sistemas bancarios, etc.
- Más información : OLTP explicado
50. Grandes datos
- Definición : Conjuntos de datos grandes y complejos que, en el mejor de los casos, no pueden gestionarse de manera eficiente mediante un software de procesamiento de datos convencional.
- Ejemplo : Analizar las interacciones en las redes sociales para predecir las tendencias de la moda.
- Más información : Introducción al Big Data
Tenga en cuenta que todo se trata de aprender y practicar continuamente a medida que avanza en el diseño de sistemas. Puede trabajar con los recursos, participar en los debates y practicar estos conceptos en sus proyectos. Los recursos y los debates le permitirán familiarizarse con el vocabulario y los usos del concepto.
¡Gracias por leer! Si te resultó útil, comparte esta guía con otras personas para que también puedan hacer estos ejercicios. Si tienes ideas, preguntas o recursos, visita nuestra sección de comentarios.
¡Feliz diseño de sistemas!
¡Conéctate conmigo en Linkedin , Github y sitio web para saber más!