Open Source erfaringer i Norwegian

                 Håvard Haug Hanssen
         Sjefsarkitekt, Kommersielle og Operative systemer i Norwegian
Hvem snakker...


•   Håvard Haug Hanssen
     –   Sjefsarkitekt, Kommersielle og Operative systemer
     –   Ansvarlig for Norwegians internettportaler
     –   Forretningsutvikling og Interaksjonsdesign
     –   Prosjektleder med 40 leveranser i Norwegian
     –   Siden 2003, startet ny E-handel plattform


•   Bakgrunn generelt
     –   20 år med IT og internettutvikling
     –   15 år innen reiseliv og luftfart
     –   Løsninger innen E-handel, Luftfart, Nettbank, Telekom,
         Dokumenthåndtering, Utdanning
Spørreundersøkelse...




?
    •   Hvem har reist med Norwegian?


    •   Hvem har brukt Lavpriskalenderen?


    •   Hvem vil ha internett ombord når de flyr?
Mer enn 200 ruter til 90 destinasjoner
Norwegian tall og fakta 1/4


  •     4. største lavprisselskap i Europa
  •     1600 ansatte og 47 fly
  •     150 ruter til 82 destinasjoner
  •     Over 10 millioner passasjerer i 2009
  •     Gjentatt høy % vekst i omsetning og trafikk


                              % vekst i forhold til 2003
      1800

      1600

      1400

      1200

      1000

       800

       600

       400

       200

        0
             2003   2004   2005   2006    2007   2008      2009   2010   2011
Norwegian tall og fakta 2/4


  •   Internettrafikk
       –   90% av salget på internett
       –   opptil 4,5 millioner besøk per dag
       –   opptil 3 millioner prissøk per dag
Norwegian tall og fakta 3/4


  •   IT Systemavdeling
       –   40 personer, 5 faste ansatte + innleide konsulenter
       –   Kun Senior/Sjef nivå, flere konsulenthus, ulike miljøer
       –   Organisert i team på ca 5 personer
             • 2 team bruker .NET
             • 2 team bruker J2EE
             • Resten tilpasser ferdige løsninger
Norwegian tall og fakta 4/4


  •   Løsningene
       –   Standard hyllevare og egenutviklede systemer
       –   Forretningsbasert, kommersielt styrt
       –   Iterativ utvikling, ”Scrum but...”
       –   Tjenesteorientert arkitektur
       –   Fleksibel arkitektur, raske leveranser
       –   Kunder er Kommersiell, Operativ og Teknisk avdeling
Arkitekturen




    Privat              Bedrift        Agent/Reisebyrå   Flyplass/Stasjon        Privat/Mobil     Eksterne partnere

Internettportal     Bedriftsportal     Agentportal       Stasjonsportal         Mobilportal         B2B API
     .NET              .NET              .NET                .NET                 .NET            Web services
                                                                                                  J2EE/JBoss


                  Buss Transaksjoner                                              Buss Kø
                     Web services                                           BizTalk, SQL Server
                     J2EE/JBoss                                             IBM Websphere MQ



                    Sentraltjenester                                          Sentraltjenester
                     Web services                                              Web services
                         .NET                                                  J2EE/JBoss
Teamerfaringer
           Portalene

•   Vurderinger                                •   Eksempler
     –   Bruker ikke Open Source                    –   Publisering plugins
     –   .NET dekker behovet                              • EPIServer EPICode
     –   .NET er etablert hos                       –   Logging
         driftsleverandør og                              • log4net
         utviklingsressurser er lett                –
         tilgjengelig                                   Patterns
                                                          • MVC
                                                          • Localisation
•   Erfaringer                                            • Cache Manager
     –   Raskt å utvikle, krever rutiner for              • ...
         å vedlikeholde kode over tid               –   Bygging
     –   Server Controller og eventer kan                 • Nant/CruiseControl
         være vanskelige å debugge
     –   Grafisk presentasjon i Server
         Controller kan unntaksvis være
         vanskelig å overstyre


