SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
The API Contract is Dead
LONG LIVE THE API CONTRACT
                 Clint Byrum
       Canonical – Ubuntu Server Team
Things move fast today!
●   API's Used to
    be Stable
●   Dependencies
    were few and
    loosely
    coupled




    http://www.flickr.com/photos/mwichary/3582507128/
How do we keep our sanity?
●    Test Coverage – Continuous Integration
●    Automatic Dependency Resolution




    http://xkcd.com/754/
Reality CHECK
●   Test coverage is not automatic – Unless it is
    part of your culture
●   The consumers of a library tend to over-trust
    the upstream's tests to ensure things are
    working.
●   On the fly dependency resolution often makes
    for an unrepeatable build (YO, Maven, this
    means you!)
GOOD things about FAST change
●    Newer versions often
     add stability AND
     performance
●    Progress – Without
     constraints,
     developers are able
     to add features and
     refactor at will
●    v*.0 is bad, but v0.* is
     t3h awesome!
    http://www.flickr.com/photos/metallirat/217984892/
BAD things about FAST change
              ●   Stuff breaks
              ●   Repeated Integration
                  Cost
              ●   Encourages bad
                  behavior like
                  embedding specific
                  versions
              ●   Kills kittens
Case Study: libmemcached
●   0.31 released almost 1 year ago
●   0.40 current release
●   Somewhere between 0.31 and 0.40, the API
    changed enough to break everything, requiring
    porting of most apps.
●   1 year of development added features like
    SASL support and 'memcapable' test tool
MongoDB
●   v1.2.3 released Feb 23 2010
●   Ubuntu 10.04 Lucid ships with v1.2.2 Apr 29
    2010.
●   v1.4.3 released May 24 2010
Cassandra
●   Very new, gaining traction quickly
●   So far, releasing about 4 times per year
●   Huge number of dependencies, all ship
    embedded at specific working versions
●   Old releases are deprecated very quickly
So why do we bother packaging?
●   Stability? NO
●   Predictibility, “Stasis”
●   Uniformity – Easier to support just one version
What can authors do?
●   Think twice about breaking an API that has
    been published for a while
●   Consider that just because it is v0.x doesn't
    mean only power users will end up using it.
●   Use bold and <blink> for the “THIS IS GOING
    TO CHANGE” link on the download page..
What can distributors do?
●   Cry
●   Refuse to move forward at the pace of these
    projects
●   Refuse to support old library versions
●   Try to support all versions
●   All of the above get done in Ubuntu regularly
How about a better idea?




Something sysadmins already do...
NO not more hand waving!




http://www.flickr.com/photos/igalko/4690480668/
Leverage YOUR Core
              Competencies
●   Python people don't want distro python
●   Perl people don't want distro perl
●   And MySQL in the distro is ok, but I need
    percona!
●   Most sysadmins just install with the OS, then
    build everything important from source and drop
    it in /usr/local
Rather than build..
●   PPA or “Personal Package Archive”
●   Launchpad service to easily build packages
    then make the built packages available in a
    special apt repository.
●   Easy to add on ubuntu: 'add-apt-repository
    ppa:user_or_team/ppaname
PPA details
●   Once a PPA is established, Server Team would
    upload packages into it for an upstream
●   Allows upgrades to be made available to
    Ubuntu users very quickly.
●   Users who utilize it can upgrade instantly with
    'apt-get upgrade'
Author Participation
●   Upstream can be granted upload access very
    easily.
●   Our first “blessed” team with a PPA:
    https://lanchpad.net/~cassandra-ubuntu
Derivitives Made Easy?
●   Kubuntu is Ubuntu w/ KDE as the default
●   How about “Youbuntu” which has your
    packages added on top of the distro.
●   What if we made this easy?
Got any good ideas about this?



   I want to hear what you think!

    #ubuntu-server on Freenode
        clint@ubuntu.com
         http://fewbar.com

Más contenido relacionado

La actualidad más candente

Git and GitFlow branching model
Git and GitFlow branching modelGit and GitFlow branching model
Git and GitFlow branching modelPavlo Hodysh
 
Riak at Posterous
Riak at PosterousRiak at Posterous
Riak at Posterouscapotej
 
Deploying Joomla sites with GIT
Deploying Joomla sites with GITDeploying Joomla sites with GIT
Deploying Joomla sites with GITAshwin Date
 
Production Ready WordPress #WPLDN
Production Ready WordPress #WPLDNProduction Ready WordPress #WPLDN
Production Ready WordPress #WPLDNEdmund Turbin
 
