SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
Who are ’we’?
How and why we bootstrapped Functional Programming
                                          Evaluation
                                          Summary




      Functional Programming @ Ghent IT Valley

                             R. Slootmaekers              N. Trangez

                                        Incubaid Research Lab


          Commercial Users of Functional Programming, 2012




                         R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
 How and why we bootstrapped Functional Programming
                                           Evaluation
                                           Summary


Outline


  1    Who are ’we’?

  2    How and why we bootstrapped Functional Programming
         Amplidata’s unbreakable storage
         our pain
         2.0 plan and execution

  3    Evaluation
         Were we Happy?(2010)
         Are we still happy?(2012)



                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
How and why we bootstrapped Functional Programming
                                          Evaluation
                                          Summary




        Incubaid is a technology incubator, active in datacenter
        and cloud computing
        Prior exits through Terremark, Telenet (Belgian telco),
        Veritas/Symantec, Sun Microsystems,. . .
        some of our current involvements: Amplidata , Awingu ,
        CloudFounders , Dacentec , Racktivity




                         R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


Outline


  1    Who are ’we’?

  2    How and why we bootstrapped Functional Programming
         Amplidata’s unbreakable storage
         our pain
         2.0 plan and execution

  3    Evaluation
         Were we Happy?(2010)
         Are we still happy?(2012)



                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                           Amplidata’s unbreakable storage
   How and why we bootstrapped Functional Programming
                                                           our pain
                                             Evaluation
                                                           2.0 plan and execution
                                             Summary


Amplidata’s Dispersed Storage System
20 000ft view


                                                                            diskA0


                                                          StorageNodeA      diskA1
                                            encoder
                                            decoder
                               Client                        ........       diskA...
                                          provisioning
                                            policies
                                                          StorageNodeZ

                                           metadata




           client streams object data
           encoder generates equations : Ax = b or x = A−1 b
           policies determine how many disks | equations
           provisioning determines which disks
           send equations to StorageNodes
           record metadata
                            R. Slootmaekers, N. Trangez    FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


Outline


  1    Who are ’we’?

  2    How and why we bootstrapped Functional Programming
         Amplidata’s unbreakable storage
         our pain
         2.0 plan and execution

  3    Evaluation
         Were we Happy?(2010)
         Are we still happy?(2012)



                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


Pain



         Pain: resource management
         Pain: sockets
         Pain: threads
         Pain: data corruption
         Pain: objects
  development was grinding to a halt




                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


Pain



         Pain: resource management
         Pain: sockets
         Pain: threads
         Pain: data corruption
         Pain: objects
  development was grinding to a halt




                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


The 1.6 Codebase (Core)



                                                                  Time (Blue):
                                                                          Pareto applies
 1                                                                        60% is IO
                                                                          30% is encoding/decoding
                                                                  size (Red):
 0                                                                        > 50 kloc
       StIO        MdIO Codec Rest                                        Codec ∼ 1 kloc
                                                                          IO < 1 kloc




                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


The Bet



  I placed a bet to rewrite the StorageNode component in OCaml
         Functionally identical
         Same Performance
         in 2 days. . .
  1.5 day later the drop in replacement was demoed, and we
  were allowed to Investigate alternatives to C++ for version 2.0




                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


The Bet



  I placed a bet to rewrite the StorageNode component in OCaml
         Functionally identical
         Same Performance
         in 2 days. . .
  1.5 day later the drop in replacement was demoed, and we
  were allowed to Investigate alternatives to C++ for version 2.0




                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


How is this possible?



         component is very simple
         perfect specs
         existing component test suite
         performance is mostly determined by network & disk speed
         OCaml has object orientation.




                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


Outline


  1    Who are ’we’?

  2    How and why we bootstrapped Functional Programming
         Amplidata’s unbreakable storage
         our pain
         2.0 plan and execution

  3    Evaluation
         Were we Happy?(2010)
         Are we still happy?(2012)



                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


