¿Cómo alojamos WordPress? Auditorías de código infinito, redundancia y código

Organizamos millones de sitios en nuestras plataformas de alojamiento CampusPress y WPMU Dev. Y también estamos detrás de Edublogs, probablemente la red de WordPress multisitio más grande del mundo (si no considera WordPress.com). Oct 2020: ¡Hemos probado todos los mejores anfitriones de WordPress! Aprende a comparar. Vea los resultados en los últimos 11 años de construcción y desarrollo de estos servicios, hemos evolucionado todo lo que hacemos. Cometimos errores, hemos aprendido mucho y mejoraremos constantemente la infraestructura y las prácticas para garantizar un servicio aún mejor para nuestros clientes. Pensamos que sería bueno compartir una pequeña mirada detrás de nuestra configuración actual. También destacaremos cuánto costará la configuración de dicho trabajo. Si su sitio obtiene un tráfico decente, no requiere un tiempo no funcional ni diseñado para que más usuarios se conecten simultáneamente (como Multisites, BuddyPress o un sitio de membresía), ¡entonces esta guía es para usted!

CampusPress alberga WordPress multisitio para miles de escuelas y universidades.
La mayor parte de lo que compartimos en esta publicación proviene de nuestro servicio CampusPress, que alberga redes multisits pequeñas y grandes para escuelas y universidades de todo el mundo. Por ejemplo, organizamos sitios como emergencias.cornell.edu, que deben poder administrar cientos de miles de visitantes potenciales en un corto período de tiempo si tiene lugar un evento terrible o un desastre natural. Los sitios web principales (Providence.edu) y los sitios de noticias (‘Ntern.com) también pueden tener una tarea grande y deben funcionar sin ningún tiempo que no funcione.
Sorprendentemente, estos sitios con alto tráfico no son técnicamente los más difíciles de albergar. Cache y CDN pueden ayudar con el contenido estático. Sin embargo, los sitios de membresía, los foros, las redes sociales de BuddyPress y cualquier otro sitio que haya conectado a la actividad del usuario crea una base de datos que aumenta significativamente con un número modesto de usuarios. Este es el momento en que la redundancia y la separación de la base de datos de los servidores web entra en juego. Y para nosotros, Amazon Web Services nos permitió crear el entorno ideal para WordPress y WordPress multisitio. Por qué nos mudamos a AWS
Durante muchos años, hemos alquilado servidores en un centro de datos en Peer1. Esto funcionó muy bien, porque nuestro equipo técnico podría manejar los servidores desde una distancia para construir una configuración optimizada que nos sirvió bien. Pero, como la mayoría de la web, hay muchos factores que nos han llevado a trasladar lentamente toda nuestra infraestructura a Amazon Web Services (AWS) en los últimos años. P.ej:

Ubicación: AWS facilita la configuración en regiones de todo el mundo, incluidos Estados Unidos, Canadá, Australia y la UE. Peer1 también tenía centros de datos en varios países, pero no tantos y no era tan fácil de mover y administrar. Muchos de nuestros clientes requieren más y más alojamiento en ciertos países debido a regulaciones de datos y datos. Otros simplemente reducirán la latencia.
Pay-As-You-Go-Our Our Our Ormancement nos pidió que alquilaramos servidores mensualmente, si eran necesarios. Teníamos que estar preparados para los picos de tráfico en cualquier momento. AWS es más un modelo a pedido, lo que nos permite comenzar los servidores virtuales casi al instante, por lo que solo pagamos por lo que usamos. Del mismo modo, cuando el tráfico es bajo, como cuando las escuelas ya no son para muchas de nuestras vacaciones de Navidad, nuestras facturas caen. Es extraño para Amazon, AWS se ha convertido en el proveedor de nubes más confiable y conocido que existe. Podemos capitalizar la confianza (y las certificaciones de seguridad) que AWS debe garantizar a nuestros clientes sobre la calidad de la tecnología detrás de los sitios que organizamos.
Nube privada virtual
Configuración de CampusPress en AWS – Dibujo creado en CloudCraft.co
El diagrama anterior muestra la estructura básica de cada clúster de nube privada virtual (VPC) que utilizamos. Podemos alojar múltiples redes de WordPress que cada una, aunque algunos clientes necesitarán o quererán su propio clúster dedicado. Utilizamos VPC similares para alojar este blog y también edublogs.org (¡que tiene más de 4 millones de sitios!).