Production Ready WordPress - WC Utrecht 2017
Production Ready WordPress  - WC Utrecht 2017Production Ready WordPress  - WC Utrecht 2017
Production Ready WordPress - WC Utrecht 2017Edmund Turbin
 
Using Git with WordPress - Presented by Nigel Rodgers.
Using Git with WordPress - Presented by Nigel Rodgers.Using Git with WordPress - Presented by Nigel Rodgers.
Using Git with WordPress - Presented by Nigel Rodgers.WordCamp Harare
 
It Takes a Village to Make WordPress
It Takes a Village to Make WordPressIt Takes a Village to Make WordPress
It Takes a Village to Make WordPressDrewAPicture
 
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...Samsul Ma'arif
 
Production ready word press
Production ready word pressProduction ready word press
Production ready word pressEdmund Turbin
 
Git in Continuous Deployment
Git in Continuous DeploymentGit in Continuous Deployment
Git in Continuous DeploymentBrett Child
 
Scaling up development of a modular code base
Scaling up development of a modular code baseScaling up development of a modular code base
Scaling up development of a modular code baseRobert Munteanu
 
PUG Romagna - Pipeline + Deployer PHP
PUG Romagna - Pipeline + Deployer PHPPUG Romagna - Pipeline + Deployer PHP
PUG Romagna - Pipeline + Deployer PHPGiuseppe Morelli
 
Scale Big With Docker — Moboom 2014
Scale Big With Docker — Moboom 2014Scale Big With Docker — Moboom 2014
Scale Big With Docker — Moboom 2014Jérôme Petazzoni
 
Gitflow. A successful Git branching model.
Gitflow. A successful Git branching model.Gitflow. A successful Git branching model.
Gitflow. A successful Git branching model.documarezc
 
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostustaVincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostustaVincitOy
 

La actualidad más candente (20)

Git and GitFlow branching model
Git and GitFlow branching modelGit and GitFlow branching model
Git and GitFlow branching model
 
Riak at Posterous
Riak at PosterousRiak at Posterous
Riak at Posterous
 
Deploying Joomla sites with GIT
Deploying Joomla sites with GITDeploying Joomla sites with GIT
Deploying Joomla sites with GIT
 
Production Ready WordPress #WPLDN
Production Ready WordPress #WPLDNProduction Ready WordPress #WPLDN
Production Ready WordPress #WPLDN
 
Juc boston2014.pptx
Juc boston2014.pptxJuc boston2014.pptx
Juc boston2014.pptx
 
Production Ready WordPress - WC Utrecht 2017
Production Ready WordPress  - WC Utrecht 2017Production Ready WordPress  - WC Utrecht 2017
Production Ready WordPress - WC Utrecht 2017
 
Using Git with WordPress - Presented by Nigel Rodgers.
Using Git with WordPress - Presented by Nigel Rodgers.Using Git with WordPress - Presented by Nigel Rodgers.
Using Git with WordPress - Presented by Nigel Rodgers.
 
It Takes a Village to Make WordPress
It Takes a Village to Make WordPressIt Takes a Village to Make WordPress
It Takes a Village to Make WordPress
 
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
 
Git workflows
Git workflowsGit workflows
Git workflows
 
There is-no-snapshot
There is-no-snapshotThere is-no-snapshot
There is-no-snapshot
 
Production ready word press
Production ready word pressProduction ready word press
Production ready word press
 
Git in Continuous Deployment
Git in Continuous DeploymentGit in Continuous Deployment
Git in Continuous Deployment
 
Scaling up development of a modular code base
Scaling up development of a modular code baseScaling up development of a modular code base
Scaling up development of a modular code base
 
PUG Romagna - Pipeline + Deployer PHP
PUG Romagna - Pipeline + Deployer PHPPUG Romagna - Pipeline + Deployer PHP
PUG Romagna - Pipeline + Deployer PHP
 
Scale Big With Docker — Moboom 2014
Scale Big With Docker — Moboom 2014Scale Big With Docker — Moboom 2014
Scale Big With Docker — Moboom 2014
 
Gitflow. A successful Git branching model.
Gitflow. A successful Git branching model.Gitflow. A successful Git branching model.
Gitflow. A successful Git branching model.
 
Mojolicious mvc
Mojolicious mvcMojolicious mvc
Mojolicious mvc
 
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostustaVincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
 
Building at a glance
Building at a glanceBuilding at a glance
Building at a glance
 

Similar a Ignite Devops Fast Moving Software

LAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLinaro
 
