Taking Drupal development to the Cloud. Karel Bemelmans



Similar documents
Software Environment. Options. Service guarantee:. 24/7 Hardware Support. 99% uptime

BOA BARRACUDA ON ÆGIR ~ MY FIRST YEAR ~ Mladen

Achieving Continuous Integration with Drupal

Selling Virtual Private Servers. A guide to positioning and selling VPS to your customers with Heart Internet

MLADEN

How to Backup XenServer VM with VirtualIQ

Deployment - post Xserve

DevShop. Drupal Infrastructure in a Box. Jon Pugh CEO, Founder ThinkDrop Consulting Brooklyn NY

Parallels Plesk Automation

Installing an open source version of MateCat

CentOS. Apache. 1 de 8. Pricing Features Customers Help & Community. Sign Up Login Help & Community. Articles & Tutorials. Questions. Chat.

Dedicated Hosting. The best of all worlds. Build your server to deliver just what you want. For more information visit: imcloudservices.com.

Ingram Micro Cloud Hosted Services

EZcast Installation guide

Java, PHP & Ruby - Cloud Hosting

METAARCHIVE & CLOUD COMPUTING

Bigstep Server Management Service Details

TestOps: Continuous Integration when infrastructure is the product. Barry Jaspan Senior Architect, Acquia Inc.

Tips for getting started! with! Virtual Data Center!

Parallels Plesk Automation

InterWorx Clustering Guide. by InterWorx LLC

Who s Endian?

OVERVIEW. The complete IaaS platform for service providers

NAS 224 Remote Access Manual Configuration

Using Vagrant for Magento development. Alexander

Overview. The OnApp Cloud Platform. Dashboard APPLIANCES. Used Total Used Total. Virtual Servers. Blueprint Servers. Load Balancers.

EZblue BusinessServer The All - In - One Server For Your Home And Business

ENTERPRISE-CLASS MONITORING SOLUTION FOR EVERYONE ALL-IN-ONE OPEN-SOURCE DISTRIBUTED MONITORING

CloudPlatform (powered by Apache CloudStack) Version 4.2 Administrator's Guide

CYCLOPE let s talk productivity

virtualization.info Review Center SWsoft Virtuozzo (for Windows) //

JAMF Software Server Installation Guide for Linux. Version 8.6

Preparation Guide. How to prepare your environment for an OnApp Cloud v3.0 (beta) deployment.

Cloud UT. Pay-as-you-go computing explained

EZblue BusinessServer The All - In - One Server For Your Home And Business

HP Client Automation Standard Fast Track guide

PARALLELS SERVER BARE METAL 5.0 README

Active Fabric Manager (AFM) Plug-in for VMware vcenter Virtual Distributed Switch (VDS) CLI Guide

112 Linton House Union Street London SE1 0LH T: F:

Web Space Bandwidth CPU RAM / Burst IP Address Price. Economy 15GB 350GB 1GHz 384MB/512MB 1 $ Standard 50GB 750GB 1.5GHz 1GB/2GB 1 $ 39.

Syncplicity On-Premise Storage Connector

Install Guide Linux Ubuntu LTS (Lucid Lynx) Desktop

Dedicated Servers InfoGuide

This document will list the ManageEngine Applications Manager best practices

How To Manage Change In Jeepers

Boas Betzler. Planet. Globally Distributed IaaS Platform Examples AWS and SoftLayer. November 9, IBM Corporation

Desktop virtualization using SaaS Architecture

Options in Open Source Virtualization and Cloud Computing. Andrew Hadinyoto Republic Polytechnic

Active Directory - User, group, and computer account management in active directory on a domain controller. - User and group access and permissions.

INUVIKA OVD INSTALLING INUVIKA OVD ON UBUNTU (TRUSTY TAHR)

Host your websites. The process to host a single website is different from having multiple sites.

LOCKSS on LINUX. Installation Manual and the OpenBSD Transition 02/17/2011

FileCruiser Backup & Restoring Guide

Moving to Plesk Automation 11.5

Open Source in the Data Centre. John Ferlito Bulletproof Networks

VMware vsphere: Install, Configure, Manage [V5.0]

Managing your Red Hat Enterprise Linux guests with RHN Satellite

How To Set Up Egnyte For Netapp Sync For Netapp

