SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
Plone in the Cloud
                           A CMS hosted on Amazon EC2
                                Nate Aune (Jazkarta.com)
                                      PyCon 2009
                                       Chicago, IL

Tuesday, April 7, 2009                                     1
• President of Jazkarta (based in Boston)
                         • 3 Full-time and 10 freelance developers
                         • Python-based open source web applications
                         • Members of core Plone framework team
                         • Member of the Plone Foundation Board

Tuesday, April 7, 2009                                                 2
In the next 30 min...

                         • Amazon Web Services (AWS)
                         • AWS with Python
                         • Plone with AWS
                         • Tools for launching & remote deployment
                         • Challenges of using AWS
                         • Monitoring and maintaining EC2 instances
Tuesday, April 7, 2009                                                3
What is
                    Amazon Web Services?



Tuesday, April 7, 2009                     4
What is Amazon Web Services?

                                 • Suite of elastic IT
                                   infrastructure services
                                 • Requisition computing
                                   power and storage
                                 • Run any application
                                   you want on any OS



Tuesday, April 7, 2009                                       5
Benefits of AWS

                         • Metered pricing (per hour / per GB)
                           •   no large up-front capital investments

                           •   only pay for what you use

                         • Scaleable hosting architecture
                         • Redundancy for high availability

Tuesday, April 7, 2009                                                 6
AWS Architecture

                         • EC2 = Elastic Computing Cloud
                         • S3 = Simple Storage Solution
                         • EBS = Elastic Block Storage
                         • Elastic IP = Static IP addresses

Tuesday, April 7, 2009                                        7
Elastic Computing Cloud (EC2)
                                  amazon.com/ec2


                         • Use an existing AMI (Amazon Machine Image)
                           to launch a new instance
                         • Or create your own AMIs (even paid ones)
                         • Attach EBS volumes to your EC2 instance


Tuesday, April 7, 2009                                                  8
Elastic Block Storage
                                  (EBS)




Tuesday, April 7, 2009                           9
So how does Python
                           play into all this?


Tuesday, April 7, 2009                           10
Enter Boto
Tuesday, April 7, 2009                11
What is Boto?
                         • Python package that provides interfaces to
                           Amazon Web Services
                         • Thanks to author Mitch Garnaat!
                         • Boto supports:
                          • S3 via the REST API
                          • EC2 via the Query API
                          • and more...
Tuesday, April 7, 2009                                                  12
Install Boto & Bototools
            $ sudo easy_install boto

            $ svn co http://bototools.googlecode.com/svn/trunk/ bototools

            $ cd bototools

            $ sudo python setup.py install

            $ sudo python ./src/bototools/postinstall.py -p /usr/local/bin




         • This will put these commands in /usr/local/bin:
          • ec2start, ec2stop, ec2ip, ec2ls, ec2img
          • s3ls, s3rm, s3cp
Tuesday, April 7, 2009                                                       13
Using Bototools

                         • Set these environment variables:
                          • AWS_ACCESS_KEY
                          • AWS_SECRET_ACCESS_KEY
                          • EC2_SSH_KEY
                         • Can also put in ~/.boto or /etc/boto.cfg

Tuesday, April 7, 2009                                                14
Find an AMI

           • We will use the Ubuntu 8.10 Intrepid (32-bit)
                   from Alestic.com - ami-7cfd1a15
           • More can be found at:
                   http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=171




Tuesday, April 7, 2009                                                                             15
Launch an instance
                   $ ec2start -a ami-7cfd1a15 -k gsg-keypair

                   Reservation:r-0f26a666

                   [Instance:i-8e3154e7]

                   $ ec2ls

                   Reservation r-0f26a666

                   i-8e3154e7 pending None 2009-03-25T01:49:24.000Z

                   ...wait...

                   $ ec2ls

                   Reservation r-0f26a666

                   i-8e3154e7 running None 2009-03-25T01:49:24.000Z
                   ec2-174-129-238-8.compute-1.amazonaws.com


Tuesday, April 7, 2009                                                16
Associate a static IP
                         $ ec2ip -g

                         Address:174.129.238.8

                         $ ec2ip -l

                         174.129.238.8 ->

                         $ ec2ip -a 174.129.238.8 i-8e3154e7

                         True

                         $ ec2ip -l

                         174.129.238.8 -> i-8e3154e7


             • Note: once you assign a static IP, you won't be
                     able to access the machine using the original IP.
Tuesday, April 7, 2009                                                   17
Log in
         $ ec2ls

         Reservation r-0f26a666

         i-8e3154e7 running None 2009-03-25T01:49:24.000Z
         ec2-174-129-238-8.compute-1.amazonaws.com

         $ ssh -i ~/id_rsa-gsg-keypair root@ec2-174-129-238-8.compute-1.amazonaws.com

         Linux domU-12-31-39-00-E5-14 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686

         root@domU-12-31-39-00-E5-14:~#




         • Time to play!
Tuesday, April 7, 2009                                                                             18
Stop the instance
                         $ ec2stop i-8e3154e7

                         Stopping ['i-8e3154e7']

                         $ ec2ls

                         Reservation r-0f26a666

                         i-8e3154e7 terminated None 2009-03-25T01:49:24.000Z




                         • Be sure to stop the instance or
                           you will be charged!

Tuesday, April 7, 2009                                                         19
Use the AWS Console




Tuesday, April 7, 2009                         20
Or use ElasticFox
                 •       Firefox extension to start/stop EC2 instances, assign
                         IPs, associate EBS volumes and create keypairs.




       http://developer.amazonwebservices.com/connect/entry.jspa?externalID=609&categoryID=88



Tuesday, April 7, 2009                                                                          21
Case study
                         Plone on EC2




Tuesday, April 7, 2009                  22
What is Plone?
              • Open source content management system (CMS)
              • Built on top of Zope
              • Written in Python
              • Large international community
              • Used by Oxfam, NASA, Novell, Akamai, FSF, etc.
               • more listed at http://plone.net/sites
Tuesday, April 7, 2009                                           23
Why Plone on EC2?

                                            +

                               • Too few Zope hosting providers
                               • Avoid renting rackspace in co-lo
                               • Flexible and scalable architecture
                               • Complete control of servers
Tuesday, April 7, 2009                                            24
What is PondCMS?
                               PondCMS = Plone On Demand


                          • Hosted and supported version of Plone
                          • Eliminate the complexities of hosting
                          • Turnkey - automated and repeatable
                          • Bundled with certified add-ons
                         www.jazkarta.com/pondcms
Tuesday, April 7, 2009                                              25
PondCMS Technology stack
                           HTTP proxy


                          Caching proxy


                                            0%1&2
                          Load Balancer



                                                         +
                                            *#quot;+
                            PondCMS         ,-./+            add-ons




                                            *#quot;+
                         Web App Server     ,-./+




                         Operating System   *#quot;+
                                            ,-./+




                          Virtual Servers   !quot;#$%&!'()



Tuesday, April 7, 2009                                                 26
One server deployment
                                              Apache
                                                             HTTP
                                              (HTTP)




                                              Varnish
                                             (Caching)




                                               Pound
                                          (Load balancing)




                               1                2                         n
                         Zope Client #1   Zope Client #1            Zope Client #n




                                            Zeo Server




                                           Zeo Backup