2.0 Estimates & plan



         // in IO ⇒ 30 → 6
         recycle codec
         do the rest in comfort ⇒ 10 → 20
         maybe improve metadata IO (?)
  ⇒ (time) 100% → 86%
  ⇒ (size) 100% → 40%




                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
                                                        Amplidata’s unbreakable storage
 How and why we bootstrapped Functional Programming
                                                        our pain
                                           Evaluation
                                                        2.0 plan and execution
                                           Summary


What happened?


  We decided on Functional programming & picked OCaml.
         use Light Weight Threads library.
         Blinded by success.
         rewrote codec (in C)
         metadata → Arakoon
         feature creep
  ⇒ (time) 100% → 40%
  ⇒ (size) 100% → 100% (90% OCaml, 9% C, 1% Asm)




                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
 How and why we bootstrapped Functional Programming     Were we Happy?(2010)
                                           Evaluation   Are we still happy?(2012)
                                           Summary


Outline


  1    Who are ’we’?

  2    How and why we bootstrapped Functional Programming
         Amplidata’s unbreakable storage
         our pain
         2.0 plan and execution

  3    Evaluation
         Were we Happy?(2010)
         Are we still happy?(2012)



                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
       How and why we bootstrapped Functional Programming     Were we Happy?(2010)
                                                 Evaluation   Are we still happy?(2012)
                                                 Summary


  Were we Happy? (2010)


                                                                 No:
Yes:                                                                     Tools? what tools?
       Type Inference rocks                                              32/64 bit issues
       Superfast compiler                                                Multicore issues
       Fast Enough Code                                                  OCaml(build) learning curve
       Nice C integration                                                Emacs only
       Refactoring                                                       OO does not fit well
                                                                         Architecture?




                                R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
 How and why we bootstrapped Functional Programming     Were we Happy?(2010)
                                           Evaluation   Are we still happy?(2012)
                                           Summary


Outline


  1    Who are ’we’?

  2    How and why we bootstrapped Functional Programming
         Amplidata’s unbreakable storage
         our pain
         2.0 plan and execution

  3    Evaluation
         Were we Happy?(2010)
         Are we still happy?(2012)



                          R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
       How and why we bootstrapped Functional Programming     Were we Happy?(2010)
                                                 Evaluation   Are we still happy?(2012)
                                                 Summary


  Are we still happy?(2012)



                                                                 No:
                                                                         OCaml language evolution.
Yes:
                                                                         OCaml runtime evolution.
       FP strategy works.
                                                                         OCaml library evolution.
                                                                         people & process mistakes.




                                R. Slootmaekers, N. Trangez   FP@GhentITV
Who are ’we’?
 How and why we bootstrapped Functional Programming
                                           Evaluation
                                           Summary


Summary




         Doing everything in 1 programming language is plain silly.
         (But you need pain and some guerilla tactics to convince
         people)
         Functional programming and distributed systems match




                          R. Slootmaekers, N. Trangez   FP@GhentITV

Más contenido relacionado

Similar a Bootstrapped FP at Amplidata

OpenIMAJ and ImageTerrier: Java Libraries and Tools for Scalable Multimedia A...
OpenIMAJ and ImageTerrier: Java Libraries and Tools for Scalable Multimedia A...OpenIMAJ and ImageTerrier: Java Libraries and Tools for Scalable Multimedia A...
OpenIMAJ and ImageTerrier: Java Libraries and Tools for Scalable Multimedia A...Jonathon Hare
 
Copenhagen 121127 - Lars Irenius
Copenhagen 121127 - Lars IreniusCopenhagen 121127 - Lars Irenius
Copenhagen 121127 - Lars IreniusKnowit_TM
 
Hihn.jarius
Hihn.jariusHihn.jarius
Hihn.jariusNASAPMC
 
7 key recipes for data engineering
7 key recipes for data engineering7 key recipes for data engineering
7 key recipes for data engineeringunivalence
 
Smalltalk in Enterprise Applications
Smalltalk in Enterprise ApplicationsSmalltalk in Enterprise Applications
Smalltalk in Enterprise ApplicationsESUG
 
Observability at Scale
Observability at Scale Observability at Scale
Observability at Scale Knoldus Inc.
 
