SlideShare uma empresa Scribd logo
1 de 31
#GXMX
Introducción aIntroducción a
GXServerGXServerFlora Hernández Zamora
Mayo 2014
fhernandez@genexus.com
#GXMX
Separar ambientes
#GXMX
DIEGO MARY
#GXMX
Send KB to Server New KB from Server
DIEGO MARY
#GXMX
Commit Update
#GXMX
Merge
Model
#GXMX
Lock
Model
#GXMX
Buenas Prácticas – Trabajo en Equipo
#GXMX
#GXMX
Registrar los cambios
#GXMX
#GXMX
#GXMX
#GXMX
1
Agrupar los cambios
2
Un grupo por tema
3
Comentar los cambios
Buenas Prácticas – Gestión de cambios
#GXMX
Respaldar
#GXMX
1
Respaldos regulares
2
Respaldos seguros
3
Procedimientos de restauración
Buenas Prácticas – Respaldos
#GXMX
Recordar Hitos
#GXMX
#GXMX
1
Congelar cada versión
2
Hacerlo a tiempo
3
Identificación correcta
Buenas Prácticas – Hitos
#GXMX
#GXMX
#GXMX
1
Tener una línea principal
2
Tener una política para cada línea
3
Tener un dueño para cada línea
Buenas Prácticas – Líneas paralelas
#GXMX
Hacer Builds Repetibles
#GXMX
Integración
Continua
MSBuild
#GXMX
1
Fuentes + herramientas = Producto
2
Versionar dependencias
3
Automatizar builds
Buenas Prácticas – Builds
#GXMX
1 Ambientes de desarrollo separados
2 Historia de los cambios
3 Respaldos
4 Hitos
5 Líneas de desarrollo paralelas
6 Builds repetibles
Buenas Prácticas – Desarrollo SW
#GXMX
#GXMX
Línks de Interés
http://training.genexus.com/gx-server/curso-genexus
http://gxserver.com/
#GXMX
¡Muchas Gracias!
Flora Hernández Zamor
fhernandez@genexus.co
gx_flora
florahz

Mais conteúdo relacionado

Mais de GeneXus

After Chatbots Yo (Ro) Bots
After Chatbots Yo (Ro) BotsAfter Chatbots Yo (Ro) Bots
After Chatbots Yo (Ro) BotsGeneXus
 
Construya las aplicaciones del futuro ¡hoy!
Construya las aplicaciones del futuro ¡hoy!Construya las aplicaciones del futuro ¡hoy!
Construya las aplicaciones del futuro ¡hoy!GeneXus
 
Live Editing in Action
Live Editing in ActionLive Editing in Action
Live Editing in ActionGeneXus
 
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...GeneXus
 
¿Pensando en implementar un sistema de gestión integral en su organización?
¿Pensando en implementar un sistema de gestión integral en su organización?¿Pensando en implementar un sistema de gestión integral en su organización?
¿Pensando en implementar un sistema de gestión integral en su organización?GeneXus
 
K2B Tools el compañero de viaje ideal hacia el futuro
K2B Tools el compañero de viaje ideal hacia el futuroK2B Tools el compañero de viaje ideal hacia el futuro
K2B Tools el compañero de viaje ideal hacia el futuroGeneXus
 
Sd y Plataformas
Sd y PlataformasSd y Plataformas
Sd y PlataformasGeneXus
 
PXTools: Nuevo generador y nuevos controles responsivos
PXTools: Nuevo generador y nuevos controles responsivosPXTools: Nuevo generador y nuevos controles responsivos
PXTools: Nuevo generador y nuevos controles responsivosGeneXus
 
APPlícate: Aplicaciones móviles para el desarrollo de la industria
APPlícate: Aplicaciones móviles para el desarrollo de la industriaAPPlícate: Aplicaciones móviles para el desarrollo de la industria
APPlícate: Aplicaciones móviles para el desarrollo de la industriaGeneXus
 
GeneXus 4 Students
GeneXus 4 StudentsGeneXus 4 Students
GeneXus 4 StudentsGeneXus
 
