La arquitectura y el diseño tienen que comenzar con los requisitos. Mi proceso ideal para la arquitectura y el diseño en estos días sería el siguiente:
- Comprende el problema a resolver . Por ejemplo, ‘Distribuya URL a millones de clientes de software instruyéndolos a actualizar su software desde ese sitio’.
- Recoge los requisitos operativos . ‘Debe poder distribuir a todos los clientes conectados dentro de las 12 horas. Debe manejar clientes que están desconectados cada vez que deciden conectarse. Debe manejar URL de 100 caracteres y debe manejar URL de 256 caracteres. Debe especificar una URL en función del tipo y la versión del cliente.
- Especificar métricas objetivo . URL de 256 caracteres. Maneje al menos 1,000 combinaciones únicas de cliente + versión. Conserve todas las URL de los últimos 5 años.
- Identificar limitaciones . Por ejemplo, algunos clientes no pueden ser contactados a menos que inicien la conexión. Debe funcionar en módems y enlaces más rápidos. No puede ser https: debido a las limitaciones de la pila. Deben basar los servidores dentro de China para clientes chinos.
Después de identificar todas estas cosas y documentarlas, hágalas pasar por las personas que van a comercializar / financiar el trabajo y que actúan como conducto de clientes. Obtenga su aprobación. Ahora ya sabes QUÉ diseñar.
Ahora es tiempo de arquitecto y diseño.
- Identificar el almacenamiento de datos y el flujo de datos . Las URL deben agregarse de alguna manera. Tienen que ser almacenados en algún lugar. Deben ser verificables antes de ser liberados y distribuidos. Si se puede empujar a los clientes, debe haber un mecanismo de empuje. Tiene que haber un mecanismo que pueda ser consultado. El cliente necesita identificarse, por lo que se puede proporcionar la URL correcta. Informes de clientes y servidores para mostrar el progreso e identificar problemas.
- Identificar plataformas y tecnologías . Jetty para el servidor web y una flota de servidores web ajustados a los objetivos. Una base de datos central con copias de seguridad y redundancia. Interfaces SQL y REST para gestión interna. Métricas que se alinean con la colección de métricas, alarmas y navegación de la compañía.
- Diagramas de flujo de datos con los diferentes componentes . Una especificación de arquitectura basada en ella que describe cómo las piezas funcionan juntas y cómo se relacionan las piezas con los requisitos operativos y las métricas de destino.
- Modelos de seguridad y amenaza . Identificar las vulnerabilidades y mitigaciones en el sistema y documentarlas.
- Etapas de implementación . Identifique las etapas de implementación, idealmente mediante el andamiaje de extremo a extremo, y luego agregue iterativamente las características que necesita en orden de prioridad.
No siempre sigo estos pasos, pero probablemente siempre debería hacerlo.