Hoja de ruta completa para aprender el diseño del sistema

¿Alguna vez has imaginado que los sitios web y las aplicaciones con las que interactuamos todos los días fueran nada menos que una pantalla en blanco como un papel? Considere un terreno abandonado que estará equipado con un edificio de 10 pisos, ahora eso requerirá Planificación, Arquitectura y Ejecución. Del mismo modo, cuando hablamos de cualquier plataforma OTT como Netflix o Disney Hotstar, también tienen arquitectura y planificación para su estructura y funcionalidad de construcción. Todo esto debe sonarte interesante, pero espera, el camino no es tan simple como imaginas.

Complete-Roadmap-to-Learn-System-Design

Entonces, para ayudarlo con esto, hemos creado este artículo para guiarlo hacia la hoja de ruta para el diseño del sistema.

Diseño de sistemas

El proceso de definir las interfaces, los módulos, los componentes y los datos de cualquier sistema para especificar los requisitos detallados puede denominarse diseño del sistema. Está destinado a satisfacer un determinado conjunto de necesidades y requisitos dentro de cualquier negocio a través de la ingeniería de sistemas coherentes y que funcionen sin problemas. En otras palabras, implica un enfoque muy sistemático en términos de diseño del sistema desde la arquitectura, hasta el hardware y software dedicado requerido y la observación de cómo viajará y se transformará en todo el sistema.

¿Cómo llegó a existir? 

La existencia del diseño del sistema se puede observar justo antes de la Segunda Guerra Mundial, durante la guerra los ingenieros intentaban resolver la complejidad para manejar los problemas de comunicación. Estaban buscando un flujo de trabajo estable y preciso de una manera fluida. Su principal área de interés eran algunos de los campos que requerían estabilidad, como operaciones, investigación, teoría de la información y ciencias de la computación, y así fue como se habló del concepto de diseño de sistemas.

¿Cuáles son los métodos de diseño de sistemas?

Hay cuatro métodos principales para caracterizar el diseño del sistema:

1. Diseño lógico

La representación de abstracción del flujo de datos que incluye tanto la entrada como la salida del sistema se puede explicar dentro del diseño lógico. El diseño lógico explica cuatro unidades principales, estas son:

  • Fuente
  • Destino
  • Almacenes de datos
  • Flujo de datos

El concepto de diseñar la unidad lógica en un sistema es preparar manteniendo el nivel de detalles que explica virtualmente el flujo de información.

2. Diseño físico

Es el proceso de entrada y salida real del sistema y su principal criterio es cuidar cómo se manipulan los datos, es decir, la verificación, el procesamiento y la visualización como resultado. Además de esto, también gira en torno al diseño de la interfaz, el diseño del proceso y el diseño de datos del usuario.

3. Diseño Arquitectónico

La disciplina que mayormente se enfoca en cumplir con los requerimientos y trabaja hacia la estructura y comportamiento del sistema. Explica la relación entre los diferentes módulos del proceso de desarrollo del sistema.

4. Diseño detallado

Ayuda a preparar la impresión sin procesar de un sistema que ayuda a habilitar los objetivos del diseño del sistema dedicado. También incluye algunos de los siguientes módulos, como la planificación del proyecto, el control, la participación del usuario y la definición del subsistema detallado.

¿Por qué elegir el diseño del sistema?

Las mejores aplicaciones con las que interactuamos tan a menudo, como Instagram, Twitter, etc. Por lo tanto, son una plataforma altamente escalable y manejan millones y miles de millones de tráfico todos los días. Por lo tanto, deben diseñar un sistema de este tipo para abordar esa cantidad de datos y tráfico sin fallas y ahí es donde entra en juego el diseño del sistema. Por lo tanto, su tarea como desarrollador será comprender los conceptos básicos del diseño del sistema y también comprender cómo y dónde aplicarlos en aplicaciones y sistemas reales. 

Durante la fase inicial de su carrera, comenzará a ser competente mientras aprende el diseño de sistemas y eso le dará la oportunidad de comenzar a aplicar los principios de diseño en sus proyectos. A medida que avance, comenzará a trabajar en la arquitectura, la infraestructura, los algoritmos y los datos dentro del diseño del sistema. Además de esto, el SDLC también incluye algunos módulos importantes, como la recopilación de datos, problemas, formulación, creación de modelos, implementación de modelos y mejora de modelos.

¿Cuáles son las habilidades requeridas para el diseño de sistemas?

Hay un puñado de habilidades necesarias para convertirse en un ingeniero de diseño de sistemas exitoso. Algunos de ellos son los siguientes:

Herramientas y técnicas: se le pedirá que aprenda una gran variedad de dominios que incluyen el diseño de sistemas. Algunas de las herramientas más utilizadas son Sketch2react, TeamCenter, Adobe XD, etc.

Habilidades técnicas: algunos de los conjuntos de habilidades fundamentales que se requieren en el diseño del sistema son los siguientes:

  • Gestión de activos
  • Desarrollo de aplicaciones (saber hacer)
  • Comprensión básica de la red dentro del sistema.
  • Desarrollo de software
  • Habilidad de documentación
  • Analítica y Toma de Decisiones
  • conceptos claros en matematicas

