Consultoría en arquitectura de sistemas
La arquitectura de sistemas convencional de Nextcloud se basa en una pila estándar tipo LAMP. Utilizamos el adjetivo «convencional» porque en determinados estudios de caso podemos referirnos a nuestra arquitectura Global Scale como la arquitectura de destino, y presenta algunos aspectos ligeramente diferentes.
Los principales componentes son: almacenamiento, base de datos, memoria caché y servidor web. Cada componente es independiente y debería ser tratado como tal en términos de escalabilidad y para fines de alta disponibilidad.
Cuando diseñamos un nuevo sistema que debería ser capaz de soportar un número determinado de usuarios activos, nos enfrentamos a una serie de arduas decisiones; y cada una nos conduce a un camino diferente en los modelos de predicción.
A continuación, se citan algunos ejemplos:
- ¿Debería diseñar el sistema como un sistema autónomo (todos los servicios se ejecutan ahí) o distribuido? Si me decanto por la última opción, ¿tiene que ser distribuido (un servicio por sistema) desde el inicio?
- ¿Qué capacidad y uso del equipo podemos esperar de la base de datos en una situación hipotética de uso determinada?
- ¿Cuál será el principal objeto del servicio en los primeros 12 meses? ¿Se utilizará simplemente para la sincronización y uso compartido de archivos? ¿O los usuarios también necesitarán algún tipo de software colaborativo?
- ¿Debería optar por la arquitectura de almacenamiento de objeto o el sistema de archivos para alojar el directorio de datos de Nextcloud, que es su almacenamiento principal?
- ¿Cuáles son las consecuencias en términos de seguridad que conlleva la elección de un proveedor externo de servicios de almacenamiento SaaS?
- En definitiva, ¿Cuál es el mejor servidor web? ¿Apache2, Nginx u otros?
- ¿Necesito una base de datos en clúster?
- ¿Mi estrategia de recuperación en caso de catástrofe es lo suficientemente sólida?
Estas son solamente algunas de las dudas que surgieron en proyectos en los que hemos trabajado anteriormente.
En estos casos, nos hacemos valer de nuestras habilidades y experiencia previa para resolver dichas dudas y para que las decisiones relativas al diseño del sistema sean factibles a largo plazo.