Tu aplicación acaba de recibir millones de usuarios de la noche a la mañana, ¿qué haces?

Una vez me preguntaron en una entrevista: ¿Cuál es el error más común cometido por los desarrolladores de bases de datos? Creo que el entrevistador esperaba que describiera algún tipo especial de consulta SQL que los desarrolladores siempre se equivocan.

Respondí: “fracaso para planificar el éxito”. Lo que quise decir fue: ¿qué sucede cuando la aplicación obtiene mucho éxito y atención? ¿Cómo va a escalar para manejar el tráfico? ¿Cómo hará copias de seguridad o actualizaciones si se espera que la aplicación funcione las 24 horas del día sin tiempo para realizar el mantenimiento? ¿Tiene un buen sistema para el monitoreo del sistema?

No ha especificado de qué tipo de aplicación está hablando. ¿Un juego para móviles? ¿Una aplicación web? ¿Un producto de software retráctil? No importa mucho, muchas de las estrategias son las mismas. Supongamos, por el simple hecho de argumentar, que es una aplicación móvil que interactúa con un sistema de fondo a través de una API.

  1. Supongo que obtener millones de usuarios era parte del plan para esta aplicación, y que hemos diseñado la aplicación con el objetivo de manejar el tráfico pesado, por lo que no se bloqueará y se quemará de inmediato. Pero vigílelo en caso de que lo haga.
  2. Deje que los gerentes de producto sepan lo que sucedió. Deben preparar comunicados de prensa, monitorear las menciones de su aplicación en las redes sociales, preparar a su equipo de soporte para un diluvio de llamadas y correos electrónicos, informar a la alta gerencia qué esperar, y así sucesivamente.
  3. Asegúrese de que los pagos realizados a través de la aplicación se procesen correctamente y siga supervisando eso. Los sistemas para ejecutar una aplicación para tantos usuarios se volverán caros y necesitaremos ingresos.
  4. Asegúrese de contar con sistemas de monitoreo adecuados para advertirnos si la carga es demasiado alta. Establezca un horario para asegurarse de que algún miembro del equipo de DevOps esté prestando atención al monitoreo en todo momento. Desarrolle métodos para estimar cuándo los servidores deben ser escalados.
  5. Inicie una revisión exhaustiva del código para detectar fallas de seguridad, especialmente las más comunes, inyección SQL y secuencias de comandos entre sitios. Cualquier aplicación que tenga tantos usuarios se convertirá en un objetivo para los hackers muy rápidamente. También prepárate para los ataques DDoS.
  6. Automatizar informes de uso de aplicaciones para gerentes de producto. Seguramente se emocionarán y querrán cortar y cortar el tráfico en cincuenta formas diferentes. No realizará ningún trabajo si está codificando informes personalizados todo el día. Intente crear una interfaz de informes de autoservicio, por ejemplo, un panel de New Relic.
  7. Asegúrese de tener suficiente espacio de almacenamiento para almacenar datos para esa cantidad de usuarios. Pronostique la tasa de crecimiento de los datos y calcule con qué frecuencia tendremos que proporcionar más espacio.
  8. Monitoree los cuellos de botella de rendimiento que aparecen a medida que crece el volumen de datos. Por ejemplo, consultas de bases de datos que funcionan adecuadamente cuando se consultan 100 mil filas, pero no cuando se consultan 100 millones de filas.
  9. Establezca expectativas con las ventas y el marketing, de que su equipo de ingeniería estará ocupado manteniendo el sitio funcionando por un tiempo, así que no espere un cambio rápido en el desarrollo de nuevas características.
  10. Ponte a trabajar.

Nota: La lista anterior no pretende ser una lista completa de todo lo que deba hacer después de que su tráfico crezca mucho. Los elementos de la lista son solo ejemplos.

Además de la buena respuesta de Bill Karwin, agregaría:

Comience a refactorizar su código para que pueda escalar.

En particular, descubra cómo cambiar el esquema de la base de datos para que las partes se puedan distribuir a diferentes servidores. ( Fragmento (arquitectura de la base de datos) – Wikipedia )

Averigüe cómo ejecutar con múltiples servidores (supongo que hay un recurso común). Descubre cómo duplicar los servidores en diferentes geografías. Esto mejora el rendimiento y lo hace más robusto ante un solo fallo del centro de datos.

Una dificultad común es administrar múltiples lectores de bases de datos y un escritor.

Averigüe dónde están los cuellos de botella en el sistema.

Si se trata de una aplicación independiente que no tiene que conectarse a través de Internet, siempre existe el problema de aumentar la fabricación (si está distribuyendo objetos físicos). En cualquier caso, debe aumentar las ventas y el marketing con personas que realmente pueden hacer el trabajo.

Administre y planifique los gastos: gastos de capital (CapEx) y gastos operativos (OpEx) a la luz de los ingresos existentes. Aquí, una persona con experiencia en finanzas de alta tecnología es invaluable.

Puede ser difícil pedir dinero prestado o recaudar capital de riesgo (adicional). Pero no quieres regalar demasiado. Tienes que caminar por la cuerda floja del crecimiento frente a los ingresos (o tasa de consumo). Elija el lado equivocado y podría limitar sus posibilidades de éxito o incluso condenar su aplicación al fracaso .

Tenga cuidado al elegir dónde construir, comprar o usar una tecnología de código abierto. No es fácil entender la propuesta de valor o las limitaciones reales.

