Enterprise-level EE: Uptime, Speed, and Scale

Similar documents
Dry Dock Documentation

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

Tushar Joshi Turtle Networks Ltd

Improving your Drupal Development workflow with Continuous Integration

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

Scalability of web applications. CSCI 470: Web Science Keith Vertanen

Managing your Red Hat Enterprise Linux guests with RHN Satellite

5 Mistakes to Avoid on Your Drupal Website

Developer Workshop Marc Dumontier McMaster/OSCAR-EMR

MAGENTO HOSTING Progressive Server Performance Improvements

Log management with Logstash and Elasticsearch. Matteo Dessalvi

MySQL Storage Engines

SQL Server Replication Guide

Platform as a Service and Container Clouds

Linux A first-class citizen in Windows Azure. Bruno Terkaly bterkaly@microsoft.com Principal Software Engineer Mobile/Cloud/Startup/Enterprise

YouTube Vitess. Cloud-Native MySQL. Oracle OpenWorld Conference October 26, Anthony Yeh, Software Engineer, YouTube.

Version control with GIT

SQL Server Training Course Content

AWS Schema Conversion Tool. User Guide Version 1.0

Zero Downtime Deployments with Database Migrations. Bob Feldbauer

CI Pipeline with Docker

Understanding MySQL storage and clustering in QueueMetrics. Loway

WEBAPP PATTERN FOR APACHE TOMCAT - USER GUIDE

Getting Started with SandStorm NoSQL Benchmark

Workflow Templates Library

Learn Oracle WebLogic Server 12c Administration For Middleware Administrators

Essential Visual Studio Team System

Developing tests for the KVM autotest framework

Migration Scenario: Migrating Backend Processing Pipeline to the AWS Cloud

making drupal run fast

Intro to Docker and Containers

TECHNOLOGY WHITE PAPER Jun 2012

Database Administration with MySQL

Data management on HPC platforms

ASULPUNTO Magento unicenta opos integration extension Version 1.0.0

Salesforce Integration

Version Control with Git. Linux Users Group UT Arlington. Rohit Rawat

Alfresco Enterprise on AWS: Reference Architecture

Workflows and Patterns. #jenkinsconf

Building Success on Acquia Cloud:

Intellicus Cluster and Load Balancing (Windows) Version: 7.3

Continuous Integration. CSC 440: Software Engineering Slide #1

Evolution of Web Application Architecture International PHP Conference. Kore Nordmann / <kore@qafoo.com> June 9th, 2015

How To Set Up An Intellicus Cluster And Load Balancing On Ubuntu (Windows) With A Cluster And Report Server (Windows And Ubuntu) On A Server (Amd64) On An Ubuntu Server

History of Disaster - The BioWare Community Site

ANECDOTAL DEVELOPMENT & DEPLOYMENT. A Case-Study in PHP Project Workflow Lone Star PHP - June 2011 Brian Blood

SkySQL Data Suite. A New Open Source Approach to MySQL Distributed Systems. Serge Frezefond V

Dave Stokes MySQL Community Manager

The SkySQL Administration Console

Docker : devops, shared registries, HPC and emerging use cases. François Moreews & Olivier Sallou

Jenkins World Tour 2015 Santa Clara, CA, September 2-3

Performance for Site Builders

Category: Business Process and Integration Solution for Small Business and the Enterprise

Who did what, when, where and how MySQL Audit Logging. Jeremy Glick & Andrew Moore 20/10/14

Simple Tips to Improve Drupal Performance: No Coding Required. By Erik Webb, Senior Technical Consultant, Acquia

IBM Cloud Manager with OpenStack

ABRAHAM ARCHITECTURE OF A CLOUD SERVICE USING PYTHON TECHNOLOGIES

Drupal in the Cloud. Scaling with Drupal and Amazon Web Services. Northern Virginia Drupal Meetup

Top Weblogic Tasks You can Automate Now

Software configuration management

Enterprise Application Monitoring with

Linux/Open Source and Cloud computing Wim Coekaerts Senior Vice President, Linux and Virtualization Engineering

Volume SYSLOG JUNCTION. User s Guide. User s Guide

H2O on Hadoop. September 30,

Google App Engine. Guido van Rossum Stanford EE380 Colloquium, Nov 5, 2008

Comparing SQL and NOSQL databases

JavaScript Applications for the Enterprise: From Empty Folders to Managed Deployments. George Bochenek Randy Jones

Using MySQL for Big Data Advantage Integrate for Insight Sastry Vedantam

MySQL. Leveraging. Features for Availability & Scalability ABSTRACT: By Srinivasa Krishna Mamillapalli

Amazon Elastic Beanstalk

WHITE PAPER Redefining Monitoring for Today s Modern IT Infrastructures

IT Support Tracking with Request Tracker (RT)

System Administration Training Guide. S100 Installation and Site Management

Why Engine Yard is better than Do it yourself

There are numerous ways to access monitors:

OTM Performance OTM Users Conference Jim Mooney Vice President, Product Development August 11, 2015

ZooKeeper Administrator's Guide

A central continuous integration platform

CHAPTER 1 - JAVA EE OVERVIEW FOR ADMINISTRATORS

MySQL 5.0 vs. Microsoft SQL Server 2005

Data Transfer Management with esync 1.5

HDFS Users Guide. Table of contents

SCALABLE DATA SERVICES

Using the Coherence Cloud Service

Hosting Drupal on Amazon Web Services (AWS) Heather Wozniak, Ph.D. Web Developer, UW College of Arts & Sciences hwozniak@uw.edu

So in order to grab all the visitors requests we add to our workbench a non-test-element of the proxy type.

Openbravo ERP Magento. Installation Guide