Improve the deployment process step by step
Improve the deployment process step by stepImprove the deployment process step by step
Improve the deployment process step by stepDaniel Fahlke
 
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.Ohad Basan
 
LCE13: Test and Validation Summit: The future of testing at Linaro
LCE13: Test and Validation Summit: The future of testing at LinaroLCE13: Test and Validation Summit: The future of testing at Linaro
LCE13: Test and Validation Summit: The future of testing at LinaroLinaro
 
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...Linaro
 
Cinder project update denver summit 2019
Cinder project update   denver summit 2019Cinder project update   denver summit 2019
Cinder project update denver summit 2019Jay Bryant
 
Jenkins in the real world - DevOpsCon 2017
Jenkins in the real world - DevOpsCon 2017Jenkins in the real world - DevOpsCon 2017
Jenkins in the real world - DevOpsCon 2017Gianluca Arbezzano
 
Advantages and disadvantages of a monorepo
Advantages and disadvantages of a monorepoAdvantages and disadvantages of a monorepo
Advantages and disadvantages of a monorepoIanDavidson56
 
Introduction to git & WordPress
Introduction to git & WordPressIntroduction to git & WordPress
Introduction to git & WordPressJosh Lee
 
Ice breaker with dev ops
Ice breaker with dev opsIce breaker with dev ops
Ice breaker with dev opsMukta Aphale
 
icebreakerwithdevops-150218112943-conversion-gate02
icebreakerwithdevops-150218112943-conversion-gate02icebreakerwithdevops-150218112943-conversion-gate02
icebreakerwithdevops-150218112943-conversion-gate02Manohar Kumar
 
Smarter deployments with octopus deploy
Smarter deployments with octopus deploySmarter deployments with octopus deploy
Smarter deployments with octopus deployThibaud Gravrand
 
Tackling Terraform at Ticketmaster
Tackling Terraform at TicketmasterTackling Terraform at Ticketmaster
Tackling Terraform at TicketmasterFastly
 
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...DynamicInfraDays
 
Eric tucker - Eliminating "Over the Fence"
Eric tucker - Eliminating "Over the Fence"Eric tucker - Eliminating "Over the Fence"
Eric tucker - Eliminating "Over the Fence"Maritime DevCon
 
Continuous Deployment Applied at MyHeritage
Continuous Deployment Applied at MyHeritageContinuous Deployment Applied at MyHeritage
Continuous Deployment Applied at MyHeritageRan Levy
 
VersionEye for PHP User Group Berlin
VersionEye for PHP User Group BerlinVersionEye for PHP User Group Berlin
VersionEye for PHP User Group BerlinRobert Reiz
 
Docker for everything
Docker for everythingDocker for everything
Docker for everythingTim Haak
 

Similar a Ignite Devops Fast Moving Software (20)

LAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMG
 
Improve the deployment process step by step
Improve the deployment process step by stepImprove the deployment process step by step
Improve the deployment process step by step
 
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
 
LCE13: Test and Validation Summit: The future of testing at Linaro
LCE13: Test and Validation Summit: The future of testing at LinaroLCE13: Test and Validation Summit: The future of testing at Linaro
LCE13: Test and Validation Summit: The future of testing at Linaro
 
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
 
Cinder project update denver summit 2019
Cinder project update   denver summit 2019Cinder project update   denver summit 2019
Cinder project update denver summit 2019
 
Jenkins in the real world - DevOpsCon 2017
Jenkins in the real world - DevOpsCon 2017Jenkins in the real world - DevOpsCon 2017
Jenkins in the real world - DevOpsCon 2017
 
Advantages and disadvantages of a monorepo
Advantages and disadvantages of a monorepoAdvantages and disadvantages of a monorepo
Advantages and disadvantages of a monorepo
 
Introduction to git & WordPress
Introduction to git & WordPressIntroduction to git & WordPress
Introduction to git & WordPress
 
Ice breaker with dev ops
Ice breaker with dev opsIce breaker with dev ops
Ice breaker with dev ops
 
icebreakerwithdevops-150218112943-conversion-gate02
icebreakerwithdevops-150218112943-conversion-gate02icebreakerwithdevops-150218112943-conversion-gate02
icebreakerwithdevops-150218112943-conversion-gate02
 
Smarter deployments with octopus deploy
Smarter deployments with octopus deploySmarter deployments with octopus deploy
Smarter deployments with octopus deploy
 
Tackling Terraform at Ticketmaster
Tackling Terraform at TicketmasterTackling Terraform at Ticketmaster
Tackling Terraform at Ticketmaster
 
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
 
Container Days
Container DaysContainer Days
Container Days
 