Tuesday, April 7, 2009                                                               27
Add Zeo clients as
                         demand increases




Tuesday, April 7, 2009                        28
Multi server deployment
                                                    Website visitor



                                                                             HTTP
                                                                                                                   Elastic Block Storage

                                                              public IP: 72.44.50.237
                                                                      Apache
                                           Frontend server                                                             Apache logs
                                                                      Varnish
                                                                       Pound




                         Application Servers



                                     1                                   2                              n
                         zope-1.web.private:8222             zope-2.web.private:8222        zope-n.web.private:8222
                              Zope client #1                      Zope client #2                 Zope client #n




                                                                                                                 Elastic Block Storage
                                               Database server


                                                              zeo-1.web.private:8221
                                                                                                                          Data.fs
                                                                   Zeo server #1




                                                                                                                         Data
                                                                                                      Data.fs Backup     files


                                                                                        Simple Storage Solution (S3)


Tuesday, April 7, 2009                                                                                                                     29
Goal: automate everything
                         Scripts for repeatable deployment
                 1. Bootstrap the server
                 2. Install dependencies
                 3. Install PondCMS (includes Plone + add-ons)
                 4. Configure backups
                 5. Create the Plone site and Apache vhosts


Tuesday, April 7, 2009                                           30
1. Bootstrap server
                 1. Create the EC2 instance
                 2. Create an EBS volume
                 3. Associate volume with EC2 instance
                 4. Acquire IP address
                 5. Associate IP with EC2 instance



Tuesday, April 7, 2009                                   31
2. Install dependencies
                  1. Install packages with apt-get
                         • zope, python, varnish, apache2, pound, postfix
                  2. Initialize EBS volume and mount as ext3 fs
                  3. Store Apache log files on EBS volume
                  4. Register server with Landscape
                  5. Set up Pound to start automatically
                  6. Set up Pound to point to Zeo clients

Tuesday, April 7, 2009                                                     32
3. Install PondCMS

                         1. Make a 'zope' user
                         2. Create a virtualenv
                         3. Make Zope data dirs on EBS volume
                         4. Download PondCMS tarball release (incl. Plone)
                         5. Install PondCMS into virtualenv


Tuesday, April 7, 2009                                                       33
4. Configure backups

                         • Configure logfile rotation
                         • Setup backup scripts (using repozo)
                         • Setup sync of backups to S3 (using Duplicity)
                         • Create cron jobs for backups (daily, weekly)

Tuesday, April 7, 2009                                                     34
5. Create Plone site & vhosts
                         1. Use Fabric (remote deployment tool) to:
                           • Make Plone site incl. CacheFu setup
                           • Make vhost for accessing site on port 80

                         2. Create Apache vhosts for:
                           • supervisor.domainname.com (start/stop Zope)
                           • admin.domainname.com (ZMI access)
Tuesday, April 7, 2009                                                     35
What is Fabric?



Tuesday, April 7, 2009                     36
What is Fabric?
                           http://www.nongnu.org/fab/




                • Simple remote deployment tool
                • Similar to Capistrano (Ruby on Rails)
                • Deploy applications to multiple similar hosts