SERVICE SCHEDULE PULSANT ENTERPRISE CLOUD SERVICES

ROCKING THE CLOUD VDI AT SAINT PAUL COLLEGE. Najam Saeed Lisa Nguyen Rob Reiter

Cache All The Things

Parallels Panel. Deployment Guide. Plesk Automation Revision 1.0

LOCKSS on LINUX. CentOS6 Installation Manual 08/22/2013

How to Create a Flexible CRM Solution Based on SugarCRM in a vcloud Environment. A VMware Cloud Evaluation Reference Document

Parallels Plesk Automation

JAMF Software Server Installation and Configuration Guide for Linux. Version 9.2

Creating a high-availability, scalable web-server system within the Digiweb cloud.

TGL VMware Presentation. Guangzhou Macau Hong Kong Shanghai Beijing

In order to upload a VM you need to have a VM image in one of the following formats:

Ensuring scalability and performance with Drupal as your audience grows

See the installation page

OnApp Cloud. The complete platform for cloud service providers. 114 Cores. 286 Cores / 400 Cores

Upgrading to Ubuntu Server Edition LTS

Interact Intranet Version 7. Technical Requirements. August Interact

CloudPlatform (powered by Apache CloudStack) Version Administrator's Guide

Deploy Big Data Extensions on vsphere Standard Edition

Quick Start Guide for VMware and Windows 7

The current version installed on your server is el6.x86_64 and it's the latest available.

Support of Windows Server 2012 The NCP Secure Enterprise VPN Server supports the Windows Server 2012 (64 bit) operating system.

Deployment Guide. How to prepare your environment for an OnApp Cloud deployment.

Easy Setup Guide 1&1 CLOUD SERVER. Creating Backups. for Linux

always available Cloud

NETGEAR SMB Storage Line Update and ReadyNAS 2100 Introduction

iweb Management Packages - List of supported services and software

PARALLELS SERVER 4 BARE METAL README

HOW TO BUILD A VMWARE APPLIANCE: A CASE STUDY

JAMF Software Server Installation and Configuration Guide for OS X. Version 9.2

ULTEO OPEN VIRTUAL DESKTOP UBUNTU (PRECISE PANGOLIN) SUPPORT

Alinto Mail Server Pro

AT&T CLOUD SERVICES. AT&T Synaptic Compute as a Service SM : How to Get Started. Version 2.0 January 2012

Small Enterprise Server Open Source Linux Based SES

The Ultimate Business & Enterprise Hosting Solutions.

Transcription:

Taking Drupal development to the Cloud Karel Bemelmans

About me Working with Internet based services since 1996 Working with Drupal since 2011 Currently the devops guy @ Nascom

Case Study: Nascom Genk, Belgium Service Design Agency Drupal & Symfony2 dev About 12-16 devs

Fase 1: Local development

