SlideShare a Scribd company logo
1 of 20
Download to read offline
Seit 10 Jahren mit Python:
Quantax, ein Risk-Management-System
für Banken

Martin Gfeller
6. Oktober 2011
Finanz und Marktrisiko, Systeme
                                                                    2




   • Antwort auf die Fragen:
      – Wie stehe ich im Markt?




                                                                    Martin Gfeller, Quantax, PyCon DE 2011
      – Was passiert, wenn sich der Markt bewegt?
      – Wie kann ich mich schützen (sog. Hedging)?
   • Professioneller Markt

   •   Marktführende Systeme grosser Hersteller aus den 90-Jahren
   •   Client/Server, RDBMS
   •   Mehrschichtige, komplexe Infrastrukturen
   •   C, C++
Quantax
                                                                                  3




  • 1999 aus Test-Suite für grosses System entstanden
  • Heute vollständiges System für professionelles post-trade




                                                                                  Martin Gfeller, Quantax, PyCon DE 2011
    Risikomanagement im Handel und Asset Management
     – 62 Asset-Typen (wie Aktie, Rente, Zinsswap, Credit Default Swap, u.v.a.)
     – N-dimensionale "Pivot" Reports, Echtzeit-Verarbeitung
  • Codezeilen: 2001 – 23.000, 2011 – 100.000
  • Neu im Markt
  • Entwicklung nahe am Business
      – Fachentwickler (programmierende Domänen-Experten)
  • Flexible Infrastruktur
      – Programmierumgebung
      – "Single Layer"
Technologien
   für Flexibilität und Marktnähe         4




   Client
   • 100% HTML + CSS + JavaScript




                                          Martin Gfeller, Quantax, PyCon DE 2011
   • JQuery
   • IE>7, Firefox, Chrome

   Server
   • Python
   • Komplexes fachliches Objekt-Modell
   • ZODB
   • ZOPE
   • NumPy, etwas SciPy
   • Windows
Quantax GUI
                                            5




              • Menus, Links, Forms,
                Tabellen-Output




                                            Martin Gfeller, Quantax, PyCon DE 2011
              • Einfach zu verstehen,
                entwickeln, integrieren
              • ZOPE DTML, External
                Methods




              • Forms sind nicht sexy….
              • … Benutzer möchten lieber
                mit Drag und Drop etwas
                „zusammenklicken“…
Quantax GUI: Drag & Drop mit JQuery
                                         6




Martin Gfeller, Quantax, PyCon DE 2011
Datenbank: ZODB
                                                                           7




  • Quantax Objektmodell ist komplex (Referenzen, Subobjekte,
    Inheritance)




                                                                           Martin Gfeller, Quantax, PyCon DE 2011
  • Entwickler sagen über ZODB:
      – API "grosser Dictionary" ist toll!
      – Pickles (serialisierte Objektbäume) sind toll!
      – Fremdschlüssel und schnelle Selektion nur über Add-Ins (Indices)
      – Objekt-Cache (i.W. Connection) per Thread
          – Quantax hat lang laufende Berechnungen (Monte-Carlo)
              – Extrem viele gemeinsame Objekte aller Threads
              – Wir liessen alle Threads mit einer Connection laufen
              – Missbrauch wird bestraft, aber Shared Cache ist ein Muss
  • Kunden-IT sagt:
      – „Was ist denn das für ‚ne Datenbank“?
      – „Wir wollen nur eine relationale DB (die wir kennen)“
SwanDB, eine "hybride" Datenbank
                                                                                   8




  • SwanDB
     – Pickles wie ZODB




                                                                                   Martin Gfeller, Quantax, PyCon DE 2011
     – Keys und ausgewählte Attribute in Tabellen
     – MS SQL Backend
     – Dictionary API kompatibel zu ZODB
     – Alle Ideen von ZODB, aber neu implementiert
     – SwanDB ist ein Python-Package
         – 4300 Zeilen Python, 500 Zeilen T-SQL
     – Ziel: Kein C-Code und trotzdem schneller als ZODB (für uns)
         – Aggressives Caching, Memory Management

  • Ich schlafe ruhig mit SwanDB („Sleep well at night“)
     – “Oracle lets me sleep at night”, Philip Greenspun, Web Tools Review, 1998