Tuesday, April 7, 2009                                            37
Setup site Fabric script
        @require('host', 'site_id')
        @fabricset(host='fab_hosts', user='fab_user', key='fab_key_filename'
        def createplonesite(host=None, user=None, key=None, site_id=None,

                                     public_host=None):
                  quot;quot;quot;Create a new plone site quot;quot;quot;
                  if not site_id:
                         site_id = host
                  installzcml(host=host, user=user, key=key, package='pondcms.basi

                  restart(host=host, user=user, key=key)
                  put('createplonesite.py', '/tmp/createplonesite.py')
            s = SERVICE+'/bin/utility run /tmp/createplonesite.py -a
        pondcms.basicapp -s '+site_id
                  if public_host:

                         s += ' --site-url='+public_host
                  run(s)
Tuesday, April 7, 2009                                                         38
Setup vhost Fabric script
        @require('host', 'vhost_name')
        @fabricset(host='fab_hosts', user='fab_user', key='fab_key_filename'
        def setupvhost(host=None, user=None, key=None, vhost_name=None):
                  quot;quot;quot;Setup an apache2 vhostquot;quot;quot;
                  site = VHOST_TEMPL % {'vhost_name': vhost_name}
                  tmpfile = '/tmp/'+get('fab_timestamp')+'_vhost'
                  f = open(tmpfile, 'w')
                  f.write(site)
                  f.close()
                  targetf = vhost_name+'.conf'
                  target = '/etc/apache2/sites-available/' + targetf
                  put(tmpfile, target)
                  run('a2ensite vhost_name')
                  run('/etc/init.d/apache2 reload')

Tuesday, April 7, 2009                                                     39
Running Fabric scripts
         $ cd fabric

         $ source bin/active

         (fabric)$ cd fabs/pondcms

         (fabric)$ fab
         createplonesite:host=test.pondcms.net,user=root,key=~/id_rsa-gsg-
         keypair,site_id=test.pondcms.net,public_host=http://
         test.pondcms.net

         ...

         (fabric)$ fab setupvhost:host=test.pondcms.net,user=root,key=~/
         id_rsa-gsg-keypair,vhost_name=test.pondcms.net




Tuesday, April 7, 2009                                                       40
Challenges
                         • Persistent data must be stored on EBS
                         • Static IPs
                         • Mail sent from EC2 instances flagged as spam
                         • Monitoring and maintenance of VMs
                          • Landscape
                          • ZenOss
                          • Nagios
                          • Hyperic
Tuesday, April 7, 2009                                                   41
Tuesday, April 7, 2009   42
AWS Status history




Tuesday, April 7, 2009                        43
Landscape
                          monitoring / updates




                         • http://landscape.canonical.com
Tuesday, April 7, 2009                                      44
Landscape update pkgs




Tuesday, April 7, 2009                       45
Thank you!
                                 Questions?

                            Follow me on Twitter:
                                   natea

                                Or email me at:
                         natea (at) jazkarta (dot) com

Tuesday, April 7, 2009                                   46
More info
             • Amazon EC2: http://amazon.com/ec2
             • Boto: http://code.google.com/p/boto
             • Bototools: http://code.google.com/p/bototools/
             • Fabric: http://www.nongnu.org/fabric
             • Fabulatr: http://code.google.com/p/fabulatr/
             • Plone: http://plone.org
             • PondCMS: http://jazkarta.com/pondcms
Tuesday, April 7, 2009                                          47
Other resources
         • Ubuntu on EC2:
                  http://groups.google.com/group/ec2ubuntu
         • Ubuntu AMIs: http://www.alestic.com
         • Beta program: http://www.ubuntu.com/ec2
         • Landscape: http://landscape.canonical.com
         • vm-builder-ec2:
                  http://packages.ubuntu.com/intrepid-updates/utils/python-vm-builder-ec2


         • Enomaly's Elastic Computing Platform:
                  http://src.enomaly.com/
Tuesday, April 7, 2009                                                                      48
Photo credits
   • http://www.flickr.com/photos/docman/66137352/
   • http://www.flickr.com/photos/thomashawk/126534906/
   • http://www.flickr.com/photos/moeview/498544386/
   • http://www.flickr.com/photos/shellysblogger/
           2464969383/
   • http://www.flickr.com/photos/mhw/56386662/
   • http://www.flickr.com/photos/mrtopf/1541527579/
Tuesday, April 7, 2009                                49

Contenu connexe

Tendances

PXEless Discovery with Foreman
PXEless Discovery with ForemanPXEless Discovery with Foreman
PXEless Discovery with ForemanStephen Benjamin
 
Fast & Furious: Speed in the Opera browser
Fast & Furious: Speed in the Opera browserFast & Furious: Speed in the Opera browser
Fast & Furious: Speed in the Opera browserAndreas Bovens
 
Running Asterisk on virtualized environments
Running Asterisk on virtualized environmentsRunning Asterisk on virtualized environments
Running Asterisk on virtualized environmentsSaúl Ibarra Corretgé
 
UCLUG TorqueBox - 03/08/2011
UCLUG TorqueBox - 03/08/2011UCLUG TorqueBox - 03/08/2011
UCLUG TorqueBox - 03/08/2011tobiascrawley
 
Automated Deployment with Fabric
Automated Deployment with FabricAutomated Deployment with Fabric
Automated Deployment with Fabrictanihito
 
Microarmy - by J2 Labs
Microarmy - by J2 LabsMicroarmy - by J2 Labs
Microarmy - by J2 LabsJames Dennis
 
Video Killed the Rolex Star (CocoaConf Columbus, July 2015)
Video Killed the Rolex Star (CocoaConf Columbus, July 2015)Video Killed the Rolex Star (CocoaConf Columbus, July 2015)
Video Killed the Rolex Star (CocoaConf Columbus, July 2015)Chris Adamson
 
Red Dirt Ruby Conference
Red Dirt Ruby ConferenceRed Dirt Ruby Conference
Red Dirt Ruby ConferenceJohn Woodell
 
Capistrano, Puppet, and Chef
Capistrano, Puppet, and ChefCapistrano, Puppet, and Chef
Capistrano, Puppet, and ChefDavid Benjamin
 
Stupid Video Tricks, CocoaConf Seattle 2014
Stupid Video Tricks, CocoaConf Seattle 2014Stupid Video Tricks, CocoaConf Seattle 2014
Stupid Video Tricks, CocoaConf Seattle 2014Chris Adamson
 
Video Killed the Rolex Star (CocoaConf San Jose, November, 2015)
Video Killed the Rolex Star (CocoaConf San Jose, November, 2015)Video Killed the Rolex Star (CocoaConf San Jose, November, 2015)
Video Killed the Rolex Star (CocoaConf San Jose, November, 2015)Chris Adamson
 
Foreman presentation
Foreman presentationForeman presentation
Foreman presentationGlen Ogilvie
 
Introducing Container Technology to TSUBAME3.0 Supercomputer
Introducing Container Technology to TSUBAME3.0 SupercomputerIntroducing Container Technology to TSUBAME3.0 Supercomputer
Introducing Container Technology to TSUBAME3.0 SupercomputerAkihiro Nomura
 
Spacebrew: The Overview
Spacebrew: The OverviewSpacebrew: The Overview
Spacebrew: The OverviewBrett Renfer
 
Travel with your mock server
Travel with your mock serverTravel with your mock server
Travel with your mock serverJorge Ortiz
 
Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...
Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...
Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...JAX London
 
Switch as a Server - PuppetConf 2014 - Leslie Carr
Switch as a Server - PuppetConf 2014 - Leslie CarrSwitch as a Server - PuppetConf 2014 - Leslie Carr
Switch as a Server - PuppetConf 2014 - Leslie CarrCumulus Networks
 
Hosting a Rails App
Hosting a Rails AppHosting a Rails App
Hosting a Rails AppJosh Schramm
 

Tendances (20)

PXEless Discovery with Foreman
PXEless Discovery with ForemanPXEless Discovery with Foreman
PXEless Discovery with Foreman
 
Fast & Furious: Speed in the Opera browser
Fast & Furious: Speed in the Opera browserFast & Furious: Speed in the Opera browser
Fast & Furious: Speed in the Opera browser
 
Running Asterisk on virtualized environments
Running Asterisk on virtualized environmentsRunning Asterisk on virtualized environments
Running Asterisk on virtualized environments
 
UCLUG TorqueBox - 03/08/2011
UCLUG TorqueBox - 03/08/2011UCLUG TorqueBox - 03/08/2011
UCLUG TorqueBox - 03/08/2011
 
Automated Deployment with Fabric
Automated Deployment with FabricAutomated Deployment with Fabric
Automated Deployment with Fabric
 
Microarmy - by J2 Labs
Microarmy - by J2 LabsMicroarmy - by J2 Labs
Microarmy - by J2 Labs
 
Video Killed the Rolex Star (CocoaConf Columbus, July 2015)
Video Killed the Rolex Star (CocoaConf Columbus, July 2015)Video Killed the Rolex Star (CocoaConf Columbus, July 2015)
Video Killed the Rolex Star (CocoaConf Columbus, July 2015)
 
Red Dirt Ruby Conference
Red Dirt Ruby ConferenceRed Dirt Ruby Conference
Red Dirt Ruby Conference
 
Capistrano, Puppet, and Chef
Capistrano, Puppet, and ChefCapistrano, Puppet, and Chef
Capistrano, Puppet, and Chef
 
Stupid Video Tricks, CocoaConf Seattle 2014
Stupid Video Tricks, CocoaConf Seattle 2014Stupid Video Tricks, CocoaConf Seattle 2014
Stupid Video Tricks, CocoaConf Seattle 2014
 
RubyConf 2009
RubyConf 2009RubyConf 2009
RubyConf 2009
 
Video Killed the Rolex Star (CocoaConf San Jose, November, 2015)
Video Killed the Rolex Star (CocoaConf San Jose, November, 2015)Video Killed the Rolex Star (CocoaConf San Jose, November, 2015)
Video Killed the Rolex Star (CocoaConf San Jose, November, 2015)
 
Foreman presentation
Foreman presentationForeman presentation
Foreman presentation
 
Introducing Container Technology to TSUBAME3.0 Supercomputer
Introducing Container Technology to TSUBAME3.0 SupercomputerIntroducing Container Technology to TSUBAME3.0 Supercomputer
Introducing Container Technology to TSUBAME3.0 Supercomputer
 
Spacebrew: The Overview
Spacebrew: The OverviewSpacebrew: The Overview
Spacebrew: The Overview
 
Travel with your mock server
Travel with your mock serverTravel with your mock server
Travel with your mock server
 
Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...
Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...
Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...
 
Switch as a Server - PuppetConf 2014 - Leslie Carr
Switch as a Server - PuppetConf 2014 - Leslie CarrSwitch as a Server - PuppetConf 2014 - Leslie Carr
Switch as a Server - PuppetConf 2014 - Leslie Carr
 
London Hug 19/5 - Terraform in Production
London Hug 19/5 - Terraform in ProductionLondon Hug 19/5 - Terraform in Production
London Hug 19/5 - Terraform in Production
 
Hosting a Rails App
Hosting a Rails AppHosting a Rails App
Hosting a Rails App
 

En vedette

AWS Webcast - Neudesic Data Centermigrationtoaws
AWS Webcast - Neudesic Data CentermigrationtoawsAWS Webcast - Neudesic Data Centermigrationtoaws
AWS Webcast - Neudesic Data CentermigrationtoawsAmazon Web Services
 
CMS Site Migration and Security Audit
CMS Site Migration and Security AuditCMS Site Migration and Security Audit
CMS Site Migration and Security AuditMetaKave
 
Journey to the Center of Drupal: How I learned to build Drupal sites the ‘rig...
Journey to the Center of Drupal: How I learned to build Drupal sites the ‘rig...Journey to the Center of Drupal: How I learned to build Drupal sites the ‘rig...
Journey to the Center of Drupal: How I learned to build Drupal sites the ‘rig...Julia Kulla-Mader
 
Moving from a Static Site to a CMS or from one CMS to Another Without Losing ...
Moving from a Static Site to a CMS or from one CMS to Another Without Losing ...Moving from a Static Site to a CMS or from one CMS to Another Without Losing ...
Moving from a Static Site to a CMS or from one CMS to Another Without Losing ...Julia Kulla-Mader
 
Effectively Engaging Stakeholders in Drupal Projects
Effectively Engaging Stakeholders in Drupal ProjectsEffectively Engaging Stakeholders in Drupal Projects
Effectively Engaging Stakeholders in Drupal ProjectsJulia Kulla-Mader
 
Audc 2013 5 online trends for association websites
Audc 2013 5 online trends for association websitesAudc 2013 5 online trends for association websites
Audc 2013 5 online trends for association websitesVanguard Technology
 
Common Pitfalls for your Drupal Site, and How to Avoid Them
Common Pitfalls for your Drupal Site, and How to Avoid ThemCommon Pitfalls for your Drupal Site, and How to Avoid Them
Common Pitfalls for your Drupal Site, and How to Avoid ThemAcquia
 
Build a Better Website. 5 Online Trends to Employ Now!
Build a Better Website. 5 Online Trends to Employ Now!Build a Better Website. 5 Online Trends to Employ Now!
Build a Better Website. 5 Online Trends to Employ Now!Vanguard Technology
 
Caching Strategies for Scaling Drupal: Common Missteps vs Best Practices
Caching Strategies for Scaling Drupal: Common Missteps vs Best PracticesCaching Strategies for Scaling Drupal: Common Missteps vs Best Practices
Caching Strategies for Scaling Drupal: Common Missteps vs Best PracticesAcquia
 
Open Source and Cloud Beyond tech
Open Source and Cloud Beyond techOpen Source and Cloud Beyond tech
Open Source and Cloud Beyond techKubair Shirazee
 
Website Redesign and CMS Migrations - 2013 AMP Annual Meeting
Website Redesign and CMS Migrations - 2013 AMP Annual MeetingWebsite Redesign and CMS Migrations - 2013 AMP Annual Meeting
Website Redesign and CMS Migrations - 2013 AMP Annual MeetingVanguard Technology
 
Migrating to Drupal 8: How to Migrate Your Content and Minimize the Risks
Migrating to Drupal 8: How to Migrate Your Content and Minimize the RisksMigrating to Drupal 8: How to Migrate Your Content and Minimize the Risks
Migrating to Drupal 8: How to Migrate Your Content and Minimize the RisksAcquia
 
Out With the Old, in With the Open-source: Brainshark's Complete CMS Migration
Out With the Old, in With the Open-source: Brainshark's Complete CMS MigrationOut With the Old, in With the Open-source: Brainshark's Complete CMS Migration
Out With the Old, in With the Open-source: Brainshark's Complete CMS MigrationAcquia
 
Content migration - CSV to Drupal 8
Content migration -  CSV to Drupal 8Content migration -  CSV to Drupal 8
Content migration - CSV to Drupal 8Hector Iribarne
 
Better understanding your prospects, clients, stakeholders and end users usin...
Better understanding your prospects, clients, stakeholders and end users usin...Better understanding your prospects, clients, stakeholders and end users usin...
Better understanding your prospects, clients, stakeholders and end users usin...Kubair Shirazee
 
Migration from Legacy CMS to Drupal
Migration from Legacy CMS to DrupalMigration from Legacy CMS to Drupal
Migration from Legacy CMS to DrupalRachel Jaro
 
Agile Methodology - Data Migration v1.0
Agile Methodology - Data Migration v1.0Agile Methodology - Data Migration v1.0
Agile Methodology - Data Migration v1.0Julian Samuels
 
Migrating data: How to reduce risk
Migrating data: How to reduce riskMigrating data: How to reduce risk
Migrating data: How to reduce riskETLSolutions
 
A Roadmap to Data Migration Success
A Roadmap to Data Migration SuccessA Roadmap to Data Migration Success
A Roadmap to Data Migration SuccessFindWhitePapers
 
Site Migration and Content Strategy
Site Migration and Content StrategySite Migration and Content Strategy
Site Migration and Content StrategyRandy Carey
 

En vedette (20)

AWS Webcast - Neudesic Data Centermigrationtoaws
AWS Webcast - Neudesic Data CentermigrationtoawsAWS Webcast - Neudesic Data Centermigrationtoaws
AWS Webcast - Neudesic Data Centermigrationtoaws
 
CMS Site Migration and Security Audit
CMS Site Migration and Security AuditCMS Site Migration and Security Audit
CMS Site Migration and Security Audit
 
Journey to the Center of Drupal: How I learned to build Drupal sites the ‘rig...
Journey to the Center of Drupal: How I learned to build Drupal sites the ‘rig...Journey to the Center of Drupal: How I learned to build Drupal sites the ‘rig...
Journey to the Center of Drupal: How I learned to build Drupal sites the ‘rig...
 
Moving from a Static Site to a CMS or from one CMS to Another Without Losing ...
Moving from a Static Site to a CMS or from one CMS to Another Without Losing ...Moving from a Static Site to a CMS or from one CMS to Another Without Losing ...
Moving from a Static Site to a CMS or from one CMS to Another Without Losing ...
 
Effectively Engaging Stakeholders in Drupal Projects
Effectively Engaging Stakeholders in Drupal ProjectsEffectively Engaging Stakeholders in Drupal Projects
Effectively Engaging Stakeholders in Drupal Projects
 
Audc 2013 5 online trends for association websites
Audc 2013 5 online trends for association websitesAudc 2013 5 online trends for association websites
Audc 2013 5 online trends for association websites
 
Common Pitfalls for your Drupal Site, and How to Avoid Them
Common Pitfalls for your Drupal Site, and How to Avoid ThemCommon Pitfalls for your Drupal Site, and How to Avoid Them
Common Pitfalls for your Drupal Site, and How to Avoid Them
 
Build a Better Website. 5 Online Trends to Employ Now!
Build a Better Website. 5 Online Trends to Employ Now!Build a Better Website. 5 Online Trends to Employ Now!
Build a Better Website. 5 Online Trends to Employ Now!
 
Caching Strategies for Scaling Drupal: Common Missteps vs Best Practices
Caching Strategies for Scaling Drupal: Common Missteps vs Best PracticesCaching Strategies for Scaling Drupal: Common Missteps vs Best Practices
Caching Strategies for Scaling Drupal: Common Missteps vs Best Practices
 
Open Source and Cloud Beyond tech
Open Source and Cloud Beyond techOpen Source and Cloud Beyond tech
Open Source and Cloud Beyond tech
 
Website Redesign and CMS Migrations - 2013 AMP Annual Meeting
Website Redesign and CMS Migrations - 2013 AMP Annual MeetingWebsite Redesign and CMS Migrations - 2013 AMP Annual Meeting
Website Redesign and CMS Migrations - 2013 AMP Annual Meeting
 
Migrating to Drupal 8: How to Migrate Your Content and Minimize the Risks
Migrating to Drupal 8: How to Migrate Your Content and Minimize the RisksMigrating to Drupal 8: How to Migrate Your Content and Minimize the Risks
Migrating to Drupal 8: How to Migrate Your Content and Minimize the Risks
 
Out With the Old, in With the Open-source: Brainshark's Complete CMS Migration
Out With the Old, in With the Open-source: Brainshark's Complete CMS MigrationOut With the Old, in With the Open-source: Brainshark's Complete CMS Migration
Out With the Old, in With the Open-source: Brainshark's Complete CMS Migration
 
Content migration - CSV to Drupal 8
Content migration -  CSV to Drupal 8Content migration -  CSV to Drupal 8
Content migration - CSV to Drupal 8
 
Better understanding your prospects, clients, stakeholders and end users usin...
Better understanding your prospects, clients, stakeholders and end users usin...Better understanding your prospects, clients, stakeholders and end users usin...
Better understanding your prospects, clients, stakeholders and end users usin...
 
Migration from Legacy CMS to Drupal
Migration from Legacy CMS to DrupalMigration from Legacy CMS to Drupal
Migration from Legacy CMS to Drupal
 
Agile Methodology - Data Migration v1.0
Agile Methodology - Data Migration v1.0Agile Methodology - Data Migration v1.0
Agile Methodology - Data Migration v1.0
 
Migrating data: How to reduce risk
Migrating data: How to reduce riskMigrating data: How to reduce risk
Migrating data: How to reduce risk
 
A Roadmap to Data Migration Success
A Roadmap to Data Migration SuccessA Roadmap to Data Migration Success
A Roadmap to Data Migration Success
 
Site Migration and Content Strategy
Site Migration and Content StrategySite Migration and Content Strategy
Site Migration and Content Strategy
 

Similaire à Plone in the Cloud - an on-demand CMS hosted on Amazon EC2

Yakiniku on the Cloud
Yakiniku on the CloudYakiniku on the Cloud
Yakiniku on the CloudTakao Funami
 
Castles in the Cloud: Developing with Google App Engine
Castles in the Cloud: Developing with Google App EngineCastles in the Cloud: Developing with Google App Engine
Castles in the Cloud: Developing with Google App Enginecatherinewall
 
Getting Started with PoolParty and EC2
Getting Started with PoolParty and EC2Getting Started with PoolParty and EC2
Getting Started with PoolParty and EC2Nate Murray
 
The Twitter API: A Presentation to Adobe
The Twitter API: A Presentation to AdobeThe Twitter API: A Presentation to Adobe
The Twitter API: A Presentation to AdobeAlex Payne
 
Developing and Deploying Java applications on the Amazon Elastic Compute Clou...
Developing and Deploying Java applications on the Amazon Elastic Compute Clou...Developing and Deploying Java applications on the Amazon Elastic Compute Clou...
Developing and Deploying Java applications on the Amazon Elastic Compute Clou...Chris Richardson
 
AWS Summit Santa Slara 2019 Mar ECS
AWS Summit Santa Slara 2019 Mar ECSAWS Summit Santa Slara 2019 Mar ECS
AWS Summit Santa Slara 2019 Mar ECSTung Nguyen
 
DjangoCon 2009 Keynote
DjangoCon 2009 KeynoteDjangoCon 2009 Keynote
DjangoCon 2009 KeynoteTed Leung
 
Using Oracle Database with Amazon Web Services
Using Oracle Database with Amazon Web ServicesUsing Oracle Database with Amazon Web Services
Using Oracle Database with Amazon Web Servicesguest484c12
 
EC2ナイトセミナプレゼン資料 Rel2
EC2ナイトセミナプレゼン資料 Rel2EC2ナイトセミナプレゼン資料 Rel2
EC2ナイトセミナプレゼン資料 Rel2真一 藤川
 
Cloud Computing BP-Study 20090319
Cloud Computing BP-Study 20090319Cloud Computing BP-Study 20090319
Cloud Computing BP-Study 20090319Yukio Andoh
 
Aloha on-rails-2009
Aloha on-rails-2009Aloha on-rails-2009
Aloha on-rails-2009John Woodell
 
Getting Started with Amazon ECS: Run Docker Containers on AWS
Getting Started with Amazon ECS: Run Docker Containers on AWSGetting Started with Amazon ECS: Run Docker Containers on AWS
Getting Started with Amazon ECS: Run Docker Containers on AWSTung Nguyen
 
Amazon EC2 + Rails
Amazon EC2 + RailsAmazon EC2 + Rails
Amazon EC2 + RailsJohn Ward
 
Hands-On: Deploy Remote Graphics Desktops for Content Production (CMP422) - A...
Hands-On: Deploy Remote Graphics Desktops for Content Production (CMP422) - A...Hands-On: Deploy Remote Graphics Desktops for Content Production (CMP422) - A...
Hands-On: Deploy Remote Graphics Desktops for Content Production (CMP422) - A...Amazon Web Services
 
K8s, Amazon EKS - 유재석, AWS 솔루션즈 아키텍트
K8s, Amazon EKS - 유재석, AWS 솔루션즈 아키텍트K8s, Amazon EKS - 유재석, AWS 솔루션즈 아키텍트
K8s, Amazon EKS - 유재석, AWS 솔루션즈 아키텍트Amazon Web Services Korea
 

Similaire à Plone in the Cloud - an on-demand CMS hosted on Amazon EC2 (20)

Yakiniku on the Cloud
Yakiniku on the CloudYakiniku on the Cloud
Yakiniku on the Cloud
 
Elasticwulf Pycon Talk
Elasticwulf Pycon TalkElasticwulf Pycon Talk
Elasticwulf Pycon Talk
 
Castles in the Cloud: Developing with Google App Engine
Castles in the Cloud: Developing with Google App EngineCastles in the Cloud: Developing with Google App Engine
Castles in the Cloud: Developing with Google App Engine
 
Getting Started with PoolParty and EC2
Getting Started with PoolParty and EC2Getting Started with PoolParty and EC2
Getting Started with PoolParty and EC2
 
The Twitter API: A Presentation to Adobe
The Twitter API: A Presentation to AdobeThe Twitter API: A Presentation to Adobe
The Twitter API: A Presentation to Adobe
 
Developing and Deploying Java applications on the Amazon Elastic Compute Clou...
Developing and Deploying Java applications on the Amazon Elastic Compute Clou...Developing and Deploying Java applications on the Amazon Elastic Compute Clou...
Developing and Deploying Java applications on the Amazon Elastic Compute Clou...
 
Don Schwarz App Engine Talk
Don Schwarz App Engine TalkDon Schwarz App Engine Talk
Don Schwarz App Engine Talk
 
AWS Summit Santa Slara 2019 Mar ECS
AWS Summit Santa Slara 2019 Mar ECSAWS Summit Santa Slara 2019 Mar ECS
AWS Summit Santa Slara 2019 Mar ECS
 
DjangoCon 2009 Keynote
DjangoCon 2009 KeynoteDjangoCon 2009 Keynote
DjangoCon 2009 Keynote
 
Using Oracle Database with Amazon Web Services
Using Oracle Database with Amazon Web ServicesUsing Oracle Database with Amazon Web Services
Using Oracle Database with Amazon Web Services
 
EC2ナイトセミナプレゼン資料 Rel2
EC2ナイトセミナプレゼン資料 Rel2EC2ナイトセミナプレゼン資料 Rel2
EC2ナイトセミナプレゼン資料 Rel2
 
Cloud Computing BP-Study 20090319
Cloud Computing BP-Study 20090319Cloud Computing BP-Study 20090319
Cloud Computing BP-Study 20090319
 
Aloha on-rails-2009
Aloha on-rails-2009Aloha on-rails-2009
Aloha on-rails-2009
 
Getting Started with Amazon ECS: Run Docker Containers on AWS
Getting Started with Amazon ECS: Run Docker Containers on AWSGetting Started with Amazon ECS: Run Docker Containers on AWS
Getting Started with Amazon ECS: Run Docker Containers on AWS
 
Amazon EC2 + Rails
Amazon EC2 + RailsAmazon EC2 + Rails
Amazon EC2 + Rails
 
Hands-On: Deploy Remote Graphics Desktops for Content Production (CMP422) - A...
Hands-On: Deploy Remote Graphics Desktops for Content Production (CMP422) - A...Hands-On: Deploy Remote Graphics Desktops for Content Production (CMP422) - A...
Hands-On: Deploy Remote Graphics Desktops for Content Production (CMP422) - A...
 
Becoming Indie
Becoming IndieBecoming Indie
Becoming Indie
 
re7jweiss
re7jweissre7jweiss
re7jweiss
 
Using SQLite
Using SQLiteUsing SQLite
Using SQLite
 
K8s, Amazon EKS - 유재석, AWS 솔루션즈 아키텍트
K8s, Amazon EKS - 유재석, AWS 솔루션즈 아키텍트K8s, Amazon EKS - 유재석, AWS 솔루션즈 아키텍트
K8s, Amazon EKS - 유재석, AWS 솔루션즈 아키텍트
 

Plus de Jazkarta, Inc.

Traveling through time and place with Plone
Traveling through time and place with PloneTraveling through time and place with Plone
Traveling through time and place with PloneJazkarta, Inc.
 
Questions: A Form Library for Python with SurveyJS Frontend
Questions: A Form Library for Python with SurveyJS FrontendQuestions: A Form Library for Python with SurveyJS Frontend
Questions: A Form Library for Python with SurveyJS FrontendJazkarta, Inc.
 
The User Experience: Editing Composite Pages in Plone 6 and Beyond
The User Experience: Editing Composite Pages in Plone 6 and BeyondThe User Experience: Editing Composite Pages in Plone 6 and Beyond
The User Experience: Editing Composite Pages in Plone 6 and BeyondJazkarta, Inc.
 
WTA and Plone After 13 Years
WTA and Plone After 13 YearsWTA and Plone After 13 Years
WTA and Plone After 13 YearsJazkarta, Inc.
 
Collaborating With Orchid Data
Collaborating With Orchid DataCollaborating With Orchid Data
Collaborating With Orchid DataJazkarta, Inc.
 
Spend a Week Hacking in Sorrento!
Spend a Week Hacking in Sorrento!Spend a Week Hacking in Sorrento!
Spend a Week Hacking in Sorrento!Jazkarta, Inc.
 
Plone 5 Upgrades In Real Life
Plone 5 Upgrades In Real LifePlone 5 Upgrades In Real Life
Plone 5 Upgrades In Real LifeJazkarta, Inc.
 
Accessibility in Plone: The Good, the Bad, and the Ugly
Accessibility in Plone: The Good, the Bad, and the UglyAccessibility in Plone: The Good, the Bad, and the Ugly
Accessibility in Plone: The Good, the Bad, and the UglyJazkarta, Inc.
 
Getting Paid Without GetPaid
Getting Paid Without GetPaidGetting Paid Without GetPaid
Getting Paid Without GetPaidJazkarta, Inc.
 
An Open Source Platform for Social Science Research
An Open Source Platform for Social Science ResearchAn Open Source Platform for Social Science Research
An Open Source Platform for Social Science ResearchJazkarta, Inc.
 
For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...
For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...
For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...Jazkarta, Inc.
 
Anatomy of a Large Website Project
Anatomy of a Large Website ProjectAnatomy of a Large Website Project
Anatomy of a Large Website ProjectJazkarta, Inc.
 
Anatomy of a Large Website Project - With Presenter Notes
Anatomy of a Large Website Project - With Presenter NotesAnatomy of a Large Website Project - With Presenter Notes
Anatomy of a Large Website Project - With Presenter NotesJazkarta, Inc.
 
The Mountaineers: Scaling the Heights with Plone
The Mountaineers: Scaling the Heights with PloneThe Mountaineers: Scaling the Heights with Plone
The Mountaineers: Scaling the Heights with PloneJazkarta, Inc.
 
Academic Websites in Plone
Academic Websites in PloneAcademic Websites in Plone
Academic Websites in PloneJazkarta, Inc.
 
Online Exhibits in Plone
Online Exhibits in PloneOnline Exhibits in Plone
Online Exhibits in PloneJazkarta, Inc.
 
Online exhibits in Plone
Online exhibits in PloneOnline exhibits in Plone
Online exhibits in PloneJazkarta, Inc.
 

Plus de Jazkarta, Inc. (20)

Traveling through time and place with Plone
Traveling through time and place with PloneTraveling through time and place with Plone
Traveling through time and place with Plone
 
Questions: A Form Library for Python with SurveyJS Frontend
Questions: A Form Library for Python with SurveyJS FrontendQuestions: A Form Library for Python with SurveyJS Frontend
Questions: A Form Library for Python with SurveyJS Frontend
 
The User Experience: Editing Composite Pages in Plone 6 and Beyond
The User Experience: Editing Composite Pages in Plone 6 and BeyondThe User Experience: Editing Composite Pages in Plone 6 and Beyond
The User Experience: Editing Composite Pages in Plone 6 and Beyond
 
WTA and Plone After 13 Years
WTA and Plone After 13 YearsWTA and Plone After 13 Years
WTA and Plone After 13 Years
 
Collaborating With Orchid Data
Collaborating With Orchid DataCollaborating With Orchid Data
Collaborating With Orchid Data
 
Spend a Week Hacking in Sorrento!
Spend a Week Hacking in Sorrento!Spend a Week Hacking in Sorrento!
Spend a Week Hacking in Sorrento!
 
Plone 5 Upgrades In Real Life
Plone 5 Upgrades In Real LifePlone 5 Upgrades In Real Life
Plone 5 Upgrades In Real Life
 
Accessibility in Plone: The Good, the Bad, and the Ugly
Accessibility in Plone: The Good, the Bad, and the UglyAccessibility in Plone: The Good, the Bad, and the Ugly
Accessibility in Plone: The Good, the Bad, and the Ugly
 
Getting Paid Without GetPaid
Getting Paid Without GetPaidGetting Paid Without GetPaid
Getting Paid Without GetPaid
 
An Open Source Platform for Social Science Research
An Open Source Platform for Social Science ResearchAn Open Source Platform for Social Science Research
An Open Source Platform for Social Science Research
 
For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...
For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...
For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...
 
Anatomy of a Large Website Project
Anatomy of a Large Website ProjectAnatomy of a Large Website Project
Anatomy of a Large Website Project
 
Anatomy of a Large Website Project - With Presenter Notes
Anatomy of a Large Website Project - With Presenter NotesAnatomy of a Large Website Project - With Presenter Notes
Anatomy of a Large Website Project - With Presenter Notes
 
The Mountaineers: Scaling the Heights with Plone
The Mountaineers: Scaling the Heights with PloneThe Mountaineers: Scaling the Heights with Plone
The Mountaineers: Scaling the Heights with Plone
 
Plone+Salesforce
Plone+SalesforcePlone+Salesforce
Plone+Salesforce
 
Academic Websites in Plone
Academic Websites in PloneAcademic Websites in Plone
Academic Websites in Plone
 
Plone
PlonePlone
Plone
 
Online Exhibits in Plone
Online Exhibits in PloneOnline Exhibits in Plone
Online Exhibits in Plone
 
Online exhibits in Plone
Online exhibits in PloneOnline exhibits in Plone
Online exhibits in Plone
 
ZODB Tips and Tricks
ZODB Tips and TricksZODB Tips and Tricks
ZODB Tips and Tricks
 

Dernier

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 

Dernier (20)

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 

Plone in the Cloud - an on-demand CMS hosted on Amazon EC2

  • 1. Plone in the Cloud A CMS hosted on Amazon EC2 Nate Aune (Jazkarta.com) PyCon 2009 Chicago, IL Tuesday, April 7, 2009 1
  • 2. • President of Jazkarta (based in Boston) • 3 Full-time and 10 freelance developers • Python-based open source web applications • Members of core Plone framework team • Member of the Plone Foundation Board Tuesday, April 7, 2009 2
  • 3. In the next 30 min... • Amazon Web Services (AWS) • AWS with Python • Plone with AWS • Tools for launching & remote deployment • Challenges of using AWS • Monitoring and maintaining EC2 instances Tuesday, April 7, 2009 3
  • 4. What is Amazon Web Services? Tuesday, April 7, 2009 4
  • 5. What is Amazon Web Services? • Suite of elastic IT infrastructure services • Requisition computing power and storage • Run any application you want on any OS Tuesday, April 7, 2009 5
  • 6. Benefits of AWS • Metered pricing (per hour / per GB) • no large up-front capital investments • only pay for what you use • Scaleable hosting architecture • Redundancy for high availability Tuesday, April 7, 2009 6
  • 7. AWS Architecture • EC2 = Elastic Computing Cloud • S3 = Simple Storage Solution • EBS = Elastic Block Storage • Elastic IP = Static IP addresses Tuesday, April 7, 2009 7
  • 8. Elastic Computing Cloud (EC2) amazon.com/ec2 • Use an existing AMI (Amazon Machine Image) to launch a new instance • Or create your own AMIs (even paid ones) • Attach EBS volumes to your EC2 instance Tuesday, April 7, 2009 8
  • 9. Elastic Block Storage (EBS) Tuesday, April 7, 2009 9
  • 10. So how does Python play into all this? Tuesday, April 7, 2009 10
  • 12. What is Boto? • Python package that provides interfaces to Amazon Web Services • Thanks to author Mitch Garnaat! • Boto supports: • S3 via the REST API • EC2 via the Query API • and more... Tuesday, April 7, 2009 12
  • 13. Install Boto & Bototools $ sudo easy_install boto $ svn co http://bototools.googlecode.com/svn/trunk/ bototools $ cd bototools $ sudo python setup.py install $ sudo python ./src/bototools/postinstall.py -p /usr/local/bin • This will put these commands in /usr/local/bin: • ec2start, ec2stop, ec2ip, ec2ls, ec2img • s3ls, s3rm, s3cp Tuesday, April 7, 2009 13
  • 14. Using Bototools • Set these environment variables: • AWS_ACCESS_KEY • AWS_SECRET_ACCESS_KEY • EC2_SSH_KEY • Can also put in ~/.boto or /etc/boto.cfg Tuesday, April 7, 2009 14
  • 15. Find an AMI • We will use the Ubuntu 8.10 Intrepid (32-bit) from Alestic.com - ami-7cfd1a15 • More can be found at: http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=171 Tuesday, April 7, 2009 15
  • 16. Launch an instance $ ec2start -a ami-7cfd1a15 -k gsg-keypair Reservation:r-0f26a666 [Instance:i-8e3154e7] $ ec2ls Reservation r-0f26a666 i-8e3154e7 pending None 2009-03-25T01:49:24.000Z ...wait... $ ec2ls Reservation r-0f26a666 i-8e3154e7 running None 2009-03-25T01:49:24.000Z ec2-174-129-238-8.compute-1.amazonaws.com Tuesday, April 7, 2009 16
  • 17. Associate a static IP $ ec2ip -g Address:174.129.238.8 $ ec2ip -l 174.129.238.8 -> $ ec2ip -a 174.129.238.8 i-8e3154e7 True $ ec2ip -l 174.129.238.8 -> i-8e3154e7 • Note: once you assign a static IP, you won't be able to access the machine using the original IP. Tuesday, April 7, 2009 17
  • 18. Log in $ ec2ls Reservation r-0f26a666 i-8e3154e7 running None 2009-03-25T01:49:24.000Z ec2-174-129-238-8.compute-1.amazonaws.com $ ssh -i ~/id_rsa-gsg-keypair root@ec2-174-129-238-8.compute-1.amazonaws.com Linux domU-12-31-39-00-E5-14 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 root@domU-12-31-39-00-E5-14:~# • Time to play! Tuesday, April 7, 2009 18
  • 19. Stop the instance $ ec2stop i-8e3154e7 Stopping ['i-8e3154e7'] $ ec2ls Reservation r-0f26a666 i-8e3154e7 terminated None 2009-03-25T01:49:24.000Z • Be sure to stop the instance or you will be charged! Tuesday, April 7, 2009 19
  • 20. Use the AWS Console Tuesday, April 7, 2009 20
  • 21. Or use ElasticFox • Firefox extension to start/stop EC2 instances, assign IPs, associate EBS volumes and create keypairs. http://developer.amazonwebservices.com/connect/entry.jspa?externalID=609&categoryID=88 Tuesday, April 7, 2009 21
  • 22. Case study Plone on EC2 Tuesday, April 7, 2009 22
  • 23. What is Plone? • Open source content management system (CMS) • Built on top of Zope • Written in Python • Large international community • Used by Oxfam, NASA, Novell, Akamai, FSF, etc. • more listed at http://plone.net/sites Tuesday, April 7, 2009 23
  • 24. Why Plone on EC2? + • Too few Zope hosting providers • Avoid renting rackspace in co-lo • Flexible and scalable architecture • Complete control of servers Tuesday, April 7, 2009 24
  • 25. What is PondCMS? PondCMS = Plone On Demand • Hosted and supported version of Plone • Eliminate the complexities of hosting • Turnkey - automated and repeatable • Bundled with certified add-ons www.jazkarta.com/pondcms Tuesday, April 7, 2009 25
  • 26. PondCMS Technology stack HTTP proxy Caching proxy 0%1&2 Load Balancer + *#quot;+ PondCMS ,-./+ add-ons *#quot;+ Web App Server ,-./+ Operating System *#quot;+ ,-./+ Virtual Servers !quot;#$%&!'() Tuesday, April 7, 2009 26
  • 27. One server deployment Apache HTTP (HTTP) Varnish (Caching) Pound (Load balancing) 1 2 n Zope Client #1 Zope Client #1 Zope Client #n Zeo Server Zeo Backup Tuesday, April 7, 2009 27
  • 28. Add Zeo clients as demand increases Tuesday, April 7, 2009 28
  • 29. Multi server deployment Website visitor HTTP Elastic Block Storage public IP: 72.44.50.237 Apache Frontend server Apache logs Varnish Pound Application Servers 1 2 n zope-1.web.private:8222 zope-2.web.private:8222 zope-n.web.private:8222 Zope client #1 Zope client #2 Zope client #n Elastic Block Storage Database server zeo-1.web.private:8221 Data.fs Zeo server #1 Data Data.fs Backup files Simple Storage Solution (S3) Tuesday, April 7, 2009 29
  • 30. Goal: automate everything Scripts for repeatable deployment 1. Bootstrap the server 2. Install dependencies 3. Install PondCMS (includes Plone + add-ons) 4. Configure backups 5. Create the Plone site and Apache vhosts Tuesday, April 7, 2009 30
  • 31. 1. Bootstrap server 1. Create the EC2 instance 2. Create an EBS volume 3. Associate volume with EC2 instance 4. Acquire IP address 5. Associate IP with EC2 instance Tuesday, April 7, 2009 31
  • 32. 2. Install dependencies 1. Install packages with apt-get • zope, python, varnish, apache2, pound, postfix 2. Initialize EBS volume and mount as ext3 fs 3. Store Apache log files on EBS volume 4. Register server with Landscape 5. Set up Pound to start automatically 6. Set up Pound to point to Zeo clients Tuesday, April 7, 2009 32
  • 33. 3. Install PondCMS 1. Make a 'zope' user 2. Create a virtualenv 3. Make Zope data dirs on EBS volume 4. Download PondCMS tarball release (incl. Plone) 5. Install PondCMS into virtualenv Tuesday, April 7, 2009 33
  • 34. 4. Configure backups • Configure logfile rotation • Setup backup scripts (using repozo) • Setup sync of backups to S3 (using Duplicity) • Create cron jobs for backups (daily, weekly) Tuesday, April 7, 2009 34
  • 35. 5. Create Plone site & vhosts 1. Use Fabric (remote deployment tool) to: • Make Plone site incl. CacheFu setup • Make vhost for accessing site on port 80 2. Create Apache vhosts for: • supervisor.domainname.com (start/stop Zope) • admin.domainname.com (ZMI access) Tuesday, April 7, 2009 35
  • 36. What is Fabric? Tuesday, April 7, 2009 36
  • 37. What is Fabric? http://www.nongnu.org/fab/ • Simple remote deployment tool • Similar to Capistrano (Ruby on Rails) • Deploy applications to multiple similar hosts Tuesday, April 7, 2009 37
  • 38. Setup site Fabric script @require('host', 'site_id') @fabricset(host='fab_hosts', user='fab_user', key='fab_key_filename' def createplonesite(host=None, user=None, key=None, site_id=None, public_host=None): quot;quot;quot;Create a new plone site quot;quot;quot; if not site_id: site_id = host installzcml(host=host, user=user, key=key, package='pondcms.basi restart(host=host, user=user, key=key) put('createplonesite.py', '/tmp/createplonesite.py') s = SERVICE+'/bin/utility run /tmp/createplonesite.py -a pondcms.basicapp -s '+site_id if public_host: s += ' --site-url='+public_host run(s) Tuesday, April 7, 2009 38
  • 39. Setup vhost Fabric script @require('host', 'vhost_name') @fabricset(host='fab_hosts', user='fab_user', key='fab_key_filename' def setupvhost(host=None, user=None, key=None, vhost_name=None): quot;quot;quot;Setup an apache2 vhostquot;quot;quot; site = VHOST_TEMPL % {'vhost_name': vhost_name} tmpfile = '/tmp/'+get('fab_timestamp')+'_vhost' f = open(tmpfile, 'w') f.write(site) f.close() targetf = vhost_name+'.conf' target = '/etc/apache2/sites-available/' + targetf put(tmpfile, target) run('a2ensite vhost_name') run('/etc/init.d/apache2 reload') Tuesday, April 7, 2009 39
  • 40. Running Fabric scripts $ cd fabric $ source bin/active (fabric)$ cd fabs/pondcms (fabric)$ fab createplonesite:host=test.pondcms.net,user=root,key=~/id_rsa-gsg- keypair,site_id=test.pondcms.net,public_host=http:// test.pondcms.net ... (fabric)$ fab setupvhost:host=test.pondcms.net,user=root,key=~/ id_rsa-gsg-keypair,vhost_name=test.pondcms.net Tuesday, April 7, 2009 40
  • 41. Challenges • Persistent data must be stored on EBS • Static IPs • Mail sent from EC2 instances flagged as spam • Monitoring and maintenance of VMs • Landscape • ZenOss • Nagios • Hyperic Tuesday, April 7, 2009 41
  • 42. Tuesday, April 7, 2009 42
  • 43. AWS Status history Tuesday, April 7, 2009 43
  • 44. Landscape monitoring / updates • http://landscape.canonical.com Tuesday, April 7, 2009 44
  • 45. Landscape update pkgs Tuesday, April 7, 2009 45
  • 46. Thank you! Questions? Follow me on Twitter: natea Or email me at: natea (at) jazkarta (dot) com Tuesday, April 7, 2009 46
  • 47. More info • Amazon EC2: http://amazon.com/ec2 • Boto: http://code.google.com/p/boto • Bototools: http://code.google.com/p/bototools/ • Fabric: http://www.nongnu.org/fabric • Fabulatr: http://code.google.com/p/fabulatr/ • Plone: http://plone.org • PondCMS: http://jazkarta.com/pondcms Tuesday, April 7, 2009 47
  • 48. Other resources • Ubuntu on EC2: http://groups.google.com/group/ec2ubuntu • Ubuntu AMIs: http://www.alestic.com • Beta program: http://www.ubuntu.com/ec2 • Landscape: http://landscape.canonical.com • vm-builder-ec2: http://packages.ubuntu.com/intrepid-updates/utils/python-vm-builder-ec2 • Enomaly's Elastic Computing Platform: http://src.enomaly.com/ Tuesday, April 7, 2009 48
  • 49. Photo credits • http://www.flickr.com/photos/docman/66137352/ • http://www.flickr.com/photos/thomashawk/126534906/ • http://www.flickr.com/photos/moeview/498544386/ • http://www.flickr.com/photos/shellysblogger/ 2464969383/ • http://www.flickr.com/photos/mhw/56386662/ • http://www.flickr.com/photos/mrtopf/1541527579/ Tuesday, April 7, 2009 49