•   Bidrag/Forum
     –   Søker kjente feil
     –   Poster få spørsmål


•   Livet er godt
Teamerfaringer
           Integrasjon

•   Vurderinger                              •   Eksempler
     –   Billig i oppstarten                      –   Dependency Injection
     –   Friheten til velge/bytte verktøy                • Guice
     –   Ingen lisensbinding på servere           –   Caching
         etc                                             • OSCache
     –   Enkle å jobbe med                        –   Validering
     –   Oppgradere når man vil                          • OVal
     –   Debug muligheter (brukes                 –   Logging
         unntaksvis)                                     • log4j
             • finne feilkilde i egen kode        –   Web Service
                  eller rammeverk
     –                                                   • Apache CXF
         Åpenhet rundt feil
             • søke på nett                       –   AppServer
                                                         • JBoss
                                                  –   Bygging
•   Bidrag/Forum                                         • Maven
     –   Søker kjente feil                        –   Testing
     –   Poster lite spørsmål                            • TestNG, Mockito,
     –   Poster ikke feilrettinger                           Cucumber, SoapUI
                                                  –   Scripting, Admin
                                                         • Ruby
•   Erfaringer                                    –   Utviklingsverktøy
     –   Byttet WS rammeverk                             • Eclipse
           • Raskere, enklere kode,               –   Versjonskontroll
                billigere(minne)                         • SubVersion, Git
     –   Brukte umoden versjon av                 –   Operativsystem
         rammeverk                                       • Linux
           • Medførte begrensninger
     –   Har ikke hatt behov for å inngå
         supportavtaler


•   Livet er godt
Teamerfaringer
    Sentraltjenester 1/2


•   Vurderinger (J2EE)                 •   Eksempler
     –   Slipper lisenser                   –   Rammeverk
            • Rask oppgradering                    • Spring
            • Billig i oppstarten           –   JMS (Java Messaging Service)
     –   Bruker standarder                         • ActiveMQ
            • God dokumentasjon             –   WebApp
     –   Lett å finne bugs                         • Struts 2
            • Kan debugge kildekoden        –   Logging
                 selv                              • log4j
     –   Aktivt miljø                       –   SQL Mapping
            • Finne kjente feil                    • Hibernate
            • Åpent roadmap                 –   SQL Driver
                                                   • JTDS
                                            –   Web Service rammeverk
•   Erfaringer
                                                   • Apache CXF
     –   Droppet MySQL
                                            –   Appserver
           • Hadde SQLServer/ønsket
              å standardisere                      • JBoss
                                            –   Bygging
                                                   • Maven
•   Bidrag/Forum                            –   Utviklingsverktøy
     –   Søker kjente feil                         • Eclipse
     –   Poster lite spørsmål                      • Idea
     –   Poster ikke feilrettinger          –   Operativsystem
                                                   • Linux

•   Livet er godt
Teamerfaringer
    Sentraltjenester 2/2


•   Vurderinger (.NET)                    •   Eksempler
     –   Bruker ikke Open Source               –   Web Service rammeverk
     –   .NET 3.5 dekker behovet                     • Web Service Factory
     –   Utviklingen går riktig vei            –   Logging
                                                     • log4net
•   Erfaringer                                 –   Bygging
     –   Tidligere brukte vi flere                   • Nant/CruiseControl
         rammeverk, erstattet av senere        –   Mocking
         versjoner av .NET                           • Rhino

•   Bidrag/Forum
     –   Søker ofte feil
     –   Poster lite spørsmål

•   Livet er godt
Teamerfaringer
         Støttesystemer


•   Vurderinger                        •   Eksempler
     –   Billig og bra nok                  –   Informasjon/Planlegning
     –   Mantis tungt å tilpasse                   • Confluence
     –   Confluence lisensiert              –   Bugtracker/Oppgave
                                                   • Mantis