Persistentes Objekt = Pickle und Kolonnen

        Deklaration:
        SqlTable.SqlTable(
            SqlTable.Column('name',str,primary=True),
            SqlTable.Column('ccy',str),
        )



                Persistentes
                  Objekt              Pickle (BLOB)     Kolonnen


            name     'GR'                                name      ccy
            rating   'CCC'
            ccy      'EUR'                               GR        EUR




COMIT | 9
SwanDB Beispiel
                                                                               10




  • Bei allen griechischen Bonds die Währung wechseln:




                                                                               Martin Gfeller, Quantax, PyCon DE 2011
  •   Schaut wie ZODB aus (mit Absicht!)
  •   Interaktiv ausführbar, Zeile für Zeile testbar
  •   Komplexere Logik möglich, im Gegensatz zu SQL
  •   Ich kann in einer uniformer Schicht denken …
                                           … und werde dafür nicht bestraft.
SwanDB relational
                                         11




Martin Gfeller, Quantax, PyCon DE 2011
SwanDB Lessons Learned
                                                                        12




  • Locks in Python, SQL Server
     – Deadlocks zwischen Python Prozessen, Threads, SQL Server




                                                                        Martin Gfeller, Quantax, PyCon DE 2011
     – Pessimistisches Locking von SQL Server ist extern schwierig zu
       kontrollieren
  • Cache is King!
     – Anzahl "Roundtrips" zu DB minimieren
  • ZODB ist clever und smart! Jim Fulton wusste, was er tat!
     – z.B. optimistisches Locking
  • Hybride Datenbank war schwieriger als gedacht…
  • … aber schlussendlich performant und in Produktion bewährt
  • … Lösung ist auf Quantax zugeschnitten
  • Kunden sind glücklich mit SQL Server Tools (Backup, Restore,
    Replication, Monitoring)
Reengineering:
  Copy / Paste / Improve Code beseitigen                                                      13




   • Fachentwickler denken nicht wie Informatiker
   • Code wird für neuen Zweck modifiziert und dort verbessert




                                                                                              Martin Gfeller, Quantax, PyCon DE 2011
   • Scheu vor Änderungen: "If it ain't broke, don't fix it"
   • “If it ain't broke, don't fix it" is the slogan of the complacent, the arrogant or the
     scared. It's an excuse for inaction, a call to non-arms [Colin Powell]


   • Re-Engineering
      – Finden von gemeinsamer Code-Basis
      – Häufig nicht neu schreiben, nur neu anordnen
      – Erkennen, wenn Konzepte nicht mehr erweiterbar sind
          – Grenzen des rein technischen Re-Engineerings
   • Fachentwickler sind während Re-Engineering Tester!
Wachstum, verbesserte Modularität
                                                                                                                                      14



   4'500                                                             200                                           5.60

   4'000                                                             180                                           5.50

   3'500                                                             160
                                                                                                                   5.40




                                                                                                                                      Martin Gfeller, Quantax, PyCon DE 2011
                                                                     140
   3'000                                                                                                           5.30
                                                                     120
   2'500




                                                                                                                          per Class
                                                                                                                   5.20




                                                               LOC
                                                                     100
   2'000
                                                                                                                   5.10
                                                                      80
   1'500
                                                                                                                   5.00
                                                                      60
   1'000
                                                                                                                   4.90
                                                                      40
     500
                                                                      20                                           4.80
       0
            Jan Jan Jan Jan Jan Jan Jan Jan Jan                        0                                           4.70
           2003 2004 2005 2006 2007 2008 2009 2010 2011                      Jan Jan Jan Jan Jan Jan Jan Jan Jan
           Okt 2003 Jan 2005 Okt 2006 Aug 2007 Mrz 2011                     200320042005200620072008200920102011
 Modules     185       239     300      332      462                        Okt 2003 Jan 2005 Okt 2006 Aug 2007 Mrz 2011
 Classes     281       366     508      593      832      LOC / Method         37       35       27       26       24
 Methods    1'400     1'976   2'791    3'215    4'255     LOC / Class         186      190      150      139      121
 Functions   481      1'047   1'416    1'421    1'662     Methods / Class     4.98     5.40     5.49     5.42     5.11
