outsourcing your webapp maintenance to debian
DESCRIPTION
Today's web applications often have a lot of external dependencies. Start off with a basic framework, sprinkle a couple of handy modules and finish with a generous serving of JavaScript front-end libraries. What you end up is a gigantic mess of code from different sources which follow very different release schedules and policies. Language-specific package managers can automate much of the dependency resolution and package installation, but you're on your own in terms of integration and quality assurance. Also, the minute you start distributing someone else's code with your project, you become responsible for the security of that third-party code. We moved away from statically-linked C/C++ programs a long time ago and now (mostly) live in a nicely-packaged shared library world. Can we leverage the power of Debian (i.e. the great work of the package maintainers and security team) to similarly reduce the burden of those who end up having to maintain our webapps? This talk will examine the decision that the Libravatar project made to outsource much of its maintenance burden to Debian by using system packages for almost everything. https://summit.debconf.org/debconf14/meeting/16/outsourcing-your-webapp-maintenance-to-debian/TRANSCRIPT
![Page 1: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/1.jpg)
#!/bin/sh###### by Francois Marier <[email protected]>#
apt-get updateapt-get -y upgrade
Outsourcing your webappmaintenance to Debian
![Page 2: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/2.jpg)
dependenciesin webapps
![Page 3: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/3.jpg)
dependenciesin webapps
case study
![Page 4: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/4.jpg)
dependenciesin webapps
case study
approach
![Page 5: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/5.jpg)
dependenciesin webapps
case study
approach results
![Page 6: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/6.jpg)
dependenciesin webapps
case studydiscussion
approach results
![Page 7: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/7.jpg)
external depencies inweb applications
![Page 8: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/8.jpg)
$ ls vendor/packages/
amqplibanyjsonBeautifulSoupbeautifulsoup4bleachcelerydecoratordistributeDjangodjango-assetsdjango-authopeniddjango-celerydjango-debug-toolbardjango-extensionsdjango-inplaceeditdjango-invitationdjango-kombudjango-model-utilsdjango-picklefielddjango-registrationdjango-reversiondjango-tastypiedjango-votingdjango-webtestdj-database-urldocutilsfeedparsergdataghettoqhtml2text
html5libimportlibJinja2jsminkombumarkupsafemechanizemimeparsemockodictordereddictpygeoipPygmentspython-dateutilpython-memcachedpython-mimeparsepython-openidpython-otppython-patchpytzPyYamlrequestsscrapysessionprofilesixsouthsphinxsqlparsestaticgeneratortwilltwistedtypecheck
unicodecsvunittest-xml-reportingwebobwebtestwhooshzope.interface
![Page 9: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/9.jpg)
[email protected] ├── [email protected] ├─┬ [email protected]
│ ├─┬ [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ └─┬ [email protected] │ │ │ └── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├── [email protected] │ └─┬ [email protected] │ └── [email protected]
├─┬ [email protected] │ └── [email protected]
├─┬ [email protected] │ └── [email protected]
├── [email protected] ├─┬ [email protected]
│ │ ├── [email protected] │ │ ├── [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └─┬ [email protected] │ │ │ │ └─┬ [email protected] │ │ │ │ ├── [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ ├── [email protected] │ │ │ │ └── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ └── [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ └─┬ [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] ├─┬ [email protected]
│ ├─┬ [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ └── [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├── shelljs @0.1.4
├─┬ [email protected] │ ├─┬ [email protected] │ │ ├─┬ [email protected]
│ │ │ └── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ └── [email protected] │ └─┬ [email protected] │ ├── [email protected] │ └── [email protected]
├─┬ [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] ├─┬ [email protected]
│ └── [email protected] ├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ └─┬ [email protected] │ └── [email protected]
├─┬ [email protected] │ └── [email protected]
├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├─┬ [email protected]
│ └── [email protected] ├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ ├── [email protected] │ └─┬ [email protected] │ ├── [email protected] │ ├── [email protected] │ └─┬ [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] └─┬ [email protected]
├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├─┬ [email protected] │ ├── [email protected]
│ └── [email protected] ├─┬ [email protected]
│ └─┬ [email protected] │ └── [email protected]
├─┬ [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ └─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ └── [email protected]
├── [email protected] ├── [email protected] ├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ └── [email protected]
├─┬ [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] ├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] ├── [email protected] ├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ ├─┬ [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ └─┬ [email protected] │ │ │ └── [email protected]
![Page 10: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/10.jpg)
[email protected] ├── [email protected] ├─┬ [email protected]
│ ├─┬ [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ └─┬ [email protected] │ │ │ └── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├── [email protected] │ └─┬ [email protected] │ └── [email protected]
├─┬ [email protected] │ └── [email protected]
├─┬ [email protected] │ └── [email protected]
├── [email protected] ├─┬ [email protected]
│ │ ├── [email protected] │ │ ├── [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └─┬ [email protected] │ │ │ │ └─┬ [email protected] │ │ │ │ ├── [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ ├── [email protected] │ │ │ │ └── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ └── [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ └─┬ [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] ├─┬ [email protected]
│ ├─┬ [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ └── [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├── shelljs @0.1.4
├─┬ [email protected] │ ├─┬ [email protected] │ │ ├─┬ [email protected]
│ │ │ └── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ └── [email protected] │ └─┬ [email protected] │ ├── [email protected] │ └── [email protected]
├─┬ [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] ├─┬ [email protected]
│ └── [email protected] ├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ └─┬ [email protected] │ └── [email protected]
├─┬ [email protected] │ └── [email protected]
├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├─┬ [email protected]
│ └── [email protected] ├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ ├── [email protected] │ └─┬ [email protected] │ ├── [email protected] │ ├── [email protected] │ └─┬ [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] └─┬ [email protected]
├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├─┬ [email protected] │ ├── [email protected]
│ └── [email protected] ├─┬ [email protected]
│ └─┬ [email protected] │ └── [email protected]
├─┬ [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ └─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ └── [email protected]
├── [email protected] ├── [email protected] ├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ └── [email protected]
├─┬ [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] ├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] ├── [email protected] ├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ ├─┬ [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ └─┬ [email protected] │ │ │ └── [email protected]
![Page 11: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/11.jpg)
[email protected] ├── [email protected] ├─┬ [email protected]
│ ├─┬ [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ └─┬ [email protected] │ │ │ └── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├── [email protected] │ └─┬ [email protected] │ └── [email protected]
├─┬ [email protected] │ └── [email protected]
├─┬ [email protected] │ └── [email protected]
├── [email protected] ├─┬ [email protected]
│ │ ├── [email protected] │ │ ├── [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └─┬ [email protected] │ │ │ │ └─┬ [email protected] │ │ │ │ ├── [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ ├── [email protected] │ │ │ │ └── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ └── [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ └─┬ [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] ├─┬ [email protected]
│ ├─┬ [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ └── [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├── shelljs @0.1.4
├─┬ [email protected] │ ├─┬ [email protected] │ │ ├─┬ [email protected]
│ │ │ └── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ └── [email protected] │ └─┬ [email protected] │ ├── [email protected] │ └── [email protected]
├─┬ [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] ├─┬ [email protected]
│ └── [email protected] ├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ └─┬ [email protected] │ └── [email protected]
├─┬ [email protected] │ └── [email protected]
├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├─┬ [email protected]
│ └── [email protected] ├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ ├── [email protected] │ └─┬ [email protected] │ ├── [email protected] │ ├── [email protected] │ └─┬ [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] └─┬ [email protected]
├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├─┬ [email protected] │ ├── [email protected]
│ └── [email protected] ├─┬ [email protected]
│ └─┬ [email protected] │ └── [email protected]
├─┬ [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ └─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ └── [email protected]
├── [email protected] ├── [email protected] ├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ └── [email protected]
├─┬ [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] ├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] ├── [email protected] ├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ ├─┬ [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ └─┬ [email protected] │ │ │ └── [email protected]
1.4.4
1.2.4
1.1.7 1.5.2
![Page 12: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/12.jpg)
not a new problem
![Page 13: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/13.jpg)
c/c++ dynamic linking
![Page 14: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/14.jpg)
shared libraryinstead of bundling
![Page 15: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/15.jpg)
fix libbroken once
![Page 16: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/16.jpg)
fix libbroken once
maintaineruploads the newupstream version
![Page 17: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/17.jpg)
fix libbroken once
maintaineruploads the newupstream version
security teampatches the
stable package
![Page 18: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/18.jpg)
How to leverage thiswork in our webapps?
![Page 19: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/19.jpg)
libravatar.org
![Page 20: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/20.jpg)
libravatar.org
![Page 21: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/21.jpg)
delivering (federated) avatarsto third-party websites
![Page 22: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/22.jpg)
![Page 23: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/23.jpg)
![Page 24: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/24.jpg)
![Page 25: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/25.jpg)
www
![Page 26: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/26.jpg)
www
cdn2cdn1 cdn4 cdn5
![Page 27: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/27.jpg)
www
cdn2cdn1 cdn4 cdn5
![Page 28: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/28.jpg)
www
cdn2cdn1 cdn4 cdn5
![Page 29: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/29.jpg)
www
cdn2cdn1 cdn4 cdn5
![Page 30: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/30.jpg)
www
cdn2cdn1 cdn4 cdn5
![Page 31: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/31.jpg)
www
cdn2cdn1 cdn4 cdn5yours?
![Page 32: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/32.jpg)
![Page 35: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/35.jpg)
0110e86fdb31486c22dd381326d99de9
![Page 36: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/36.jpg)
http://gravatar.com/avatar/0110e86...
![Page 37: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/37.jpg)
$ dig SRV _avatars._tcp.fmarier.org
; <<>> DiG 9.9.5-4-Debian <<>> SRV _avatars._tcp.fmarier.org;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48289;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:; EDNS: version: 0, flags:; udp: 4096;; QUESTION SECTION:;_avatars._tcp.fmarier.org. IN SRV
;; ANSWER SECTION:_avatars._tcp.fmarier.org. 3600 IN SRV 1 0 80 fmarier.org.
;; Query time: 137 msec;; SERVER: 192.168.1.1#53(192.168.1.1);; WHEN: Sat Aug 16 14:45:04 EDT 2014;; MSG SIZE rcvd: 85
![Page 38: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/38.jpg)
http://fmarier.org/avatar/0110e86...
![Page 39: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/39.jpg)
http://cdn.libravatar.org/avatar/
https://seccdn.libravatar.org/avatar/
![Page 40: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/40.jpg)
a pretty simpleweb application
![Page 41: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/41.jpg)
guidelines
![Page 42: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/42.jpg)
only use Python libraries thatare packaged for Debian
guidelines
1.
![Page 43: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/43.jpg)
only use Python libraries thatare packaged for Debian
only use the version fromthe latest Debian release
guidelines
1.
2.
![Page 44: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/44.jpg)
libravatar*.deb
![Page 45: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/45.jpg)
build:
“upstream” makefile
![Page 46: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/46.jpg)
build: $(MINIFY) $(COMPRESS) mofiles
“upstream” makefile
![Page 47: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/47.jpg)
build: $(MINIFY) $(COMPRESS) mofiles...
test:
“upstream” makefile
![Page 48: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/48.jpg)
build: $(MINIFY) $(COMPRESS) mofiles...
test: pep8 pyflakes pylint unittests...
“upstream” makefile
![Page 49: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/49.jpg)
libravatar.deblibravatar-www.deblibravatar-cdn.deblibravatar-seccdn.deblibravatar-cdn-common.deblibravatar-common.deb...
![Page 50: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/50.jpg)
reprepro
![Page 51: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/51.jpg)
fabric
![Page 52: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/52.jpg)
keeping mirrors up to date
apt-get update
apt-get upgrade
![Page 53: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/53.jpg)
How did it go?
![Page 54: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/54.jpg)
limited choice of libraries
![Page 55: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/55.jpg)
python-gearman.libgearman
python-gearman
![Page 56: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/56.jpg)
$ apt-cache search ^python- | grep ^python | wc -l
2248
$ apt-cache search ^python3-| grep ^python | wc -l
656
![Page 57: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/57.jpg)
cannot use the latest features
![Page 58: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/58.jpg)
![Page 59: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/59.jpg)
Libravatar is a verylow-maintainance service
![Page 60: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/60.jpg)
Problems I ran into
![Page 61: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/61.jpg)
optimizing for sysadminsinstead of developers
![Page 62: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/62.jpg)
![Page 63: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/63.jpg)
non-minified jQuery
![Page 64: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/64.jpg)
![Page 65: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/65.jpg)
cannot easily useunattended-upgrades
![Page 66: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/66.jpg)
apticron report [Sat, 23 Aug 2014 10:11:08 +0000]=================================================
apticron has detected that some packages needupgrading on:
husavik [ 162.x.x.x 10.x.x.x 2001::37f0 ] [ 162.x.x.x 2001::37f0 ]
The following packages are currently pending anupgrade:
python-django 1.4.5-1+deb7u8
=================================================
![Page 67: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/67.jpg)
security updates notalways timely in Debian
![Page 68: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/68.jpg)
if you notice...
![Page 69: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/69.jpg)
if you notice...
you can help out withbackporting or testing!
![Page 70: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/70.jpg)
if you don't notice...
![Page 71: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/71.jpg)
if you don't notice...
better late than never!
![Page 72: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/72.jpg)
www
![Page 73: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/73.jpg)
![Page 74: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/74.jpg)
Is it realistic?
![Page 75: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/75.jpg)
![Page 76: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/76.jpg)
![Page 77: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/77.jpg)
django
system libraries
deb packaging
![Page 78: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/78.jpg)
What would be a good fit?
![Page 79: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/79.jpg)
not your full-time job
![Page 80: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/80.jpg)
not your full-time job
uses a mature framework
![Page 81: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/81.jpg)
e.g. side project
![Page 82: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/82.jpg)
e.g. consulting company
![Page 83: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/83.jpg)
[email protected] ├── [email protected] ├─┬ [email protected]
│ ├─┬ [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ └─┬ [email protected] │ │ │ └── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├── [email protected] │ └─┬ [email protected] │ └── [email protected]
├─┬ [email protected] │ └── [email protected]
├─┬ [email protected] │ └── [email protected]
├── [email protected] ├─┬ [email protected]
│ │ ├── [email protected] │ │ ├── [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └─┬ [email protected] │ │ │ │ └─┬ [email protected] │ │ │ │ ├── [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ ├── [email protected] │ │ │ │ └── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ └── [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ └─┬ [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] ├─┬ [email protected]
│ ├─┬ [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ └── [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├── shelljs @0.1.4
├─┬ [email protected] │ ├─┬ [email protected] │ │ ├─┬ [email protected]
│ │ │ └── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ └── [email protected] │ └─┬ [email protected] │ ├── [email protected] │ └── [email protected]
├─┬ [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] ├─┬ [email protected]
│ └── [email protected] ├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ └─┬ [email protected] │ └── [email protected]
├─┬ [email protected] │ └── [email protected]
├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├─┬ [email protected]
│ └── [email protected] ├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ ├── [email protected] │ └─┬ [email protected] │ ├── [email protected] │ ├── [email protected] │ └─┬ [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] └─┬ [email protected]
├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├─┬ [email protected] │ ├── [email protected]
│ └── [email protected] ├─┬ [email protected]
│ └─┬ [email protected] │ └── [email protected]
├─┬ [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ └─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ └── [email protected]
├── [email protected] ├── [email protected] ├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ └── [email protected]
├─┬ [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] ├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ ├── [email protected] │ └── [email protected]
├── [email protected] ├── [email protected] ├── [email protected] ├─┬ [email protected]
│ ├── [email protected] │ ├─┬ [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ └─┬ [email protected] │ │ │ └── [email protected]
![Page 84: Outsourcing your webapp maintenance to Debian](https://reader033.vdocuments.site/reader033/viewer/2022052906/558933d3d8b42ac1138b4724/html5/thumbnails/84.jpg)
© 2014 François Marier <[email protected]>This work is licensed under aCreative Commons Attribution-ShareAlike 4.0 License.
Questions?