Agile Day 2012 - Sviluppo agile in un contesto bancario: come far convivere team, sistemi e metodi di lavoro diversi
- 1. Agile Day 2012
Sviluppo agile in un
contesto bancario:
come far convivere team,
sistemi e metodi di lavoro
diversi
di Tommaso Torti
- 2. Il progetto
Rifacimento di un sistema di pagamento elettronico
VINCOLI
- nessun disservizio
- team misto
- contratto fixed time fixed scope
NUMERI
- Durata prima fase: 4/7/2011 – 30/3/2012
- gruppo di progetto > 10 persone
- 1487 gg/uomo, 300 erogati dal cliente
- 4. Altre difficoltà
Collective Code Ownership
Parte del team impegnata in attività pregresse
“Outsourcing”
Divisione in sottoteam
- 11. Le specifiche
Specifiche recuperate interrogando il precedente
sistema
curl --insecure --dump-header - --data-binary
@$input_file
http://...legacy url...
+
Esperto di dominio a nostra disposizione
Wiki
Acceptance Tests
- 12. Convivenza sistemi
Sistema da sostituire Nuovo sistema
(Phoenix)
Bilanciatore Bilanciatore
Apache Apache Apache Apache
Tomcat Tomcat Tomcat Tomcat
Db Db
- 14. Big Bang Deploy
x
In un tipico contesto bancario..
Sistema da sostituire Nuovo sistema
(Phoenix)
Bilanciatore Bilanciatore
Apache Apache Apache Apache
Tomcat Tomcat Tomcat Tomcat
Db Db
- 15. Convivenza sistemi
Sistema da sostituire Nuovo sistema
(Phoenix)
Bilanciatore Bilanciatore
Apache Apache Apache Apache
Tomcat Tomcat Tomcat Tomcat
Db Db
- 16. Modulo Perl
<Location /vecchio_sistema/servlet/TranPortalXMLServlet>
<Limit POST>
SetHandler perl-script
PerlSetEnv PHOENIX_REDIRECT_URL
http://url_phoenix_apache/phoenix-0.0/phoenixServlet/
tranpipe
PerlSetEnv LEGACY_REDIRECT_URL
http://vecchio_sistema/servlet/TranPortalXMLServlet
PerlSetEnv PHOENIX_TERMINAL_ID (123|456|789)
PerlSetEnv PHOENIX_NUM_OF_TRANSACTIONS_TO_HANDLE 0
PerlResponseHandler PhoenixPostHandler::Redirect
</Limit>
</Location>
- 17. Convivenza sistemi
Sistema da sostituire Nuovo sistema
(Phoenix)
Bilanciatore Bilanciatore
Apache Apache Apache Apache
Tomcat Tomcat Tomcat Tomcat
Db Db
- 19. Squaring
[18/05/2012 00:10:04] Verify Migration Script executed
on environment production
Incorrect data migration:
-- Captured transactions --
Phoenix data: [Amount: 498561.03 , Transaction Counter: 7469],
Legacy data: [Amount: 498461.03 , Transaction Counter: 7468]
...
- 21. Diversi reparti
In un tipico contesto bancario..
Reparto di Gestione IT responsabile della
produzione
- 30. Planning
● Stime di massima iniziali
anche a sacrificio della precisione,
ma costante lavoro sullo scope pur di
raggiungere
●
o della settimana
L'obiettiv
spostando tutto il non essenziale
nella sezione 'futuro'
- 31. SAL settimanali
Dove siamo?
Che problemi ci sono stati?
Priorità prossima settimana?
- 35. Metriche
Transazioni su sistema legacy
Transazioni su Phoenix
- 36. Metriche
Amount su sistema legacy
Amount su Phoenix
- 38. Quality Assurance
In un tipico contesto bancario..
• Team dedicato
all’esecuzione dei test
• Regole per l’aderenza a
policy aziendali
- 44. Conclusioni
Purchè sia mantenuta l’aderenza ai valori
di XP coraggio, semplicità, comunicazione e
feedback
...da noi si può fare!
- 45. Contacts
• Website www.xpeppers.com
• E-Mail info@xpeppers.com
• torti.tommaso@gmail.com
• Twitter @xpeppers
- 47. Appendice - Primo vagito
11 luglio 2011 primo commit
29 agosto 2011 prima transazione in
produzione
- 48. Appendice -Codice Modulo Perl
sub handler {
my $r = shift; $request_rec = $r; my $data = content($r);
if (match($data, "<id>", "</id>")) {
return forward_to($r, $ENV{'PHOENIX_REDIRECT_URL'}, 'text/
xml', $data);
}
return forward_to($r, $ENV{'LEGACY_REDIRECT_URL'}, 'text/
xml', $data);
}
sub match {
my $data = shift; my $start_tag = shift; my $end_tag = shift;
my $does_match_terminal_id = $data =~ m/(?:$start_tag|<id>)
$ENV{'PHOENIX_TERMINAL_ID'}(?:$end_tag|</id>|$)/i;
return $does_match_terminal_id;
}
Editor's Notes
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n