Saturday, November 8 2014
10:00am - 11:00am
Last year, Facebook switched 100% of its production servers from a PHP to C++ compiler to our own virtual machine, HHVM. Since then, HHVM has gotten a further 2x faster, and now supports a huge number of PHP frameworks and extensions out of the box.
This talk will go through:
- Our current capabilities (frameworks and extensions)
- How we differ from standard php
- Getting HHVM up and running
- The exciting additional features available only in HHVM (spoiler, there’s lots)
Continuous Integration (CI) is the practice of successfully smashing bits of code together to make a finished product. That's it. This means using version control to manage your bits. This means testing your application throughout development, as opposed to leaving it until the very end. (Or testing it on production. This means actually communicating with your teammates and the clients throughout the process. Yes, yes, there are cool toys like Jenkins and Selenium and Mink and more serious must-learn skills such as PHPUnit and I will help demystify them for you. They all have their place. But Continuous Integration is an approach to development, an approach that we hope to get you excited about for the first time or all over again. This talk is an overview of the practice of CI, how it does applies to Drupal, and why you can't properly deploy a site without it. I will talk you through all the requisites, the low hanging fruit, the cool toys to help you refine this process. We will do this all with an honest look at how we implement CI at Promet Source and the lessons we learned and the dead-ends we found along the way. This is a talk for the technical and their bosses (especially the skeptical ones). Topics include: What is Continuous Integration? Why you must stop what you are doing right now and implement its practices. All the cool things you can do when those practices are in place. How you might go about implementing CI yourself. Right now. How you might refine and further tune your CI practice. What we are doing with BeHat, Travis CI and how it made us developers and our sites so much better.
2:30pm - 3:30pm
What this session will cover:
The difference between concurrent users and user sessions
Learn how to identify and build individual usage scenarios
The metrics that will help in developing realistic workload characterizations
Learn how to identify and model special considerations (APIs, Forms, Personalization)
Learn how to construct realistic workload models
Writing a Performance Test Plan
When a heavy load is applied to the site, where do bottlenecks emerge?
What page response times can anonymous users expect?
What page response times can authenticated users expect?
How well does the Drupal caching layer protect APIs from heavy traffic?
Overall system availability and response time are the key metrics that will result from the tests performed.
Types of Tests
Consistent Load Test Scenarios
Stress Test Scenarios
· Average Response time (in seconds)
· Average hits per second
· Total transactions per second (passed and failed)
· Total errors
· Slow queries identified
· CPU, Memory utilization
· Load Balancer, Varnish, Database analysis
· Possible bottlenecks identified
Test Environments and tools
Timeline for Performance Testing
Acceptable page response times
Current Editorial statistics
Reporting and Remediation
Optimizing the front-end
Sunday, November 9 2014
10:30am - 11:00am
Boring part: Docker is a container system that provides benefits similar to virtualization with only a fraction of the overhead. Scintillating part: Docker can host between four to six times the number of service instances than systems such as Xen or VMWare on a given piece of hardware. But thats not all! Docker also makes it simple(r) to create transportable instances, so you can spin up development servers on your laptop.
1:30pm - 2:30pm
Drupal development is getting more sophisticated. You may use a Drush make file to build a Drupal site instead of checking core code into your repo. You may use Behat to run automated behavioral tests against your site. You may use Compass to compile your Sass files into CSS.
As we add tools to the development process, we need something to make them work together. Enter Grunt!
I'll demonstrate the free and open-source Grunt Drupal Tasks project, which provides a set of common tasks related to building and testing Drupal sites. By the end of the session, you should know how to start a new Drupal project using Grunt Drupal Tasks for coordinating build and testing tasks.
GitHub repo: https://github.com/phase2/grunt-drupal-tasks
2:30pm - 3:30pm
Speed Up your site!
But don’t take my word for it.
We’ll do a series of experiments, comparing an uncached speed test to start, and then get faster and faster via optimization. Watch as we employ various methods to speed up your site, with benchmarks to prove it!
Inspired in part by the recent session at DrupalCon Amsterdam, Render Caching in Drupal 7 and 8 (https://amsterdam2014.drupal.org/session/render-caching-drupal-7-and-8) that revealed how:
“With render_cache it will be possible to really just rebuild the parts of the site that have changed, which will make even authenticated user pages very fast” and why you can “never worry again about content expiration.”
We’ll conduct a series of experiments in caching and optimization using Varnish, Facebook Big Pipe, render_cache, and more.
We’ll also take a look at considerations in striking a balance between speed and performance and fresh, dynamic content, looking at a few tips and tricks to take total control of your caching.
You’ll walk away from this session ready to apply several techniques to make your sites faster and resources to get you on your way to even further optimization.
Get inspired and do it yourself!
And we'll have fun!
3:00pm - 3:30pm
Everyone knows that the unofficial motto of Drupal is, "There's a module for that!" But everyone also knows that the fastest way to having the slowest site is to install every module under the sun. Still, when the client ranks a piece of functionality on their "must-have" list, and the only way to accomplish it involves installing a complicated module or writing your own, what other option do you have, even if it means you're site is slow as molasses? Enter Varnish, the reverse proxy wunderkind. Varnish lives near the top of the Web caching stack, intercepting every request and transforming it in arbitrary ways. At the end of this transformation pipeline, the request can be fulfilled by any of a configurable set of backends, by a cached copy of a previous backend response to a similar query, or even by a synthetic response created within Varnish itself! As a practical matter, this translates to the ability to efficiently load-balance without a dedicated load-balancer, run staging and development side by side, filter DOS attacks, and speed up your site to an extent unmatched by anything you've worked with before—even static HTML pages served by nginx aren't as fast as a Drupal home page served by Varnish. We'll start by examining what a HTTP request looks like under the hood, with a quick primer on relevant underpinnings using the OSI Model. Next, we'll consider how a request flows through Varnish from connection to completion, and the various pieces of a VCL (Varnish Control Language) program and what they do. Then, we'll dive deep into some real-world examples and look at both simple and not-so-simple solutions. Though this is intended as a beginner-level session, if there's interest or extra time, we'll finish by touching on just how powerful VCL can truly get, by considering the possibilities inherent in synthetic response creation, ESI, and C extensions.
3:30pm - 4:30pm
Content Delivery Networks (CDNs) are now a standard in large scale deployments requiring hyper-performant page loads.
But, In this day and age there are plenty of cost effective CDN solutions out there that can assure your site's performance is top notch even for the smallest of budgets.
In this session I will be covering the following talking points with examples:
- Quick overview of how content deilivery networks work
- Which is the best method for my web application
- Asset caching vs. Site caching
- Video delivery
- Why a CDN is a MUST for Mobile heavy sites
- How to successfully integrate a CDN with Drupal
- 'Gotcha's' to be aware of when integrating
- Vendors worth looking at.
- Expert Q/A