Local dev: Con s Hard to setup properly properly (http://localhost) Hard to work on a shared files Hard to show your work to someone else Not a good reflection of the production environment

New setup requirements 1. Perfect copy production 2. Isolated, no more shared solutions 3. But still easy to use

Fase 2: virtual project servers

Server Setup One virtual Linux server per project, just like production (LAMP + varnish, solr, memcached, ) Automated setup (puppet) Hosted on local xen cloud + ceph distributed filesystem LDAP accounts + sudo for everyone

Workspaces Apache (nginx) Virtual hosts with dedicated php-fpm pool DocumentRoot: /data/sites/$user http://$user.project.nascom.local Shared content: /data/shared (no chmod 777 -> setfacl) Mailcatcher on every server

Setup new workspace createworkspace.sh $user cd /data/sites/$user git clone symlink /data/shared/files to www/sites/default/files create env.settings.php Done!

Drupal settings settings.php: project-specific information generic site settings (Drupal hash, ) module includes (memcached) committed in git

<?php $update_free_access = FALSE; $drupal_hash_salt = 'RANDOMSTRING'; ini_set('session.gc_probability', 1); ini_set('session.gc_divisor', 100); ini_set('session.gc_maxlifetime', 200000); ini_set('session.cookie_lifetime', 2000000); $env_config = DRUPAL_ROOT. '/sites/default/env.settings.php'; if (file_exists($env_config)) { require_once($env_config); }

Drupal settings (2) env.settings.php: environment-specific information included at the end of settings.php database info memcached prefix $conf[ foo ] = bar ; not commited in git

<?php $databases = array ( 'default' => array ( 'default' => array ( 'database' => 'dbname', 'username' => 'dbuser', 'password' => 'secret', ), ), ); $conf[ memcache_key_prefix ] = karel ;

sshfs mount Local machine: mkdir $HOME/Projects/foo sshfs user@server:/data/sites/user $HOME/Projects/foo SublimeText opens project in $HOME/Projects/foo

Remote commands work on the server via ssh, not local (git, compass, grunt, ) you can work on the shared git (e.g. GitX), but slow! IDE: disable fs scan plugins! (git plugins) leet mode: develop with vim/emacs on the virtual server remote xdebug: possible with ssh tunnels

Virtual project servers: Pro s Identical to production setup Independent of the dev s client (Mac, Win, Linux, ) Once the server is running, adding extra workspaces is fast Everyone can access it, easy to look at other people s work Easy staging setup: http://staging.project.nascom.local

Virtual project servers: Con s Takes time to setup new project (puppet!) Grows fast on hardware needs (100GB disk, 2 CPU, 4GB RAM per server), we had about 30 projects running at one point Backup and monitoring is complex Local hosted on a Xen cloud with ceph filesystem: lots of hardware problems, high operational cost

Setup 3: shared hosting on an external hosted private cloud.

VMWare platform VMWare vsphere Essentials Plus with vcenter 3 physical machines with dual octocore CPU and 128GB RAM iscsi storage over 10gigE fiber Nascom office: 100/100 fiber connection

Plesk Parallels Plesk Panel 11.5 & 12 Intended for shared hosting setups Looks good Works even better: built on standard CentOS / Ubuntu distro (apache, nginx, mysql, php-fpm, )

Shared hosting setup Linux distribution (CentOS 6.5, Ubuntu 14.04 LTS) Local users (managed by puppet) Plesk Local tools: compass, grunt, xml tools, xhprof, New Relic,

Keeping it all private? Firewall per server: iptables via ferm (puppet) dev: closed except vpn acc, ci, prod: open port 80 +.htaccess OpenVPN: masquerade vpn ip push routers for 3rd party servers = easy access

Plesk Customers: Customers (e.g. Nascom) Subscriptions: Projects (e.g. Nascom-Corporate): http://nascom-corporate.dev01.nascom.be Subdomain: Workspaces http://user.nascom-corporate.dev01.nascom.be

Working on the shared server The same as our virtual project server: bitbucket git sshfs commands via ssh

Extra daemons Install it on the dev server e.g. memcached, solr via tomcat on port 8080, Install it on another virtual server e.g. varnish on 80, connects to dev on 7080 normal: http://user.project.dev01.example.org varnish: http://user.project.varnish-dev01.example.org

Extra tools mailcatcher install it on a separate server dev/acc postfix: relayhost $ip:1025 (or PHP sendmail_path) http://mailcatcher.nascom.be:1080

Acceptance, CI, Production Same server setup as dev (puppet!) Same Plesk setup, just no subdomains: Customer: Nascom Project: Nascom-Corporate Main workspace: nascom-corporate.acc01.nascom.be Plesk htaccess setup: not firewalled, but still a password

Support servers in our cloud backup server (cheap SATA storage): NFS + rsync monitoring & alerting: only for server + applications not hardware munin, nagios3, zabbix virtual varnish server (dev, acc, ci, prod) puppet master support applications: mulesoft, Bamboo buildserver,

External shared hosting: Pro s Fast to set up: 5mins initial setup, 1min workspace Easy to backup and maintain: Plesk New production setup? Make a new dev server. Exotic setup? Make a new dev server. Still a good reflection of our production environment

External shared hosting: Con s Shared server down? All workspaces down. Solution: shard your dev servers + use provisioning Expensive. But so are humans. Bandwidth and latency requirement: 100/100mbit for Nascom office

Conclusion After 9 months: 0 downtime. Everyone happy! Dev server is about 90% of the production environment, problems: varnish, exotic server installs, FTP hosting :( Works great with automated deployment (Bamboo) Next step: automation, testing,

Statistics Latency over VPN: 8-10ms roundtrip 2TB iscsi storage 200GB traffic/month Costs: 3500 euro/month

Questions?