Definir "listo para producción"

25

He tenido curiosidad sobre esto por un tiempo. ¿Qué se entiende exactamente por "listo para producción" o sus variantes? Más recientemente, estaba buscando información sobre sqlite y encontré este hilo , donde muchas personas sugieren que sqlite no está listo para la producción.

Sé la diferencia entre desarrollo / pruebas y producción; mi definición de producción es cualquier cosa que se proporcione al cliente o sea utilizada por personas que no sean programadores.

Sin embargo, parece que hay muchos elementos que no están definidos como listos para producción. Pero en realidad, pueden ser perfectamente adecuados y las personas solo tienen un prejuicio contra ellos, por ejemplo, sqlite, python, productos que no son MS, etc.

¿Pequeña oficina vs. empresa? ¿Usuario único versus multiusuario? Cliente vs servidor? ¿Dónde se traza la línea?

Comunidad
fuente
2
"Funciona en mi máquina".
Grajo
2
El estado del código cuando es hora de enviar el código.
Gilbert Le Blanc

Respuestas:

41

Depende de quién seas.

Definición del programador de "listo para producción":

  • corre
  • cumple los requisitos del proyecto
  • su diseño fue bien pensado
  • es estable
  • es mantenible
  • es escalable
  • está documentado

Definición de la gerencia de "lista para producción":

  • corre
  • generará ganancias

Lamento repetir esta vieja pregunta, pero me la crucé y no pude resistirme.

Jeff
fuente
Una gran cosa que agregaría a esta lista es ... cuando algo se rompe, el sistema proporciona suficiente información para que pueda resolverlo.
ShaneC
Y no hay que olvidar, la definición de la gente de operaciones: Monitoreo actual, ruta de actualización bien documentada y fácil, plan de lanzamiento, seguridad, rendimiento, automatización, ... Algunos podrían ponerlo bajo sus puntos "requisitos de proyecto" y "mantenible", pero la mayoría a veces, falta la perspectiva de las personas que operan. (Solo se aplica al software que se ejecuta a través de personas de operaciones)
Christian
66
Encontré esto hoy, y estoy tentado de cambiar esa respuesta eliminando la parte "se ejecuta" del párrafo de administración ;-)
Doc Brown
8

En general, "X no está listo para la producción" significa que hay problemas con características faltantes, estabilidad y / o escalabilidad, por lo que puede utilizarse en escenarios menos exigentes, pero puede fallar en implementaciones a gran escala (implementaciones de nivel empresarial e Internet).

Brad Wilson
fuente
1

Hay muchas definiciones que se pueden usar para "producción lista".

Los míos personales se enumeran a continuación, y todos son algo prácticos y muy dependientes del contexto, en algunos contextos, la misma solución exacta puede considerarse "lista para producción", mientras que en otro contexto esa misma solución, a veces literalmente, será " producción lista sobre mi cadáver ".

Todas las definiciones a continuación suponen que "producción" tiene un contexto de "algún resultado serio depende del funcionamiento exitoso del producto".

  • En otras palabras, el software que ejecuta sus "mejores orquídeas para crecer en Nevada", el foro gratuito que le gana $ 3 / mes en ingresos de AdSense queda muy por fuera del contexto de producción ", mientras que el firmware de Space Shuttle está firmemente en ese contexto.

  • Todo lo demás está en una escala, con algunas cosas un poco grises (por ejemplo, algún software que realiza investigación académica; por un lado, no hay un impacto de producción obvio si se rompe en una situación genérica; por otro lado, las decisiones políticas multimillonarias son realizado por los gobiernos sobre la base de una investigación específica).

2 definiciones que se me ocurren ahora son:

  1. Puede usarse para fines que, cuando las cosas se rompen, implican pérdidas materiales, bajo un análisis de riesgo estándar.

    Esto no significa una garantía de falta de roturas / errores, ningún software puede hacer eso, sino un nivel razonable de certeza en la estabilidad para el propósito previsto.

    Por ejemplo, el beneficio de usar esta solución supera la magnitud de las pérdidas potenciales de la rotura multiplicada por la probabilidad de que se rompa.

    Por lo tanto, el descargo de responsabilidad infame de Java "no para uso en centrales nucleares".

  2. Se puede esperar razonablemente que sus pares hayan pasado la Due Diligence.

    Por ejemplo, si, en caso de una demanda, se le pregunta a un conjunto de N expertos aleatorios de su campo dado "dados estos detalles, ¿estaba lista esta producción?", Está razonablemente seguro de que la mayoría de dichos expertos estarán de acuerdo con usted en que fue listo, basado en los esfuerzos de investigación y trabajo que podría haber hecho razonablemente bajo las circunstancias. Si no pudo escribir más del 10% de los casos de prueba, no cumplió con la diligencia debida. Si su programa falló debido a un error previamente desconocido en el compilador gcc, probablemente no falló a menos que su software ejecutara algo importante que garantizara un nivel de escrutinio necesario para detectar incluso ese error.

DVK
fuente
0

SQLite no se debe usar para bases de datos de producción porque está diseñado explícitamente sin muchas de las características que se consideran "requeridas". Por ejemplo, los bloqueos afectan a toda la base de datos, no hay claves foráneas y hasta SQLite3 ni siquiera había ningún tipo de datos.

En términos más generales, significa que un sistema que funciona bien para un número muy pequeño de usuarios (1-5) en desarrollo se bloqueará y arderá cuando se exponga a cargas más pesadas.


Debo mencionar que esto también depende del entorno en el que se use una aplicación. Volviendo al ejemplo de SQLite, es perfecto para uso en producción si solo hay un cliente. Mac OS X usa SQLite ampliamente a través del marco CoreData: creo que maneja cosas como la base de datos de música iTunes del usuario y el buzón de correo iMail. Simplemente no intente usarlo como una base de datos cliente-servidor real.

John Millikin
fuente
0

Como sugiere en la última parte de la pregunta, "Production Ready" no es necesariamente una definición del tamaño de las implementaciones, sino que es adecuado para su uso y requisitos previstos. Por ejemplo, para una aplicación cliente de un solo usuario, SQLite podría estar listo para la producción. El mercado previsto determinará con mayor frecuencia si una aplicación o sistema está listo para la producción en su uso de la aplicación o sistema.

Llavero
fuente
0

Nuestra definición interna de una construcción que enviaremos a producción es muy simple ...

  • No hay problemas de gravedad 1 pendientes; y,
  • No hay problemas de gravedad 2 pendientes que no estén marcados como "Envíos conocidos"

La decisión de KS la tomamos yo y otra persona.

JP Alioto
fuente
-2

Bueno, mi opinión sobre la producción lista es que ha sido aprobada por la gerencia. Se ejecuta, cumple los requisitos o su escalabilidad, etc., ya se han cumplido antes de que podamos decir la palabra p. Cerrar la sesión es un punto de salida acordado mutuamente desde el punto de vista de la administración. PD. No consideraré nada preparado para la producción con sev 4 errores restantes abiertos.

Moe A
fuente