Secreto detrás de LOL infraestructura de TI bienes Shu en lugar de los servicios

Bienvenido a la serie de casos de usuario tungsteno Tela encontró que los más TF escenarios juntos. "LOL Secreto" héroe serie es usuarios de tungsteno tela Riot Games compañía de juegos, como LOL "Liga", el desarrollador y operador, Riot Games desafíos complejos despliegues en todo el mundo, nos dejó LOL secreto detrás de los "héroes" mira cómo se están ejecutando el servicio en línea que.
Autor: Nicolas Tittley y Ala Shiban (Fuente: Riot Games) Traductor: grupo compilación TF

Secreto detrás de LOL infraestructura de TI bienes Shu en lugar de los servicios
Esta larga serie de artículos, y discutir cómo grabar Riot Games desarrollar, implementar y operar el curso de la infraestructura de servicios de fondo. Somos un equipo de experiencia de desarrollo antidisturbios Nicolas Tittley arquitecto de software y gerente de producto y Ala Shiban. Dondequiera que antidisturbios equipo responsable de ayudar a los desarrolladores en el que los jugadores construir, implementar y operar el juego, pero sin un sentido de enfoque en la nube de plataformas en la nube (agnóstico), estas plataformas y la emisión de hacer funcionar el juego más fácil.

En los últimos dos años atrás en un artículo, Maxfield Stewart presentó el ecosistema de desarrollo relacionado, así como muchas de las herramientas que se utilizan en ese momento. Aquí vamos a actualizar algunos de los contenidos más recientes, incluyendo los nuevos retos, la forma de resolver el problema, y ​​lo que hemos aprendido.

Revisión rápida

Recomendamos encarecidamente que vuelve a leer el artículo anterior, pero si quieres leer directamente este artículo, hay una versión súper simplificado para ayudarle a ponerse al día.

sistemas de back-end antidisturbios que se ejecutarán a escala mundial utilizando una combinación de metal desnudo y la infraestructura en la nube. Estos sistemas de back-end se dispersan a diferentes ubicaciones geográficas, basado en el despliegue totalmente diferente, permite al jugador correr con LOL "Héroes de la Unión" paquete de servicios de interacción. Al igual que la mayoría de los juegos del mismo sistema back-end, en su conjunto, por un equipo de operaciones especiales que ser responsable de las operaciones de back-end cuando LOL comenzar. Con el tiempo, Disturbios abarcar progresivamente prácticas DevOps y basada en los servicios de micro-arquitectura. El primer artículo de esta serie introducido en detalle, con el fin de ayudar a nuestros desarrolladores para dar servicio a los jugadores más rápidos, Disturbios mayor dependencia de estos contenedores de Docker servicios empaquetados, y empezó a correr en un planificador de clúster. Hasta que un reciente artículo , discutimos una serie de herramientas para este propósito y uso.

¿Cómo se ejecuta el efecto?

Muy ganado, pero, el dolor y la felicidad.

Cuando se publicó el último artículo (Nota del editor: Fecha publicación de diciembre 2017), que opera más de 5.000 recipiente de producción. Esta cifra no deja de crecer, y hoy en día, sólo en la región (regiones antidisturbios que funciona) Riot funcionamiento independiente, corremos más de 14.500 contenedores. desarrolladores antidisturbios les gusta crear cosas nuevas para los jugadores, más fácilmente cuando escriben, implementación y operación de los servicios, más se pueden crear nuevas y excitantes experiencias.

DevOps equipo para desarrollar una manera real, y será responsable de sus propios servicios. Ellos crearon un flujo de trabajo para implementar, controlar y operar dichos servicios, cuando lo que necesitan no se puede encontrar, simplemente re-inventados. Para los desarrolladores, este es un momento muy libre, que rara vez se encuentran con el problema no se puede resolver.