•   Erfaringer
     –   Kildekode har vært styrt av
         teamene
            • ønsker samordning
Oppsummering


•   Våre systemer er forretningskritiske og leverer bra mht ytelse
    og stabilitet


•   Både lukkede rammeverk (.NET) og Open Source
    rammeverk (J2EE) fungerer


•   Teamene har vært selvstendige
     –   fått lov til å styre intern teknisk arkitektur


•   Etterhvert ser vi behov for koordinering/samkjøring
     –   valg av løsninger
     –   valg av rammeverk
     –   kildekodestyring, integrert i både .NET og J2EE team
     –   integrert oppgavesystem
Forretningsstrategi og Åpenhet


    •   Flytransport er ekstremt konkurranseutsatt




$
         –   IT er strategisk viktig for Norwegian
         –   Forretningshemmeligheter må skjermes


    •   IT-utviklingen er kommersielt drevet
         –   Vi må være kosteffektiv og kan bare kjøre lønnsomme
             prosjekter
         –   Lite/ingen penger til å bidra til Open Source prosjekter


    •   Konsekvens
         –   Vi er nok mest brukere, ikke bidragsytere 
         –   Vi bruker standard rammeverk og lager få generelle løsninger
             som andre kan bruke
         –   Egenutviklet kildekode beskriver forretning og kan ikke
             distribueres
         –   Feks Lavpriskalenderen er patentert
         –   Feks B2B API leveres kun kompilert, men har eget forum 
Totalkostnader


    •   I en famlende oppstart var det billig og fleksibelt å prøve seg




$
        fram med Open Source rammeverk


    •   Som etablert selskap er ikke kostnadsbildet like tydelig
         –   Både lukkede rammeverk og Open Source modeller leverer
         –   Men sparte Open Source lisenskostnader er forsvinnende små i




$
             forhold til kostnader knyttet til utviklingstimer, maskinvare, drift-
             og supportavtaler


    •   Levetid
         –   Både systemer basert på lukkede rammeverk og Open Source




$
             er justert eller reimplementert flere ganger
         –   Skyldes ikke rammeverk, men nye forretningskrav og nye
             løsningsvalg
Noen suksessfaktorer...


     •   Forretningssiden er med på utviklingen




!
     •   Tynn spec og mange iterasjoner


     •   Arkitekturvalg viser vei


     •   Leverer løsninger som er ”bra nok”


     •   Krav til forretning, fleksibilitet og leveranseevne viktigere enn
         tekniske diskusjoner


     •   Lære opp utviklerne til å tenke kommersielt
          –   Mulighetene og begrensningene sitter i hodene, ikke i
              rammeverkene...
Takk for oppmerksomheten!