Plugins
                                                                            15




   • Plugin-Punkte in einer Fachapplikation
       – Opportunität für Fachentwickler




                                                                            Martin Gfeller, Quantax, PyCon DE 2011
   • Interface für Python, Web Service (REST), SQL Server
   • Richtige Punkte zu finden heisst, die Zukunft vorauszusagen…
       – oder Änderungsanforderungen zu analysieren
   • Der Fachbenutzer soll zum richtigen Gebrauch "verführt" werden
       – "natürliches" API steht zur Verfügung
   • Richtige Abstraktionsebene zu finden ist schwierig
       – Fehler sollten von vornherein vermieden werden können
       – Typisierung kann geprüft werden, ist aber nur ein kleiner Aspekt
Lessons learned
                                                                                16




  •   Fachentwickler sind toll!
  •   Sie sind produktiv, da alle Entwicklung in einem Layer (Python) erfolgt




                                                                                Martin Gfeller, Quantax, PyCon DE 2011
  •   Bei langlebigen Applikationen müssen sie gezähmt werden
  •   Plugins sind dazu ein möglicher Ansatzpunkt
Ich wünsche mir von Python...
                                                                       17




   • Bessere Overall Performance (Benchmark ist Java, nicht C++)
      – PyPy




                                                                       Martin Gfeller, Quantax, PyCon DE 2011
         – Windows 64-bit
         – NumPy, ODBC
      – GIL ist nicht schlimm, interpretativer Overhead jedoch schon
   • als Windows-Benutzer
      – wir kompilieren nicht
      – Setup ist uns daher fremd – copy package
      – Möglichst wenige C-Extensions
          – dafür aber pre-compiled für 32/64 bit
   • Als Zope Benutzer
      – Welches Framework erfüllt meine zukünftigen Anforderungen?
         – Modular, wir brauchen nur gewisse Komponenten
         – Performant
         – einfach aufzusetzen
Contact
  information                        18




  Swisscom IT Services Finance AG
  Martin Gfeller
  Pflanzschulstrasse 7




                                     Martin Gfeller, Quantax, PyCon DE 2011
  CH-8004 Zürich
  Schweiz

  Phone +41 58 223 04 23
  Mail martin.gfeller@swisscom.com
  www.swisscom.ch/finance
Backup Slides
                                         19




Martin Gfeller, Quantax, PyCon DE 2011
Serialisierung / Pickling
                                                                                                                                  20
  • Graph von Objekten persistieren
     – Serialisierung Blobs
     – Python „Pickles“ – Serialisierte Graphen von Objekten
     – Persistenz gemäss Erreichbarkeit
     – Marker-Klasse bestimmt „Records“




                                                                                                                                  Martin Gfeller, Quantax, PyCon DE 2011
     Persistent Root*                                                                                        1   2   3   5
                                             1                                    8              Pickling
     Persistent, reachable*
                                                                                                                 4   6   7
                                                                                           13
     Persistent, unreachable*                2       3
                                                                    9
                                                                                                             8 13
     Object, reachable              4
                                                                                           14
                                                              10         12
     Object, unreachable                         5                                                           9 10 11 12 13
                                6                        11                                     Unpickling
                                         7                                                                                   14
* inherits from Persistent                                         15        16
                                                                                      17
     Membership (Komposition)                                           18



                                        Biotop des Executable

More Related Content

Similar to Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken

PHP Summit 2013 - Make or Buy?
PHP Summit 2013 - Make or Buy?PHP Summit 2013 - Make or Buy?
PHP Summit 2013 - Make or Buy?Sebastian Heuer
 
Lang lebe Notes! - 41. DNUG 2014
Lang lebe Notes! - 41. DNUG 2014Lang lebe Notes! - 41. DNUG 2014
Lang lebe Notes! - 41. DNUG 2014panagenda
 
Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...
Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...
Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...Mayflower GmbH
 
Reif? Scala für Enterprise-Applikationen
Reif? Scala für Enterprise-ApplikationenReif? Scala für Enterprise-Applikationen
Reif? Scala für Enterprise-Applikationenadesso AG
 
2005 - NRW Conf: Design, Entwicklung und Tests
2005 - NRW Conf: Design, Entwicklung und Tests2005 - NRW Conf: Design, Entwicklung und Tests
2005 - NRW Conf: Design, Entwicklung und TestsDaniel Fisher
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHagilemethoden
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!JanWeinschenker
 
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenOdilo Oehmichen
 
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenPatrick Baumgartner
 
Cloud Migration mit KI: der Turbo
Cloud Migration mit KI: der Turbo Cloud Migration mit KI: der Turbo
Cloud Migration mit KI: der Turbo QAware GmbH
 
