Cuando decidimos que arquitectura de servidor utilizar para nuestro enterno, hay muchos factores a considerar, como el rendimiento, escalabilidad, disponibilidad, costo y facilidad de administración.
Aquí hay una lista de las configuraciones comunes de servidor, con una corta descripción en cada una, incluyendo pros y contras. Recuerda que todos los conceptos cubiertos aquí pueden ser utilizados en distintas combinaciones con otras, y que cada ambiente tiene diferentes requerimientos, así que no hay una sola, correcta configuración.
Todo el entorno reside en un solo servidor. Para aplicaciones web típicas, que incluyen el servidor web, servidor aplicación y servidor de bases de datos. Una una variación común de esta configuración es un LAMP, que comprende Linux, Apache, MySQL y PHP en un mismo servidor.
Caso de Uso: Bueno para configurar aplicaciones rápido, con las configuraciones más simples posibles, pero ofrece poco camino para escalar.
Pros:
Contras:
Artículos Relacionados:
El manejador de base de datos (DBMS) puede ser separado del resto del entorno para eliminar la compentencia por recursos entre la aplicación y la base de datos, e incrementar la seguridad eliminando la base de datos del DMZ, o Internet público.
Caso de Uso: Bueno para configurar tu aplicación rápidamente, pero previene a la aplicación y base datos de pelear por recursos en el mismo sistema.
Pros:
Contras:
Guías Relacionadas:
Los estabilizadores de carga pueden ser agregados al entorno del servidor para mejorar el rendimiento y la Load balancers can be added to a server environment to improve performance and fiabilidad distribuyendo el flujo de carga entre varios servidores. Si uno de esos servidores falla al cargar su balance, el resto de los servidores atenderán el tráfico entrante hasta que el servidor que presenta falla se recupere. Esto también puede aplicarse para servir varias aplicaciones a través de un mismo dominio y puerto, utilizando la capa 7 (capa de aplicación) proxy inverso.
Ejemplos de software para trabajar con proxy inverso y balance de cargas: HAProxy, Nginx, and Varnish.
Caso de Uso: Útil en un entorno que requiere escalar agregando más servidores, también conocido como escalabilidad horizontal.
Pros:
Contras:
Guís Relacionadas:
Un acelerador HTTP, o or Caché en Proxy Inverso, puede utilizarse para reducir el tiempo que toma en servir contenido a un usuario através de diversas técnicas. La técnica principal empleada en un acelerador HTTP es almacenando el caché de las respuestas en memoria, así que las peticiones futuras para el mismo contenido serán servidas rápidamente a menos que sea necesaria una interacción con la web o servidores de aplicaciónes.
Ejemplos de software útil para un acelerador HTTP: Varnish, Squid, Nginx.
Caso de Uso: Útil en un entorno donde el contenido pesado es dinámico en aplicaciones web, o cuando muchos archivos comúnes son visitados constantemente.
Pros:
Contras:
Guías Relacionadas:
Un camino para mejorar el rendimiento del sistema de base de datos es realizando muchas lecturas comparadas con las escritas, como en los CMS, es utilizar una réplica de la base de datos maestro-esclavo. La réplica Maestro-Esclavo requiere un principal (maestro) y uno o más nodos esclavos. En esta configuración, todas las actualizaciones del nodo maestro serán distribuidas a través de todos los nodos.
Caso de Uso: Bueno para incrementar el rendimiento en la lectura de la base de datos al nivel de una aplicación.
Aquí un ejemplo de la configuración Réplica Maestro-Esclavo con un solo nodo esclavo:
Pros:
Contras:
Guías Relacionadas:
Es posible estabilizar cargas con servidores de caché, además del servidor aplicación y utilizar una réplica de base de datos en un mismo entorno. El propósito es aprovechar los beneficios de cada uno sin introducir muchos problemas y complejidad. Aquí hay un diagrama ejemplo de como debe lucir el entorno del servidor:
Asumámos que el estabilizador de cargas está configurado y reconoce peticiones estáticas (como imágenes, css, javascript, etc.) y enviamos todas estas peticiones directamente al servidor de caché, y el resto de las peticiones al servidor de aplicacion.
Aquí hay una descripción de lo que pasaría cuando un usuario realiza una petición al contenido dinámico:
Si el usuario solicita contenido estático:
Este ambiente aún tiene dos puntos por analizar (el estabilizador de carga y el servidor maestro de base de datos), pero provee todos los beneficios de fiabilidad y rendimiento que fueron descritos en la sección de arriba.
Ahora que estas familiarizado con algunas configuraciones básicas de servidor, puedes tener una buena idea de que tipo de servidor requieres para tu aplicación. Si estás trabajando en tu propio entorno, recuerda que el proceso iterativo es el mejor camino para evitar introducirse en complejidades rápidamente.
Comentanos acerca de tus recomendaciones o lo que te gustaría aprender en los comentarios de abajo!
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Gracias por la traducción al español, sin embargo es notable la falta de ortografía y el descuido en partes que incluso aparecen en inglés o errores cono palabras repetidas. No están bien vistos errores como esos
Hola!, muchas gracias por el artículo, respecto a lo que proponen en el caso 3. Estabilizador de Cargas (Proxy Inverso)
Ustedes dicen que se puede producir un cuello de botella en el balanceador de cargas, según esto, que especificaciones mínimas recomiendan en el caso de tener un trafico medio de acceso a la aplicación.
O de ser mejor que recomendación darían sobre como distribuir los recursos (ram) de cada uno de los droplets balanceador de cargas - droplets con la aplicación droplets de cache - droplets base de datos, no se si se entiende. Por ejemplo:
Balanceador de carga 2 gb ram
Cache 1 gb ram
Base de datos 2 gb
Saludos!!