Fondo
Estoy trabajando en un equipo que busca implementar implementaciones de tiempo de inactividad cero. Estamos planeando utilizar una estrategia de implementación azul / verde para lograr esto. Una de las cosas que me estoy dando cuenta al hacer la investigación es lo complicado que resulta hacer cambios en la base de datos. Una operación simple como cambiar el nombre de una columna puede tomar 3 ciclos de publicación completos hasta que se complete!
Me parece que al tener el lanzamiento completo de un cambio, llevar varios ciclos de lanzamiento, presenta un gran potencial de error humano. En el artículo vinculado se muestra que los cambios de código son necesarios para 2 versiones y una migración de base de datos para 3 versiones.
Lo que estoy buscando
Actualmente, si queremos recordar hacer algo, podemos crear un ticket en nuestro sistema de administración de problemas, lo que genera desorden y también puede ser trasladado a un sprint posterior o al backlog por la administración; o podemos crear un comentario TODO, que probablemente se olvidará por completo.
Lo que estoy buscando es una forma en la que un comentario de TODO puede tener una fecha límite en su contra, y nuestro sistema de Integración Continua (actualmente no decidido que usaremos) rechazará la compilación si esta fecha límite caducara.
Por ejemplo, si cambiamos el nombre de una columna, podríamos crear la migración inicial y luego dos comentarios TODO para asegurarnos de que se crean las dos migraciones restantes:
// TODO by v55: Create migration to move constraints to new column, remove references to old column in app
// TODO by v56: Create migration to drop old column
Esto parece bastante simple de implementar, pero me pregunto si ya existe algo así, porque no quiero reinventar la rueda.
Pensamientos adicionales
Siento que podría estar sufriendo el problema XY aquí, dado que las implementaciones continuas y las implementaciones en azul / verde se consideran una buena práctica, parece extraño que no pueda encontrar una solución para hacer que las actualizaciones de la base de datos sean menos dolorosas. Si crees que estoy investigando por completo algo incorrecto, ¡házmelo saber en un comentario! Dicho esto, el ejemplo de la base de datos que proporcioné es solo un ejemplo, y creo que TODO comentarios con fechas de vencimiento también serían útiles en otras situaciones, por lo que incluso si me estoy acercando a esta situación específica, realmente me gustaría responder a mi pregunta real también. Gracias!
EDITAR: Acabo de pensar en otra situación en la que esto podría ser útil. Si usa las Alternativas de funciones para activar partes de su aplicación cuando estén listas, debe tener cuidado de limpiarlas, de lo contrario podría terminar con Toggle Debt . Los comentarios con fechas límite podrían ser una buena manera de recordar esto.