Alexander Pohl Performance meßbar machen
Alexander Pohl   Performance meßbar machenAlexander Pohl   Performance meßbar machen
Alexander Pohl Performance meßbar machenStephan Trahasch
 
Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Thorsten Kamann
 
BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerPatrick Baumgartner
 
LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETGFU Cyrus AG
 
Oscocco tagung 2010_neue_erfa_ansaetze
Oscocco tagung 2010_neue_erfa_ansaetzeOscocco tagung 2010_neue_erfa_ansaetze
Oscocco tagung 2010_neue_erfa_ansaetzeOscocco GmbH
 
Drahtwanderung: Wir machen den NeXTen Schritt
Drahtwanderung: Wir machen den NeXTen SchrittDrahtwanderung: Wir machen den NeXTen Schritt
Drahtwanderung: Wir machen den NeXTen SchrittFalk Hartmann
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013Oliver Zeigermann
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightChristinaLerch1
 

Similar to Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken (20)

2011 09-09 activiti
2011 09-09 activiti2011 09-09 activiti
2011 09-09 activiti
 
PHP Summit 2013 - Make or Buy?
PHP Summit 2013 - Make or Buy?PHP Summit 2013 - Make or Buy?
PHP Summit 2013 - Make or Buy?
 
Lang lebe Notes! - 41. DNUG 2014
Lang lebe Notes! - 41. DNUG 2014Lang lebe Notes! - 41. DNUG 2014
Lang lebe Notes! - 41. DNUG 2014
 
Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...
Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...
Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...
 
Reif? Scala für Enterprise-Applikationen
Reif? Scala für Enterprise-ApplikationenReif? Scala für Enterprise-Applikationen
Reif? Scala für Enterprise-Applikationen
 
2005 - NRW Conf: Design, Entwicklung und Tests
2005 - NRW Conf: Design, Entwicklung und Tests2005 - NRW Conf: Design, Entwicklung und Tests
2005 - NRW Conf: Design, Entwicklung und Tests
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
 
IntelliJ für Flex
IntelliJ für FlexIntelliJ für Flex
IntelliJ für Flex
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!
 
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
 
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
 
Cloud Migration mit KI: der Turbo
Cloud Migration mit KI: der Turbo Cloud Migration mit KI: der Turbo
Cloud Migration mit KI: der Turbo
 
Alexander Pohl Performance meßbar machen
Alexander Pohl   Performance meßbar machenAlexander Pohl   Performance meßbar machen
Alexander Pohl Performance meßbar machen
 
Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?
 
BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als Entwickler
 
LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NET
 
Oscocco tagung 2010_neue_erfa_ansaetze
Oscocco tagung 2010_neue_erfa_ansaetzeOscocco tagung 2010_neue_erfa_ansaetze
Oscocco tagung 2010_neue_erfa_ansaetze
 