Veamos el VPC en detalle … cuando lo primero que se alcanzará cada visitante será una red de entrega de contenido o CDN. Somos un socio host de Cloudflare, por lo que la mayoría de nuestros clientes usan CloudFlare, que incluye algunos beneficios de seguridad adicionales, como un WAF (firewall para aplicaciones web) y protección DDoS. Otros eligen AWS CloudFront, y otros aún activarán cualquiera de los innumerables servicios existentes. El CDN ofrece imágenes y contenido estático de cualquier centro de datos más cercano a un visitante, lo que limita el tráfico que realmente llega a los servidores web y puede acelerar el tiempo de carga de la página. Vea nuestra reseña sobre algunas de las opciones de CDN aquí. En cada región de AWS, hay varias “áreas de disponibilidad”, que son bases de datos físicas separadas. Esto se acumula en redundancia, si hay una interrupción o un desastre natural que afecta una ubicación, el otro puede hacerse cargo. Dirigir el tráfico a estos tribunales EC2 es un equilibrador de carga elástico que determina qué servidor virtual EC2 debe manejar cada página o vista de acción desde un visitante.
Los contenedores Docker mantienen diferentes instalaciones de WordPress separadas entre sí dentro de los tribunales. La base de datos Aurora para la base de datos, que aloja el contenido, los comentarios y los datos del usuario, utilizamos dos canchas RDS estándar M4 que ejecutan MySQL. Están configurados en un arreglo de “maestro/en espera” con una conmutación por error en espera si algo no funciona bien con el maestro. Almacenamiento de archivos S3 usando S3 para cargar archivos de usuario, como imágenes y archivos, fue nuestra primera experiencia con AWS, y es algo que puede (y debe) hacer incluso si aloja su sitio en otra parte que Amazon. S3 es rápido, redundante y bastante barato para el almacenamiento y el ancho de banda. Base del código EFS, que incluye el núcleo de WordPress, los complementos y los temas necesitan un hogar. Nos hemos vuelto parciales al sistema de archivos elástico relativamente nuevo (EFS) en el AWS para administrar esto. Utilizamos bitbucket.com para administrar el código y el control de versiones y una aplicación de implementación interna para realizar actualizaciones en todos los sitios que alojamos. También puede usar GIT u otros servicios de alojamiento y gestión de código. Elasticache Agregar el servicio AWS Elasticache a la mezcla significa que podemos proporcionar cualquier contenido HTML estático a los visitantes sin requerir ningún trabajo en la base de datos. Tenga en cuenta que los usuarios generalmente autenticados no se ofrecen contenido en caché. Entonces, si todo su sitio es privado o un sitio de membresía, el caché no hará mucho por usted.
Los tribunales de correo electrónico SES ES EC2 también pueden enviar correos electrónicos de WordPress, como notificaciones para comentarios o restablecimiento de contraseña. Pero si su sitio envía muchos correos electrónicos, especialmente si usa algo como suscribirse por correo electrónico, es mejor usar el servicio especialmente diseñado para administrar su correo electrónico. Por lo menos, SES le permite aumentar sus posibilidades de que se entreguen los correos electrónicos (y no se informan como spam). Las alarmas y los periódicos CloudWatch observan todo el VPC como un halcón es CloudWatch. Al recopilar revistas y recursos de monitoreo, las alarmas de CloudWatch pueden agregar automáticamente (o eliminar) instancias al cargarlo, por lo que no paga los servicios virtuales cuando no son obligatorios y también para escalar para administrar un tráfico más grande. puedes imaginar. De la infraestructura
Los servidores son solo parte del alojamiento de sitios web de WordPress de alta disponibilidad que se extienden. Los sitios pueden estar fuera de línea por varias razones, incluidos los conflictos de complementos/temas, error de usuario, un servicio de terceros en el que confía y más. Es por eso que tenemos procedimientos estrictos vigentes para ayudar a prevenir cualquiera de estas posibilidades. Guía de código para complementos y temas para cualquiera de los sitios comerciales que alojamos, una de las grandes diferencias que el usuario habitual notará es que los complementos y los temas no se pueden agregar directamente desde el tablero de WordPress.
A lo largo de los años, hemos creado una lista de funciones y requisitos de código que deben cumplirse para cualquier complemento o tema que alojemos. Para aquellos que solían poder agregar todos y cada uno de los complementos, deseando, en sus sitios, esto a veces puede ser un punto de disputa. Pero queremos un código seguro y de alto rendimiento. Y no todos los complementos y temas son iguales. Entonces, nuestro equipo de desarrolladores examina manualmente cada tema y complemento que aloja. Aquí hay una lista de lo que estamos buscando: todos los complementos y temas que aceptamos deben: Adherirse a la Guía del tema de WordPress y a los estándares de codificación de WordPress;
No confíe en los servicios de terceros (a menos que podamos asegurarnos de que fallen con gracia y/o aprueben lo contrario para servicios bien establecidos);