Eric tucker - Eliminating "Over the Fence"
Eric tucker - Eliminating "Over the Fence"Eric tucker - Eliminating "Over the Fence"
Eric tucker - Eliminating "Over the Fence"
 
Nova Updates - Kilo Edition
Nova Updates - Kilo EditionNova Updates - Kilo Edition
Nova Updates - Kilo Edition
 
Continuous Deployment Applied at MyHeritage
Continuous Deployment Applied at MyHeritageContinuous Deployment Applied at MyHeritage
Continuous Deployment Applied at MyHeritage
 
VersionEye for PHP User Group Berlin
VersionEye for PHP User Group BerlinVersionEye for PHP User Group Berlin
VersionEye for PHP User Group Berlin
 
Docker for everything
Docker for everythingDocker for everything
Docker for everything
 

Ignite Devops Fast Moving Software

  • 1. The API Contract is Dead LONG LIVE THE API CONTRACT Clint Byrum Canonical – Ubuntu Server Team
  • 2. Things move fast today! ● API's Used to be Stable ● Dependencies were few and loosely coupled http://www.flickr.com/photos/mwichary/3582507128/
  • 3. How do we keep our sanity? ● Test Coverage – Continuous Integration ● Automatic Dependency Resolution http://xkcd.com/754/
  • 4. Reality CHECK ● Test coverage is not automatic – Unless it is part of your culture ● The consumers of a library tend to over-trust the upstream's tests to ensure things are working. ● On the fly dependency resolution often makes for an unrepeatable build (YO, Maven, this means you!)
  • 5. GOOD things about FAST change ● Newer versions often add stability AND performance ● Progress – Without constraints, developers are able to add features and refactor at will ● v*.0 is bad, but v0.* is t3h awesome! http://www.flickr.com/photos/metallirat/217984892/
  • 6. BAD things about FAST change ● Stuff breaks ● Repeated Integration Cost ● Encourages bad behavior like embedding specific versions ● Kills kittens
  • 7. Case Study: libmemcached ● 0.31 released almost 1 year ago ● 0.40 current release ● Somewhere between 0.31 and 0.40, the API changed enough to break everything, requiring porting of most apps. ● 1 year of development added features like SASL support and 'memcapable' test tool
  • 8. MongoDB ● v1.2.3 released Feb 23 2010 ● Ubuntu 10.04 Lucid ships with v1.2.2 Apr 29 2010. ● v1.4.3 released May 24 2010
  • 9. Cassandra ● Very new, gaining traction quickly ● So far, releasing about 4 times per year ● Huge number of dependencies, all ship embedded at specific working versions ● Old releases are deprecated very quickly
  • 10. So why do we bother packaging? ● Stability? NO ● Predictibility, “Stasis” ● Uniformity – Easier to support just one version
  • 11. What can authors do? ● Think twice about breaking an API that has been published for a while ● Consider that just because it is v0.x doesn't mean only power users will end up using it. ● Use bold and <blink> for the “THIS IS GOING TO CHANGE” link on the download page..
  • 12. What can distributors do? ● Cry ● Refuse to move forward at the pace of these projects ● Refuse to support old library versions ● Try to support all versions ● All of the above get done in Ubuntu regularly
  • 13. How about a better idea? Something sysadmins already do...
  • 14. NO not more hand waving! http://www.flickr.com/photos/igalko/4690480668/
  • 15. Leverage YOUR Core Competencies ● Python people don't want distro python ● Perl people don't want distro perl ● And MySQL in the distro is ok, but I need percona! ● Most sysadmins just install with the OS, then build everything important from source and drop it in /usr/local
  • 16. Rather than build.. ● PPA or “Personal Package Archive” ● Launchpad service to easily build packages then make the built packages available in a special apt repository. ● Easy to add on ubuntu: 'add-apt-repository ppa:user_or_team/ppaname
  • 17. PPA details ● Once a PPA is established, Server Team would upload packages into it for an upstream ● Allows upgrades to be made available to Ubuntu users very quickly. ● Users who utilize it can upgrade instantly with 'apt-get upgrade'
  • 18. Author Participation ● Upstream can be granted upload access very easily. ● Our first “blessed” team with a PPA: https://lanchpad.net/~cassandra-ubuntu
  • 19. Derivitives Made Easy? ● Kubuntu is Ubuntu w/ KDE as the default ● How about “Youbuntu” which has your packages added on top of the distro. ● What if we made this easy?
  • 20. Got any good ideas about this? I want to hear what you think! #ubuntu-server on Freenode clint@ubuntu.com http://fewbar.com