Tabla de contenido
PalancaPrefacio
El diseño de sistemas siempre ha sido algo con lo que quiero estar familiarizado y también fue algo para lo que pasé mucho tiempo preparándome cuando me preparaba para las entrevistas. Por lo tanto, he decidido dedicar algún tiempo a estudiar y registrar en 2024, y espero producir una serie de artículos fáciles de entender para ayudar a cualquier lector interesado en el diseño de sistemas.
¿Qué es el diseño de sistemas?
El diseño del sistema es un proceso de definición de varios componentes del sistema, API, modelos de datos y sistemas integrados para completar sistemas a gran escala con ciertos requisitos funcionales. Tomando como ejemplo el diseño de una plataforma de reproducción de video como Youtube, no solo debemos considerar cómo almacenar y transmitir de manera eficiente grandes cantidades de datos de video, sino también cómo admitir los requisitos del usuario de alta concurrencia y cómo garantizar la estabilidad del sistema y escalabilidad.
El desafío del diseño de sistemas es que requiere cubrir una amplia gama de campos de conocimiento, que incluyen, entre otros, tecnología de Internet, tecnología de procesamiento paralelo, principios de sistemas distribuidos, gestión de bases de datos, procesos de desarrollo de software, etc. El uso combinado de este conocimiento permite a los diseñadores crear sistemas que sean grandes y estables, además de escalables y tolerantes a fallas. La complejidad de los sistemas distribuidos es particularmente alta, pero a través de disciplinas relevantes y conocimiento del diseño de sistemas, podemos gestionar mejor esta complejidad para lograr de manera efectiva los objetivos del sistema.
El diseño del sistema generalmente gira en torno a las siguientes características, a saber, confiabilidad, efectividad y mantenibilidad:
Confiable
Un sistema confiable es aquel que continúa funcionando ante errores, fallas o fallas.
Eficaz
Efectividad significa que el sistema satisface todas las necesidades comerciales y expectativas de los usuarios.
Mantenibilidad (mantenible)
La mantenibilidad garantiza que el sistema sea fácil de administrar y pueda ampliarse o reducirse de manera flexible para facilitar la adición de nuevas funciones.
Componentes del sistema (bloque de construcción)
Por lo general, extraemos diferentes componentes de diseño del sistema y combinamos componentes con diferentes funciones para finalmente construir un sistema de software. Por ejemplo: equilibrador de carga, base de datos. La ventaja de separar los componentes de esta manera es que podemos simplemente pensar en qué componentes se necesitan para construir un sistema de software que satisfaga las necesidades del problema. Además, si necesitamos ampliar el tráfico y la escala del sistema, también podemos analizar cada componente en detalle.
¿Quién es adecuado para esta serie de artículos?
Esta serie espera ser leída por los siguientes lectores. Si es un lector que no tiene contacto con programas y software, es más recomendable seguirla. Instagram , que contiene gráficos y conocimientos de texto más básicos.
desarrollador de software
El diseño de sistemas suele ser una pregunta de entrevista para ingenieros superiores, arquitectos e ingenieros jefes. El tema del diseño de sistemas involucra una gama muy amplia, ya sea un ingeniero de front-end, un ingeniero de back-end, un ingeniero de extremo completo o un ingeniero de mantenimiento, todos ellos son responsables de bloques específicos en un sistema de software. Por lo tanto, si desea tener una comprensión más completa de los sistemas de software, debe comprender el diseño del sistema.
estudiante de diseño de sistemas
El diseño de sistemas es un tema interesante. Todos pueden obtener una comprensión más profunda del campo de la tecnología de software durante el proceso de aprendizaje del diseño de sistemas. Y también puede utilizar algunos ejemplos prácticos para comprender cómo las grandes empresas diseñan y construyen un sistema de software desde cero y amplían la escala del sistema de software con el tiempo.
preparador de entrevistas
Como se mencionó anteriormente, el diseño de sistemas es una pregunta de entrevista para ingenieros superiores, arquitectos e ingenieros jefes de muchas empresas de tecnología. Por lo tanto, para los ingenieros de software que se están preparando para participar en entrevistas con empresas de tecnología, el diseño de sistemas suele ser una parte importante de la entrevista. . Al aprender el diseño del sistema, podrá prepararse mejor para las entrevistas y aumentar sus posibilidades de aprobarlas.
Se espera una serie de artículos para explicar
Dividiré esta serie en varias partes diferentes para explicar, a saber, conceptos de diseño del sistema, componentes de diseño del sistema y problemas de diseño del sistema:
concepto de diseño
Antes de explicar realmente el diseño del sistema, debemos explicar los conceptos y teorías del diseño del sistema, incluida la teoría CAP común, los métodos para calcular el tráfico del sistema y los conceptos abstractos del diseño del sistema. Con estos conceptos previos, los lectores tendrán una comprensión más clara de por qué nació el diseño de sistemas.
Componentes de diseño del sistema (bloques de construcción)
En el capítulo sobre componentes de diseño del sistema, explicaré los componentes comunes del diseño del sistema. Cubre los elementos básicos del diseño de sistemas, cada uno de los cuales se explicará en detalle en varios artículos separados. Esta parte no solo nos ayudará a comprender más componentes de diseño de sistemas diferentes, sino que también nos ayudará a comprender más aplicaciones de software.
Problemas de diseño del sistema
Esta parte es el núcleo de la serie de artículos y se centra en la resolución de problemas prácticos de diseño de sistemas. Aquí se proporcionarán y explicarán una serie de diferentes cuestiones de diseño de software. Cada cuestión de diseño de sistema cubrirá una amplia gama de temas, desde el procesamiento de datos hasta el diseño de la interfaz de usuario. A través de estas preguntas, los lectores tendrán la oportunidad de aplicar conocimientos teóricos a situaciones del mundo real y aprender a diseñar sistemas escalables, eficientes y confiables.
Otras referencias de artículos
Experiencia de entrevista de ingeniero de software de Yahoo! 2023
Baliza web ¿Qué es una baliza web? Además de las cookies, herramientas que necesitas conocer
¿Entiendes realmente Monorepo? 5 minutos para presentarle la arquitectura front-end a gran escala