Fundamentos de Arquitectura Platzi
Fundamentos de Arquitectura Platzi
Fundamentos de Arquitectura Platzi
Esenciales
Las Metodologías Ágiles Redifinieron los Roles para acomodarlos a su filosofia de Trabajo
(Tradicional vs Metodologías Ágiles).
Experto de Dominio: (tradicional) Era la persona que acudiamos para resolver las necesidades de
los REQUERIMIENTOS{Que se requiere para este Software}
Experto de Dominio: (Metodologías Ágiles) Hace un analisis de los stakeholders (Que resolver de
su Producto?)
Analista (Tradicional): Es la Persona que indaga en Que es lo que hay q resolver, define un
problema…
QA - Equipo de Texting (Metodologías Ágiles): Fueron Unidos en un Solo Equipo de Desarrollo (QA-
Tester, Desarrollador, Aquitecto) Se Encarga de Tomar las decisiones arquitectonicas (La
arquitectura Emergera de un Equipo Autogestionado)
Gestor del Proyecto (Tradicional): Se ecargaba de todo lo que era la entrega, Cumplir con toda la
gestion del ciclo de Vida del Proyecto
Gestor del Proyecto (Metodologías Ágiles): Se conoce como Facilitador (SCRUM Master) lleva al
equipo atraves de el ciclo de (Entender que es lo nos Para)
“La estructura del sistema, compuesta por elementos de software, sus propiedades visibles y sus
relaciones”
Cada uno de los stakeholder tiene que ser conectado por el Arquitecto con sus requerimientos.
Las metodologías Agiles plantean que la arquitectura emerge de un equipo auto-gestionado y por
ende ven al diseño de una solución como algo evolutivo y que se va dando de sprint a sprint.
Diferencias:
estos son los agentes que van ayudar al arquitecto a tomar decisiones, el arquitecto contara
con herramientas de diseño para poder
tomar esto como entrada, para luego tener un modelo de la arquitectura y la documentación
para implementar ese modelo, la etapa de diseño no
Agile: En la metodología ágil todo se trata de momentos en donde podemos evaluar o reevaluar
nuestras decisiones, esto se realiza en el planeamiento del spring que es donde planeamos los
momentos arquitectónicos importantes. Una vez planeado el spring y se define lo que se tiene que
definir arquitectónicamente se ejecuta en base a las prioridades que se tienen y luego se le lleva al
usuario haciendo el despliegue y gracias a eso se obtiene feedback, cabe destacar que una vez que
se obtiene feedback se pueden reevaluar las decisiones de la arquitectura.
El problema:
El espacio de la solución
Brinda el detalle del “cómo”, reflejando los detalles del problema detectado, evitando resolver
problemas que no se quiere resolver.
Los Requerimientos
Una vez que entendemos el espacio del problema y el espacio de la solución, vamos a entrar a
analizar los requerimientos de nuestro sistema.
Requerimientos de producto
• Capa de requerimientos de negocio, son reglas del negocio que alimentan los requerimientos del
negocio.
• Capa de usuario, tienen que ver en cómo el usuario se desenvuelve usando el sistema, qué
atributos del sistema se deben poner por encima de otros.
• Capa Funcional, se ven alimentados por requerimientos del sistema, ¿qué cosas tienen que pasar
operativamente?
Esta capa se ve afectada por las restricciones que pueden afectar operativamente a lo funcional.
• Requerimientos funcionales: (Funciones indispensables) Tienen que ver con las historias de
usuarios, que hablan sobre específicamente lo que hace el sistema, por ejemplo que usuario
ingrese al sistema.
Requerimientos de proyecto
• Tienen que ver más con el rol de gestor de proyectos, se usan para dar prioridad a los
requerimientos del producto.
• Estos dos mundos de requerimientos hablan de las prioridades del equipo de trabajo del
proyecto.
• Tiene que ver con requerimientos logísticos, que no tienen que ver con el desarrollo del
software.
Los Riesgos
Es necesario identificar los riesgos para poder priorizarlos y atacarlos en orden y asegurar que las
soluciones arquitectónicas que propongamos resuelvan los problemas más importantes.
Se calificará su riesgo de acuerdo a la incertidumbre que genere, cuanto mas incertidumbre hay,
mas alto es el riesgo.
Pregunta de examen:
Los riesgos hay que identificados para poder priorizarlos, recuerda que no es necesario mitigarlos
todos, debemos siempre tener en cuenta y dar prioridad a aquellos riesgos que ponen en peligro
la solución que se está construyendo.
Las Restricciones
Las restricciones en el contexto de un proceso de desarrollo de software se refiere a las
restricciones que limitan las opciones de diseño o implementaciones disponibles al desarrollar.
Los StakeHolders, nos pueden poner limitaciones relacionadas con su contexto de negocio,
ejemplo:
• El ciclo de vida del producto, agregará limitaciones al producto, por ejemplo a medida que
avanza el proceso de implementación el modelo de datos va a ser más difícil de modificar.
Nota:
Apuntes:
Panorama Arquitectónico
Hay muchas librerías, muchos frameworks, mucho conocimiento arquitectónico implícito entre las
comunidades.
Programa principal y subrutinas: Es el estilo más básico donde se tiene una rutina y se manda a
llamar otra subrutina en donde la subrutina puede retornar o no un resultado, pero la rutina
principal continua hasta que acabe la subrutina.
Orientada a Objetos: Una versión con esteroides del estilo anterior. Se utiliza para aplicaciones
que vamos a mantener por mucho tiempo. Tratamos de juntar el estado de la aplicación creando
objetos los cuales tienen una interfaz publica (interfaz en este caso se refiere a una definición de
funciones o estructura que esta clase puede implementar) donde la llamada no es solo una
subrutina, sino objetos que interactuán entre si.
En este caso no estamos tan preocupados por cual es la secuencia de ejecución sino como los
datos fluyen de un punto a otro.
Flujo de datos:
• Lote secuencial: Lo importante es ejecutar una pieza de código y que el final de esa pieza ya
procesada pase a una siguiente etapa.
• Tubos y filtros: Se tiene un string o un flujo de datos continuo en donde cada aplicación recibe
continuamente esos datos los procesa y los hace como salida a otra aplicación o al final de la
ejecución.
Nota:
En el estilo de flujo de datos lo que se tiene son diferentes aplicaciones que van a estar conectadas
en general en tiempo real por lo tanto ya no se necesita interacción con el usuario para decidir
cuándo empieza un proceso o cuando termina otro.
• Cuando tenemos un proceso que tiene que tener una salida clara pero que puede ser separado
en partes en donde tenemos parte a parte lo que necesitamos hacer.
• Cuando necesitamos un string de entrada parte a parte ir procesándolo y tener una salida al final
del túnel.
Estilo de pizarrón, permite centralizar los datos en una sola base de datos, alimentada por varias
partes involucradas, una vez que todas las partes interesadas ingresan los datos, el sistema
centralizado genera una salida.
Estilo Centralizado, En este caso el sistema posee los datos centralizados en una base de datos, y
hay dos (02) sistemas que comparten la misma base de datos.
Estilo Experto, En este caso el sistema que centraliza los datos, tiene la capacidad de entender los
datos y consultas que realiza el cliente, generando salidas inteligentes. (inteligencia artificial).
COMPONENTE INDEPENDIENTES
Invocación implícita: Tiene que ver con que nuestra aplicación puedan mandar mensajes entre si,
sin que sepa a quien le esta hablando.
Invocación explícita: Tiene que ver con el desarrollo de componentes que si se conocen entre si,
pero que sean desarrollado independientemente.
El Enterprise Services Busses, sabe que proceso tiene que llevar a cabo para lograr su cometido,
dando a los componentes la información que éstos requieran. El ESB, es inteligente.
Es necesario tener en cuenta que cualquier actualización del sistema, mantiene conectado a los
componentes que brindan servicios de consulta.
Estilos Monolíticos:
La modularización es más fácil de romper, por lo que es más fácil no garantizar esa separación a
largo plazo.
En la usabilidad, es mas costoso, porque habría que respaldar toda la aplicación y no pequeños
microservicios.
Puede ser un desafío para el despliegue, porque habría que garantizar que toda la aplicación o
sistema se adapta a ese contexto específico.
Estilos Distribuidos:
Para hacer una prueba de principio a fin hay que tener todos los componentes disponibles .
La curva de aprendizaje es más difícil, porque habría que entender todas las piezas de los
componentes.
La modularidad, es más fácil porque los componentes que son desplegados independiente.
la disponibilidad se pueden tener multiples copias del sistema. por lo que este disponible es mas
barato.
Repaso de la clase:
PlatziServicios
Situación/Problema:
La bañera de nuestra casa está dañada debido a que se rompió nuestra cañería, es necesario los
servicios de un plomero que me permita arreglar dicho problema y sea de nuestra confianza.
Criterio de éxito:
Idea: Definición de una forma ideal de como se satisface una necesidad. Ejemplo: Tener una forma
mucho más sencilla de solicitar un servicio de plomería que llegue a mi casa con un plomero que
se conozca.
-Historias de usuarios: Definir las experiencias que los usuarios han tenido respecto a la solución
de su necesidad. Ejemplo:
Experiencia de un cliente y: quiero conocer la experiencia del profesional para decidir a quien
contacto.
Experiencia de un profesional x: quiero cobrar mi trabajo realizado para seguir prestando el
servicio.
Riesgos
Ejemplo:
Restricciones
Ejemplo:
Antecedentes penales: que el profesional cuente con ser un ciudadano ejemplar dentro de la ley.
Teniendo en cuenta todas las restricciones y requerimientos que existe, lo más adecuado es
montar una arquitectura cliente-servidor dentro de la web que permite de una manera mucho
más sencilla la automatización de procesos.
Repaso de la clase:
Sinopsis: Nuestra startup está teniendo exito como sistema y así mismo hemos de necesitar de
nuevos requerimientos para llegar a la mayor cantidad de clientes posible.
Análisis de requerimientos:
Criterios de exito:
Brindar con nuestro servicio a empresas clientes estabilidad y control de costos de las prestaciones
de servicios que se necesiten.
Se tiene una visión en el circulo de empresas prestadoras una visión de crecimiento de sus
servicios.
Historias de usuario:
El empresario cliente x quiere llevar control de sus finanzas mediante el reporte de gastos en
servicios.
El empresario cliente y necesita que halla un grupo de profesionales preferidos para nunca perder
la disponibilidad de nuestro servicio.
El empresario prestador y quiere posicionarse mejor en el mercado para obtener más clientes
Requerimientos:
Reportes: Gastos por período, por el tipo de servicio contratado, ingresos, horas trabajadas por el
profesional por período y tipo de servicio prestado.
Autorización:
Roles
Riesgo
Las empresas clientes no tienen como extraer información del sistema debido a que estas manejan
sus propia información.
Los juicios hechos por las misma empresas prestadoras de acuerdo con los fraudes.
Restricciones
Cumplir con estándares de auditoría profesional para que nuestro software sea seguro.
Con todo esto se decide que el estilo arquitectónico en la estructura cliente servidor pasa su
transacciones en lote secuencial a los reportes teniendo en cuenta el costo que supone presentar
reportes dentro del aplicativo.
Análisis de requerimientos:
Criterios de exito:
Se desea conectar tanto a empresas locales como globales con los mejores prestadores del
servicio.
Como visión se busca dar mayor facilidad de crecimiento y globalización de las empresas
prestadoras.
Historias de usuario:
El cliente a: quiere entender el sistema en su propio idioma. Razón: quiere garantizar el buen uso
del servicio.
El cliente b: quiere acceder tanto a servicios globales como locales. Razón: Quiere estandarizar a
los prestadores en diferentes ubicaciones.
El usuario necesita acceder a los servicios en cualquier momento sin tener problemas de los husos
horarios que existan dentro del mismo
La empresa prestadora: quiere brindar el servicio de fomar global. Razón: ampliar su alcance a
escala internacional
Requerimientos
Internacionalización:
Traducciones de contenido
Riesgos
Restricciones
Husos horarios
A su vez se los reportes se conectan con bus de eventos para ofrecer en tiempo real información
acerca de la empresa.