Drahtwanderung: Wir machen den NeXTen Schritt
Drahtwanderung: Wir machen den NeXTen SchrittDrahtwanderung: Wir machen den NeXTen Schritt
Drahtwanderung: Wir machen den NeXTen Schritt
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha Night
 

Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken

  • 1. Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken Martin Gfeller 6. Oktober 2011
  • 2. Finanz und Marktrisiko, Systeme 2 • Antwort auf die Fragen: – Wie stehe ich im Markt? Martin Gfeller, Quantax, PyCon DE 2011 – Was passiert, wenn sich der Markt bewegt? – Wie kann ich mich schützen (sog. Hedging)? • Professioneller Markt • Marktführende Systeme grosser Hersteller aus den 90-Jahren • Client/Server, RDBMS • Mehrschichtige, komplexe Infrastrukturen • C, C++
  • 3. Quantax 3 • 1999 aus Test-Suite für grosses System entstanden • Heute vollständiges System für professionelles post-trade Martin Gfeller, Quantax, PyCon DE 2011 Risikomanagement im Handel und Asset Management – 62 Asset-Typen (wie Aktie, Rente, Zinsswap, Credit Default Swap, u.v.a.) – N-dimensionale "Pivot" Reports, Echtzeit-Verarbeitung • Codezeilen: 2001 – 23.000, 2011 – 100.000 • Neu im Markt • Entwicklung nahe am Business – Fachentwickler (programmierende Domänen-Experten) • Flexible Infrastruktur – Programmierumgebung – "Single Layer"
  • 4. Technologien für Flexibilität und Marktnähe 4 Client • 100% HTML + CSS + JavaScript Martin Gfeller, Quantax, PyCon DE 2011 • JQuery • IE>7, Firefox, Chrome Server • Python • Komplexes fachliches Objekt-Modell • ZODB • ZOPE • NumPy, etwas SciPy • Windows
  • 5. Quantax GUI 5 • Menus, Links, Forms, Tabellen-Output Martin Gfeller, Quantax, PyCon DE 2011 • Einfach zu verstehen, entwickeln, integrieren • ZOPE DTML, External Methods • Forms sind nicht sexy…. • … Benutzer möchten lieber mit Drag und Drop etwas „zusammenklicken“…
  • 6. Quantax GUI: Drag & Drop mit JQuery 6 Martin Gfeller, Quantax, PyCon DE 2011
  • 7. Datenbank: ZODB 7 • Quantax Objektmodell ist komplex (Referenzen, Subobjekte, Inheritance) Martin Gfeller, Quantax, PyCon DE 2011 • Entwickler sagen über ZODB: – API "grosser Dictionary" ist toll! – Pickles (serialisierte Objektbäume) sind toll! – Fremdschlüssel und schnelle Selektion nur über Add-Ins (Indices) – Objekt-Cache (i.W. Connection) per Thread – Quantax hat lang laufende Berechnungen (Monte-Carlo) – Extrem viele gemeinsame Objekte aller Threads – Wir liessen alle Threads mit einer Connection laufen – Missbrauch wird bestraft, aber Shared Cache ist ein Muss • Kunden-IT sagt: – „Was ist denn das für ‚ne Datenbank“? – „Wir wollen nur eine relationale DB (die wir kennen)“
  • 8. SwanDB, eine "hybride" Datenbank 8 • SwanDB – Pickles wie ZODB Martin Gfeller, Quantax, PyCon DE 2011 – Keys und ausgewählte Attribute in Tabellen – MS SQL Backend – Dictionary API kompatibel zu ZODB – Alle Ideen von ZODB, aber neu implementiert – SwanDB ist ein Python-Package – 4300 Zeilen Python, 500 Zeilen T-SQL – Ziel: Kein C-Code und trotzdem schneller als ZODB (für uns) – Aggressives Caching, Memory Management • Ich schlafe ruhig mit SwanDB („Sleep well at night“) – “Oracle lets me sleep at night”, Philip Greenspun, Web Tools Review, 1998
  • 9. Persistentes Objekt = Pickle und Kolonnen Deklaration: SqlTable.SqlTable( SqlTable.Column('name',str,primary=True), SqlTable.Column('ccy',str), ) Persistentes Objekt Pickle (BLOB) Kolonnen name 'GR' name ccy rating 'CCC' ccy 'EUR' GR EUR COMIT | 9
  • 10. SwanDB Beispiel 10 • Bei allen griechischen Bonds die Währung wechseln: Martin Gfeller, Quantax, PyCon DE 2011 • Schaut wie ZODB aus (mit Absicht!) • Interaktiv ausführbar, Zeile für Zeile testbar • Komplexere Logik möglich, im Gegensatz zu SQL • Ich kann in einer uniformer Schicht denken … … und werde dafür nicht bestraft.
  • 11. SwanDB relational 11 Martin Gfeller, Quantax, PyCon DE 2011
  • 12. SwanDB Lessons Learned 12 • Locks in Python, SQL Server – Deadlocks zwischen Python Prozessen, Threads, SQL Server Martin Gfeller, Quantax, PyCon DE 2011 – Pessimistisches Locking von SQL Server ist extern schwierig zu kontrollieren • Cache is King! – Anzahl "Roundtrips" zu DB minimieren • ZODB ist clever und smart! Jim Fulton wusste, was er tat! – z.B. optimistisches Locking • Hybride Datenbank war schwieriger als gedacht… • … aber schlussendlich performant und in Produktion bewährt • … Lösung ist auf Quantax zugeschnitten • Kunden sind glücklich mit SQL Server Tools (Backup, Restore, Replication, Monitoring)
  • 13. Reengineering: Copy / Paste / Improve Code beseitigen 13 • Fachentwickler denken nicht wie Informatiker • Code wird für neuen Zweck modifiziert und dort verbessert Martin Gfeller, Quantax, PyCon DE 2011 • Scheu vor Änderungen: "If it ain't broke, don't fix it" • “If it ain't broke, don't fix it" is the slogan of the complacent, the arrogant or the scared. It's an excuse for inaction, a call to non-arms [Colin Powell] • Re-Engineering – Finden von gemeinsamer Code-Basis – Häufig nicht neu schreiben, nur neu anordnen – Erkennen, wenn Konzepte nicht mehr erweiterbar sind – Grenzen des rein technischen Re-Engineerings • Fachentwickler sind während Re-Engineering Tester!
  • 14. Wachstum, verbesserte Modularität 14 4'500 200 5.60 4'000 180 5.50 3'500 160 5.40 Martin Gfeller, Quantax, PyCon DE 2011 140 3'000 5.30 120 2'500 per Class 5.20 LOC 100 2'000 5.10 80 1'500 5.00 60 1'000 4.90 40 500 20 4.80 0 Jan Jan Jan Jan Jan Jan Jan Jan Jan 0 4.70 2003 2004 2005 2006 2007 2008 2009 2010 2011 Jan Jan Jan Jan Jan Jan Jan Jan Jan Okt 2003 Jan 2005 Okt 2006 Aug 2007 Mrz 2011 200320042005200620072008200920102011 Modules 185 239 300 332 462 Okt 2003 Jan 2005 Okt 2006 Aug 2007 Mrz 2011 Classes 281 366 508 593 832 LOC / Method 37 35 27 26 24 Methods 1'400 1'976 2'791 3'215 4'255 LOC / Class 186 190 150 139 121 Functions 481 1'047 1'416 1'421 1'662 Methods / Class 4.98 5.40 5.49 5.42 5.11
  • 15. Plugins 15 • Plugin-Punkte in einer Fachapplikation – Opportunität für Fachentwickler Martin Gfeller, Quantax, PyCon DE 2011 • Interface für Python, Web Service (REST), SQL Server • Richtige Punkte zu finden heisst, die Zukunft vorauszusagen… – oder Änderungsanforderungen zu analysieren • Der Fachbenutzer soll zum richtigen Gebrauch "verführt" werden – "natürliches" API steht zur Verfügung • Richtige Abstraktionsebene zu finden ist schwierig – Fehler sollten von vornherein vermieden werden können – Typisierung kann geprüft werden, ist aber nur ein kleiner Aspekt
  • 16. Lessons learned 16 • Fachentwickler sind toll! • Sie sind produktiv, da alle Entwicklung in einem Layer (Python) erfolgt Martin Gfeller, Quantax, PyCon DE 2011 • Bei langlebigen Applikationen müssen sie gezähmt werden • Plugins sind dazu ein möglicher Ansatzpunkt
  • 17. Ich wünsche mir von Python... 17 • Bessere Overall Performance (Benchmark ist Java, nicht C++) – PyPy Martin Gfeller, Quantax, PyCon DE 2011 – Windows 64-bit – NumPy, ODBC – GIL ist nicht schlimm, interpretativer Overhead jedoch schon • als Windows-Benutzer – wir kompilieren nicht – Setup ist uns daher fremd – copy package – Möglichst wenige C-Extensions – dafür aber pre-compiled für 32/64 bit • Als Zope Benutzer – Welches Framework erfüllt meine zukünftigen Anforderungen? – Modular, wir brauchen nur gewisse Komponenten – Performant – einfach aufzusetzen
  • 18. Contact information 18 Swisscom IT Services Finance AG Martin Gfeller Pflanzschulstrasse 7 Martin Gfeller, Quantax, PyCon DE 2011 CH-8004 Zürich Schweiz Phone +41 58 223 04 23 Mail martin.gfeller@swisscom.com www.swisscom.ch/finance
  • 19. Backup Slides 19 Martin Gfeller, Quantax, PyCon DE 2011
  • 20. Serialisierung / Pickling 20 • Graph von Objekten persistieren – Serialisierung Blobs – Python „Pickles“ – Serialisierte Graphen von Objekten – Persistenz gemäss Erreichbarkeit – Marker-Klasse bestimmt „Records“ Martin Gfeller, Quantax, PyCon DE 2011 Persistent Root* 1 2 3 5 1 8 Pickling Persistent, reachable* 4 6 7 13 Persistent, unreachable* 2 3 9 8 13 Object, reachable 4 14 10 12 Object, unreachable 5 9 10 11 12 13 6 11 Unpickling 7 14 * inherits from Persistent 15 16 17 Membership (Komposition) 18 Biotop des Executable