La importancia de ser responsive
La importancia de ser responsiveLa importancia de ser responsive
La importancia de ser responsiveGeneXus
 
K2B: El ERP nativo para el mundo GeneXus
K2B: El ERP nativo para el mundo GeneXusK2B: El ERP nativo para el mundo GeneXus
K2B: El ERP nativo para el mundo GeneXusGeneXus
 
GeneXus 15 (Salto)
GeneXus 15 (Salto)GeneXus 15 (Salto)
GeneXus 15 (Salto)GeneXus
 
GeneXus Cloud Deployment Services. El camino a la nube.
GeneXus Cloud Deployment Services. El camino a la nube.GeneXus Cloud Deployment Services. El camino a la nube.
GeneXus Cloud Deployment Services. El camino a la nube.GeneXus
 
LigaMX con GeneXus: De 0 a 1.700.000 de usuarios
LigaMX con GeneXus: De 0 a 1.700.000 de usuariosLigaMX con GeneXus: De 0 a 1.700.000 de usuarios
LigaMX con GeneXus: De 0 a 1.700.000 de usuariosGeneXus
 
Innovando con GeneXus y SAP
Innovando con GeneXus y SAPInnovando con GeneXus y SAP
Innovando con GeneXus y SAPGeneXus
 
Going mobile
Going mobileGoing mobile
Going mobileGeneXus
 
Audit+: La mejor forma de auditar KB’s GeneXus
Audit+: La mejor forma de auditar KB’s GeneXusAudit+: La mejor forma de auditar KB’s GeneXus
Audit+: La mejor forma de auditar KB’s GeneXusGeneXus
 
WW+, SD+ y Audit+: Potencie GeneXus la Suite Plus
WW+, SD+ y Audit+: Potencie GeneXus la Suite PlusWW+, SD+ y Audit+: Potencie GeneXus la Suite Plus
WW+, SD+ y Audit+: Potencie GeneXus la Suite PlusGeneXus
 
Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...
Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...
Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...GeneXus
 

Mais de GeneXus (20)

After Chatbots Yo (Ro) Bots
After Chatbots Yo (Ro) BotsAfter Chatbots Yo (Ro) Bots
After Chatbots Yo (Ro) Bots
 
Construya las aplicaciones del futuro ¡hoy!
Construya las aplicaciones del futuro ¡hoy!Construya las aplicaciones del futuro ¡hoy!
Construya las aplicaciones del futuro ¡hoy!
 
Live Editing in Action
Live Editing in ActionLive Editing in Action
Live Editing in Action
 
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
 
¿Pensando en implementar un sistema de gestión integral en su organización?
¿Pensando en implementar un sistema de gestión integral en su organización?¿Pensando en implementar un sistema de gestión integral en su organización?
¿Pensando en implementar un sistema de gestión integral en su organización?
 
K2B Tools el compañero de viaje ideal hacia el futuro
K2B Tools el compañero de viaje ideal hacia el futuroK2B Tools el compañero de viaje ideal hacia el futuro
K2B Tools el compañero de viaje ideal hacia el futuro
 
Sd y Plataformas
Sd y PlataformasSd y Plataformas
Sd y Plataformas
 
PXTools: Nuevo generador y nuevos controles responsivos
PXTools: Nuevo generador y nuevos controles responsivosPXTools: Nuevo generador y nuevos controles responsivos
PXTools: Nuevo generador y nuevos controles responsivos
 
APPlícate: Aplicaciones móviles para el desarrollo de la industria
APPlícate: Aplicaciones móviles para el desarrollo de la industriaAPPlícate: Aplicaciones móviles para el desarrollo de la industria
APPlícate: Aplicaciones móviles para el desarrollo de la industria
 
GeneXus 4 Students
GeneXus 4 StudentsGeneXus 4 Students
GeneXus 4 Students
 
La importancia de ser responsive
La importancia de ser responsiveLa importancia de ser responsive
La importancia de ser responsive
 