Sin embargo, comenzamos a notar algunas tendencias preocupantes lentamente. Mensual de control de calidad y el medio ambiente de pruebas de carga se vuelve cada vez más inestable. Tenemos que pasar más tiempo para buscar errores de configuración o dependencias obsoletas. Estos incidentes aislados no son críticos, pero, en general, que pasaron una gran cantidad de tiempo y energía para el equipo - estamos más dispuestos a gastar en jugadores en la creación de valor.

Peor aún, en la región de fragmentación (antidisturbios no fragmentos) Riot operación no independiente, no sólo comenzaron a aparecer dificultades similares, pero también rompió una serie de otros problemas. Los socios deben ser más y más desarrolladores y de acoplamiento, y el uso de más y más micro-servicios, cada servicio tiene una forma diferente de las micro, no es lo mismo con los demás. Ahora, el personal de operaciones debe trabajar más que nunca para crear un área efectiva y estable rebanada. En estos fragmentos se amotinan regional independiente no operacional, la incidencia problema es mucho más alta, en la versión en tiempo real de la razón no es directa servicios de micro compatibles, u otras cuestiones transfronterizas similares.

Estado de DevOps Riot

Antes de discutir cómo resolver el empaquetado, implementación y operación, tomemos un momento para explorar el entorno operativo antidisturbios. Amotinan estos no son únicos, pero la superposición de todos estos detalles, eran indicativos de cómo estamos organizados para proporcionar valor a todos los jugadores.

el modo de programador

ingenieros antidisturbios les gusta construir sus propias cosas! Para ayudar a hacer esto, utilizamos un potente DevOps forma de pensar. La formación de equipos y tiene sus propios servicios de back-end para garantizar su apoyo, y se dividió cuando el rendimiento del servicio como se esperaba. En general, los ingenieros de antidisturbios se complace en ser capaz de lograr una rápida iteración, y muy feliz de ser responsables de sus propios servicios en tiempo real. Se trata de un conjunto muy estándar de DevOps, Disturbios no romper la tendencia de ninguna manera.

con estado de modo de división

Debido a razones históricas, la escala del problema, así como los aspectos legales de sus factores, los sistemas de back-end de productos antidisturbios se organizan en una rebanada manera. En el que la producción de fragmentos típicamente geográficamente cerca de la audiencia objetivo. Esto tiene muchas ventajas, incluyendo cuestiones latencia mejorada, una mejor adaptación, dominio de error limitado, y una ventana de tiempo claro fuera de horas punta (que puede realizar operaciones de mantenimiento). Por supuesto, también corremos muchos desarrollo interno y externo y los fragmentos de control de calidad, tales como "Héroes de la Unión" servidor prueba abierta (PBE).
https://technology.riotgames.com/sites/default/files/engineeringesports_4.gif

modelo de negocio

Aquí es donde las cosas se complican más. Aunque Riot es un desarrollador, pero por razones de cumplimiento y know-how, que colabora con una serie de operadores locales para proporcionar algún fragmento de servicio. En la práctica, esto significa que el desarrollador Riot cada componente debe ser empaquetado rebanada, que se entregarán al personal de operación, y orientación sobre cómo implementar, configurar y operar todos los fragmentos. desarrolladores antidisturbios mismos no funciona, incluso el acceso a ver los fragmentos. (Nota del editor: el texto del fragmento se apreciará que el bloque componente lógico subregión define)

solución iterativa

1- probar nuevas herramientas de implementación de la alianza

Nuestro primer intento de mejorar la situación, a adoptar un nuevo enfoque, intente utilizar componentes de código abierto y Riot mínima personalización, antidisturbios para avanzar en el despliegue y las operaciones. Aunque este trabajo desplegado con éxito un completo "Héroes de la Unión" la fragmentación, pero el diseño no es el camino para lograr el desarrolladores y personal de operaciones de la herramienta deseada. Equipo expresó su descontento con la herramienta - una herramienta demostró ser demasiado difícil para que el operador usa, el desarrollador es demasiado limitado.