Chapter 7 Erp Implementation Lifecycle Alexis Leon
Chapter 7  Erp Implementation Lifecycle   Alexis LeonChapter 7  Erp Implementation Lifecycle   Alexis Leon
Chapter 7 Erp Implementation Lifecycle Alexis LeonSonali Chauhan
 
Distributed tracing 101
Distributed tracing 101Distributed tracing 101
Distributed tracing 101Itiel Shwartz
 
How do we drive tech changes
How do we drive tech changesHow do we drive tech changes
How do we drive tech changesJaewoo Ahn
 
Agile in short projects
Agile in short projectsAgile in short projects
Agile in short projectsSiddhi
 
NaazAfrinResume (2)
NaazAfrinResume (2)NaazAfrinResume (2)
NaazAfrinResume (2)Naaz Afrin
 
Tracking Task Context To Support Resumption
Tracking Task Context To Support ResumptionTracking Task Context To Support Resumption
Tracking Task Context To Support ResumptionDamien Clauzel
 

Similar a Bootstrapped FP at Amplidata (20)

OpenIMAJ and ImageTerrier: Java Libraries and Tools for Scalable Multimedia A...
OpenIMAJ and ImageTerrier: Java Libraries and Tools for Scalable Multimedia A...OpenIMAJ and ImageTerrier: Java Libraries and Tools for Scalable Multimedia A...
OpenIMAJ and ImageTerrier: Java Libraries and Tools for Scalable Multimedia A...
 
Copenhagen 121127 - Lars Irenius
Copenhagen 121127 - Lars IreniusCopenhagen 121127 - Lars Irenius
Copenhagen 121127 - Lars Irenius
 
Hihn.jarius
Hihn.jariusHihn.jarius
Hihn.jarius
 
Are Your Test Cases Fit For Automation?
Are Your Test Cases Fit For Automation?Are Your Test Cases Fit For Automation?
Are Your Test Cases Fit For Automation?
 
7 key recipes for data engineering
7 key recipes for data engineering7 key recipes for data engineering
7 key recipes for data engineering
 
Smalltalk in Enterprise Applications
Smalltalk in Enterprise ApplicationsSmalltalk in Enterprise Applications
Smalltalk in Enterprise Applications
 
Observability at Scale
Observability at Scale Observability at Scale
Observability at Scale
 
Chapter 7 Erp Implementation Lifecycle Alexis Leon
Chapter 7  Erp Implementation Lifecycle   Alexis LeonChapter 7  Erp Implementation Lifecycle   Alexis Leon
Chapter 7 Erp Implementation Lifecycle Alexis Leon
 
Distributed tracing 101
Distributed tracing 101Distributed tracing 101
Distributed tracing 101
 
DevOps Challenges and Mitigation
DevOps Challenges and MitigationDevOps Challenges and Mitigation
DevOps Challenges and Mitigation
 
Technical Recruitment Overview & Tips
Technical Recruitment Overview & TipsTechnical Recruitment Overview & Tips
Technical Recruitment Overview & Tips
 
Pradeep_SCM
Pradeep_SCMPradeep_SCM
Pradeep_SCM
 
How do we drive tech changes
How do we drive tech changesHow do we drive tech changes
How do we drive tech changes
 
Distributed Tracing
Distributed TracingDistributed Tracing
Distributed Tracing
 
01 software engineering_aspects
01 software engineering_aspects01 software engineering_aspects
01 software engineering_aspects
 
Agile in short projects
Agile in short projectsAgile in short projects
Agile in short projects
 
NaazAfrinResume (2)
NaazAfrinResume (2)NaazAfrinResume (2)
NaazAfrinResume (2)
 
Sikuli
SikuliSikuli
Sikuli
 
Resume_nakri
Resume_nakriResume_nakri
Resume_nakri
 
Tracking Task Context To Support Resumption
Tracking Task Context To Support ResumptionTracking Task Context To Support Resumption
Tracking Task Context To Support Resumption
 

Último

Call Girls Aurangabad Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Aurangabad Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Aurangabad Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Aurangabad Just Call 9907093804 Top Class Call Girl Service AvailableDipal Arora
 
