Esta es la primera vez que entregaré código para un proyecto independiente (aplicación web) y, dado que no tengo mucha experiencia en el envío de códigos, me cuesta decidir si mi programa está listo para la implementación o no.
Entiendo que un código de nivel de producción debe tener las siguientes características:
- Tolerancia a fallos : capacidad de sobrevivir excepciones no detectadas
- Redundancia de datos : nunca pierda los datos del usuario
- Escalabilidad : el manejo de la carga adicional no debería requerir volver a escribir la aplicación
- Cobertura de prueba : una cantidad "decente" de código probado
Algunas de estas características son específicas del programa en sí, mientras que otras están más relacionadas con el entorno (ya sea que utilicen múltiples clústeres). Sin embargo, incluso las características dependientes del entorno sí afectan la forma en que se diseña el programa.
Mi pregunta es: ¿cuáles son las otras características que hacen que el código de producción sea tan diferente del código que no está destinado a la producción?
Solo para reducir el alcance de la pregunta, concéntrese solo en las aplicaciones web .
Editar : Intentaré reducir el alcance preguntando características específicas de mi situación. Como profesional independiente, era responsable de todo, desde comprar un VPS, hasta configurarlo, escribir el código y desplegarlo. Aunque el proyecto y su configuración están bien documentados, el cliente no podrá mantenerlo. La aplicación no es compleja, pero depende de muchos componentes externos, lo que la hace muy propensa a romperse si estos componentes cambian / desaparecen. El objetivo es establecer un servicio que pueda durar el mayor tiempo posible sin la intervención del cliente.
fuente
Respuestas:
"código de calidad de producción" es cualquier otro usuario, que no sea usted, es ...
ESO ES.
Algunas personas necesitan tolerancia absoluta a fallas. A otros no les importa tanto si se pierden algunos datos cuando se produce un bloqueo ... suponiendo que vean fallas con poca frecuencia. No hay cualidades o requisitos establecidos. Y a ningún cliente le importa la cobertura de la prueba, lo que les importa son los tres puntos anteriores. La cobertura de prueba es una herramienta (una de muchas) que puede usar para llegar allí, pero se ha creado una gran cantidad de software, algunos incluso buenos, con nada más que pruebas manuales.
Independientemente del software que cree, los requisitos están entre usted y su cliente y si está creando software para consumo general, elija uno o pocos grupos objetivo y no intente ser todo para todos. Intentar crear algún tipo de molde genérico me parece bastante tonto.
En lugar de tratar de predecir o adivinar cuándo su software estará listo para la producción, ¿por qué no trabaja con su cliente? Déles una vista previa pero explíqueles que no está lista para producción. Publíquelo en su propio servidor y pídales que lo usen, hurguen y den su opinión. Continúa trabajando con ellos hasta que estén contentos con lo que les diste. En otras palabras, le dirán cuándo está lista la producción.
fuente