K2B: El ERP nativo para el mundo GeneXus
K2B: El ERP nativo para el mundo GeneXusK2B: El ERP nativo para el mundo GeneXus
K2B: El ERP nativo para el mundo GeneXus
 
GeneXus 15 (Salto)
GeneXus 15 (Salto)GeneXus 15 (Salto)
GeneXus 15 (Salto)
 
GeneXus Cloud Deployment Services. El camino a la nube.
GeneXus Cloud Deployment Services. El camino a la nube.GeneXus Cloud Deployment Services. El camino a la nube.
GeneXus Cloud Deployment Services. El camino a la nube.
 
LigaMX con GeneXus: De 0 a 1.700.000 de usuarios
LigaMX con GeneXus: De 0 a 1.700.000 de usuariosLigaMX con GeneXus: De 0 a 1.700.000 de usuarios
LigaMX con GeneXus: De 0 a 1.700.000 de usuarios
 
Innovando con GeneXus y SAP
Innovando con GeneXus y SAPInnovando con GeneXus y SAP
Innovando con GeneXus y SAP
 
Going mobile
Going mobileGoing mobile
Going mobile
 
Audit+: La mejor forma de auditar KB’s GeneXus
Audit+: La mejor forma de auditar KB’s GeneXusAudit+: La mejor forma de auditar KB’s GeneXus
Audit+: La mejor forma de auditar KB’s GeneXus
 
WW+, SD+ y Audit+: Potencie GeneXus la Suite Plus
WW+, SD+ y Audit+: Potencie GeneXus la Suite PlusWW+, SD+ y Audit+: Potencie GeneXus la Suite Plus
WW+, SD+ y Audit+: Potencie GeneXus la Suite Plus
 
Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...
Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...
Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...
 

Último

Presentación de Métodos generales E4.pptx
Presentación de Métodos generales E4.pptxPresentación de Métodos generales E4.pptx
Presentación de Métodos generales E4.pptxTepTziuMiriamAurora
 
La leyenda negra historia del odio-a-espana Emerson Eduardo Rodrigues
La leyenda negra historia del odio-a-espana Emerson Eduardo RodriguesLa leyenda negra historia del odio-a-espana Emerson Eduardo Rodrigues
La leyenda negra historia del odio-a-espana Emerson Eduardo RodriguesEMERSON EDUARDO RODRIGUES
 
Técnicas e instrumentos de la investigación documental.pdf
Técnicas e instrumentos de la investigación documental.pdfTécnicas e instrumentos de la investigación documental.pdf
Técnicas e instrumentos de la investigación documental.pdfJoseBatres12
 
Presentación STOP Lideres en Formación.pptx
Presentación STOP Lideres en Formación.pptxPresentación STOP Lideres en Formación.pptx
Presentación STOP Lideres en Formación.pptxProduvisaCursos
 
Jesucristo, Salvador del Mundo. Su misión y valor en la Historia
Jesucristo, Salvador del Mundo. Su misión y valor en la HistoriaJesucristo, Salvador del Mundo. Su misión y valor en la Historia
Jesucristo, Salvador del Mundo. Su misión y valor en la HistoriaDiffusor Fidei
 
MANUAL NIVEL 2. escuderos y centinelas . por juliodocx
MANUAL NIVEL 2. escuderos y centinelas . por juliodocxMANUAL NIVEL 2. escuderos y centinelas . por juliodocx
MANUAL NIVEL 2. escuderos y centinelas . por juliodocxjulio315057
 
AMOR AL PRÓJIMO, A DIOS Y A SÍ MISMO EXPLICADO A LOS JÓVENES
AMOR AL PRÓJIMO, A DIOS Y A SÍ MISMO EXPLICADO A LOS JÓVENESAMOR AL PRÓJIMO, A DIOS Y A SÍ MISMO EXPLICADO A LOS JÓVENES
AMOR AL PRÓJIMO, A DIOS Y A SÍ MISMO EXPLICADO A LOS JÓVENESvictormutombo20
 
Bienaventuranzas, LOS MANSOS, LOS PACIFICADORESII.pptx
Bienaventuranzas, LOS MANSOS, LOS PACIFICADORESII.pptxBienaventuranzas, LOS MANSOS, LOS PACIFICADORESII.pptx
Bienaventuranzas, LOS MANSOS, LOS PACIFICADORESII.pptxLpezOrlandoRal
 

Último (8)

Presentación de Métodos generales E4.pptx
Presentación de Métodos generales E4.pptxPresentación de Métodos generales E4.pptx
Presentación de Métodos generales E4.pptx
 
La leyenda negra historia del odio-a-espana Emerson Eduardo Rodrigues
La leyenda negra historia del odio-a-espana Emerson Eduardo RodriguesLa leyenda negra historia del odio-a-espana Emerson Eduardo Rodrigues
La leyenda negra historia del odio-a-espana Emerson Eduardo Rodrigues
 
Técnicas e instrumentos de la investigación documental.pdf
Técnicas e instrumentos de la investigación documental.pdfTécnicas e instrumentos de la investigación documental.pdf
Técnicas e instrumentos de la investigación documental.pdf
 
Presentación STOP Lideres en Formación.pptx
Presentación STOP Lideres en Formación.pptxPresentación STOP Lideres en Formación.pptx
Presentación STOP Lideres en Formación.pptx
 
Jesucristo, Salvador del Mundo. Su misión y valor en la Historia
Jesucristo, Salvador del Mundo. Su misión y valor en la HistoriaJesucristo, Salvador del Mundo. Su misión y valor en la Historia
Jesucristo, Salvador del Mundo. Su misión y valor en la Historia
 
MANUAL NIVEL 2. escuderos y centinelas . por juliodocx
MANUAL NIVEL 2. escuderos y centinelas . por juliodocxMANUAL NIVEL 2. escuderos y centinelas . por juliodocx
MANUAL NIVEL 2. escuderos y centinelas . por juliodocx
 
AMOR AL PRÓJIMO, A DIOS Y A SÍ MISMO EXPLICADO A LOS JÓVENES
AMOR AL PRÓJIMO, A DIOS Y A SÍ MISMO EXPLICADO A LOS JÓVENESAMOR AL PRÓJIMO, A DIOS Y A SÍ MISMO EXPLICADO A LOS JÓVENES
AMOR AL PRÓJIMO, A DIOS Y A SÍ MISMO EXPLICADO A LOS JÓVENES
 
Bienaventuranzas, LOS MANSOS, LOS PACIFICADORESII.pptx
Bienaventuranzas, LOS MANSOS, LOS PACIFICADORESII.pptxBienaventuranzas, LOS MANSOS, LOS PACIFICADORESII.pptx
Bienaventuranzas, LOS MANSOS, LOS PACIFICADORESII.pptx
 

Introducción gxservergxmx flor

Notas do Editor

  1. Workspace es donde los desarrolladores editan código (objetos), arman los componentes en que están trabajando, y prueban y hacen debug de lo que arman. No se trabaja todos juntos metiendo mano en un mismo “local”, sino que cada uno trabaja en su “garage”, con autonomía de lo que están haciendo los demás, y se utilizan luego mecanismos por los cuales cada desarrollador publica cambios y recibe los de los demás.
  2. GXserver utiliza precisamente este esquema, separando la KB que está alojada en GXserver, en la que se junta el trabajo de todos, de aquellas simples copias de trabajo que puede tener cada desarrollador para poder introducir cambios. Esta separación existe incluso aunque se trate de un solo desarrollador. Por un lado está la KB alojada en el server, que contiene toda la historia, las versiones, y el estado actual del proyecto, y por otro lado está la copia que se usa para desarrollar, en la cual se experimenta libremente, se va hacia atrás y hacia adelante, se prueba, etc.. Los cambios que se incorporan a la versión del server se pasan en una operación explícita, controlada, que agrupa todos los cambios relacionados a cierta funcionalidad o corrección. Algunos de los cambios que se hacen en la KB del desarrollador, terminan siendo descartados y nunca llegan a pasarse a la KB del server. Una vez definida esta separación, todo funciona con un protocolo de trabajo muy simple, utilizando solamente 4 operaciones básicas, integradas en el IDE de GX. Lo primero que hay que hacer es…
  3. En GX aparece una ventana como esta. Ahí pueden ver una lista de los objetos que GX sabe que tienen modificados localmente. Incluso pueden pedirle que les muestre una comparación para saber exactamente qué es lo que modificaron. Pueden seleccionar qué objetos quieren que sean parte del commit, cuáles no, e incluso con una opción “Revert” del menú contextual deshacer los cambios de algún otro. Luego de seleccionar el conjunto de objetos, se escribe un comentario descriptivo de los cambios incluidos en ese commit, y se mandan al server. Después de hacer el commit, los demás usuarios pueden obtener esos cambios con la operación de Update, para la cual GX también permite ver la lista de los objetos que se van a actualizar, hacer comparaciones para saber qué cambios trae, y seleccionar todos o solo algunos de los objetos para que se actualicen. Para este esquema de trabajo, existen a su vez dos variantes, dos modelos de integración de cambios. El primero es el que ya teníamos en la Evolution 1,
  4. que es el modelo basado en “merge”. Esto significa que no es necesario hacer “lock” de objetos sino que cada desarrollador trabaja en forma autónoma en su KB y hace commits y updates. En los casos en que un mismo objeto es modificado por más de un usuario, la gran mayoría de las veces GX y GXserver resuelven de forma automática la integración, haciendo “merge” automático de los cambios de uno y otro desarrollador. En Gxserver desde la primera versión contábamos con este modelo de integración, que es el preferido por la industria de software en general para los sistemas de control de versiones. Sin embargo, pueden existir proyectos u organizaciones específicos para los cuales se quiera utilizar un modelo alternativo, que está disponible a partir de la versión Evolution 2, que es -- Imagen: published by Clashmaker (http://www.flickr.com/photos/clashmaker/) bajo licencia Creative Commons Attribution-Share Alike 2.0 Generic (http://creativecommons.org/licenses/by-sa/2.0/deed.en). Ver http://en.wikipedia.org/wiki/File:Highway_401.png
  5. el modelo basado en locks. En este modelo, GX mantiene como “read-only” todos los objetos de la copia local, a menos que previamente se solicite y obtenga un “lock” (es una opción del menú contextual). Naturalmente GXserver solo da el “lock” sobre un objeto si no se lo ha dado previamente a otro usuario; en caso contrario es necesario esperar a que ese otro usuario libere el “lock” o haga “commit”. Este modelo de trabajo no es el que recomendamos utilizar en general, pero si por alguna razón particular desean utilizarlo, también está disponible.
  6. Estos son algunos consejos específicos relacionados con los workspaces. No compartir las KBs de desarrollo. Cada desarrollador debe trabajar con su propia copia, que conoce y controla, de forma de tener toda la autonomía necesaria para trabajar sin interferir a los demás, ni verse interferido por ellos Desarrollar siempre en KBs de desarrollo conectadas a una KB en GXserver. Aunque se trate de un solo desarrollador, la diferencia entre trabajar directamente en una KB, y trabajar con un repositorio es muy grande. El repositorio permite llevar en forma ordenada y documentada la evolución del proyecto, mientras que la copia de trabajo permite desarrollar con total libertad para hacer cambios y experimentar, con la tranquilidad de que se trata de un ambiente temporal. Es como trabajar en borrador y luego pasar en limpio. Mantenerse sincronizado. Si bien el tener copias de trabajo da la gran ventaja de la autonomía, es importante tratar de sincronizarse frecuentemente, de forma de que los cambios que se hacen puedan ser aprovechados y probados por los demás, y viceversa. Los eventuales problemas de integración que pudieran surgir, cuanto antes se detecten mejor.
  7. el propio IDE de GX. Ahí tengo una lista de los commits realizados, con su autor, fecha, y una lista de los objetos modificados en cada commit. Además, par cada uno de esos objetos, puedo pedirle que…
  8. En un proyecto de software debemos llevar un registro completo de todos los cambios que ocurren. Por qué? Hay muchísimos escenarios en que el analizar la historia de cambios nos será de gran utilidad. Un primer caso de uso es la necesidad de revisar periódicamente (por ejemplo, todos los días) los últimos cambios, como para tener una idea del progreso del proyecto. Esto puede quererlo hacer un cliente para quién desarrollamos el proyecto, o un gerente que supervisa el desarrollo, o cualquiera de los desarrolladores para estar al tanto de lo que hacen sus compañeros. Un segundo escenario es que vuelvo de unas vacaciones. Como no pude participar de muchas reuniones, ni leí mensajes que pudo haber intercambiado el equipo, quiero obtener rápidamente una vista de qué fue lo que se hizo en mi ausencia. Otro caso frecuente es aquél en que descubro un error en el sistema que estamos desarrollando, pero sé que ese error no se producía con la versión de hace dos días atrás. En ese caso quiero poder responder la pregunta “que cambiamos en estos últimos dos días que pueda haber roto el sistema?” Entender cómo está desarrollado alguna parte del sistema no siempre es fácil cuando se trata de proyectos con mucho tiempo de evolución. El registro histórico nos brinda información de cómo evolucionó cada objeto desde años atrás hasta ahora, qué cambios específicos se hicieron en cada momento, quién los hizo, para qué los hizo, etc. Además, tener la información de cómo estaban otros objetos en el momento de cada cambio, y qué otros cambios se hicieron en ellos, es una información sumamente valiosa. En cualquiera de esos escenarios lo que quiero es obtener la historia de cambios. GXserver permite ver esta historia en la consola del server, y también desde…
  9. me muestre las diferencias que se introdujeron en ese commit, para lo cual se utiliza un…
  10. comparador que resalta las partes modificadas, y dentro de ellas, qué cambios en particular se hicieron. En el ejemplo que se ve aquí, se distingue claramente que se quitaron 2 atributos de la estructura. Recuerdan que en uno de los escenarios estábamos buscando un error que introdujimos en los últimos días? Pues bien, si lo identificamos, podemos pedirle a GX…
  11. que deshaga en nuestra KB los cambios que se habían hecho en ese commit!
  12. Los cambios que están relacionados deben estar agrupados en un mismo commit. Eso facilita su mejor comprensión a la hora de probar/revisar esos cambios, o de analizar la historia pasada. Además, cuando esos cambios deben pasarse a otra rama de desarrollo, el tenerlos agrupados facilita estas operaciones. Por las mismas razones, los cambios que corresponden a diferentes temas deben hacerse en diferentes commits, cada uno con su correspondiente comentario. Si se utiliza un sistema de incidentes (tickets, o bug tracking), lo ideal es que cada commit corresponda a un único incidente y se pueden guardar referencias cruzadas entre cada commit y el incidente relacionado. Los comentarios en el commit son muy importantes. Incluso el más escueto comentario ayuda a distinguir unos commits de otros cuando se está revisando la historia. Algunas de las cosas que vale la pena destacar en un commit son: Para qué se hace el cambio (si corrige un error, cuál; si implementa algo nuevo, qué). Si hay un sistema de incidentes, puede alcanzar con el nombre y el número del incidente. Si hay algo relevante de por qué se hizo el cambio de cierta forma, conviene explicarlo. Si hay alguna forma alternativa que se descartó, conviene aclarar por qué (puede evitar que otros lo hagan en el futuro por no conocer esas razones).
  13. Debemos tener “backups” de lo que estamos desarrollando. Todos coincidimos en eso, pero no siempre se hace. A veces se vuelve complejo: “Dónde está la KB que tiene los últimos cambios?” “Con que KB se armó lo que se movió a Producción?” “Dónde está la KB con la que armamos la versión de este cliente?” Como vimos al principio…
  14. Hacer backups con la frecuencia adecuada. Naturalmente debe haber un balance entre el volumen de almacenamiento y el riesgo que estamos dispuestos a correr. Hacer un backup a cada hora es muy seguro (lo máximo que puedo llegar a perder es lo de la última hora) pero obviamente es demasiado procesamiento y demasiado volumen de información. En el otro extremo, hacer un backup por año es demasiado riesgoso. Dependiendo de la naturaleza del proyecto (tamaño, frecuencia de cambios, criticidad, etc.), pueden agendarse backups diarios, semanales, o mensuales. De nada nos sirven los respaldos si no los mantenemos seguros. Esto que parece tan obvio es una falla frecuente: en muchos casos se guardan los respaldos en el mismo disco en el que están los originales. Como mínimo, los respaldos tienen que estar en otro disco. Preferentemente en otra máquina. Idealmente, en otro local. En casos extremos, en diferentes ciudades. Los procedimientos de restauración deben ser conocidos y probados. Por las mismas razones que se hacen los simulacros de incendio, es conveniente que cada tanto se haga la experiencia de restaurar la información a partir de un respaldo, porque es una buena forma de estar seguros de que estamos guardando todo lo que se necesita, y que tenemos las herramientas y el conocimiento necesario para restaurarlo cuando llegue el momento.
  15. Así como en nuestra vida a veces sacamos fotos que nos permitan recordar ciertos momentos, así en un proyecto de desarrollo hay momentos en que queremos sacar una “foto” de la KB, para estar seguros de que podemos volver a ella en caso de que sea necesario. Por ejemplo, esto sucede cada vez que liberamos una versión de nuestro producto, o cada vez que sabemos que estamos por introducir grandes cambios (potencialmente peligrosos) y queremos asegurarnos de poder volver rápidamente a ese estado sin tener que deshacer cambios de a uno. Para estos casos, trabajando con GXserver
  16. Luego de haber liberado la versión 1.0, necesitamos trabajar por un lado en lo que será la versión 2.0, pero también – y por separado – en lo que será la versión 1.1 que será liberada mucho antes que la 2.0. Puede que incluso necesitemos estar trabajando en una versión 3.0 que liberaremos mucho más adelante. Otro caso en que esto es necesario es cuando tenemos un sistema en producción, pero que tiene actualizaciones periódicas. Como obviamente no podemos estar modificando directamente sobre el ambiente de producción, la solución es tener una versión de desarrollo sobre la que se va haciendo cambios, otra de test en la que se van pasando los cambios de desarrollo para probar, si los cambios son aprobados se pasan a una versión de pre-producción, y así hasta llegar a la versión de producción.
  17. Todo aquello que se libere a los clientes o que se ponga en producción, debe tener un “congelado” correspondiente. Esto asegura que es posible volver a armar esa misma versión, que es posible inspeccionar cómo estaban los objetos cuando se armó esa versión (para entender cómo funcionaba algo, o por qué fallaba), y que es posible arrancar una línea de desarrollo a partir de ese estado. La foto debe sacarse en el mismo momento en que se libera o se pone en producción. Esto debe ser parte del propio proceso de liberación. Si lo dejamos para después, corremos el riesgo de que se introduzcan nuevos cambios y ya no sea posible congelar exactamente lo que se liberó. Las etiquetas que usamos para el congelado deben ser suficientemente descriptivas para saber qué representan, y para que lo encontremos cuándo sea necesario.
  18. alcanza con indicar que uno quiere “congelar” y éste se encargará de hacer una copia completa del momento actual. Aún más, al crear copias de trabajo, es posible elegir una de estas versiones congeladas, con lo cual se puede reconstruir el estado de la KB en cualquiera de esos momentos. Todas estas fotos (versiones congeladas) están dentro de la misma KB del server, de manera que cuando hacemos backup de ella, estamos haciendo backup de todo a la vez.
  19. Desde GX además, se puede inspeccionar la historia de cualquiera de las versiones que están en el server, y más importante aún, si estamos viendo la historia de una versión que no es con la que estamos trabajando en esa KB…
  20. El Trunk o línea principal, es la rama que siempre evoluciona. Es el destino final de casi todos los cambios (sean correcciones o nuevas features). El resto de las ramas derivan del Trunk, y los cambios que en ellas se hacen, son en su mayoría en algún momento propagadas al Trunk Para cada rama, debe estar claro cuál es la política a seguir. Por ejemplo, para una rama que es de “desarrollo”, debe estar claro que no se pueden armar para liberar a clientes o poner en producción. Por el contrario, para una rama que es de “release” y está en etapa de estabilización, los commits deben estar restringidos a correcciones de errores previamente aprobadas. Para una cierta política, siempre surgirán casos de duda o ambigüedad. Tener un referente o “dueño” de cada rama, permite centralizar las decisiones para estos casos, y asegurarnos de que sean coherentes.
  21. Las cosas que ponemos en producción o que enviamos a nuestros clientes tienen que poder armarse nuevamente y con el mismo resultado a partir de lo que tenemos en el repositorio. No hay lugar para cosas que dependen de la memoria o de post-its en algún monitor. Cualquier paso manual, introduce una dependencia indeseada con quien realiza esos pasos (¿qué sucede cuando esa persona se enferma o se va de la compañía?), y una posibilidad de falla. Estas fallas además, probablemente ocurrirán en los momentos más críticos, cuando hacen más daño. Con GX y GXserver, se puede automatizar los builds, utilizando las tareas MSbuild. Algo que nos ha dado mucho resultado a nosotros con esto de hacer los builds repetibles es ir un paso más allá y no solamente automatizar el build, sino también automatizar el disparo de proceso de armado. -- Imagen: published by Annette Davis (http://profiles.google.com/103036564694387407778) at http://picasaweb.google.com/lh/photo/ZW6JXyPE3VldlkNPD5NWAw
  22. Continuous Integration es una práctica en el desarrollo de software por la cual los desarrolladores (sea uno o varios) integran frecuentemente su trabajo (a través del commit a un repositorio) y de un proceso de build automático que permite detectar errores de integración tan pronto como sea posible. Cuando esto se da en el contexto de múltiples líneas de desarrollo, configuraciones, ambientes, etc., contar con este tipo de automatización es aún más relevante. Una de las herramientas más conocidas para estas tareas, de hecho incluso es la que utilizamos internamente en Artech, es un producto Open Source, llamado… -- Imagen: fotografía de Abesam (http://commons.wikimedia.org/w/index.php?title=User:Abesam&action=edit&redlink=1) liberada al dominio público. Ver http://commons.wikimedia.org/wiki/File:Industrialbiotechnologyplant.jpg
  23. Cruise Control. Nosotros utilizamos la versión de Cruise Control implementada en .Net. Cruise Control permite configurar el monitoreo de cada una de las versiones que se quiere armar, de qué línea de desarrollo, con qué versión de GX, dónde poner el resultado, etc., etc. Cruise Control chequea periódicamente si hay nuevos commits en la versión que corresponda, en cuyo caso ejecuta un update sobre su propia copia de trabajo y dispara el proceso de armado. Permite ver el estado de cada uno de los proyectos configurados, reportes de errores, notificaciones de fallas, etc., etc. Todo en forma automática y totalmente desatendido. El armado en sí, lo que Cruise Control dispara cuando necesita armar, son procesos MSBuild, utilizando las tareas que provee GX para especificación, generación, etc. El último componente en esta fórmula es el propio GXserver, ya que hemos implementado un plug-in para que Cruise Control reconozca GXserver como un repositorio más (la instalación estándar reconoce CVS, SVN, etc.), y pueda preguntarle por la existencia de nuevos commits, realizar updates, leer los detalles de cada commit para incluirlos en los reportes que emite, etc.
  24. Los únicos componentes de un proceso de armado deben ser los fuentes, y las herramientas que los procesan. No valen procedimientos memorizados, ni escritos en papelitos. Versionar todas las dependencias. Si se utilizan componentes externos, también deben ser parte de lo que se guarda en el repositorio y se versiona Automatizar los procesos de build. Dados los fuentes y las herramientas, el armado debe poder realizarse en forma repetible y con un solo comando, sin que haya tareas manuales. Cualquier paso manual es una dependencia indeseada y un probable punto de falla.