GoOpen 2010: Håvard Haug Hanssen

  • 1.
    Open Source erfaringeri Norwegian Håvard Haug Hanssen Sjefsarkitekt, Kommersielle og Operative systemer i Norwegian
  • 2.
    Hvem snakker... • Håvard Haug Hanssen – Sjefsarkitekt, Kommersielle og Operative systemer – Ansvarlig for Norwegians internettportaler – Forretningsutvikling og Interaksjonsdesign – Prosjektleder med 40 leveranser i Norwegian – Siden 2003, startet ny E-handel plattform • Bakgrunn generelt – 20 år med IT og internettutvikling – 15 år innen reiseliv og luftfart – Løsninger innen E-handel, Luftfart, Nettbank, Telekom, Dokumenthåndtering, Utdanning
  • 3.
    Spørreundersøkelse... ? • Hvem har reist med Norwegian? • Hvem har brukt Lavpriskalenderen? • Hvem vil ha internett ombord når de flyr?
  • 4.
    Mer enn 200ruter til 90 destinasjoner
  • 5.
    Norwegian tall ogfakta 1/4 • 4. største lavprisselskap i Europa • 1600 ansatte og 47 fly • 150 ruter til 82 destinasjoner • Over 10 millioner passasjerer i 2009 • Gjentatt høy % vekst i omsetning og trafikk % vekst i forhold til 2003 1800 1600 1400 1200 1000 800 600 400 200 0 2003 2004 2005 2006 2007 2008 2009 2010 2011
  • 6.
    Norwegian tall ogfakta 2/4 • Internettrafikk – 90% av salget på internett – opptil 4,5 millioner besøk per dag – opptil 3 millioner prissøk per dag
  • 7.
    Norwegian tall ogfakta 3/4 • IT Systemavdeling – 40 personer, 5 faste ansatte + innleide konsulenter – Kun Senior/Sjef nivå, flere konsulenthus, ulike miljøer – Organisert i team på ca 5 personer • 2 team bruker .NET • 2 team bruker J2EE • Resten tilpasser ferdige løsninger
  • 8.
    Norwegian tall ogfakta 4/4 • Løsningene – Standard hyllevare og egenutviklede systemer – Forretningsbasert, kommersielt styrt – Iterativ utvikling, ”Scrum but...” – Tjenesteorientert arkitektur – Fleksibel arkitektur, raske leveranser – Kunder er Kommersiell, Operativ og Teknisk avdeling
  • 9.
    Arkitekturen Privat Bedrift Agent/Reisebyrå Flyplass/Stasjon Privat/Mobil Eksterne partnere Internettportal Bedriftsportal Agentportal Stasjonsportal Mobilportal B2B API .NET .NET .NET .NET .NET Web services J2EE/JBoss Buss Transaksjoner Buss Kø Web services BizTalk, SQL Server J2EE/JBoss IBM Websphere MQ Sentraltjenester Sentraltjenester Web services Web services .NET J2EE/JBoss
  • 10.
    Teamerfaringer Portalene • Vurderinger • Eksempler – Bruker ikke Open Source – Publisering plugins – .NET dekker behovet • EPIServer EPICode – .NET er etablert hos – Logging driftsleverandør og • log4net utviklingsressurser er lett – tilgjengelig Patterns • MVC • Localisation • Erfaringer • Cache Manager – Raskt å utvikle, krever rutiner for • ... å vedlikeholde kode over tid – Bygging – Server Controller og eventer kan • Nant/CruiseControl være vanskelige å debugge – Grafisk presentasjon i Server Controller kan unntaksvis være vanskelig å overstyre • Bidrag/Forum – Søker kjente feil – Poster få spørsmål • Livet er godt
  • 11.
    Teamerfaringer Integrasjon • Vurderinger • Eksempler – Billig i oppstarten – Dependency Injection – Friheten til velge/bytte verktøy • Guice – Ingen lisensbinding på servere – Caching etc • OSCache – Enkle å jobbe med – Validering – Oppgradere når man vil • OVal – Debug muligheter (brukes – Logging unntaksvis) • log4j • finne feilkilde i egen kode – Web Service eller rammeverk – • Apache CXF Åpenhet rundt feil • søke på nett – AppServer • JBoss – Bygging • Bidrag/Forum • Maven – Søker kjente feil – Testing – Poster lite spørsmål • TestNG, Mockito, – Poster ikke feilrettinger Cucumber, SoapUI – Scripting, Admin • Ruby • Erfaringer – Utviklingsverktøy – Byttet WS rammeverk • Eclipse • Raskere, enklere kode, – Versjonskontroll billigere(minne) • SubVersion, Git – Brukte umoden versjon av – Operativsystem rammeverk • Linux • Medførte begrensninger – Har ikke hatt behov for å inngå supportavtaler • Livet er godt
  • 12.
    Teamerfaringer Sentraltjenester 1/2 • Vurderinger (J2EE) • Eksempler – Slipper lisenser – Rammeverk • Rask oppgradering • Spring • Billig i oppstarten – JMS (Java Messaging Service) – Bruker standarder • ActiveMQ • God dokumentasjon – WebApp – Lett å finne bugs • Struts 2 • Kan debugge kildekoden – Logging selv • log4j – Aktivt miljø – SQL Mapping • Finne kjente feil • Hibernate • Åpent roadmap – SQL Driver • JTDS – Web Service rammeverk • Erfaringer • Apache CXF – Droppet MySQL – Appserver • Hadde SQLServer/ønsket å standardisere • JBoss – Bygging • Maven • Bidrag/Forum – Utviklingsverktøy – Søker kjente feil • Eclipse – Poster lite spørsmål • Idea – Poster ikke feilrettinger – Operativsystem • Linux • Livet er godt
  • 13.
    Teamerfaringer Sentraltjenester 2/2 • Vurderinger (.NET) • Eksempler – Bruker ikke Open Source – Web Service rammeverk – .NET 3.5 dekker behovet • Web Service Factory – Utviklingen går riktig vei – Logging • log4net • Erfaringer – Bygging – Tidligere brukte vi flere • Nant/CruiseControl rammeverk, erstattet av senere – Mocking versjoner av .NET • Rhino • Bidrag/Forum – Søker ofte feil – Poster lite spørsmål • Livet er godt
  • 14.
    Teamerfaringer Støttesystemer • Vurderinger • Eksempler – Billig og bra nok – Informasjon/Planlegning – Mantis tungt å tilpasse • Confluence – Confluence lisensiert – Bugtracker/Oppgave • Mantis • Erfaringer – Kildekode har vært styrt av teamene • ønsker samordning
  • 15.
    Oppsummering • Våre systemer er forretningskritiske og leverer bra mht ytelse og stabilitet • Både lukkede rammeverk (.NET) og Open Source rammeverk (J2EE) fungerer • Teamene har vært selvstendige – fått lov til å styre intern teknisk arkitektur • Etterhvert ser vi behov for koordinering/samkjøring – valg av løsninger – valg av rammeverk – kildekodestyring, integrert i både .NET og J2EE team – integrert oppgavesystem
  • 16.
    Forretningsstrategi og Åpenhet • Flytransport er ekstremt konkurranseutsatt $ – IT er strategisk viktig for Norwegian – Forretningshemmeligheter må skjermes • IT-utviklingen er kommersielt drevet – Vi må være kosteffektiv og kan bare kjøre lønnsomme prosjekter – Lite/ingen penger til å bidra til Open Source prosjekter • Konsekvens – Vi er nok mest brukere, ikke bidragsytere  – Vi bruker standard rammeverk og lager få generelle løsninger som andre kan bruke – Egenutviklet kildekode beskriver forretning og kan ikke distribueres – Feks Lavpriskalenderen er patentert – Feks B2B API leveres kun kompilert, men har eget forum 
  • 17.
    Totalkostnader • I en famlende oppstart var det billig og fleksibelt å prøve seg $ fram med Open Source rammeverk • Som etablert selskap er ikke kostnadsbildet like tydelig – Både lukkede rammeverk og Open Source modeller leverer – Men sparte Open Source lisenskostnader er forsvinnende små i $ forhold til kostnader knyttet til utviklingstimer, maskinvare, drift- og supportavtaler • Levetid – Både systemer basert på lukkede rammeverk og Open Source $ er justert eller reimplementert flere ganger – Skyldes ikke rammeverk, men nye forretningskrav og nye løsningsvalg
  • 18.
    Noen suksessfaktorer... • Forretningssiden er med på utviklingen ! • Tynn spec og mange iterasjoner • Arkitekturvalg viser vei • Leverer løsninger som er ”bra nok” • Krav til forretning, fleksibilitet og leveranseevne viktigere enn tekniske diskusjoner • Lære opp utviklerne til å tenke kommersielt – Mulighetene og begrensningene sitter i hodene, ikke i rammeverkene...
  • 19.