Por lo tanto, después de que el primer fragmento de implementación, hemos tomado la dolorosa decisión - para hacer estas herramientas se retiran. Se ve como una muy radical, pero debido a todo el equipo todavía tiene su propio mantenimiento y despliegue del sistema aún no está totalmente de transición, por lo que podemos eliminar rápidamente las nuevas herramientas.

Tratar de procesar más 2-

Desde el primer intento no tiene éxito como se esperaba, volvemos a la tradición, mediante la adición de un proceso para cumplir con los requisitos. Una amplia comunicación, una fecha de lanzamiento clara, procesos documentados, reuniones de gestión del cambio y ceremonias, así como el omnipresente hoja de cálculo, en cierta medida, ha hecho un pequeño progreso, pero siempre se sienten mal. Equipos prefieren sus DevOps libertad, una gran cantidad de cambios y la velocidad del cambio, todos hacen su trabajo más arduo. Aunque la situación ha mejorado socios, pero todavía tenemos que alcanzar el nivel de funcionamiento deseado.

3- Trate de metadatos

Decidimos probar otro enfoque. Antes de que tengamos las herramientas de desarrollo como el público principal, ahora comenzó a estudiar para el personal de operaciones de socios, el despliegue / operativo funciona el sistema. Hemos diseñado una herramienta que permite a los desarrolladores añadir metadatos del paquete estandarizado para sus servicios de micro-contenedores estibador, tales como las características de configuración y expansión requeridas. Esto trae progreso, los operadores pueden adoptar una forma más estandarizada para entender la configuración del servicio requerido y las características de implementación y reducir la dependencia de los desarrolladores en sus operaciones diarias.

En este caso, la tasa de fracaso y socios locales para operar el sitio, el tipo de evento y el tiempo de inactividad adicional ha mejorado, pero aún experimenta el despliegue frecuente y fallas operativas que podrían haberse evitado.

Trate de aplicaciones y entornos de modo de 4 Riot

finalmente, hemos adoptado un nuevo enfoque, el foco se desplazará de servicios personales a la totalidad del producto. Hemos creado una especificación declarativa de alto nivel, y un conjunto de herramientas para la realización de acciones, normas y herramientas para hacer algo especial. Antes de detalles, Echemos un vistazo a los tres intentos anteriores en cuál es el problema.

mal con la reflexión

Implementación y el funcionamiento del producto, en lugar del servicio

A pesar de las DevOps abrazar y servicio de micro nos ha traído muchos beneficios, pero crea un bucle de retroalimentación peligroso. equipo de desarrollo para crear un micro-servicios, su despliegue, operación, y es responsable de su rendimiento. Esto significa que ellos están optimizados para sí mismo troncos, métricas y procesos, y por lo general con poca consideración por su capacidad de servicio de otras personas entienden, incluyendo el fondo de desarrollo que ni siquiera ingeniería capacidades.

Con más y más a los desarrolladores crear micro-operadores de servicios de productos en general se hace muy difícil y puede acceder a más y más fracasos. Lo más importante es, alboroto de la estructura del equipo de flujo, la propiedad de algunos micro-servicios quedado claro, es difícil de averiguar quién debo contactar en la derivación, causando una gran cantidad de bienes la página equivocada. micro-servicios cada vez más heterogéneas, el proceso de implementación y cambios en la organización, socios regionales que operan equipo en una pérdida.

Averiguar "qué"

Examinamos el fracaso antidisturbios áreas operacionales y no operacionales de la región, y el perfeccionamiento de la diferencia de frecuencia de fallos es una observación clave:

Permitir el flujo de cambio discontinuo en el sistema distribuido el tiempo dará lugar a eventos prevenibles.

Cuando un equipo quiere coordinación transfronteriza, que comenzará a fallar, debido a la dependencia necesita ser liberado liado con varios cambios. Equipo o utilizar procesos manuales para crear el ciclo de publicación para coordinar la ceremonia de lanzamiento de la gestión de proyectos, liberación o liberación cambios temporales más pequeñas, lo que lleva el equipo en el caos en el proceso de encontrar una versión compatible de.

Ambos tienen sus ventajas y desventajas, pero tienden a colapsarse en una organización grande. Imaginar docenas de equipos necesitan de manera coordinada, la entrega continua de los bienes en nombre de cientos de servicio de micro-compartir y permiten diferentes servicios utilizan estas prácticas micro-desarrollo. Para empeorar las cosas, para la pareja, es muy difícil de tratar de aplicar estos procesos, su personal no tienen el contexto de cómo se combinan las diversas partes.

Nuevas soluciones: aplicación antidisturbios y modelo de entorno

Teniendo en cuenta los resultados de los intentos anteriores fracasaron en producir la esperada, hemos decidido crear (dogmático) una especificación declarativa para uso personal parte inherente del estado para eliminar la manipulación de la especificación declarativa puede capturar todo el producto distribuido - medio ambiente. Medio Ambiente incluye totalmente especificado, desplegar, configurar, ejecutar y operar un conjunto de metadatos distribuidos por todo declarativa requerido para micro-servicios, estos micro-servicios representan conjuntamente un producto, y son de la versión íntegra y sin modificaciones. Elegimos el "medio ambiente" ese nombre, porque no es una palabra antidisturbios de los más usados ​​en exceso. Nombrarlo es una tarea difícil.

Con el lanzamiento de la LOR juego "la tierra de Rune Legend", podemos probar que toda la descripción de los servicios de back-end micro-juego (incluyendo el servidor de juego), y hacerlo operativo en la región y antidisturbios centros de datos asociados en todo el mundo autónomas, como el producto implementación, operaciones y operaciones. También hemos demostrado la capacidad de lograr este objetivo al tiempo que mejora el enfoque DevOps tiene la ventaja de muy querido.

Lo que se describen en las disposiciones (PERTINA DE LO)

Esta especificación describe la relación jerárquica entre el haz de servicios o el medio ambiente.

Secreto detrás de LOL infraestructura de TI bienes Shu en lugar de los servicios

Agrupados en la especificación especificación entorno de aplicación

Y declarativa de alto nivel

Uno de los beneficios de la especificación declarativa es que es fácil de operar. Para los socios del personal de operaciones, uno de sus dificultades, simplemente no puede entender, ajuste y despliegue potencialmente automatizar todo el backend juego. la naturaleza declarativa de la especificación, lo que significa que los ingenieros no necesitan secuencias de comandos o conocimientos de programación, puede realizar cambios en la mayor parte de la especificación de contenido.

Para mantener un alto nivel de especificación, que ayuda a definir y lograr el desacoplamiento de la parte trasera de una partida principal. Esto nos permite minimizar el impacto de la situación en el estudio para el próximo partido, desde el organizador interno / programador llamado Almirante, la migración a planificador basado mesos, así como considerar la migración a Kubernetes. También permite a nuestros socios ops pueden intercambiar sus componentes de infraestructura cuando sea necesario. Por ejemplo, permite que el personal de operaciones puede utilizar diferentes métricas sistema agregación, sin la necesidad de cambiar las herramientas de micro-servicio.

inmutable versionado

Nos pareció que para ser eficaz en la implementación y operación DevOps mundo de rápido desarrollo, la utilización de un lenguaje común para referirse a los servicios y el medio ambiente es esencial. El control de versiones y los servicios ambientales y sus metadatos asociados, por lo que podemos asegurar que todos los lugares han desplegado la versión correcta. Esto hace que nuestros socios operadores pueden saber con seguridad qué versión se está ejecutando, y de nuevo a nosotros. Además, cuando se aplica a todo el entorno, que ofrece un conjunto de servicios bien conocidos se puede comprobar y marcado como "buena" su calidad. Esta agrupación elimina cualquier posibilidad de perder una nueva versión cuando se comunica a los socios de las dependencias.

Así que estas versiones no se pueden cambiar, se puede asegurar que mantenemos este lenguaje común. Cuando la misma versión del servicio se despliega en dos sector diferente, ahora también podemos estar seguros de que son idénticos.

Enfoque en las operaciones

Dado que nuestro objetivo es mejorar las operaciones de personal socio jugadores de nivel de servicio, rápidamente nos dimos cuenta de que el despliegue del software es sólo el primer paso. Averiguar cómo clasificar, operación y mantenimiento de sistemas de tiempo real, es lo menos importante.

Históricamente, somos muy dependientes de las operaciones manuales. mantenimiento manual por el promotor, con diversos grados de éxito, que registra todo, desde los valores de configuración necesarios para la arquitectura de alto nivel. Con el fin de permitir que los socios tienen el personal de operaciones para configurar y utilizar todos los conocimientos requeridos para cada servicio, decidimos dejar correr tanta información como las contenidas en el manual a las especificaciones del servicio en primer lugar. Esto reduce en gran medida los socios regionales de duración en nuevos servicios, y para asegurar que se les dijo que todos los cambios importantes en el servicio de micro-actualización.

Hoy en día, los operadores asociados pueden utilizar esta especificación para aprender acerca de la operación de metadatos, incluidos requerido / opcional, características extendidas, operaciones de mantenimiento, un importante indicador de definición / alerta, estrategias de implementación, las dependencias entre los servicios, así como cada vez más otra información útil.

diferencia fragmentos

Por supuesto, los fragmentos no son copias idénticas una de otra. Si bien queremos que sean lo más cerca posible, pero hay una cierta configuración debe ser diferente. contraseña de la base de datos, soporte de idiomas, parámetros extendidos, así como los parámetros de ajuste específicos deben cambiar con cada rebanada. Para apoyar este modo, las herramientas que utilizamos para cubrir las normas ambientales implementación del sistema jerárquico, permitiendo a los operadores pueden desplegar una especialización particular, mientras que todavía saben que se derivan de una buena versión conocida. Vamos a ver cómo funciona!

aplicaciones

Un simple juego de back-end puede incluir dos ambientes, uno para el servidor de juegos y una para el servicio de dólar de juego (clasificación, sistema de juego, etc.). Yuan entorno de juego de una variedad de servicios: lista, sistema de juego, la historia del juego, y así sucesivamente. Cada servicio comprende una o más imágenes del estibador, conceptualmente, que son equivalentes a contenedores Kubernetes. Para todos los ambientes, la misma jerarquía son correctos, y desde una perspectiva filosófica, todos los entornos sin excepción encapsulados desplegados en cualquier infraestructura de nube o el apoyo necesario para ejecutar las operaciones de juego y de back-end todo, y todas sus dependencias.

La especificación también incluye todos los metadatos necesarios para ejecutar y operar el medio ambiente. Creciente colección de módulos que incluyen configuración, confidenciales, indicadores, alarmas, documentación, implementación y estrategia de implementación, las restricciones de red entrantes, así como los requisitos de almacenamiento, bases de datos y la memoria caché.

Aquí tenemos un ejemplo que demuestra el juego para dos rebanada hipotética desplegado en ambas regiones. Se los puede ver por el dólar y el componente entorno de servidor entorno de juego. En Europa rebanada de entorno de producción servidor de juego, detrás de la rebanada similares Estados Unidos de entorno de juego. Esto proporciona un lenguaje común para describir y comparar diferentes de juego para la implementación de revisiones juego y los equipos de operaciones. El número de servicios de cada entorno puede seguir aumentando la simplicidad, que puede desplegar de forma fiable decenas de fragmentos.
Secreto detrás de LOL infraestructura de TI bienes Shu en lugar de los servicios
fragmento de despliegue ejemplar del juego

Nuestro siguiente paso: retardo de programación consciente

Esperamos ser capaces de describir el retraso esperado y aceptable entre los servicios y herramientas optimizadas para la base del servicio PaaS de menor nivel regional y para que pueda satisfacer estas necesidades. Esto dará lugar a algunos servicios en el mismo bastidor, la zona de acogida o una nube, en lugar de permitir su distribución en otros servicios.

Dado que las características de rendimiento del servidor de juegos y servicios de apoyo, que está altamente correlacionado con nosotros. Disturbios nublado ya es una empresa con nuestro propio centro de datos, sino también los nube de AWS y socios, sino que dependen de la topología de diseño estático. juegos de cartas y juegos de disparos tener un perfil diferente, no tienen un manual para la optimización de la topología, en ambos casos, lo que ahorra tiempo a los ingenieros para que puedan centrarse en el juego anterior.

Las últimas palabras

Nos encontramos ante el problema de la estabilidad disminuida en el juego terrestre, principalmente de socios de negocios rebanada de juego. equipo de desarrollo de herramientas incluido con herramientas de implementación de código abierto, y añadir metadatos al contenedor, y el juego es el equipo implementó un proceso de publicación centralizada. Estos métodos pueden resolver los síntomas, pero no abordan las causas profundas del problema, lo que significa que no pudimos lograr el nivel objetivo.

Nuestras soluciones adoptadas por último la introducción de una nueva especificación que captura toda la topología de fondo de todo el juego, las jerarquías, y los metadatos y todas sus dependencias. Este enfoque es eficaz, ya que proporciona una liberación constante de contenedores versión de unión, la interacción de dependencia entre ellos, y todo el apoyo metadatos necesarios para iniciar y operar todo el juego. La inmutabilidad trajo el despliegue de operación determinista y predecible.

Como equipo de la plataforma, nuestro objetivo es escoger un sistema capaz de generar un círculo virtuoso y bloques de construcción, en un círculo virtuoso, el trabajo de desarrollo funcional, naturalmente, trae fácil de operar productos. La agilidad y facilidad de DevOps modo de funcionamiento del producto de combinación es la clave para la agilidad de la organización a largo plazo. Método nuestro medio ambiente está ligado directamente mejora métricas operativas, es más importante es la mejora de la calidad de la experiencia del jugador. Estamos muy contentos de ver cómo otros en nuestra industria para resolver problemas similares. Hemos visto grandes proveedores de la nube y de la CNCF (nube de computación nativa Fundación) (tales como el modo de aplicación Microsoft Open Specification) ideas y proyectos. Algunos de estos proyectos esperan ser capaces de sustituir las normas de nuestra propia creación, y avanzar hacia soluciones de toda la industria.

En un próximo artículo, vamos a explorar en más detalle especificación describe ejemplos antidisturbios y una discusión de las ventajas y desventajas de diseño y accesos directos antidisturbios específicos.

Gracias por leer! Si tienes alguna pregunta, Bienvenido a ponerse en contacto con nosotros.


Más "Secret LOL" serie
secreto Shu LOL infraestructura de TI detrás del despliegue de la diversidad poner un pie en el viaje
secreto detrás de la infraestructura de TI LOL papel clave Shu de "programación"
secreto detrás LOL nueva infraestructura de TI de infraestructura Shu SDN desbloqueo
Secreto infraestructura de TI Shu LOL infraestructura que es el código detrás del
secreto de la infraestructura de servicios de TI Shu micro ecosistema LOL detrás de
lo secreto detrás LOL infraestructura de TI desarrolladores Shu "campo de juego" herramienta de hacer?


Secreto detrás de LOL infraestructura de TI bienes Shu en lugar de los servicios

Secreto detrás de LOL infraestructura de TI bienes Shu en lugar de los servicios

Supongo que te gusta

Origin blog.51cto.com/14638699/2485581
Recomendado
Clasificación