How can you avoid servers and get back to coding? Platform-as-a-service (PaaS) makes deployment easy. But which PaaS do you choose and how do you get started? This talk will examine several of the leading PaaS providers and discuss their pros/cons. We'll also give examples for how to deploy the same app to each of them to see the differences.
3. 2010-‐2011
• Nothing equivalent to Heroku for Django
developers
• Built my own PaaS (“How hard can it be?”)
• Shut down last year. Increased compeTTon
from big corps meant a race to the boUom
5. Agenda
• Why should I care?
• What is a PaaS? What are the advantages?
• Which PaaS should I use?
• When might I not want to use a PaaS?
6. Where are you
deploying/hosTng today?
• Shared hosTng (i.e. WebfacTon)
• Running your own servers (co-‐located)?
• Using an IaaS provider (i.e. AWS or Rackspace)
• Already using a plaZorm-‐as-‐a-‐service (PaaS)
9. Configuring a server
• deciding what size to get (memory, disk)
• ge]ng all the dependencies installed on it
• SSHing into the machine to deploy stuff
(feels dirty, but he’s under Tme pressure)
1 day 1 day
17. What is a PaaS?
Platform-as-a-service enables developers to create
innovative applications without operational overhead
around configuration, deployment and management.
18. Layers of infrastructure
Source: EngineYard “PaaS - State of the Market Survey” May 2012 - http://venturebeat.com/2012/07/05/engine-yard-paas-infographic/
19. Source: EngineYard “PaaS - State of the Market Survey” May 2012 - http://venturebeat.com/2012/07/05/engine-yard-paas-infographic/
20. Source: EngineYard “PaaS - State of the Market Survey” May 2012 - http://venturebeat.com/2012/07/05/engine-yard-paas-infographic/
21. Source: EngineYard “PaaS - State of the Market Survey” May 2012 - http://venturebeat.com/2012/07/05/engine-yard-paas-infographic/
22. Source: AppFog “Evolution of the Cloud: Toward a NoOps World” Jan 2012
http://gigaom.com/cloud/why-2013-is-the-year-of-noops-for-programmers-infographic/
23. Efficient, Elastic, Secure
• Lots of applications co-located on a few servers
• Drastically reduces resources
• Add/remove servers depending on load
• All secured using SELinux or LXC
24. Let them do
the boring stuff
• Patches and updates
• Migrating applications
• Backups / snapshots
• Configuring everything (web servers, load
balancers, modules, databases)
25. Define OS dependencies
www:
type: python
systempackages:
- openoffice.org
- mysql-client-5.1
5 min
37. Anatomy of a
Django app
on Dotcloud
customized settings.py for Dotcloud
createdb.py to create the database
dotcloud.yml to store config info
mkadmin.py to make the admin user
nginx.conf to config URL rewriting
postinstall to run syncdb, collectstatic
wsgi.py to serve using uWSGI
41. Anatomy of a
Django app
on Heroku
customized settings.py for Heroku
Procfile to configure process
requirements.txt to define dependencies
42. Stackato
by ActiveState
Python 3, Run anywhere, New Relic integration
http://appsembler.com/blog/django-deployment-using-stackato/
43.
44.
45. Anatomy of
Django app on
Stackato
customized settings file
stackato.yml to define services
wsgi.py to serve using uWSGI
46. OpenShift
by Redhat
Open source, Auto-scaling, Jenkins builds
http://appsembler.com/blog/django-deployment-using-openshift/
47.
48. Action hooks for running commands
during build, deploy, post-deploy, etc.
/data/ dir to store uploaded media files
Anatomy of an
OpenShift repo
.htaccess to serve up static files
application inside of wsgi dir
setup.py instead of requirements.txt
49. Stackato OpenShift Dotcloud Heroku
Python 2.7, 3.2 2.6 (2.7) 2.6.5, 2.7.2, 2.7.2
stackato runtimes
3.1.2, 3.2.2
PostgreSQL 9.1 8.4 9.0 9.1.6
MySQL 5.5 5.1 5.1 (Yes, via RDS)
Persisted FS Yes Yes Yes (Yes, via S3)
Redis Yes, 2.4 No Yes, 2.4.11 (Yes, via addon)
MongoDB Yes, 2.0 Yes, 2.2 Yes, 2.2.1 (Yes, via addon)
Memcached Yes, 1.4 No Yes (Yes, via addon)
RabbitMQ Yes, 2.4 No Yes, 2.8.5 (Yes, via addon)
Solr No No Yes, 3.4.0 (Yes, via Websolr)
Cron Yes Yes Yes Yes
Extensible Yes, apt-get install Yes, DIY cartridge Yes, custom service Yes, buildpacks
WebSockets Yes Yes Yes Yes, via Pusher add-on
50. Stackato OpenShift Dotcloud Heroku
Memory Configurable 1.5GB Unlimited
RAM sandbox
Apps Configurable No Yes, 2.8.5 (Yes, via addon)
Solr No No Yes, 3.4.0 (Yes, via Websolr)
Cron Yes Yes Yes Yes
Extensible Yes, apt-get install Yes, DIY cartridge Yes, custom service Yes, buildpacks
WebSockets Yes ? Yes Yes, via Pusher add-on
51. Why not PaaS?
• Already invested in your own infrastructure.
• Need to run on servers outside U.S.
• Special requirements not met by PaaS services