Gestiona el crecimiento de tu equipo . Puede sentirse desesperado por encontrar cuerpos calientes . No contratar a las personas equivocadas es notablemente difícil, lo cual es más crítico que contratar a las personas adecuadas . Lo que hace que esto sea muy difícil es que necesita expandir su contratación para trabajos que no comprende completamente cubiertos por personas que no comprende completamente. El costo de oportunidad perdido de contratar a la persona equivocada es enorme .

Asegúrese de que su equipo sea lo suficientemente flexible como para responder rápidamente a los nuevos desafíos .

Conseguir los gerentes adecuados es increíblemente difícil. Encontrar un excelente selector de talento es casi imposible. (Solo he conocido a dos en mi carrera). No se sorprenda si la política desagradable de la oficina se hace cargo.

Un excelente gerente de producto es crucial. Desea a alguien que sea realista sobre lo que se puede hacer con recursos y tiempo limitados .

No pase por alto la importancia de:

  • monitoreando la aplicación
  • Probar la aplicación
  • Mejora de la experiencia del usuario de la aplicación (con pruebas A / B)
  • tener un buen sistema para implementar nuevas versiones sin problemas (y, por supuesto, deshacer las versiones rotas, ¡lo que realmente quieres evitar!)

Asegurarse de que la seguridad de la aplicación esté implementada y monitorear los ataques. En particular, asegúrese de que su base de datos de usuario esté encriptada y que las contraseñas estén encriptadas y “saladas” . Es sorprendente cuántas grandes compañías fallan en esto. Administrar su base de usuarios es poco apreciado.

Sé hipervigilante ante el fraude . Con millones de usuarios, habrá tramposos inevitables.

¡Esté atento a la competencia ! Identifique y trabaje en su “ salsa especial ” que haga que su aplicación sea excepcionalmente mejor . Mejorar la lealtad del usuario es importante.

Intenta planificar para un crecimiento aún mayor . Esto puede implicar el cambio de tecnologías (que puede ser muy doloroso).

Asegúrese de que la base del código esté bajo un buen control de versión y esté bien mantenida.

Asegúrese de tener buenas copias de seguridad y un plan de recuperación ante desastres .

Comienza a pensar en la próxima gran cosa , sin que se convierta en una gran distracción. Esto puede implicar canibalizar su (s) línea (s) de productos existente pero ser mejor que sus competidores.

Tenga mucho cuidado de adquirir otras compañías o ser adquirido usted mismo, pero ese es otro tema.

Estoy seguro de que he pasado por alto algo …

Esto puede parecer una lista desalentadora, ¡pero lo único peor que tener muchos usuarios (éxito) es no tener muchos usuarios (fracaso)!

Asegúrese de monitorear y depurar errores inesperados causados ​​por sus usuarios. Hay varias opciones para implementar un sistema. Recomiendo RootCause que fue desarrollado por Bryntum.

RootCause le permite reproducir errores como un punto de interrupción “en vivo” en su navegador. No tendrá que buscar respuestas o preguntarle al usuario qué sucedió.

Trabajo para RootCause y me complace poder configurarlo con una prueba gratuita 🙂

Seguramente no puedo responder esa pregunta, porque hace menos de un mes me encontré en la misma situación.

Escribí un juego durante las vacaciones y luego ordené algunos gráficos a un diseñador para que se convirtiera en un juego atractivo.

Y en los siguientes 6 meses tuve 50 instalaciones. Como total. Entonces dejé de revisar esta cuenta. Y cuando lo miré en enero para agregar un enlace a mi cartera, descubrí que tiene más de 1000 instalaciones diarias durante los últimos 10 días.

Y mi aplicación ni siquiera tenía publicidad.

Entonces, lo que hice: eliminé rápidamente todos los bloqueos para detener las críticas negativas y comencé a agregar monetización.

More Interesting

¿En qué situación desarrollaría una aplicación móvil antes que una aplicación web?

Si tengo una idea muy desarrollada para una aplicación móvil o una aplicación web, ¿dónde podría encontrar un desarrollador que colabore conmigo?

¿Cuánto cuesta hacer una aplicación para mi negocio?

¿Cuál es la mejor solución para convertir un sitio web de red social existente creado con CodeIgniter en una aplicación móvil en tiempo real (no web móvil)?

¿Existe una aplicación que me alertará cuando un elemento que se ajuste a mis palabras clave se publique en mi lista de craigs local?

¿Las aplicaciones de cuestionarios diarios educan efectivamente a los estudiantes?

¿Cuáles son las principales formas en que la seguridad móvil difiere de la seguridad web?

Quiero que un usuario de mi aplicación pueda autorizar a su banco a acreditar automáticamente mi solicitud al final del mes después de recibir su salario. ¿Cómo debe comunicarse la aplicación con los bancos?

¿Existe una documentación similar a un plan en el que se debe basar la codificación de una aplicación web?

¿Cuál es la mejor plataforma de nube de IoT que admite aplicaciones web y móviles?

¿Cuáles son los mejores recursos (libros, blogs, personas) para la retención de usuarios en aplicaciones web y aplicaciones móviles?

¿Podemos crear aplicaciones de redes sociales como WhatsApp y Hike desde Java?

¿Cómo me siguió rastreando una aplicación de Family aunque la aplicación no está instalada?

¿Qué sitios de aplicaciones de Andorid ofrecen la mejor aplicación?

¿Cómo debo mantener y rastrear mis diversas listas de datos?