No actualice ni cambie automáticamente los archivos;
No cambie WP_REMOTE_*Tiempo de tiempo de llamada;

Nunca cambie wp_feed_cache_transient_lifetime (conectarse al filtro);
No use tablas Show, en su lugar, use tablas Show como ‘WP_XYZ’;
No use Desc para describir la tabla, sino que use Describe;
No cambie wp_debug, error_reporting o display_errors;
no elimina los roles predeterminados (remve_role);
Las reglas de reescritura no se eliminan ($ wp_rewrite-> flush_rules no está permitido);
No vacía la memoria de caché (no está permitido wp_cache_flush);
No contiene consultas SQL. Debe usar las funciones Built -in WordPress para hacerse cargo, páginas, archivos adjuntos, usuarios y metaéticos;
No cree nuevas tablas ni cambie el esquema de tabla;
No use las funciones del sistema de archivos enumerados aquí;
No almacena archivos en el sistema de archivos del servidor. Siempre debe usar archivos adjuntos de WordPress si aceptan cargas de archivos; puede sorprenderse de cuántos complementos y temas que evaluamos no cumplen con estas reglas. Los interrogatorios SQL personalizados son el problema más común que vemos. Y se verifica cada actualización de complementos y temas para asegurarse de que no pase nada. La garantía y las pruebas de calidad también se deshabilitan actualizaciones automáticas de WordPress. Queremos probar las actualizaciones cuidadosamente antes de que estén disponibles. Para la mayoría de los clientes, ejecutamos un ciclo semanal de “gestión de cambios” en el que las actualizaciones se envían a cada región temprano, el martes por la mañana. De esta manera, nuestros clientes saben cuándo esperar actualizaciones y podemos planificar que nuestro equipo esté y monitoree. Nunca hay sorpresas. Antes de que un cambio o actualización pueda pasar a través de la prueba, debe:
Ser probado y revisado por completo en entornos de prueba locales de al menos dos desarrolladores
Pasar cualquier prueba automática y/o unitaria en múltiples entornos de desarrollo
Pase la prueba manual del equipo/asistencia de control de calidad en varios entornos de desarrollo
Se implementará en un pequeño subconjunto de sitios en vivo y sitios de desarrollo/prueba de todos los clientes que participan voluntariamente en el programa de prueba beta durante al menos 72 horas
Pase un código manual final y una revisión de desempeño por el liderazgo del equipo técnico
Poner juntos: los costos
Al combinar la infraestructura técnica de AWS con la práctica de gestión de códigos estricto, obtiene sitios donde puede esperar un tiempo de funcionamiento del 99.99% o más que pueda administrar cualquier volumen de tráfico que pueda lanzar. Pero todo viene con un precio. ¿Cuánto buscamos si intenta configurar algo como esto? Comencemos con la nube de nubes privadas de AWS. Aquí hay una descripción de los precios actuales para la región estadounidense-Virginia: dos instancias grandes RDS M4 para la base de datos: $ 126.00 cada uno. Dos instancias EC2 C4 grandes para servidores web: $ 144.00 cada uno. Una instancia grande Elasticache M3 – 131.04 USD Una instancia de equilibrador de carga elástica con un mínimo de 10 GB de datos procesados: 18.08 USD Un almacenamiento de archivos EFS con 100 GB – $ 30.00 Solo esto es 575.12 USD por mes – y todavía tenemos que pagar Para un solo visitante, cargue archivos de almacenamiento o incluso 1 MB de ancho de banda. Puede agregar fácilmente cientos, si no miles por mes, dependiendo de su tráfico, aún debemos considerar los costos para varios desarrolladores e ingenieros de DevOps que ciertamente necesita. ¡Sí! ¿Hay otra manera?
Para el tipo de bricolaje que esperaba que esta publicación sea un poco más detallada, consulte esta publicación, lo que le presenta paso a paso cómo configurar AWS casi idénticos a lo que describí aquí.Para otros de usted, también puede beneficiarse de la misma magnitud y procedimientos con nuestros servicios de alojamiento para empresas, por una fracción del costo de ingresar al suyo.;) Consulte CampusPress.com si es una escuela o universidad y WPMU Dev Hosting para todos los demás.¡Nos alegraría ayudarlo! Espero que hayas aprendido mucho de esta mirada detrás del escenario de la forma en que organizamos WordPress multisitio.Si tiene alguna pregunta, pregunte en los comentarios a continuación.
Etiquetas:
Multisim

Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

gkOVSBm5B8SgiXmo

Shopify vs WooCommerce – ¿Cuál es la mejor plataforma?(Comparación)

Shopify vs WooCommerce

Leave a Reply

Your email address will not be published. Required fields are marked *