5 Percona Toolkit tools that could save your day. Stéphane Combaudon FOSDEM February 3rd, 2013

TIBCO Silver Fabric Continuity User s Guide

CatDV Pro Workgroup Serve r

Real World Enterprise SQL Server Replication Implementations. Presented by Kun Lee

Putting It All Together. Vagrant Drush Version Control

Implementing Reverse Proxy Using Squid. Prepared By Visolve Squid Team

REDCap General Security Overview

Installing an open source version of MateCat

LoadRunner and Performance Center v11.52 Technical Awareness Webinar Training

CLOUD DEVELOPMENT BEST PRACTICES & SUPPORT APPLICATIONS

DAVE Usage with SVN. Presentation and Tutorial v 2.0. May, 2014

Transcription:

Enterprise-level EE: Uptime, Speed, and Scale

Reaching beyond EE tools and techniques to service enterprise clients

1. Intro 2. In-memory Caching 3. Load Balancing 4. Multi-environment setup with Docker 5. Scaling MySQL Tables 6. Monitoring / Logging

vectormediagroup.com/blog @VectorNYC

@abenjaminsmith benjaminsmith.com

1. Intro 2. In-memory Caching 3. Load Balancing 4. Multi-environment setup with Docker 5. Scaling MySQL Tables 6. Monitoring / Logging

Caching: Lowest-hanging fruit on the tree of optimization

Caching» Tag caching caching» Template caching» Query caching» HTTP proxy/accelerator

EE without reverse-proxy cache» Standard LAMP setup

EE with Varnish Cache» Sits between users and EE» Passes through requests to EE

EE with Varnish Cache» Sits between users and EE» Passes through requests to EE» Serves from memory if cached

1. Intro 2. In-memory Caching 3. Load Balancing 4. Multi-environment setup with Docker 5. Scaling MySQL Tables 6. Monitoring / Logging

Load Balancing example.com served by multiple web servers

No Load Balancing

Varnish Load Balancing

1. Intro 2. In-memory Caching 3. Load Balancing 4. Multi-environment setup with Docker 5. Scaling MySQL Tables 6. Monitoring / Logging

Multiple Environments» Local/development» Staging» QA» Production

The old way... 1. Checkout new branch from master 2. <do something amazing with code> 3. Add new fields to your local EE instance 4. Merge into staging branch 5. Deploy to staging server 6. Add new fields to your staging EE instance 7. Email the client for them to review!

Boo that» How to stage multiple WIP features at once?» Field ID conflicts» Which features are currently staged?» Stale data on Staging/QA servers

Docker Docker containers wrap up a piece of software in a complete filesystem that contains everything it needs to run» consistent and reproducible» isolated software» lightweight

The new way... vmg stage ProjectA feature-new-modal 1. Deploys feature to feature-new-modal.projecta.vmg.com 2. DB is latest snapshot from live site (< 1 day old) 3. Runs tests 4. Send notifcations to HipChat

How is this possible?» Docker images built nightly from live site data» Wildcard DNS» Docker volume persistance» Environment variable configuration (phpdotenv) $db['default']['database'] = getenv('db_name'); $db['default']['username'] = getenv('db_user'); $db['default']['hostname'] = getenv('db_host'); $db['default']['password'] = getenv('db_pass'); $db['default']['db_debug'] = getenv('db_debug');

Build the database!» Nightly script runs uploads MySQL dump to Amazon S3» Docker run command pulls in latest DB nightly and builds MySQL container image» Image is accessible from same machine as Docker LAMP stack./run.sh build-db clientname

What we have now» Docker image with runnable custom MySQL server and latest DB snapshot» Can be "run" in milliseconds

Stage a feature!» Project name: "clientname"» Git branch: "feature-new-modal"./run.sh stage clientname feature-new-modal

Stage a feature! 1. run Docker containers from pre-built images 2. git clone 3. composer install --no-dev 4. configure Apache to set environment variables 5. dynamic.htaccess config 6. set file/dir permissions 7. let proxy server know we're here!

Proxy server» Listens on port 80/443» Docker web servers, listening on random port» new Docker images tell proxy server the port assignment github.com/jwilder/nginx-proxy

1. Intro 2. In-memory Caching 3. Load Balancing 4. Multi-environment setup with Docker 5. Scaling MySQL Tables 6. Monitoring / Logging

Basic MySQL optimizations» MySQL schema tweaks» indices» column types» MySQL 5.6+ (Percona)» InnoDB» Adding new channel fields?

MySQL doesn't like to ALTER

ALTERing tables leads to locking and downtime

pt-online-schema-change alters a table s structure without blocking reads or writes

pt-online-schema-change 1. create an empty copy of the table to alter 2. ALTER the new table 3. copy rows from the original table into the new table 4. moves away the original table and replaces it with the new one 5. drops the original table

build it!

./ee-schema-change eefield add

./ee-schema-change eefield add 1. Run the command!» Adds 2 new columns exp_channel_data» Adds 1 row to exp_channel_fields 2. Configure the field as needed in the ExpressionEngine CP

1. Intro 2. In-memory Caching 3. Load Balancing 4. Multi-environment setup with Docker 5. Scaling MySQL Tables 6. Monitoring / Logging

EE as a component in a larger application

» ExpressionEngine CMS/framework» MySQL database» Cron jobs (backup scripts)» Elasticsearch cluster» Worker queues» Cache invalidation» Data integrations/importing (CRM, ERP, API)

The old way... Scanning log files is not enough» Which server do they live on?» How to search? Grep/tail?» Standardized format?

The new way...

The new way... Decentralized logging for log shipping for storage/access/high-availability for visualzation / reporting

THANK YOU. Ben