EuroPython 2011: ActiveState - Best Practices for Python in the Cloud
Upcoming SlideShare
Loading in...5
×
 

EuroPython 2011: ActiveState - Best Practices for Python in the Cloud

on

  • 2,765 views

Whether you’re an independent developer or development manager in a large company, “the cloud” is on everyone’s mind. But just because it’s in the cloud, doesn’t mean development and ...

Whether you’re an independent developer or development manager in a large company, “the cloud” is on everyone’s mind. But just because it’s in the cloud, doesn’t mean development and deployment is effortless. The cloud presents infrastructure and development challenges in a new way.

In this presentation, ActiveState shares best practices in building and deploying (a) Python-centric LAMP stack(s) on the cloud for a range of web-based applications froma simple Django site to HPC GPU Clusters.

Based on ActiveState’s experiences, the presentation will discuss the challenges faced and lessons learned in building an infrastructure to deploy web applications to the cloud with Python.

• Which Python packages are critical for a secure, Python-centric LAMP stack (and what it takes to build them)!
• Tips for developing, deploying, and scaling Python applications in the cloud
• How to use Python to connect and build infrastructure to support and manage your deployment

Statistics

Views

Total Views
2,765
Views on SlideShare
2,763
Embed Views
2

Actions

Likes
0
Downloads
30
Comments
0

1 Embed 2