Habilidades fundamentales: además de los conjuntos de habilidades anteriores, hay otras cosas que debe tener mientras trabaja como ingeniero de diseño de sistemas. Algunos de ellos son:

  • Uno debe poseer la capacidad de manejar la complejidad y aplicar los métodos a escenarios de la vida real para que se puedan lograr los objetivos específicos.
  • También es necesario tener una visión clara de lo que se necesita lograr y brindar soluciones para cumplir con los requisitos del cliente.
  • Para avanzar en este campo, como en cualquier otro campo, se requiere tener una práctica regular y rigurosa y estar atento a las últimas tendencias y tecnologías.

El concepto requerido en el diseño de sistemas

Hay un puñado de conceptos que se requieren para trabajar en el diseño del sistema, las listas son las siguientes:

Diseño del sistema –> Sistema + Diseño

Donde sistema indica el montaje de unidades pequeñas y diferentes (en términos de requerimientos), mientras que Diseño indica el manejo de esas entidades (de cualquier volumen) de manera efectiva.

Además, los conceptos que se entregan al diseño del sistema son:

  • Redes de computadoras
  • Sistema distribuido
  • Computación paralela

Por lo tanto, estos son los tres conceptos principales que cubren todo el proceso que incluyen:

  • Implementación de APIs según requerimiento
  • Diseño de base de datos
  • Selección del sistema de almacenamiento
  • Selección del módulo de almacenamiento en caché, etc.

 Hagamos un recorrido completo hacia la ruta del diseño del sistema en este artículo de la hoja de ruta. Podemos dividir esto en tres pequeños fragmentos para una mejor comprensión:

Unidad I

La base: todo comienza con la introducción básica y los fundamentos de este modelo para aprender el diseño del sistema y, para eso, debe aprender algunos de los siguientes elementos clave para dominarlo con fuerza:

  • Aplicación escalable y mantenible (esta sección cubrirá cómo abordar fallas de hardware/software, mantener el rendimiento y manejar la complejidad)
  • Modelos de datos y lenguajes de consulta (lenguaje de consulta para datos, modelos de datos similares a gráficos, base de registros de datos)
  • Almacenamiento y recuperación (estructura de datos, índices hash, almacenamiento de datos)
  • Codificación y evolución (JSON, XML y variantes binarias, modos de flujo de datos)

Unidad II

Datos distribuidos: en este momento, debe haber entendido los conceptos básicos del diseño de un sistema, ahora es el momento de meterse en su piel y explorar algunos detalles de nivel avanzado en el diseño del sistema.

  • Replicación (síncrona frente a asíncrona, casos de uso de replicación multilíder, detección de escrituras simultáneas)
  • Particionamiento (replicación y particionamiento, índice secundario y particionamiento, reequilibrio de particiones, ejecución de consultas en paralelo)
  • Transacciones (operaciones de uno o varios objetos, prevención de actualizaciones perdidas, serialización, bloqueo de dos fases (2PL), aislamiento de instantánea serializable (SSI), ejecución en serie real)
  • Complejidad de los sistemas distribuidos (fallas y fallas de partición, redes poco confiables, relojes monótonos frente a la hora del día, fallas bizantinas, modelo de sistema)
  • Coherencia y Consenso (Linealizabilidad, garantías de pedido, transacción distribuida y consenso, tolerante a fallas)

Unidad III

Datos derivados: la última fase consta de los dos elementos principales que también se preguntan con frecuencia durante una entrevista:

  • Procesamiento por lotes (procesamiento con herramientas UNIX, análisis de registro simple, uniones del lado del mapa, salida del flujo de trabajo por lotes, API de alto nivel e idiomas)
  • Procesamiento de flujos (transmisión de flujos de eventos, sistemas de mensajería, base de datos y flujos, abastecimiento de eventos, procesamiento de flujos, tolerancia a fallas)

¿Cómo prepararse para el diseño del sistema?

Hay muchos recursos en Internet, pero un puñado tendrá un impacto suave y lo ayudará a aprender directamente desde su base. Algunos de los recursos útiles son los siguientes:

Preparación de la entrevista para el diseño del sistema

Prepararse para el diseño del sistema puede ser una tarea difícil si no se cuenta con los recursos suficientes y adecuados. A continuación, se incluyen algunos recursos que se pueden utilizar para prepararse para una entrevista para comenzar:

Para obtener un tutorial de diseño de sistema GRATUITO, consulte – Diseño de sistema – Tutorial

Ideas de proyectos para trabajar en el diseño de sistemas

Algunas de las ideas de proyectos más emocionantes para repasar sus habilidades de desarrollo son las siguientes:

  • Sistema de teleconferencia
  • Sistema de información de gestión de restaurantes
  • Sistema de información de seguimiento de delitos
  • Sistema de Monitoreo de Garantía de Calidad
  • Seguridad de Redes y Firewalls en el Sistema Bancario
  • Sistema de Facturación Computarizado

Publicación traducida automáticamente

Artículo escrito por yuvraj10 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *