Pregunta 100% de disponibilidad para una aplicación web


Recibimos un "requisito" interesante de un cliente hoy.

Ellos quieren 100% de tiempo de actividad con Fuera del sitio Failover en una aplicación web. Desde el punto de vista de nuestra aplicación web, esto no es un problema. Fue diseñado para poder escalar a través de múltiples servidores de bases de datos, etc.

Sin embargo, debido a un problema de red, parece que no puedo entender cómo hacer que funcione.

En pocas palabras, la aplicación vivirá en servidores dentro de la red del cliente. Se accede tanto por personas internas como externas. Quieren que mantengamos una copia externa del sistema que, en caso de un fallo grave en sus instalaciones, se retire y se haga cargo de inmediato.

Ahora sabemos que no hay absolutamente ninguna manera de resolverlo para las personas internas (¿paloma mensajera?), Pero quieren que los usuarios externos ni siquiera se den cuenta.

Francamente, no tengo la menor idea de cómo esto podría ser posible. Parece que si pierden la conectividad a Internet, tendríamos que hacer un cambio de DNS para reenviar el tráfico a las máquinas externas ... Lo cual, por supuesto, toma tiempo.

Ideas?

ACTUALIZAR

Tuve una discusión con el cliente hoy y aclararon sobre el tema.

Se quedaron con el número del 100% y dijeron que la aplicación debería mantenerse activa incluso en caso de inundación. Sin embargo, ese requisito solo se activa si lo alojamos para ellos. Dijeron que manejarían el requisito de tiempo de actividad si la aplicación vive completamente en sus servidores. Puedes adivinar mi respuesta.


310
2017-09-29 00:31


origen


No subestime el enorme tiempo de inactividad causado por la piratería, observe Sony y la red de PlayStation. puede garantizar que tenían la misma idea de tiempo de actividad de% 100 y el dinero / hardware para respaldarla. aclare con el cliente que el 100% del tiempo de actividad es una expectativa inviable, incluso los técnicos de google dudarían en murmurar "100% de tiempo de actividad". una sugerencia por cierto es considerar el uso de DNS dinámico, solo se almacenan en caché durante 60 segundos, esto debe incluir el sistema operativo y los servidores DNS locales. - Silverfire
Yo personalmente CORRER de este cliente lo más rápido posible. Sospecho que esta no será la última idea loca que puedan tener (desde un punto de vista tecnológico). - GregD
Me gustaría poder votar a tu cliente. - joeqwerty
Si te das cuenta del 100% de tiempo de actividad, avísame. Crearé un negocio con él y lo venderé a google. Es imposible garantizar el 100%. Incluso las empresas como Microsoft, Amazon o Google no irán tan alto porque saben que es imposible. Lo mejor que he visto es 99.999% e incluso eso es un estiramiento (5 minutos en un año). Lo mejor que podrías hacer probablemente es 99.99% de manera confiable. - Matt
Solo inventa un precio increíblemente alto para poner en su solicitud de locura. Eso probablemente los traerá de vuelta a sus sentidos. O bien, o los despedirá en busca de alguien dispuesto a mentirles. - Nate C-K


Respuestas:


Aquí está WikipediaLa útil tabla de la búsqueda de nueves:

enter image description here

Curiosamente, solo 3 de los 20 mejores sitios web Pudimos lograr el tiempo de actividad mítico de 5 nueves o 99,999% en 2007. Eran Yahoo, AOL y Comcast. En los primeros 4 meses de 2008, algunos de los más redes sociales populares, ni siquiera se acercan a eso.

En la tabla, debería ser evidente lo ridículo que es la búsqueda del 100% del tiempo de actividad ...


363
2017-09-29 01:03



Pingdom tampoco está comprobando cada segundo. Además de eso, los que se encontraron con cinco nueves probablemente todavía tenían interrupciones localizadas que Pingdom podría no haber detectado, o fallas que hicieron que algunos servicios no estuvieran disponibles al mismo tiempo que respondían a pings. - ceejayoz
Lo que en sí mismo hace dudosos los cinco nueves ... - GregD
Precisamente. ¡Y tienen $ billones para trabajar! - ceejayoz
Lamento perturbar la conversación, pero la pregunta del OP era cómo esforzarse por alcanzar el objetivo del 100% de tiempo de actividad en un nivel técnico no conceptual, estoy seguro de que sabe que no siempre es posible debido a los sucesos naturales que ocurren en el hardware y el medio ambiente. ¿Podríamos ayudarlo con eso? - David d C e Freitas
Para el OP: He visto SLA que garantizaban el tiempo de actividad en el contexto de "fuera del mantenimiento normal". El mantenimiento normal, por supuesto, está programado un tiempo de inactividad por mes para actualizaciones, parches, etc., que generalmente se producen en su día de mayor ocupación del mes durante los momentos menos ocupados del mes (generalmente en el medio de la noche). Deben tener algún tipo de métrica para su negocio con respecto a los negocios. Tú podría Ofrecer mejor tiempo de actividad (4 nueves) para ellos. solamente durante esos tiempos - GregD


Pídales que definan el 100% y cómo se medirá en qué período de tiempo. Probablemente significan lo más cercano al 100% que pueden pagar. Dales los costos.

Elaborar. He estado en conversaciones con clientes a lo largo de los años con requisitos supuestamente ridículos. En todos los casos, en realidad solo utilizaban un lenguaje lo suficientemente no preciso.

Con bastante frecuencia enmarcan las cosas de manera que parecen absolutas, como el 100%, pero en realidad, en una investigación más profunda, son lo suficientemente razonables para realizar los análisis de costo / beneficio que se requieren cuando se presentan los costos para los datos de mitigación de riesgos. Preguntarles cómo medirán la disponibilidad es una pregunta crucial. Si ellos no saben esto, entonces usted está en condiciones de sugerirles que esto debe definirse primero.

Le pediría al cliente que defina qué pasaría en términos de impacto / costos en el negocio si el sitio fallara en las siguientes circunstancias:

  • En sus horas mas ocupadas por x horas.
  • En sus horas menos ocupadas por x horas.

Y también cómo van a medir esto.

De esta manera, puedes trabajar con ellos para determinar el nivel correcto de '100%'. Sospecho que al hacer este tipo de preguntas, podrán determinar mejor las prioridades de sus otros requisitos. Por ejemplo, pueden querer pagar ciertos niveles de SLA y comprometer otras funcionalidades para lograr esto.


186
2017-09-29 09:45



Convenido. Es posible que solo signifiquen tiempo de funcionamiento "muy alto" (¿más de 90?) Con una estrategia de conmutación por error bastante sólida. Si no, entonces una explicación de la escala de costos involucrada los persuadirá ... - Martin Dow
+1 por no saltar a conclusiones, y solo pedirle al cliente que explique lo que tiene en mente. - sleske
Me hago eco de la declaración de "no saltar a conclusiones" ... si el cliente significa 100% de disponibilidad (menos el mantenimiento programado), entonces mayo Ser más de un requisito razonable. - Tim Reddy
Con respecto al impacto en el negocio, en realidad conocemos y entendemos completamente su negocio y los costos que implica la caída del sitio no son financieros. Más a lo largo de las líneas de los nativos que aparecen con horquillas, posibles tapices, etc.;) Imagínense a 40,000 personas que aparecen en la puerta de su casa gritando. Eso es lo que quieren evitar con una pasión. - NotMe
@ChrisLively Razón de más para tener una comprensión madura del riesgo, entonces. El paradigma dominante para la ingeniería de seguridad es evaluación probabilística de riesgos. Hay sistemas que podrían matar (no solo molestar) a miles de personas y todavía tienen una probabilidad de fracaso baja, con suerte bien entendida, pero no nula. - poolie


Tus clientes están locos. 100% de tiempo de actividad es imposible No importa cuánto dinero gastes en ello. Llano y simple - imposible. Mire a Google, Amazon, etc. Tienen una cantidad de dinero casi infinita para lanzar a su infraestructura y aún así logran tener tiempo de inactividad. Debe entregarles ese mensaje, y si continúan insistiendo en que ofrezcan demandas razonables. Si ellos no reconocen eso algunos la cantidad de tiempo de inactividad es inevitable, luego deshágase de ellos.

Dicho esto, parece que tienes la mecánica de escalar / distribuir la aplicación en sí. La parte de la red tendrá que incluir enlaces ascendentes redundantes a diferentes ISP, obtener una asignación de ASN e IP, y obtener el BGP y el engranaje de enrutamiento real para que el espacio de direcciones IP pueda moverse entre los ISP si es necesario.

Esto es, obviamente, una respuesta muy concisa. No ha tenido experiencia con aplicaciones que requieran este grado de tiempo de actividad, por lo que realmente necesita involucrar a un profesional si desea acercarse a un tiempo de actividad del 100%.


141
2017-09-29 00:39



Convenido. Totalmente. Loco. - jdw
ellos solían ?? - Sirex
@Sirex Refiriéndose al reciente experimento @ CERN donde se ha encontrado que los neutrinos viajan más rápido que la luz. Sin embargo, los resultados aún no han sido confirmados por científicos independientes. - TC1
@ TC1 te apuesto $ 200 eso no da resultado - dpatchery
@ErikA Una solicitud de tiempo de actividad del 100% es indicativo de desconocimiento de las características técnicas de los sistemas. Eso está bien, porque el trabajo del cliente es hacer lo que sea que hagan. Su trabajo es diseñar sistemas de TI. Los clientes difíciles como este pueden ser pesadillas, pero también pueden convertirse en sus mejores clientes. - duffbeer703


Bueno, eso es definitivamente interesante. No estoy seguro de querer comprometerme contractualmente a un tiempo de actividad del 100%, pero si tuviera que hacerlo creo que se vería así:

Comience con la IP pública en un equilibrador de carga completamente fuera de la red y cree al menos dos de ellos para que uno pueda conmutar por error al otro. Un programa como Heatbeart puede ayudar con la conmutación por error automática de esos.

El barniz se conoce principalmente como una solución de almacenamiento en caché, pero también hace un balanceo de carga muy decente. Quizás esa sería una buena opción para manejar el balanceo de carga. Puede configurarse para tener 1 a n backends agrupados opcionalmente en directores que cargarán el saldo ya sea aleatoriamente o por turnos. El barniz se puede hacer lo suficientemente inteligente como para verificar la salud de cada back-end y soltar los back-end no saludables fuera del bucle hasta que vuelva a estar en línea. Los backends no tienen que estar en la misma red.

Estoy un poco enamorado de los Elastic IPs en Amazon EC2 en estos días, así que probablemente construiría mis balanceadores de carga en EC2 en diferentes regiones o al menos en diferentes zonas de disponibilidad en la misma región. Eso le daría la opción de (manualmente, Dios no) encender un nuevo equilibrador de carga si tuviera que hacerlo y mover la IP del registro A existente al nuevo cuadro.

Sin embargo, el barniz no puede terminar con SSL, por lo que si esa es una preocupación, quizás desee ver algo como Nginx en su lugar.

Puede tener la mayoría de sus backends en la red de sus clientes y uno o más fuera de su red. Creo, pero no estoy 100% seguro, de que puede priorizar los backends para que las máquinas de sus clientes reciban prioridad hasta que todas ellas se vuelvan insalubres.

Ahí es donde empezaría si tuviera esta tarea y, sin duda, la perfeccionaría a medida que avanzaba.

Sin embargo, como dice @ErikA, es Internet y siempre habrá partes de la red que están fuera de su control. Querrá asegurarse de que su legal solo lo vincule con las cosas que están bajo su control.


54
2017-09-29 00:47



Durante un tiempo estuve pensando en Amazon y MS para una implementación en la nube, pero ambos han tenido grandes interrupciones en los últimos meses. SSL es crítico - NotMe
Si fuera a utilizar Amazon, definitivamente desearía repartir sus máquinas alrededor de las 5 zonas de disponibilidad. Es bastante improbable que todas sus zonas salgan al mismo tiempo. - jdw
+1 por abordar realmente la pregunta principal del OP. - Phil
siempre tendrá un punto de falla, jdw, siempre y cuando haya una cosa no distribuida en la cadena (en su caso, el latido del corazón, a menos que, por supuesto, tenga varias instancias de eso ejecutándose en máquinas remotas, todas ellas monitoreando entre sí, así como también a su servidores, que cualquiera de ellos puede ver o no debido a problemas de red a lo largo del enrutamiento). Lo que nos lleva al "tiempo muerto". Es posible que los servidores estén en funcionamiento y no estén disponibles para el cliente sin que el latido del corazón los detecte si la falla no está en la ruta de enrutamiento. - jwenting
Convenido. Como TODOS los demás han señalado, no existe el 100% del tiempo de actividad. Todo lo que puedes hacer es intentar y lo que describí es cómo empezaría a intentarlo. - jdw


No hay problema, aunque la redacción del contrato sea ligeramente revisada:

... garantiza un tiempo de actividad del 100% (redondeado a cero decimales).


29
2017-09-29 10:13



+1 para indicar que el 100% no es 100,0% o 100,000%, etc. Los dígitos decimales son importantes, indican la precisión;) - Danubian Sailor
Según algunas convenciones, "100%" tiene solo una cifra significativa, de modo que todos los números entre la mitad y uno se redondearían a "100%"; El 50% se redondearía al 100%. - Thomas Levine
Dependiendo del estándar para contar, algunos dirán que el 50% tiene dos números meeningfull, mientras que el 100% tiene tres números meeningful. 50,5 y 100 son por lo tanto igual de precisos. Otros contarán los dígitos después del punto decimal. Entonces 50,5 y 100,4 serán igual de precisos. Si no se indica otra cosa, asumo que el 100% es 99,5% y más. 100,0% es 99,95% y más, etc. - Tillebeck


Añadir respuesta de oconnore de Hacker News

No entiendo cuál es el problema. El cliente desea que usted planifique para un desastre, y no están orientados a las matemáticas, por lo que pedir un 100% de probabilidad parece razonable. El ingeniero, como suelen hacer los ingenieros, recordó su primer día de prob & stat 101, sin considerar que el cliente podría no hacerlo. Cuando dicen esto, no están pensando en el invierno nuclear, están pensando en que Fred descargue su café en el servidor de la oficina, que se caiga un disco o que se caiga un ISP. Además, puedes lograr esto. Con servidores de monitorización independientes, geográficamente distintos, básicamente no tendrá tiempo de inactividad. Con 3 servidores operando en una confiabilidad independiente (1) tres 9, con buenos modos de conmutación por error, su tiempo de inactividad esperado es inferior a un segundo por año (2). Incluso si esto sucede de una vez, todavía se encuentra dentro de un SLA razonable para conexiones web, y por lo tanto, prácticamente no existe el tiempo de inactividad. El cliente todavía tiene que lidiar con los escenarios del día del juicio final, pero Godzilla excluido, tendrá un servicio que está "siempre" arriba.

(1) Un servidor en LA es razonablemente independiente del servidor en Boston, pero sí, entiendo que hay una intersección que involucra guerra nuclear, hackers chinos que chocan con la red eléctrica, etc. No creo que su cliente esté molesto por esta.

(2) La conmutación por error de DNS puede agregar algunos segundos. Todavía se encuentra en un escenario en el que el cliente debe reintentar una solicitud una vez al año, lo cual es, nuevamente, dentro de un SLA razonable, y no suele considerarse de la misma manera como "tiempo de inactividad". Con una aplicación que se redirige automáticamente a un nodo disponible en caso de fallo, esto puede pasar desapercibido.


25
2017-09-30 15:49



El problema es que lo están diciendo en contrato. Lo que significa que si un desastre hace Ocurre y necesita más de diez segundos para volver a poner el sitio en línea a través de las copias de seguridad que tendrían para demandar. - Shadur
@Shadur: si ellos De Verdad lo quieres, entonces debes De Verdad cargarlos Distribuya los servidores geográficamente a lo largo y ancho, con suerte no habrá desastres en todas partes. - Jungle Hunter
He visto un sitio que ofrece 100% de tiempo de actividad garantizado o le devolvemos su dinero. El truco fue que cargaron un bote y se dividieron en meses. Entonces, algunos meses no se pagan y usted programa todo alrededor de eso, y cubre la pérdida con los meses que funcionan bien. - jldugger


Si Facebook y Amazon no pueden hacerlo, entonces no puedes. Es tan simple como eso.


25
2017-09-29 01:10



él podría ser más inteligente que toda su gente combinada, quién sabe: p - Matt
El 100% del tiempo de actividad no tiene que ser tan literal: significa: 100% disponible durante el tiempo que se necesita. Por ejemplo, los sistemas bancarios siempre deberían estar disponibles, y funcionan bastante bien. El hecho de que se bajen por mantenimiento durante 1 segundo una vez al año no significa que hayan fallado en su objetivo de tiempo de actividad del 100%. - David d C e Freitas
@DavidFreitas - Creo que en los contratos suele ser bastante literal ... - UpTheCreek
@Matt solo porque Facebook / Amazon no puede hacerlo, no significa que un sitio más pequeño no pueda hacerlo. Muchos sitios web grandes enfrentan problemas mucho más difíciles de superar que un sitio más pequeño. - Xorlev
Entonces, lo que está diciendo es que no tuvo un tiempo de actividad del 100% ya que tuvo algunos clientes que tuvieron errores. Además, dns no es un cambio instantáneo, ya que tiene ISP que ignoran los TTL cortos. - Mike


Te piden algo imposible.

Revise las otras respuestas aquí, siéntese con su cliente y explique POR QUÉ Es imposible, y evaluar su respuesta.

Si aún insisten en un tiempo de actividad del 100%, infórmeles educadamente que no se puede hacer y rechace el contrato. Nunca cumplirás con su demanda, y si el contrato no apesta totalmente, obtendrás multas.


17
2017-09-29 03:41



El 100% debe definirse, es decir, el 100% está disponible, excepto cuando se realizan tareas de mantenimiento o actualizaciones y ese tiempo se limitará a horas de silencio durante unas pocas horas al mes como máximo. Todo depende sobre cuál es el propósito y el uso de la aplicación web en este caso ... - David d C e Freitas
y definir "tiempo muerto". En teoría, ni siquiera puedo garantizar que podrán acceder a un servidor en Omaha desde sus oficinas en Fairbanks a menos que usted controle toda la red en el medio (aunque podría garantizar que el servidor esté en funcionamiento). - jwenting
Las definiciones son, IMHO, irrelevantes si piden "tiempo de actividad del 100%": incluso si negocia el mantenimiento programado y genera redundancia N + N si un pequeño problema ocasiona un reinicio no programado o un parpadeo de servicio, ha fallado su SLA. SEGURO Sin embargo, es relevante si está negociando un SLA de 3, 4 o 5 nueves. - voretaq7
Depende de los términos del SLA, ¿no es así? Si le pagan $ 100K por mes y cada minuto de tiempo de inactividad conlleva una multa de $ 1K, eso podría ser completamente factible (si tiene otros contratos para amortizar el costo de los administradores de sistemas in situ 24/7). - Michael Borgwardt
@MichaelBorgwardt definitivamente hay formas de "hacer que funcione" desde un punto de vista de números puros, pero aún así lo rechazaré debido al potencial de malas relaciones públicas ($ _CLIENT se pone en Twitter y le dice al mundo que estamos abajo porque $ _PROVIDER es incompetente y no puede cumplir con su SLA! '). Personalmente, prefiero tener 10 clientes más pequeños y razonables que me pagan $ 10k al mes :-) - voretaq7


Precio en consecuencia, y luego estipule en el contrato que cualquier tiempo de inactividad después del SLA se reembolsará a la tasa que están pagando.

El ISP en mi último trabajo hizo eso. Tuvimos la opción de una línea DSL "normal" con un tiempo de actividad del 99.9% por $ 40 / mes, o un trío de T1 garantizados con un tiempo de actividad del 99.99% por $ 1100 / mes. Hubo interrupciones frecuentes de más de 10 horas por mes, lo que llevó su tiempo de actividad muy por debajo del DSL de $ 40 / mes, sin embargo, solo nos reembolsaron alrededor de $ 15 aproximadamente, porque esa es la tasa por hora * que las horas terminaron. Se hicieron como bandidos del trato.

Si factura $ 450,000 al mes por el 100% del tiempo de actividad, y solo alcanzas el 99,999%, deberás reembolsarles $ 324. Estoy dispuesto a apostar a que los costos de infraestructura para alcanzar el 99,999% se aproximan a los $ 45,000 al mes, asumiendo que los colos estén totalmente distribuidos, los enlaces ascendentes de nivel 1, el hardware de los fancypants, etc.


13
2017-09-29 19:01



Si ves a alguien prometiendo un 100% de tiempo de actividad, entonces esto es exactamente lo que están haciendo. Hay una diferencia entre prometer un tiempo de actividad del 100% y entregarlo. Sería una buena idea explicarle esto al cliente si intentara citarle el SLA de un competidor. - sjbotha


Si los profesionales se preguntan si El 99,999% de disponibilidad [es] una posibilidad práctica o financieramente viable.Entonces, la disponibilidad del 99.9999% es aún menos posible o práctica. Por no hablar del 100%.

No cumplirás el objetivo de disponibilidad del 100% durante un período de tiempo prolongado. Puede salirse con la suya durante una semana o un año, pero entonces algo sucederá y usted será responsable. El emisario puede ir desde la reputación dañada (que prometió, no entregó) a la quiebra de multas contractuales.


10
2017-09-29 06:41





Hay dos tipos de personas que solicitan un tiempo de actividad del 100%:

  1. Personas sin ningún conocimiento sobre computadoras, sistemas informáticos o Internet. *
  2. Los que intencionalmente se están haciendo el ridículo, ya sea para probar su capacidad para decir No (Google "la Prueba del Jugo de Naranja"), o para tratar de obtener algún tipo de apalancamiento de SLA de contrato para evitar pagarle más tarde.

Mi consejo, habiendo sufrido ambos tipos de clientes en muchas ocasiones, es no tomar este cliente. Déjalos enloquecer a alguien más.

* Esta misma persona puede no tener vergüenza de preguntar sobre viajes más rápidos que la luz, movimiento perpetuo, fusión fría, etc.


10
2017-09-30 12:24



+1 para la prueba de jugo de naranja .. Me gusta y no lo sabía :) - Oliver M Grech