https://twitter.com 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Gisle has been with AS since 2000 (11 years). Mostly doing Perl work. My first AS project was pyperl (for Zope corp). Python/Django stuff with David. Moved back to Norway some years ago and took a position for IT-department at University of Bergen where I try to keep our web-presence running. Zope3 and Django.
  • In this presentation, ActiveState's Gisle Aas will share best practices in building and deploying a Python-centric LAMP stack(s) on the cloud for a range of web-based applications from simple Django site to HPC GPU Clusters. Based on ActiveState ’ s experiences, I will discuss the challenges faced and lessons learned in building an infrastructure to deploy web applications to the cloud with Python. You will learn about: •Which packages are critical for a secure, Python-centric LAMP stack (and what it takes to build them)! •Tips for developing, deploying, and scaling Python applications in the cloud •How to use Python to connect and build infrastructure to support and manage your deployment
  • Whether you ’ re an independent developer or development manager in a large company, “ the cloud ” is on everyone ’ s mind. But just because it ’ s in the cloud, doesn ’ t mean development and deployment is effortless. The cloud presents infrastructure and development challenges in a new way. In this presentation, ActiveState's Gisle Aas will share best practices in building and deploying a Python-centric LAMP stack(s) on the cloud for a range of web-based applications from simple Django site to HPC GPU Clusters. Based on ActiveState ’ s experiences, I will discuss the challenges faced and lessons learned in building an infrastructure to deploy web applications to the cloud with Python. You will learn about: •Which packages are critical for a secure, Python-centric LAMP stack (and what it takes to build them)! •Tips for developing, deploying, and scaling Python applications in the cloud •How to use Python to connect and build infrastructure to support and manage your deployment
  • NIST = The National Institute of Standards and Technology On-demand self-service. A consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with each service’s provider. Broad network access. Capabilities are available over the network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs). Resource pooling. The provider’s computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to consumer demand. There is a sense of location independence in that the customer generally has no control or knowledge over the exact location of the provided resources but may be able to specify location at a higher level of abstraction (e.g., country, state, or datacenter). Examples of resources include storage, processing, memory, network bandwidth, and virtual machines. Rapid elasticity. Capabilities can be rapidly and elastically provisioned, in some cases automatically, to quickly scale out, and rapidly released to quickly scale in. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time. Measured Service. Cloud systems automatically control and optimize resource use by leveraging a metering capability1 at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency for both the provider and consumer of the utilized Technical summary: on-demand, self-service elastic infrastructure Business summary: acquiring IT resources over the Internet (cheaply)
  • NIST = National Institute of Standards and Technology's web site NIST, an agency of the U.S. Department of Commerce , was founded in 1901 as the nation's first federal physical science research laboratory. Over the years, the scientists and technical staff at NIST have made solid contributions to image processing, DNA diagnostic "chips," smoke detectors, and automated error-correcting software for machine tools. Just a few of the other areas in which NIST has had major impact include atomic clocks, X-ray standards for mammography, scanning tunneling microscopy, pollution-control technology, and high-speed dental drills. Today, NIST sets the standards and helps create the vision of what the US Government Agencies & Organizations ’ “ Clouds ” are and will become in the future. One hears a lot of ACRONYMS so it ’ s best to set the record straight first on who does what on each section of the Cloud Stack IAAS = Infrastructure As A Service PAAS = Platform As A Service SAAS = Software As A Service VPS = Virtual Private Server Cloud Software as a Service (SaaS). The capability provided to the consumer is to use the provider’s applications running on a cloud infrastructure. The applications are accessible from various client devices through a thin client interface such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings. Cloud Platform as a Service (PaaS) . The capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly application hosting environment configurations. Cloud Infrastructure as a Service (IaaS). The capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, deployed applications, and possibly limited control of select networking components (e.g., host firewalls).
  • Private cloud. The cloud infrastructure is operated solely for an organization. It may be managed by the organization or a third party and may exist on premise or off premise. Community cloud. The cloud infrastructure is shared by several organizations and supports a specific community that has shared concerns (e.g., mission, security requirements, policy, and compliance considerations). It may be managed by the organizations or a third party and may exist on premise or off premise. Public cloud. The cloud infrastructure is made available to the general public or a large industry group and is owned by an organization selling cloud services. Hybrid cloud . The cloud infrastructure is a composition of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load balancing between clouds).
  • Python in the Cloud to date has primarily focused on web applications leveraging frameworks such as Django (pony image), Flask, Bottle, Pylons (in the Past) and now Pyramid Or meant using Google ’ s App Engine (airplane image) Or perhaps uploading a Python Script to PiCloud to run on an Amazon Machine Image (AMI) using our ActivePython AMI a fully loaded Python LAMP Stack It usually means using either MySQL, Redis, or Postgres to serve up the data
  • Python in the Cloud to date has primarily focused on web applications leveraging frameworks such as Django (pony image), Flask, Bottle, Pylons (in the Past) and now Pyramid Or meant using Google ’ s App Engine (airplane image) Or perhaps uploading a Python Script to PiCloud to run on an Amazon Machine Image (AMI) using our ActivePython AMI a fully loaded Python LAMP Stack It usually means using either MySQL, Redis, or Postgres to serve up the data
  • Dropbox Reddit TrueCar – US Car Price Comparison by Location WebFilings – US Securities and Exchange Regulatory Filings MichaelMoore.com - A seriously impressive case study—a complete rebuild from the ground up completed in just five weeks using Django, Solr and Haystack for a high traffic site with a top 10,000 US Alexa ranking. the site is in the top 10,000 websites in the United States by traffic and receives millions of hits. The social media footprint is also sizable - 313,289 Twitter followers , 131,253 Facebook Fans and numerous integration points with distributed social networks. http://www.reddit.com/r/programming/comments/8b00g/why_reddit_uses_python/ http://www.oscon.com/oscon2010/public/schedule/detail/14057 The redeveloped MichaelMoore.com is a social, news-based site in the top 10,000 US sites when launched. http://www.djangobook.com/en/1.0/appendixA/
  • ActiveState has been building & deploying Python-centric LAMP stack(s) on the cloud for a range of web-based applications from simple Django site to HPC GPU Clusters for the past 2 years First for “ FireFly ” project Followed by ActivePython Amazon AMI Then for Microsoft HPC GPU Clusters THEANO Now for Stackato Cloud Platform (Dynamic Language Private PAAS Offering) Run your own Private CLOUD We decommissioned it - Firefly was our cloud hosted, integrated, secure, turn-key software project management and collaboration solution. Firefly offered both public and private projects that are highly configurable for a quick set up and provides you enterprise grade security so you can ensure peace of mind and focus on coding. Firefly was based on the popular Trac project management system, an open source project that is highly extensible and has a great community of developers behind it. Trac offers the flexibility to add new capabilities to Firefly quickly and easily, providing best-of-breed functionality that our users expect and need. Github took off. We learned a lot Then we built our Amazon ActivePython AMI Building and deploying a Python application in the cloud is a daunting task when you're starting from scratch. To enable you to develop and deploy powerful applications, faster, ActiveState and Amazon now offer the ActivePython Amazon Machine Image (AMI). With this AMI, you get ActivePython Community or Business Edition as part of a pre-built and tested Python web stack, a packaged-up environment that includes all the necessary tools to boot up and customize your instance for Amazon EC2 and deploy your cloud applications. ActivePython AMI enables you to develop powerful Python aplications faster on a private, secure AMI, then scale easily with Amazon's on-demand infrastructure. We learned a lot We learned what we really wanted…Stackato Stackato is an enterprise cloud solution for your Python and Perl cloud applications. Stackato extends Cloud Foundry so your team spends more time on value-add development and less on configuration. In 15 minutes, simply install Stackato, then deploy and run your Python and Perl applications in the cloud. Port between private clouds (such as VMware vSphere clusters) and public IaaS providers (such as Amazon or Rackspace) Provide secure multi-tenancy and configure auto-scaling Rely on the industry-proven ActivePython and ActivePerl - you choose the version Write, debug, and deploy through the command line or ActiveState's Komodo IDE Automatically provision application environments with your choice of languages, frameworks (such as Django, Pyramid, Mojolicious, Catalyst), and module/package dependencies Choose the database engine (such as MySQL, PostgreSQL, Redis) that's right for your application
  • What we learn Firefly, AMI What we are implementing with Stackato AMi “ A-M-I ”
  • http://i381.photobucket.com/albums/oo260/flrandon/KeepItSimpleSign.jpg http://i381.photobucket.com/albums/oo260/flrandon/KeepItSimpleSign.jpg http://www.phys.unsw.edu.au/~tonyt/dome%202003/isolated.JPG http://www.digitalweddingforum.com/blog/wp-content/uploads/2009/07/disposable-camera.jpg http://farm2.static.flickr.com/1264/1403322009_fb47425caa.jpg
  • http://news.netcraft.com/archives/category/web-server-survey/ LAMP still going strong after 10 years.
  • This is what our AMI contains. Raymond Hettinger & Mike Ivanvo & Diane wrote it.. The components of the web stack were selected using the principles described in ActiveState ’s Best Practices Notes on Cloud Computing with Python . Preference was given to well-known and widely used components that have proven effective. The components are loosely coupled so that alternate tools can be substituted, choosing from various web servers, web frameworks, databases, and caching tools. Run a long-term supported 64-bit Ubuntu operating system (version 10.04). The front-end for web traffic is Nginx which serves static content and routes web-traffic to multiple worker instances. The default webserver is Apache (version 2.2.16) running mod_wsgi (version 3.3.7). The programming language interpreter is ActivePython (version 2.6.6 CE upgradable to 2.6.6 BE) and it includes the PyPM packaging manager. The Python components are isolated with virtualenv (1.5.1) and made more user friendly with virtualenvwrapper. The web-server is Django (1.2.3) and it comes with its own Object Relational Mapper. Two databases are provided, SQLite3 (included in the Python distribution) and MySQL (version 5.1). The sample application for the demo website uses Memcached for its high-speed key-value store. Raymond… So lets get started (next slide)
  • http://news.netcraft.com/archives/category/web-server-survey/
  • use package managers such as  yum  and  aptitude  for tools such as Apache PyPM and Pipm for Python package dependencies ActiveState Python distribution comes with a package manager, PyPM preloaded with several major python tools which are known to work well together and have had a license review by ActiveState2122. Instructions for PyPM are found at http://docs.activestate.com/activepython/2.6/pypm.html. For other Python tools listed in the Python Package Index at http://pypi.python.org/pypi, installation can be fully automated using  pip , found at http://pip.openplans.org/. There are other Python installers, but  pip  and PyPM are an excellent choices because they tracks dependencies, automates updates, and can save their current state in a requirements file listing the specific versions installed. The latter feature is important for creating reproducible builds. Another install friendly feature of  pip  is that it downloads all dependencies  before  beginning the installs. If the needed packages are unavailable, it fails early without leaving the system in a partially installed state. PyPM has all the capabilities as  pip , pluse the advantage of a single central repository of pre-built binaries that have been tested to work on a number of platforms. In contrast,  pip  pulls resources from multiple sources, potentially delaying an install if one of the dependencies is temporarily inaccessible.
  • http://i381.photobucket.com/albums/oo260/flrandon/KeepItSimpleSign.jpg http://i381.photobucket.com/albums/oo260/flrandon/KeepItSimpleSign.jpg http://www.phys.unsw.edu.au/~tonyt/dome%202003/isolated.JPG http://www.digitalweddingforum.com/blog/wp-content/uploads/2009/07/disposable-camera.jpg http://farm2.static.flickr.com/1264/1403322009_fb47425caa.jpg
  • The third principle of installs is to compartmentalize and isolate the build environment. For Python, the dominant tools are virtualenv and virtualenvwrapper found at http://pypi.python.org/pypi/virtualenv andhttp://www.doughellmann.com/projects/virtualenvwrapper/. The virtualenv tools allow you to easily setup and switch between multiple, isolated python environments. Developers like the isolation because it lets them fearlessly install new tools for experimentation without worrying about corrupting an existing setup. Having multiple environments also solves another recurring problem related to incompatible version dependencies. For example, tool  x  requires a supporting tool  y  at version  z  and won't run with version  z+1 , but another tool may require version  z+1  but won't run with version  z . A possible solution is to have two virtual environments, one with version  z  installed and one with  z+1 . This works because each virtual environment has its own site-packages directory. Here is a sample session with an experimental installation of Twisted, a tool for asynchronous programming: $ mkvirtualenv my_experiment# create a new isolated environment$ workon my_experiment# make that environment active$ pip install twisted# install twisted and its dependencies . . .# do work with twisted installed$ deactivate# restore the original pristine environment Alternative buildout is what we use at UiB. Zope3  Django.
  • Security is the Biggest issue on the cloud or any shared environment The only truly “ trusted ” solution is Security by Isolations Security as separation Natural borders, like OS system boundaries, these are the strongest security borders you can create for application deployment.
  • http://i381.photobucket.com/albums/oo260/flrandon/KeepItSimpleSign.jpg http://i381.photobucket.com/albums/oo260/flrandon/KeepItSimpleSign.jpg http://www.phys.unsw.edu.au/~tonyt/dome%202003/isolated.JPG http://www.digitalweddingforum.com/blog/wp-content/uploads/2009/07/disposable-camera.jpg http://farm2.static.flickr.com/1264/1403322009_fb47425caa.jpg
  • The first principle of building LAMP environments is to treat them as temporary, disposable instances that can easily be rebuilt from scratch. Ideally,  all  state changes should be initiated from a build script. Avoid logging-in via ssh to run installs or to edit configurations. Instead, make edits to the build script and redeploy. Typically, hand-written scripts assume a single target machine, often the local development machine. A more versatile approach is to use a tool like Fabric which is designed to handle multiple deployment steps across multiple machines. A fabfile becomes executable documentation of how to build an AMI, run tests, and bring the system live. By treating AMIs as disposable, the problem of software updates or altering configurations becomes simpler. Just edit the fabfile and redeploy. The same strategy is also useful for moving to larger or smaller instances and for replicating instances when load-balancing. See http://docs.fabfile.org/0.9.3/ for instructions on getting started with Fabric.
  • In early development and deployment, it is convenient to put all of the major components on the same AMI. The Apache server, Django web application, Nginx front-end, database store, and database cache can be co-located on the same virtual machine. To make life easier, the components should communicate through sockets and use distinct hostnames instead of specific IP addresses. Real hostnames are preferred to 201clocalhost201d because that moving components becomes a matter of updating DNS entries and running servers do not have to be restarted. At any given time, it needs to be straight-forward to clone the AMI and retarget the hostnames, allowing the database to run on a different machine than the web server. Likewise, Nginx front-end should be able to run separately from the underlying web server(s). With this design, it even becomes possible to clone the web-servers to different virtual machines so that Nginx can balance server load. Moving the components to different virtual machines provides a starting-point for scalability. Another advantage of relocatable and clonable components is that failover and recovery become easier to implement.
  • http://i381.photobucket.com/albums/oo260/flrandon/KeepItSimpleSign.jpg http://i381.photobucket.com/albums/oo260/flrandon/KeepItSimpleSign.jpg http://www.phys.unsw.edu.au/~tonyt/dome%202003/isolated.JPG http://www.digitalweddingforum.com/blog/wp-content/uploads/2009/07/disposable-camera.jpg http://farm2.static.flickr.com/1264/1403322009_fb47425caa.jpg http://people.bukiki.com/wp-content/uploads/2009/01/bukiki-relocate.jpg
  • http://davocyan.co.uk/wp-content/uploads/open.jpg http://toomanytabs.com/blog/wp-content/uploads/2010/11/Bartopen.gif
  • jeff

