- 1

Arquitectura de Backend: Diseño e Implementación de Sistemas Avanzados
02:42 - 2

Conceptos Fundamentales de Back End en Arquitectura Web
03:25 - 3

Sistemas Monolíticos vs. Distribuidos en Arquitectura Backend
04:31 - 4

Componentes de un Sistema Backend Distribuido
05:22 - 5

Conexión de Componentes Backend mediante APIs
04:11 - 6

Diseño e Implementación de Sistemas Backend Prácticos
02:33
Diseño de Arquitectura de Sistemas Distribuidos
Clase 11 de 25 • Curso Práctico de Arquitectura Backend
Contenido del curso
- 7

Definición de Requerimientos de Negocio para Desarrolladores Backend
08:52 - 8

Creación de Documentos de Diseño de Software
06:06 - 9

Creación de Documentos de Diseño en Markdown para Proyectos de Software
09:52 - 10

Revisión Efectiva de Documentos de Diseño en Equipo
10:27 - 11

Diseño de Arquitectura de Sistemas Distribuidos
15:30 - 12

Diseño de Sistemas: Documentación de Bajo Nivel y Pruebas
15:23 - 13

Planificación de Integración Continua y Rollout de Software
13:56 - 14

Definición y aplicación del concepto "Code Complete" en proyectos software
10:55 - 15

Decisiones en Diseño de Sistemas Basados en Requerimientos del Negocio
03:35
- 16

Desarrollo e Implementación de Sistemas Backend
03:35 - 17

Diseño de Entidades para Reseñas de Cámaras y Productos
08:58 - 18

Diseño e Implementación de Interfaces en C para Productos y Reseñas
18:17 - 19

Desarrollo de Pruebas Unitarias con TDD en C#
17:30 - 20

Implementación de pruebas unitarias con TDD en proyectos de software
25:16 - 21

Desarrollo de un Sistema de Reseñas en Azure
06:46
¿Cómo elaborar la arquitectura del sistema?
La arquitectura del sistema es uno de los elementos fundamentales al desarrollar un sistema distribuido. Consiste en plasmar los componentes del sistema a partir de los requerimientos de negocio, detallando cómo se conectan entre sí los distintos servicios y bases de datos. Esto se visualiza a través de bocetos o diagramas que luego se pueden formalizar utilizando herramientas de diseño de diagramas. Esta representación gráfica nos permite tener una vista clara y organizada de cómo opera y se interconecta el sistema.
¿Qué es una entrevista de diseño de sistemas?
Al aplicar a puestos de desarrollo de software en grandes empresas, es común enfrentarse a una entrevista de diseño de sistemas. Este tipo de entrevistas evalúa la capacidad de los candidatos para diseñar la arquitectura de un sistema basado en un problema específico. Por ejemplo, uno podría ser solicitado para diseñar un sistema de reviews de cámaras, donde los editores suben reviews y otros usuarios los leen.
Preguntas clave en una entrevista de diseño
- ¿Cuántos usuarios van a leer los reviews?: Esto determina el tráfico esperado y ayuda a planificar el escalamiento del sistema.
- ¿Cuántos editores habrá?: Un menor número de editores respecto a lectores puede significar que las necesidades de escalamiento son diferentes para el servicio de escritura.
- ¿Cuál es el tiempo de respuesta esperado?: Definir los tiempos de respuesta para lectura y escritura ayuda a establecer expectativas sobre la latencia que el sistema debe manejar.
Planificación del sistema
Al diseñar un sistema, es crucial visualizar la interacción entre usuarios, servicios y bases de datos. Por ejemplo:
- Interacción del usuario: Los usuarios realizan peticiones HTTP que interactúan con el sistema a través de plataformas móviles o web.
- Escalabilidad global: Configurar el sistema para que sea replicable en diferentes regiones globales, garantizando que el sistema soporte a millones de usuarios.
Servicios y bases de datos
-
Servicio de escritura: Implementado como una función serverless que procesa subidas de reviews.
// Ejemplo de servicio de escritura con una función serverless AWS Lambda o Azure Function reciben la petición y guardan en una base de datos noSQL. -
Servicio de lectura: Opera mediante un clúster de máquinas virtuales, asegurando que las peticiones de lectura sean eficientes.
// Ejemplo de servicio de lectura Conecta con una base de datos relacional, potencialmente optimizada con cachés para aumentar la velocidad. -
Procesamiento de datos: Un servicio adicional podría procesar la información desde una base de datos noSQL hacia una base de datos relacional según sea necesario.
Herramientas para representar la arquitectura
Es vital traspasar tu boceto de arquitectura a un diseño formal mediante herramientas como Diagrams.net. Esta herramienta facilita la creación de diagramas UML que reflejan la estructura y relación de los componentes del sistema. Al documentar y visualizar la arquitectura, se facilita el feedback y se promueve la mejora continua del diseño.
¿Cómo asegurarse de que la arquitectura soporta el crecimiento?
Al diseñar la arquitectura, es crucial anticipar cómo escalará el sistema con el crecimiento de usuarios y casos de uso adicionales. A medida que el sistema evoluciona, es vital revisar continuamente los componentes y asegurarse de que el diseño sigue siendo eficiente y eficaz para cumplir con los objetivos de negocio.