Kesar Bagh Call Girl Price 9548273370 , Lucknow Call Girls Service
Kesar Bagh Call Girl Price 9548273370 , Lucknow Call Girls ServiceKesar Bagh Call Girl Price 9548273370 , Lucknow Call Girls Service
Kesar Bagh Call Girl Price 9548273370 , Lucknow Call Girls Servicemakika9823
 
All Time Service Available Call Girls Marine Drive 📳 9820252231 For 18+ VIP C...
All Time Service Available Call Girls Marine Drive 📳 9820252231 For 18+ VIP C...All Time Service Available Call Girls Marine Drive 📳 9820252231 For 18+ VIP C...
All Time Service Available Call Girls Marine Drive 📳 9820252231 For 18+ VIP C...Arohi Goyal
 
Call Girls Kochi Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Kochi Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Kochi Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Kochi Just Call 9907093804 Top Class Call Girl Service AvailableDipal Arora
 
Call Girl Coimbatore Prisha☎️ 8250192130 Independent Escort Service Coimbatore
Call Girl Coimbatore Prisha☎️  8250192130 Independent Escort Service CoimbatoreCall Girl Coimbatore Prisha☎️  8250192130 Independent Escort Service Coimbatore
Call Girl Coimbatore Prisha☎️ 8250192130 Independent Escort Service Coimbatorenarwatsonia7
 
Call Girls Bhubaneswar Just Call 9907093804 Top Class Call Girl Service Avail...
Call Girls Bhubaneswar Just Call 9907093804 Top Class Call Girl Service Avail...Call Girls Bhubaneswar Just Call 9907093804 Top Class Call Girl Service Avail...
Call Girls Bhubaneswar Just Call 9907093804 Top Class Call Girl Service Avail...Dipal Arora
 
Top Rated Bangalore Call Girls Mg Road ⟟ 8250192130 ⟟ Call Me For Genuine Sex...
Top Rated Bangalore Call Girls Mg Road ⟟ 8250192130 ⟟ Call Me For Genuine Sex...Top Rated Bangalore Call Girls Mg Road ⟟ 8250192130 ⟟ Call Me For Genuine Sex...
Top Rated Bangalore Call Girls Mg Road ⟟ 8250192130 ⟟ Call Me For Genuine Sex...narwatsonia7
 
Call Girls Service Surat Samaira ❤️🍑 8250192130 👄 Independent Escort Service ...
Call Girls Service Surat Samaira ❤️🍑 8250192130 👄 Independent Escort Service ...Call Girls Service Surat Samaira ❤️🍑 8250192130 👄 Independent Escort Service ...
Call Girls Service Surat Samaira ❤️🍑 8250192130 👄 Independent Escort Service ...CALL GIRLS
 
VIP Mumbai Call Girls Hiranandani Gardens Just Call 9920874524 with A/C Room ...
VIP Mumbai Call Girls Hiranandani Gardens Just Call 9920874524 with A/C Room ...VIP Mumbai Call Girls Hiranandani Gardens Just Call 9920874524 with A/C Room ...
VIP Mumbai Call Girls Hiranandani Gardens Just Call 9920874524 with A/C Room ...Garima Khatri
 
Call Girl Number in Vashi Mumbai📲 9833363713 💞 Full Night Enjoy
Call Girl Number in Vashi Mumbai📲 9833363713 💞 Full Night EnjoyCall Girl Number in Vashi Mumbai📲 9833363713 💞 Full Night Enjoy
Call Girl Number in Vashi Mumbai📲 9833363713 💞 Full Night Enjoybabeytanya
 
High Profile Call Girls Coimbatore Saanvi☎️ 8250192130 Independent Escort Se...
High Profile Call Girls Coimbatore Saanvi☎️  8250192130 Independent Escort Se...High Profile Call Girls Coimbatore Saanvi☎️  8250192130 Independent Escort Se...
High Profile Call Girls Coimbatore Saanvi☎️ 8250192130 Independent Escort Se...narwatsonia7
 
Call Girls Horamavu WhatsApp Number 7001035870 Meeting With Bangalore Escorts
Call Girls Horamavu WhatsApp Number 7001035870 Meeting With Bangalore EscortsCall Girls Horamavu WhatsApp Number 7001035870 Meeting With Bangalore Escorts
Call Girls Horamavu WhatsApp Number 7001035870 Meeting With Bangalore Escortsvidya singh
 