EuroPython 2011: ActiveState - Best Practices for Python in the Cloud EuroPython 2011: ActiveState - Best Practices for Python in the Cloud Presentation Transcript

  • Best Practices for Python in the Cloud: Lessons Learned @ActiveState Best Practices for Python in the Cloud Presented by: Gisle Aas, Senior Developer, ActiveState
    • Gisle Aas
    • [email_address]
    • @gisle
    • github.com/gisle
    whoami?
  • Agenda
    • About ActiveState
    • What ’ s a Cloud Anyway?
    • Python in the Cloud
    • The ActiveState Experience
    • Best Practices
    • Building for PaaS (Stackato)
  • About ActiveState
    • Founded 1997
    • 2 million developers, 97% of Fortune 1000 rely on ActiveState
    • Development, management, distribution solutions for dynamic languages
    • Core languages: Python, Perl, Tcl
    • Other languages: PHP, Ruby, Javascript
    • Related products: Komodo IDE, Stackato
  • ActiveState Solutions help developers
  • Just What Is A Cloud?
    • Essential Characteristics:
    • On-demand self-service
    • Broad network access
    • Resource pooling
    • Rapid elasticity
    • Measured Service
    • Service models: IaaS, PaaS, SaaS
    • Deployment models:
    • Private cloud
    • Community cloud
    • Public cloud
    • Hybrid cloud
  • The Cloud http://xkcd.com/908/
  • Python in the Cloud
  • Who is using Python in the Cloud? even michaelmoore.com uses python!
  • What ActiveState Learned along the way…
  • Our Cloud Experience
  • Our Best Practices Guidelines
    • Simple
    • Isolated
    • Disposable
    • Relocatable
    • Portable
    • Open
  • Keep it Simple
  • Keep Your App Simple
    • Keep your code and concepts simple
    • Use simplest database that can possibly work
    • LAMP Stacks work
  • ActivePython AMI LAMP Stack for Python Web Applications
    • Ubuntu 10.04LTS 64-bit
    • Nginx
      • For static content and route web-traffic to multiple worker instances
    • Apache (2.2.16), r unning mod_wsgi (3.3.7)
    • ActivePython, with PyPM packaging manager
    • virtualenv (1.5.1) & virtualenvwrapper
    • Django (1.2.3)
    • SQLite3, MySQL 5.1, memcached
    • State of the art … 1 year ago!
      • The art changes quickly in the cloud
  • Make Deploying Apps Simple
    • Developers just want to Develop
    • Developers want to leverage familiar tools
      • VCS, IDE, etc.
    • Resolve Dependencies Automatically
    • Developers do not want to be sysadmins
      • No firewall management
      • No database installs
      • No network management
  • Manage your Packages!
    • Use package managers such as 
      • yum and aptitude for tools such as Apache
      • PyPM and Pip for Python package dependencies
    • Use pre-built package repositories
      • PyPM pulls from a single central repository of pre-built binaries that have been tested to work on a number of platforms.
      • pip  pulls resources from multiple sources, potentially delaying an install if one of the dependencies is temporarily inaccessible.
  • Keep it Isolated
  • Create in Isolated Environments
    • Compartmentalize and isolate your build environment
    • Dominant tools are virtualenv and virtualenvwrapper
      • http:// pypi.python.org/pypi/virtualenv  
      • http:// www.doughellmann.com/projects/virtualenvwrapper / .
      • Easily setup and switch between multiple, isolated python environments
    • Developers like the isolation
      • Fearlessly install new tools for experimentation without corrupting other environments
      • Allows incompatible version dependencies
  • Enable Security by Isolation
    • The only truly “trusted” solution:
    http://theinvisiblethings.blogspot.com/2008/09/three-approaches-to-computer-security.html
      • Natural borders, like OS system boundaries are the strongest security borders you can create for application deployment.
      • Security by Isolation !
  • A Choice of Solutions
    • FreeBSD Jail
    • Solaris Containers
    • IBM AIX Partitions
    • Linux-VServer
    • Parallels Virtuozzo
    • OpenVZ
    • LXC
    • Full OS virtualization
  • Make it Disposable
  • Disposable Instances
    • Treat instances as temporary, disposable instances that can easily be rebuilt from scratch
      • Manage state changes from a build script
      • Avoid logging-in via ssh to run installs or to edit configurations
    • Tools like  Fabric are designed to handle multi-step, multi-machine deployment
      • A fabfile becomes executable documentation of how to build your instance, run tests, and bring the system live
    • Simplifies software updates or altering configurations
    • Useful for adjusting instance sizes or replication for load-balancing
  • Disposable Data
    • What parts of your data is disposable
    • How to persist data
      • Locally managed data
      • Off-system data stores
    • Mirroring
      • For high-availability
      • For safety
    • Backups … need I say more?
  • Make it Relocatable
  • Relocatable Components
    • Communicate through sockets
    • Use distinct hostnames, no IP addresses
    • Make cloning easy that allows retargeting hostnames
    • Separate primary services (e.g. db and web app)
      • Allows cloning the right services for scaling
      • Backups can happen only for key components
      • Fail-over and recovery become easier to implement
      • Nginx front-end should be able to run separately from the underlying web server(s)
  • Make it Portable
  • Portability
    • Between IaaS providers
      • Amazon, Linode, RackSpace, …
    • Between PaaS systems
    • Minimize Dependencies
    • Rely on the web app framework
      • It provides many abstractions already
  • Object Relational Mappers
    • Abstracts working with databases
    • Change in response to load or storage needs
    • Decouple the database from the application
      • An adapter between different styles of database access
    • Design for scalability from the outset
  • Keep it Open
  • 6 Simple Rules to Live By
    • Simple
    • Isolated
    • Disposable
    • Relocatable
    • Portable
    • Open Source
  • Working with a PaaS Platform The Stackato Experience
  • Stackato in 6 Simple Rules
    • Simple
      • 3 step application deployment
    • Isolated
      • Security by isolation
    • Disposable
      • Reusable VMs
      • Code separated from instance
  • Stackato in 6 Simple Rules
    • Relocatable
      • Options of VMs or AMI
    • Portable
      • Both with the VM and code by design
    • Open Source
      • Based on Cloud Foundry
      • LAMPy stack
  • Stackato Architecture
    • Based on Cloud Foundry
    • Designed to be:
      • Infrastructure Independent
      • Scalable
      • Extensible
    Cloud Controller http router DEAs mysql redis mongo Stackato Client mail mq Services
  • Stackato from a Developer Perspective
    • 3 Step App Deployment
      • Install the 'stackato' client with pypm
      • Set the 'target' URL
      • Run 'stackato push ’
    • Client bundles the application and pushes it to the server
    • Config files in the application directory tell the cloud controller what additional software is required
    • The application environment is assembled, and the application is deployed to one or more worker nodes
    • Questions?
    • Next Steps:
      • Find out more about Stackato
        • activestate.com/cloud
      • Request Information:
          • Business- [email_address]
          • 1-866-510-2914
  •