outsourcing your webapp maintenance to debian

84
#!/bin/sh # # # # # # by Francois Marier <[email protected]> # apt-get update apt-get -y upgrade Outsourcing your webapp maintenance to Debian

Upload: francois-marier

Post on 23-Jun-2015

160 views

Category:

Technology


2 download

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

#!/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

dependenciesin webapps

Page 3: Outsourcing your webapp maintenance to Debian

dependenciesin webapps

case study

Page 4: Outsourcing your webapp maintenance to Debian

dependenciesin webapps

case study

approach

Page 5: Outsourcing your webapp maintenance to Debian

dependenciesin webapps

case study

approach results

Page 6: Outsourcing your webapp maintenance to Debian

dependenciesin webapps

case studydiscussion

approach results

Page 7: Outsourcing your webapp maintenance to Debian

external depencies inweb applications

Page 8: Outsourcing your webapp maintenance to Debian

$ 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

[email protected] ├── [email protected] ├─┬ [email protected]

│ ├─┬ [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ └─┬ [email protected] │ │ │ └── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├── [email protected] │ └─┬ [email protected] │ └── [email protected]

├─┬ [email protected] │ └── [email protected]

├─┬ [email protected] │ └── [email protected]

├── [email protected] ├─┬ [email protected]

│ │ ├── [email protected] │ │ ├── [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └─┬ [email protected] │ │ │ │ └─┬ [email protected] │ │ │ │ ├── [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ ├── [email protected] │ │ │ │ └── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ └── [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ └─┬ [email protected] │ ├── [email protected] │ └── [email protected]

├── [email protected] ├─┬ [email protected]

│ ├─┬ [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

[email protected] ├── [email protected] ├─┬ [email protected]

│ ├─┬ [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ └─┬ [email protected] │ │ │ └── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├── [email protected] │ └─┬ [email protected] │ └── [email protected]

├─┬ [email protected] │ └── [email protected]

├─┬ [email protected] │ └── [email protected]

├── [email protected] ├─┬ [email protected]

│ │ ├── [email protected] │ │ ├── [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └─┬ [email protected] │ │ │ │ └─┬ [email protected] │ │ │ │ ├── [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ ├── [email protected] │ │ │ │ └── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ └── [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ └─┬ [email protected] │ ├── [email protected] │ └── [email protected]

├── [email protected] ├─┬ [email protected]

│ ├─┬ [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

[email protected] ├── [email protected] ├─┬ [email protected]

│ ├─┬ [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ └─┬ [email protected] │ │ │ └── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├── [email protected] │ └─┬ [email protected] │ └── [email protected]

├─┬ [email protected] │ └── [email protected]

├─┬ [email protected] │ └── [email protected]

├── [email protected] ├─┬ [email protected]

│ │ ├── [email protected] │ │ ├── [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └─┬ [email protected] │ │ │ │ └─┬ [email protected] │ │ │ │ ├── [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ ├── [email protected] │ │ │ │ └── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ └── [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ └─┬ [email protected] │ ├── [email protected] │ └── [email protected]

├── [email protected] ├─┬ [email protected]

│ ├─┬ [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

not a new problem

Page 13: Outsourcing your webapp maintenance to Debian

c/c++ dynamic linking

Page 14: Outsourcing your webapp maintenance to Debian

shared libraryinstead of bundling

Page 15: Outsourcing your webapp maintenance to Debian

fix libbroken once

Page 16: Outsourcing your webapp maintenance to Debian

fix libbroken once

maintaineruploads the newupstream version

Page 17: Outsourcing your webapp maintenance to Debian

fix libbroken once

maintaineruploads the newupstream version

security teampatches the

stable package

Page 18: Outsourcing your webapp maintenance to Debian

How to leverage thiswork in our webapps?

Page 19: Outsourcing your webapp maintenance to Debian

libravatar.org

Page 20: Outsourcing your webapp maintenance to Debian

libravatar.org

Page 21: Outsourcing your webapp maintenance to Debian

delivering (federated) avatarsto third-party websites

Page 22: Outsourcing your webapp maintenance to Debian
Page 23: Outsourcing your webapp maintenance to Debian
Page 24: Outsourcing your webapp maintenance to Debian
Page 25: Outsourcing your webapp maintenance to Debian

www

Page 26: Outsourcing your webapp maintenance to Debian

www

cdn2cdn1 cdn4 cdn5

Page 27: Outsourcing your webapp maintenance to Debian

www

cdn2cdn1 cdn4 cdn5

Page 28: Outsourcing your webapp maintenance to Debian

www

cdn2cdn1 cdn4 cdn5

Page 29: Outsourcing your webapp maintenance to Debian

www

cdn2cdn1 cdn4 cdn5

Page 30: Outsourcing your webapp maintenance to Debian

www

cdn2cdn1 cdn4 cdn5

Page 31: Outsourcing your webapp maintenance to Debian

www

cdn2cdn1 cdn4 cdn5yours?

Page 32: Outsourcing your webapp maintenance to Debian
Page 35: Outsourcing your webapp maintenance to Debian

0110e86fdb31486c22dd381326d99de9

Page 36: Outsourcing your webapp maintenance to Debian

http://gravatar.com/avatar/0110e86...

Page 37: Outsourcing your webapp maintenance to Debian

$ 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

http://fmarier.org/avatar/0110e86...

Page 39: Outsourcing your webapp maintenance to Debian

http://cdn.libravatar.org/avatar/

https://seccdn.libravatar.org/avatar/

Page 40: Outsourcing your webapp maintenance to Debian

a pretty simpleweb application

Page 41: Outsourcing your webapp maintenance to Debian

guidelines

Page 42: Outsourcing your webapp maintenance to Debian

only use Python libraries thatare packaged for Debian

guidelines

1.

Page 43: Outsourcing your webapp maintenance to Debian

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

libravatar*.deb

Page 45: Outsourcing your webapp maintenance to Debian

build:

“upstream” makefile

Page 46: Outsourcing your webapp maintenance to Debian

build: $(MINIFY) $(COMPRESS) mofiles

“upstream” makefile

Page 47: Outsourcing your webapp maintenance to Debian

build: $(MINIFY) $(COMPRESS) mofiles...

test:

“upstream” makefile

Page 48: Outsourcing your webapp maintenance to Debian

build: $(MINIFY) $(COMPRESS) mofiles...

test: pep8 pyflakes pylint unittests...

“upstream” makefile

Page 49: Outsourcing your webapp maintenance to Debian

libravatar.deblibravatar-www.deblibravatar-cdn.deblibravatar-seccdn.deblibravatar-cdn-common.deblibravatar-common.deb...

Page 50: Outsourcing your webapp maintenance to Debian

reprepro

Page 51: Outsourcing your webapp maintenance to Debian

fabric

Page 52: Outsourcing your webapp maintenance to Debian

keeping mirrors up to date

apt-get update

apt-get upgrade

Page 53: Outsourcing your webapp maintenance to Debian

How did it go?

Page 54: Outsourcing your webapp maintenance to Debian

limited choice of libraries

Page 55: Outsourcing your webapp maintenance to Debian

python-gearman.libgearman

python-gearman

Page 56: Outsourcing your webapp maintenance to Debian

$ 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

cannot use the latest features

Page 58: Outsourcing your webapp maintenance to Debian
Page 59: Outsourcing your webapp maintenance to Debian

Libravatar is a verylow-maintainance service

Page 60: Outsourcing your webapp maintenance to Debian

Problems I ran into

Page 61: Outsourcing your webapp maintenance to Debian

optimizing for sysadminsinstead of developers

Page 62: Outsourcing your webapp maintenance to Debian
Page 63: Outsourcing your webapp maintenance to Debian

non-minified jQuery

Page 64: Outsourcing your webapp maintenance to Debian
Page 65: Outsourcing your webapp maintenance to Debian

cannot easily useunattended-upgrades

Page 66: Outsourcing your webapp maintenance to Debian

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

security updates notalways timely in Debian

Page 68: Outsourcing your webapp maintenance to Debian

if you notice...

Page 69: Outsourcing your webapp maintenance to Debian

if you notice...

you can help out withbackporting or testing!

Page 70: Outsourcing your webapp maintenance to Debian

if you don't notice...

Page 71: Outsourcing your webapp maintenance to Debian

if you don't notice...

better late than never!

Page 72: Outsourcing your webapp maintenance to Debian

www

Page 73: Outsourcing your webapp maintenance to Debian
Page 74: Outsourcing your webapp maintenance to Debian

Is it realistic?

Page 75: Outsourcing your webapp maintenance to Debian
Page 76: Outsourcing your webapp maintenance to Debian
Page 77: Outsourcing your webapp maintenance to Debian

django

system libraries

deb packaging

Page 78: Outsourcing your webapp maintenance to Debian

What would be a good fit?

Page 79: Outsourcing your webapp maintenance to Debian

not your full-time job

Page 80: Outsourcing your webapp maintenance to Debian

not your full-time job

uses a mature framework

Page 81: Outsourcing your webapp maintenance to Debian

e.g. side project

Page 82: Outsourcing your webapp maintenance to Debian

e.g. consulting company

Page 83: Outsourcing your webapp maintenance to Debian

[email protected] ├── [email protected] ├─┬ [email protected]

│ ├─┬ [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ └─┬ [email protected] │ │ │ └── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├── [email protected] │ └─┬ [email protected] │ └── [email protected]

├─┬ [email protected] │ └── [email protected]

├─┬ [email protected] │ └── [email protected]

├── [email protected] ├─┬ [email protected]

│ │ ├── [email protected] │ │ ├── [email protected] │ │ ├─┬ [email protected] │ │ │ ├── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └─┬ [email protected] │ │ │ │ └─┬ [email protected] │ │ │ │ ├── [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ ├── [email protected] │ │ │ │ └── [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ └─┬ [email protected] │ │ │ └── [email protected] │ │ └─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ └─┬ [email protected] │ ├── [email protected] │ └── [email protected]

├── [email protected] ├─┬ [email protected]

│ ├─┬ [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

© 2014 François Marier <[email protected]>This work is licensed under aCreative Commons Attribution-ShareAlike 4.0 License.

Questions?