(👑VVIP ISHAAN ) Russian Call Girls Service Navi Mumbai🖕9920874524🖕Independent...
(👑VVIP ISHAAN ) Russian Call Girls Service Navi Mumbai🖕9920874524🖕Independent...(👑VVIP ISHAAN ) Russian Call Girls Service Navi Mumbai🖕9920874524🖕Independent...
(👑VVIP ISHAAN ) Russian Call Girls Service Navi Mumbai🖕9920874524🖕Independent...Taniya Sharma
 
Call Girls Ooty Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Ooty Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Ooty Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Ooty Just Call 9907093804 Top Class Call Girl Service AvailableDipal Arora
 
💎VVIP Kolkata Call Girls Parganas🩱7001035870🩱Independent Girl ( Ac Rooms Avai...
💎VVIP Kolkata Call Girls Parganas🩱7001035870🩱Independent Girl ( Ac Rooms Avai...💎VVIP Kolkata Call Girls Parganas🩱7001035870🩱Independent Girl ( Ac Rooms Avai...
💎VVIP Kolkata Call Girls Parganas🩱7001035870🩱Independent Girl ( Ac Rooms Avai...Taniya Sharma
 
VIP Call Girls Indore Kirti 💚😋 9256729539 🚀 Indore Escorts
VIP Call Girls Indore Kirti 💚😋  9256729539 🚀 Indore EscortsVIP Call Girls Indore Kirti 💚😋  9256729539 🚀 Indore Escorts
VIP Call Girls Indore Kirti 💚😋 9256729539 🚀 Indore Escortsaditipandeya
 
Call Girls Service Jaipur Grishma WhatsApp ❤8445551418 VIP Call Girls Jaipur
Call Girls Service Jaipur Grishma WhatsApp ❤8445551418 VIP Call Girls JaipurCall Girls Service Jaipur Grishma WhatsApp ❤8445551418 VIP Call Girls Jaipur
Call Girls Service Jaipur Grishma WhatsApp ❤8445551418 VIP Call Girls Jaipurparulsinha
 
Call Girls Nagpur Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Nagpur Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Nagpur Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Nagpur Just Call 9907093804 Top Class Call Girl Service AvailableDipal Arora
 

Último (20)

Call Girls Aurangabad Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Aurangabad Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Aurangabad Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Aurangabad Just Call 9907093804 Top Class Call Girl Service Available
 
Kesar Bagh Call Girl Price 9548273370 , Lucknow Call Girls Service
Kesar Bagh Call Girl Price 9548273370 , Lucknow Call Girls ServiceKesar Bagh Call Girl Price 9548273370 , Lucknow Call Girls Service
Kesar Bagh Call Girl Price 9548273370 , Lucknow Call Girls Service
 
All Time Service Available Call Girls Marine Drive 📳 9820252231 For 18+ VIP C...
All Time Service Available Call Girls Marine Drive 📳 9820252231 For 18+ VIP C...All Time Service Available Call Girls Marine Drive 📳 9820252231 For 18+ VIP C...
All Time Service Available Call Girls Marine Drive 📳 9820252231 For 18+ VIP C...
 
Call Girls Kochi Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Kochi Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Kochi Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Kochi Just Call 9907093804 Top Class Call Girl Service Available
 
Call Girl Coimbatore Prisha☎️ 8250192130 Independent Escort Service Coimbatore
Call Girl Coimbatore Prisha☎️  8250192130 Independent Escort Service CoimbatoreCall Girl Coimbatore Prisha☎️  8250192130 Independent Escort Service Coimbatore
Call Girl Coimbatore Prisha☎️ 8250192130 Independent Escort Service Coimbatore
 
Call Girls Bhubaneswar Just Call 9907093804 Top Class Call Girl Service Avail...
Call Girls Bhubaneswar Just Call 9907093804 Top Class Call Girl Service Avail...Call Girls Bhubaneswar Just Call 9907093804 Top Class Call Girl Service Avail...
Call Girls Bhubaneswar Just Call 9907093804 Top Class Call Girl Service Avail...
 
Top Rated Bangalore Call Girls Mg Road ⟟ 8250192130 ⟟ Call Me For Genuine Sex...
Top Rated Bangalore Call Girls Mg Road ⟟ 8250192130 ⟟ Call Me For Genuine Sex...Top Rated Bangalore Call Girls Mg Road ⟟ 8250192130 ⟟ Call Me For Genuine Sex...
Top Rated Bangalore Call Girls Mg Road ⟟ 8250192130 ⟟ Call Me For Genuine Sex...
 
Call Girls Service Surat Samaira ❤️🍑 8250192130 👄 Independent Escort Service ...
Call Girls Service Surat Samaira ❤️🍑 8250192130 👄 Independent Escort Service ...Call Girls Service Surat Samaira ❤️🍑 8250192130 👄 Independent Escort Service ...
Call Girls Service Surat Samaira ❤️🍑 8250192130 👄 Independent Escort Service ...
 
VIP Mumbai Call Girls Hiranandani Gardens Just Call 9920874524 with A/C Room ...
VIP Mumbai Call Girls Hiranandani Gardens Just Call 9920874524 with A/C Room ...VIP Mumbai Call Girls Hiranandani Gardens Just Call 9920874524 with A/C Room ...
VIP Mumbai Call Girls Hiranandani Gardens Just Call 9920874524 with A/C Room ...
 
Escort Service Call Girls In Sarita Vihar,, 99530°56974 Delhi NCR
Escort Service Call Girls In Sarita Vihar,, 99530°56974 Delhi NCREscort Service Call Girls In Sarita Vihar,, 99530°56974 Delhi NCR
Escort Service Call Girls In Sarita Vihar,, 99530°56974 Delhi NCR
 
Call Girl Number in Vashi Mumbai📲 9833363713 💞 Full Night Enjoy
Call Girl Number in Vashi Mumbai📲 9833363713 💞 Full Night EnjoyCall Girl Number in Vashi Mumbai📲 9833363713 💞 Full Night Enjoy
Call Girl Number in Vashi Mumbai📲 9833363713 💞 Full Night Enjoy
 
High Profile Call Girls Coimbatore Saanvi☎️ 8250192130 Independent Escort Se...
High Profile Call Girls Coimbatore Saanvi☎️  8250192130 Independent Escort Se...High Profile Call Girls Coimbatore Saanvi☎️  8250192130 Independent Escort Se...
High Profile Call Girls Coimbatore Saanvi☎️ 8250192130 Independent Escort Se...
 
Call Girls Horamavu WhatsApp Number 7001035870 Meeting With Bangalore Escorts
Call Girls Horamavu WhatsApp Number 7001035870 Meeting With Bangalore EscortsCall Girls Horamavu WhatsApp Number 7001035870 Meeting With Bangalore Escorts
Call Girls Horamavu WhatsApp Number 7001035870 Meeting With Bangalore Escorts
 
(👑VVIP ISHAAN ) Russian Call Girls Service Navi Mumbai🖕9920874524🖕Independent...
(👑VVIP ISHAAN ) Russian Call Girls Service Navi Mumbai🖕9920874524🖕Independent...(👑VVIP ISHAAN ) Russian Call Girls Service Navi Mumbai🖕9920874524🖕Independent...
(👑VVIP ISHAAN ) Russian Call Girls Service Navi Mumbai🖕9920874524🖕Independent...
 
Call Girls Ooty Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Ooty Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Ooty Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Ooty Just Call 9907093804 Top Class Call Girl Service Available
 
💎VVIP Kolkata Call Girls Parganas🩱7001035870🩱Independent Girl ( Ac Rooms Avai...
💎VVIP Kolkata Call Girls Parganas🩱7001035870🩱Independent Girl ( Ac Rooms Avai...💎VVIP Kolkata Call Girls Parganas🩱7001035870🩱Independent Girl ( Ac Rooms Avai...
💎VVIP Kolkata Call Girls Parganas🩱7001035870🩱Independent Girl ( Ac Rooms Avai...
 
VIP Call Girls Indore Kirti 💚😋 9256729539 🚀 Indore Escorts
VIP Call Girls Indore Kirti 💚😋  9256729539 🚀 Indore EscortsVIP Call Girls Indore Kirti 💚😋  9256729539 🚀 Indore Escorts
VIP Call Girls Indore Kirti 💚😋 9256729539 🚀 Indore Escorts
 
Russian Call Girls in Delhi Tanvi ➡️ 9711199012 💋📞 Independent Escort Service...
Russian Call Girls in Delhi Tanvi ➡️ 9711199012 💋📞 Independent Escort Service...Russian Call Girls in Delhi Tanvi ➡️ 9711199012 💋📞 Independent Escort Service...
Russian Call Girls in Delhi Tanvi ➡️ 9711199012 💋📞 Independent Escort Service...
 
Call Girls Service Jaipur Grishma WhatsApp ❤8445551418 VIP Call Girls Jaipur
Call Girls Service Jaipur Grishma WhatsApp ❤8445551418 VIP Call Girls JaipurCall Girls Service Jaipur Grishma WhatsApp ❤8445551418 VIP Call Girls Jaipur
Call Girls Service Jaipur Grishma WhatsApp ❤8445551418 VIP Call Girls Jaipur
 
Call Girls Nagpur Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Nagpur Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Nagpur Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Nagpur Just Call 9907093804 Top Class Call Girl Service Available
 

Bootstrapped FP at Amplidata

  • 1. Who are ’we’? How and why we bootstrapped Functional Programming Evaluation Summary Functional Programming @ Ghent IT Valley R. Slootmaekers N. Trangez Incubaid Research Lab Commercial Users of Functional Programming, 2012 R. Slootmaekers, N. Trangez FP@GhentITV
  • 2. Who are ’we’? How and why we bootstrapped Functional Programming Evaluation Summary Outline 1 Who are ’we’? 2 How and why we bootstrapped Functional Programming Amplidata’s unbreakable storage our pain 2.0 plan and execution 3 Evaluation Were we Happy?(2010) Are we still happy?(2012) R. Slootmaekers, N. Trangez FP@GhentITV
  • 3. Who are ’we’? How and why we bootstrapped Functional Programming Evaluation Summary Incubaid is a technology incubator, active in datacenter and cloud computing Prior exits through Terremark, Telenet (Belgian telco), Veritas/Symantec, Sun Microsystems,. . . some of our current involvements: Amplidata , Awingu , CloudFounders , Dacentec , Racktivity R. Slootmaekers, N. Trangez FP@GhentITV
  • 4. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary Outline 1 Who are ’we’? 2 How and why we bootstrapped Functional Programming Amplidata’s unbreakable storage our pain 2.0 plan and execution 3 Evaluation Were we Happy?(2010) Are we still happy?(2012) R. Slootmaekers, N. Trangez FP@GhentITV
  • 5. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary Amplidata’s Dispersed Storage System 20 000ft view diskA0 StorageNodeA diskA1 encoder decoder Client ........ diskA... provisioning policies StorageNodeZ metadata client streams object data encoder generates equations : Ax = b or x = A−1 b policies determine how many disks | equations provisioning determines which disks send equations to StorageNodes record metadata R. Slootmaekers, N. Trangez FP@GhentITV
  • 6. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary Outline 1 Who are ’we’? 2 How and why we bootstrapped Functional Programming Amplidata’s unbreakable storage our pain 2.0 plan and execution 3 Evaluation Were we Happy?(2010) Are we still happy?(2012) R. Slootmaekers, N. Trangez FP@GhentITV
  • 7. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary Pain Pain: resource management Pain: sockets Pain: threads Pain: data corruption Pain: objects development was grinding to a halt R. Slootmaekers, N. Trangez FP@GhentITV
  • 8. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary Pain Pain: resource management Pain: sockets Pain: threads Pain: data corruption Pain: objects development was grinding to a halt R. Slootmaekers, N. Trangez FP@GhentITV
  • 9. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary The 1.6 Codebase (Core) Time (Blue): Pareto applies 1 60% is IO 30% is encoding/decoding size (Red): 0 > 50 kloc StIO MdIO Codec Rest Codec ∼ 1 kloc IO < 1 kloc R. Slootmaekers, N. Trangez FP@GhentITV
  • 10. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary The Bet I placed a bet to rewrite the StorageNode component in OCaml Functionally identical Same Performance in 2 days. . . 1.5 day later the drop in replacement was demoed, and we were allowed to Investigate alternatives to C++ for version 2.0 R. Slootmaekers, N. Trangez FP@GhentITV
  • 11. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary The Bet I placed a bet to rewrite the StorageNode component in OCaml Functionally identical Same Performance in 2 days. . . 1.5 day later the drop in replacement was demoed, and we were allowed to Investigate alternatives to C++ for version 2.0 R. Slootmaekers, N. Trangez FP@GhentITV
  • 12. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary How is this possible? component is very simple perfect specs existing component test suite performance is mostly determined by network & disk speed OCaml has object orientation. R. Slootmaekers, N. Trangez FP@GhentITV
  • 13. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary Outline 1 Who are ’we’? 2 How and why we bootstrapped Functional Programming Amplidata’s unbreakable storage our pain 2.0 plan and execution 3 Evaluation Were we Happy?(2010) Are we still happy?(2012) R. Slootmaekers, N. Trangez FP@GhentITV
  • 14. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary 2.0 Estimates & plan // in IO ⇒ 30 → 6 recycle codec do the rest in comfort ⇒ 10 → 20 maybe improve metadata IO (?) ⇒ (time) 100% → 86% ⇒ (size) 100% → 40% R. Slootmaekers, N. Trangez FP@GhentITV
  • 15. Who are ’we’? Amplidata’s unbreakable storage How and why we bootstrapped Functional Programming our pain Evaluation 2.0 plan and execution Summary What happened? We decided on Functional programming & picked OCaml. use Light Weight Threads library. Blinded by success. rewrote codec (in C) metadata → Arakoon feature creep ⇒ (time) 100% → 40% ⇒ (size) 100% → 100% (90% OCaml, 9% C, 1% Asm) R. Slootmaekers, N. Trangez FP@GhentITV
  • 16. Who are ’we’? How and why we bootstrapped Functional Programming Were we Happy?(2010) Evaluation Are we still happy?(2012) Summary Outline 1 Who are ’we’? 2 How and why we bootstrapped Functional Programming Amplidata’s unbreakable storage our pain 2.0 plan and execution 3 Evaluation Were we Happy?(2010) Are we still happy?(2012) R. Slootmaekers, N. Trangez FP@GhentITV
  • 17. Who are ’we’? How and why we bootstrapped Functional Programming Were we Happy?(2010) Evaluation Are we still happy?(2012) Summary Were we Happy? (2010) No: Yes: Tools? what tools? Type Inference rocks 32/64 bit issues Superfast compiler Multicore issues Fast Enough Code OCaml(build) learning curve Nice C integration Emacs only Refactoring OO does not fit well Architecture? R. Slootmaekers, N. Trangez FP@GhentITV
  • 18. Who are ’we’? How and why we bootstrapped Functional Programming Were we Happy?(2010) Evaluation Are we still happy?(2012) Summary Outline 1 Who are ’we’? 2 How and why we bootstrapped Functional Programming Amplidata’s unbreakable storage our pain 2.0 plan and execution 3 Evaluation Were we Happy?(2010) Are we still happy?(2012) R. Slootmaekers, N. Trangez FP@GhentITV
  • 19. Who are ’we’? How and why we bootstrapped Functional Programming Were we Happy?(2010) Evaluation Are we still happy?(2012) Summary Are we still happy?(2012) No: OCaml language evolution. Yes: OCaml runtime evolution. FP strategy works. OCaml library evolution. people & process mistakes. R. Slootmaekers, N. Trangez FP@GhentITV
  • 20. Who are ’we’? How and why we bootstrapped Functional Programming Evaluation Summary Summary Doing everything in 1 programming language is plain silly. (But you need pain and some guerilla tactics to convince people) Functional programming and distributed systems match R. Slootmaekers, N. Trangez FP@GhentITV