Diseño de Sistemas a Gran Escala y Arquitectura de Software

所在平台: Udemy

课程主页: https://www.udemy.com/course/diseno-de-sistemas-a-gran-escala-y-arquitectura-de-software/

课程评论:没有评论

第一个写评论        关注课程

课程简介

**课程名称:** 大规模系统设计与软件架构 **课程概述:** 本课程旨在帮助程序员深入理解并掌握构建高可扩展性、高性能、高可用性和高可靠性系统的关键组件、技术和模式。课程强调,在日常开发中,我们往往过于关注系统功能本身,而忽略了可扩展性和可用性对于拥有数千万并发用户至关重要。本课程不涉及具体代码,而是专注于系统设计和软件架构的高层次概念。 **课程内容:** 1. **大规模系统的质量属性:** * 介绍软件架构的重要性。 * 详细讲解大规模系统应具备的关键质量属性:性能、可扩展性、可靠性和可维护性。 2. **大规模系统设计的核心概念:** * 探讨有助于应用和服务器扩展的组件,包括: * 负载均衡器 (Load Balancer) * API 网关 (API Gateway) * 消息队列 (Message Broker) * 缓存 (Cache) * 内容分发网络 (CDN) * 多数据中心部署 3. **大规模数据存储:** * 深入探讨数据存储的可扩展性技术。 * 比较关系型数据库与非关系型数据库(NoSQL)的优缺点。 * 讲解索引、反规范化 (Denormalization) 等技术。 * 深入学习数据复制和数据库分片 (Sharding) 等更复杂的技术。 * 介绍 CAP 定理。 4. **软件架构模式:** * 探讨组织软件的多种低层级选项,包括: * 多层架构 (Multilayer) 和多节点架构 (Multitier) * 微服务架构 (Microservices) * 命令查询责任分离 (CQRS) * 事件溯源 (Event Sourcing) 5. **实践练习:** * 通过分析和设计真实的、大规模的系统来应用所学知识,例如: * URL 短链服务 (如 tinyurl, bitly) * 即时通讯系统 (如 WhatsApp, Telegram, Facebook Messenger) * 电子商务平台 (如 Amazon, Ebay) * 短内容发布系统 (如 Twitter) **课程目标:** 本课程不仅能帮助您提升软件架构和系统设计方面的知识,还能为准备中高级职位的系统设计面试打下坚实基础。 **目标受众:** 对软件架构和系统设计感兴趣的程序员,特别是希望提高自身技能以应对高并发场景以及准备系统设计面试的开发者。

课程评论(0条)

课程详情

Como programadores, muchas veces nos centramos demasiado en las funcionalidades de nuestro sistema y no le damos el valor que merece a la escalabilidad y a la disponibilidad.La mayoría de aplicaciones que utilizamos en nuestro día a día son bastante sencillas en cuanto a funcionalidades. El mayor reto de un programador no es implementar dichas funcionalidades, si no que las mismas funcionen de forma eficiente para decenas de millones de usuarios concurrentes.En este curso veremos una serie de componentes, técnicas y patrones para construir sistemas con alta escalabilidad, rendimiento, disponibilidad y fiabilidad.Los contenidos del curso serán los siguientes:Atributos de calidad de un sistema a gran escala. Empezaremos con una introducción viendo la importancia de la arquitectura de software y comentando en detalle los atributos de calidad que todo sistema a gran escala debe tener. Esos son el rendimiento, la escalabilidad, la fiabilidad y la mantenibilidad.Conceptos clave en el diseño de sistemas a gran escala. A continuación, pasaremos a ver una serie de componentes que nos ayudarán a escalar nuestras aplicaciones y servidores. Veremos los Load Balancer o balanceadores de carga, las API Gateway, los Message Brokers, la Caché, los CDN o Content Delivery Network y el despliegue multi data center.Almacenamiento de datos a gran escala. También trataremos en detalle ciertas técnicas para conseguir que nuestro almacenamiento de datos escale bien. Empezaremos viendo los distintos tipos de sistemas de almacenamiento disponibles, comparando los sistemas relacionales con los no relacionales o NoSQL. A continuación, veremos los índices y la desnormalización, y pasaremos a técnicas más complejas como la replicación de datos y el particionado de Base de Datos o sharding. Para finalizar la sección, veremos el teorema CAP.Patrones de Arquitectura Software. Veremos una serie de opciones para organizar nuestro software a más bajo nivel. Comentaremos las arquitecturas multilayer y multitier, la arquitectura orientada a microservicios, el Command Query Responsibility Segregation o CQRS y el Event Sourcing.Ejercicios Prácticos. Para finalizar el curso, aplicaremos todo lo aprendido en las secciones teóricas analizando y diseñando una serie de sistemas a gran escala reales. Propondremos diseños para un acortador de URLs como tinyurl o bitly, un sistema de chat como WhatsApp, Telegram o Facebook Messenger, un E-Commerce como Amazon o Ebay y un sistema de publicaciones cortas como Twitter.Este curso no sólo te va a ayudar si quieres mejorar tus conocimientos en arquitectura de software y diseño de sistemas. También te ayudará si te estás preparando para pasar entrevistas de system design que piden en muchas empresas a partir de niveles mid o senior.Quiero recalcar que en este curso no se va a tratar nada de código. El diseño de sistemas y la arquitectura de software es un tema a alto nivel y no depende estrictamente de los lenguajes y las tecnologías usadas, por lo que no tiene sentido incluirlas ni debe estar en el alcance de este curso.El primer paso ya lo has dado, te has interesado por la Arquitectura de Software y el diseño de sistemas ¡Te animo a unirte a este curso para mejorar como programador!

课程标签

0人关注该课程

主题相关的课程