Our Portfolio

View

Smosh

Smosh

Custom development
Site building
Theming

View Website
View

Guess Watches

Guess Watches

Custom development
Site building
Theming

View Website
View

Stanford University
School of Engineering Phase 2

Stanford University

This July, the Stanford School of Engineering (SoE) relaunched their website, finalizing a nine month project with Drupal Connect.

The first Phase of the project (completed in January) focused on migrating and combining content from a legacy HTML and custom PHP MS SQL application. The following link provides more details on the Drupal Migration efforts.

The second Phase of this project:

Built the infrastructure for content sharing between the SoE site and the Mechanical Engineering site as well as future department sites

Completely reworked the IA

Developed a new Twitter Bootstrap/Stanford Framework based theme — now available across Stanford

Included support for Nginx, Varnish, and Apache Solr

Migrated an earlier in-house SoE Drupal site (engineering-info.stanford.edu)

Initiated a new rich Content Strategy

And saw the release of several Kit-compliant Features on Stanford's new F-server

Content-Sharing Infrastructure

Stanford needed a lightweight way to share faculty bios, news/press releases, and similar content across sites. Drupal Connect created an XML/RSS Views/Feeds solution that provides simple, one-way sharing from SoE. This will allow department sites, like Mechanical Engineering relaunching August 2012, to enrich their users' visits and stay up-to-date without the extra costs and duplication of manual efforts.

The success and need of the content sharing at SoE reconfirmed our decision and inspired us to redouble our efforts to build our next-generation Drupal distribution for universities, Trekk.

A New IA

As part of Stanford's new rich experience strategy, Drupal Connect created an information architecture that makes it easy for students, alumni, and faculty/staff to find the information they are looking for and to discover the amazing work that the university is undertaking every day. The new IA was integral to Stanford's updated Content Strategy and will continue to serve the site as the content and experiences evolve.

SoE Theme

The new theme is image rich, but the code is light-weight using a base theme built on top of Twitter's Bootstrap. The new theme also incorporates custom design accents from North Studio that truly make the site pop while maintaining Stanford branding guidelines.

Varnish, Nginx, and Apache Solr

As part of our efforts to improve page speed delivery, reduce costs, and provide scalability; Drupal Connect installed and configured Varnish. Stanford's unique infrastructure also required SSL for all logins and integration with a custom Apache module, WebAuth--which ties into Stanford's Kerberos system. In order to keep the setup simple, Drupal Connect also installed and configured Nginx as a lightweight SSL endpoint that proxies requests over SSL to Apache and caches static assets for improved performance.

In coordination with the new Content Strategy, Drupal Connect installed and configured Apache Solr with several custom search pages. By using Solr, SoE visitors will find more relevant results faster.

The use of these new technologies and communication with Stanford's Web Services has established best-practices for Stanford at-large.

Conclusion

Altogether, the Phase 2 implementation:

Gives SoE visitors a better experience

Extends the reach of the External Relations enabling users to discover exciting news

Ensures up-to-date content

Reduces duplication

Saves costs

And establishes best-practices and reusable components across Stanford's campus

View Website
View

Stevens Institute of Technology
Launches 8 Bleeding-Edge Drupal Sites

Stevens Institute of Technology

Stevens Institute of Technology Launches onto Drupal

SIT Launches 8 Bleeding-edge Drupal Sites

This summer, Drupal Connect finalized a nine-month engagement with Stevens Institute of Technology that represents evolutionary work on multiple fronts. The new websites modernize Stevens' web presence, improve mobile and tablet reach, standardize the technology stack, and enrich the user experience. Drupal Connect's efforts also significantly improve the speed and efficiency of web administration, while reducing duplication and costs.

Responsive Design and an Increased Reach

Given Stevens' significant international appeal and the prevalence of mobile phones and tables as primary browsing devices, Drupal Connect created an HTML5 Responsive Design interface that adapts to wide, standard, narrow, tablet (portrait and landscape), and iPhone/Android (portrait and landscape) screens. For example, the theme adjusts elements in the News Events slider and gracefully resizes videos and typography. The new theme means more alumni, donors, and prospective students can view the sites in meaningful and full-featured ways.

APIs and Content Sharing Improve Browsing Experience and Reduce Costs

Stevens' had a large amount of back-end data — courses, staff bios, publications, patents, etc — that had traditionally been manually entered and maintained on the websites. This led not only to duplication of efforts, but also out-of-date information, minor inaccuracies, and typos. Drupal Connect collaborated with Stevens' in-house IT team to set up secure APIs exposing the back-end data to the Drupal sites.

The central "Hub" site consumes the API data (JSON) and in turn, shares it with the rest of the sites. In addition to the back-end systems data, Drupal Connect also built-in the capability for the Hub to share its own content as Drupal nodes, JSON, or HTML endpoints. The other sites act as clients, flexibly displaying content as appropriate. For example, Stevens' needed consistency across the News Events sliders, so these are actually shared as HTML and consumed by a custom Panels plugin. Other data have looser restrictions and are shared as Drupal nodes, enabling client sites to use the nodes in Views, Panels, or Display Suite as needed. Drupal Connect also created a system of roles, permissions, and workflows to let Stevens manage certain content centrally, but still ensured School and Department autonomy.

The APIs and Content Sharing removed a significant maintenance burden and opened-up new possibilities for sharing news and events across the sites. The benefits are easiest to see in the cross-listed courses and faculty, but are interwoven throughout the sites.

Migrating onto Drupal

Drupal Connect migrated hundreds of legacy pages from multiple technology platforms using our Flatfish library. By using Flatfish, we were able to avoid messy 64-bit Oracle database support issues and start the migration work almost immediately.

By intelligently migrating all of the old content into the new Drupal sites, Stevens was able to review and curate the content over the course of several weeks — something that would have been an impossibility in their old systems.

View Website
View

Top Universities
QS Quacquarelli Symonds Limited

Top Universities

Design
Custom development
Site building
Theming

View Website
View

Tommie Copper
The Element of Comfort

Tommie Copper

Custom Development
Site Building
Theming

View Website
View

Russell Reynolds Associates
Leadership Succession and Search

Russell Reynolds Associates

Custom development
Site building
Theming

View Website
View

Giving Library
Watch. Connect. Give.

Giving Library

Custom development
Site building
Theming

View Website
View

Georgetown University

Georgetown University

Overview

Georgetown wanted a centralized place for current students and alumni to gather and share news and discussions. The project included a home page view with various tweets, discussions and news content displayed via styled bubbles that paged through all the content on the site via Ajax. The second view was a four-column dashboard view that also employed Ajax calls to hide and show selected content. Overall, the project was designed to be graphically unique and user-friendly, and every aspect of the site was meant to be sleek and engaging. It’s a beautiful example of what a unique Drupal site can look like.

Challenges

In a word: Ajax. The entire project was Ajax-driven in order to provide a seamless user experience. A number of pieces of custom code were needed to achieve the overall look and feel the client wanted. The dashboard was especially interesting due to a large number of custom exposed filters, as well as hiding/showing columns depending on results.

Solutions

In order to complete such a complex site, Drupal Connect implemented a number of custom and contributed pieces of code. Some of the common modules were:

  • Views
  • Panels
  • jQuery
  • CCK
  • ImageCache

At Drupal Connect, we try to make use as much of the community code as possible in order to keep custom code and time at a minimum. This project made extensive use of the modules provided by the community as well as some custom code to type these together in order to meet the specifications set by the client.

View

UCLA
Health Impact Assessment Project

UCLA

The HIA-CLIC website was developed by UCLA Health Impact Assessment Project and designed by WebFirst. The website serves as a searchable/browsable catalog of current health impact assessments. WebFirst partnered with Drupal Connect to transition the static site design files to a fully integrated Drupal theme which takes full advantage of the Views module, Panels module, and Taxonomy system to create a site that is both easy to use and maintain.

Technical Highlights

Highly Customized Design:
    The provided site design was a highly designed custom look that required special attention to detail and knowledge of Drupal’s theming override mechanisms. Drupal Connect created a Zen sub-theme to accommodate the needs of the design and the client.

Custom Panels Template:
    For the home page, Drupal Connect crafted a customized Panels theme template to accommodate the variety of content types and maintain the design integrity.

Form Manipulation:
    Heavy use of the form API to override provided search forms in order to match supplied design requirements.

Custom Javascript:
    Developed custom theme-specific jQuery code to handle functionality related to a special block region that can be opened and closed by the user and remembers its’ previous state from page to page.

View Website
View

Lethbridge College

Lethbridge College

Lethbridge College came to northStudio looking to build a socially enabled website with key calls to action for student recruitment and retention. It was important to showcase the student experience and highlight the benefits of relocating to Lethbridge for educational purposes.

Solutions

  • Key call to actions on the homepage and within the site
  • Created a student experience section complete with student bloggers
  • Strong use of multi-media content within programs and courses
  • Suggestive content: “If you are interested in this course, you may also be interested in this course.”

We have since created and implemented a social media marketing campaign, including a Website scavenger hunt and promotion of the student experience in Calgary & Edmonton targeted social media channels.

View Website

Testimonial

Jonathan Ruzek, Web Designer
Working with northStudio on the Lethbridge College website was an awesome experience. Their friendly staff is not only talented with Drupal, but their passion shows through their work. As the visual designer, amongst other things, I was impressed with how they were able to translate my Photoshop documents into pixel-perfect Drupal themes. It made my job way easier and less stressful. The quality of the end product and the hard work everyone put it the project was very impressive, not to mention their great communication and turnaround times. Since the launch, my peers have been giving nothing but compliments. You can be sure I'll recommend northStudio in the future.

View

Scattergood Foundation

Scattergood Foundation

View Website
View

Legal Access Plans
The LegalEASE Group

Legal Access Plans

Site building
Theming

View Website
View

USP Medicines Compendium
U.S. Pharmacopeial Convention

USP Medicines Compendium

Custom development
Theming
Site Building

View Website
View

Astor & Black

Astor & Black

View

Cruise Newport

Cruise Newport

View

University System of Ohio

University System of Ohio

This website is an online resource connecting future Ohio college students with detailed information on how to prepare, apply, and pay for an education at Ohio’s public universities, community colleges, and adult career centers. It includes interactive communication tools such as chat, a “find answers” database, and email to engage prospective students.

Future phases will add more personalized services for student users, including high-tech college planning tools that make it easy for students to identify low- cost pathways to degrees and view interactive profiles on college credit transfer. The evolution of the Web student portal will be a dynamic process with input from key stakeholders.

View Website
View

The Strand Hotel NYC

The Strand Hotel NYC

View

Low Flow Valve

Low Flow Valve

View

Stanford University
CSLI

Stanford University

Drupal Connect is currently developing a new Drupal website for Stanford University Center for the Study of Language and Information. This site will act as the front door and launch point for the CSLI’s component group sites. CSLI consists of ten individual and distinct groups, each with their own research focus and many with their own Web presence.

The new site will show featured people, research projects, events, and laboratories associated with CSLI, exposing shared content among all the groups, and providing links to each group’s externally-housed sites. New groups working under the CSLI umbrella will have their sites created inside of the new Drupal main site. Drupal Connect is utilizing the contributed module Organic Groups (OG) to facilitate this functionality. We are writing custom modules to allow OG to expose shared content among these groups. Creating content from within a group is easy if a particular user has the right permissions.

Utilizing Pressflow, the CSLI Stanford site will be able to handle the traffic with ease. Using Stanford's own Drupal 6 theme facilitated a quick turnaround. This allowed the designer to focus on the site-specific tweaks and polish while keeping a common look and feel to ensure that visitors know they are within an official Stanford website.

View Website
View

Steriflow Valve

Steriflow Valve

View

AIER

AIER

Overview

After having some difficulty migrating to Drupal, American Institute for Economic Research (AIER) enlisted Drupal Connect's help in redeploying their website. AIER used Joomla! for their previous website, whose content needs to move to their new platform. AIER also sells print books and accepts donations. Some donations grant access to certain AIER membership levels, which have various perks. Constant Contact is used for email subscription management and marketing.

Solutions

To make things quick and easy, Drupal Connect migrated all of their content over with the same categories and users. The "Archive" items are a collection of PDF files (many scanned and OCRed) with content dating back to 1937! This content was imported separately to keep things clean and intact. Now that everything has moved over, AIER intends to further refine their content to better the user's overall experience and searching abilities. Ubercart was used to allow for easy scalability and automation of certain purchases. AIER now has the ability to configure donation membership tiers with automatic Drupal Role assignments. Drupal's Constant Contact module was quick to install and configure. Several Views were created to make content displays and reports easier to manage.

What would we do differently?

There were a few areas of the new Drupal site could be made more visually attractive. Joomla! has a central content type which divides things into sections. The analog used in Drupal was a single content type with taxonomy terms. To make things more flexible, however, it would be great to divide things up into more logical buckets with appropriate fields and custom design templates for each. The Migrate module could have been used to help divide content into those buckets with more planning and more time to execute that strategy.

View Website
View

One Tribe
Organics

One Tribe

Project Features:

  • e-Commerce
  • Blog
View Website
View

Offroad Warehouse

Offroad Warehouse

Overview

This project focused on moving the client from a legacy, proprietary eCommerce system into Drupal. This was one of most complex migration done to date at Drupal Connect. There were over 16,000 products and thousands of users with order history. There was also extra data that needed be migrated from spreadsheets and the need to do regularly scheduled batched imports via CSV. We used the feeds module to grab product updates from a proprietary back office system as this allowed integration for order fulfillment and price updates. (note: we did not design this site)

The migration process

  • Mapped out the many different scenarios
  • Used the migrate module
  • Custom scripting to prepare the content
  • Analysis of source schema to write the adapters to process the data prior to bring it into Drupal

    We then monitored the migration using the migrate module

  • The module provides a framework for building and monitoring high volume complex migration
  • Provides the ability to specify source, build adaptors and manipulate for insertion into the Drupal database
  • You are then provided an admin page to look at current status of the migration - how many records, how many have been migrated, who migrated, and also allows you to roll back the migration

 It can also set up multiple migrations - 1 set from this location, 2nd set from this location

View

Visualizing.org
General Electric

Visualizing.org

Last year, as part of its Healthymagination and Ecomagination initiatives, General Electric wanted to create an online repository of scientific visualization information, and a social media site that could be used by designers, scientists, universities, media organizations, conferences, NGOs, government agencies, and the general public. It was to be a free resource for anyone looking for data on world issues, and anyone who had data that wanted to share it.

Seed Media Group, a company that focuses on strengthening public interest in science and improving public understanding of science around the world, was the main driver of the project. They contracted Drupal Connect to build the site using Drupal.

Site Design

The custom design was created by Seed, and it was determined early in the design process that the 960 Grid System would be leveraged. Once this was determined, it was an easy decision to use the Ninesixty theme project (http://drupal.org/project/ninesixty) as the base theme.

Panels were used for creating complex page layouts, such as the front page and node displays, and creating the custom layouts was very simple with the grid system in place.

Functionality

The primary purpose of the project was to distribute visualization data for visual artists to use in their research, and to showcase their results. Since there were different types of data and visualizations to display, different types of presentation methods were created. In some cases it was simply downloadable files of textual data sets, but other types were more visual. For instance, embeddable widgets were created with iframes so that the piece of visual data could be embedded into another site. A second form used Lightbox functionality to display visualizations of any type – image, video, flash, etc. – in an overlay when the user clicks on the main image.

Putting the Pieces Together

As with most Drupal projects, creating functionality is often a case of taking multiple existing components and putting them together with a little bit of glue code, and this project was no exception. One feature on the social side of the project was the ability to hold voting contests for completed visualizations. Site administrators could create ad-hoc contests by selecting a list of Visualization nodes, and site visitors could vote for their favorite based on criteria specified for the contest. Visualization nodes could be selected for multiple contests, which increased the flexibility of this functionality. The building blocks for this feature were simply nodereference fields, the Fivestar module, and some custom code to put it all together.

A second example of important custom integration was the management of video content. The Kaltura project was considered initially since it contained both a Drupal module and the transcoding service by Kaltura. However, upon further investigation, it was decided not to use Kaltura because the Drupal module portion of the project did not seem well maintained. After additional research, a combination of services that were both cost efficient and fast were used to handle the transcoding needs of the project. HD Cloud is a transcoding service that leverages Amazon S3 for asset storage, and has an easy-to-use API. With the combination of a CCK filefield, the Amazon S3 Drupal module, and some custom code to communicate with HD Cloud, a very fast and cheap transcoding solution was realized in under 200 lines of custom code. Since this project, Drupal Connect has used this combination on other projects with great results.

A third case of custom integration was the display of Visualization nodes on the front page. By clicking on the tabs and icons at the top of the particular block, users could change the sort order and display type of the nodes without incurring a page reload. This functionality was a combination of Views and Quicktabs modules, and custom jQuery code to handle the changing of the display type when then icons were clicked.

Apache Solr

One of the most important requirements of the site was to have robust search functionality. Apache Solr was selected for this because of its integration with Drupal, speed, flexibility and ability to quickly drill down and find the desired content using search facets. Its extensibility also proved to be a huge benefit to the project. During the course of the project, Drupal Connect developers attended DrupalCon San Francisco, and learned about extending Solr. They were then able to take that knowledge from the conference and apply it to this project. Examples of such applications include creating custom sorts, adding custom CCK fields to search results, and creating search result pages using custom filters based on the page URL.

Project Members

The project was completed by two developers from Drupal Connect, and the client, Marc Schwartz from Seed Media Group. Although the client was unfamiliar with Drupal at the beginning of the project, he was familiar with web development and design, and his knowledge of scientific visualization and ability to learn Drupal and apply those lessons were valuable assets to the project.

View Website
View

AOL

AOL

AOL contacted Drupal Connect in Nov 2010 with an internal Drupal project they wanted realized as soon as possible. The project was to act as a hub of information between the online brand managers and sales team to share information on trends in web traffic and advertising. The planning and creative work had already been completed, and they were looking for a company that specialized in the execution of custom Drupal projects. Drupal Connect was chosen as the team for the job on Nov 4th and work began on Nov 8th. The project was executed by two members of the Drupal Connect development team with combined Drupal experience of over 9 years. Two additional resources were assigned, one specifically for CSS styling, the other to complete one specific functional requirement of the project. The ad-hoc nature of the in-house and extended team meant the project could progress quickly and within the time and cost budgeted. The project was delivered on Dec 10.

Site Design

The custom design was created in-house at AOL, and was provided to the Drupal Connect team at the beginning of the project. This meant there were no delays or uncertainties for the development team, and no duplicate effort wasted due to design or strategy revisions as designs were realized and matured. The great work done by AOL meant that the project could move ahead as quickly as possible. The custom theme was developed in-house using a "build, then style" approach which takes greater developer-styler coordination, but produces far cleaner PHP code than using pre-integrated HTML & CSS. Drupal Connect considers this the "Drupal Way" and does not try to cut corners by using offshore PSD-to-theme services for this reason.

Functionality

The site was built to AOL's specification using standard off-the-shelf Drupal components where practical. Five custom modules were developed to round out functionality provided by core and contributed modules chosen, which is typical for a project of this scope. All custom code was developed to the strictest code standards and good practices commonly adopted by the Drupal community for security, performance, and maintainability. To help navigate content across hundreds of categories in 7 vocabularies, the development team built a custom filtering interface for site content. This system leveraged Views and Panels, but also the built-in Taxonomy browsing path interface. Custom content export functionality was built so that the AOL sales team could easily select certain content they wished to export. This content was then easily exported as pre-built Powerpoint presentations or PDF files, complete with AOL corporate branding, ready for consumption by potential or existing advertising clients.

View

Artistically Connected

Artistically Connected

Overview

The Artistically Connected project, found at http://artisticallyconnected.com, is a website that enables Artists to purchase a membership to the site which enables them to post their art on the site. Artists have profiles that will include contact information as well as information regarding how site visitors can purchase art directly from the Artist.

Membership Workflow

Memberships to Artistically Connected are sold through Ubercart, one of Drupal's leading shopping cart systems, as a product. The Drupal role of Artist is assigned to users who purchase a membership. This role defines the content they can post to the site, i.e. Profiles and descriptions of their Art. Contact information as well as how to purchase the piece of art pulled form their Artist Profile is included in the content post.

Trial Membership

Upon registration to the site, every user gets a free 30 day trial of a full Artist Membership. This allows artists to try out Artistically Connected's services without having to pay upfront. The logic behind the trial membership functionality is built out using the Rules Module.
Drupal Development Artistically Connected

Artist Profiles

Members will have profiles that will include general information about the user and contact information. The artist profile functionality was implemented using the Content Profile module. Drupal 6 is not able to add fields directly to users. The Content Profile module allows these fields to be added to a node instead and then associates this node to the user. Artist Profiles also has fields for recording physical location location of the artist. This functionality was built using the Location module to collect the address information via CCK fields. The artist locations are geocoded and shown on a map by the Gmap module.

User Registration

Sales team members have the ability to create and track promotional codes. These codes will be used by new users during the registration process. The Registration Codes module was used to provide this functionality. Unlike other "toolkit" type of Drupal modules, the Registration Codes module was pretty much matched exactly what the client was looking for out of the box.

Content Classification

Content posts are posted into categories and organized into configurable lists. The Views is responsible for displaying all of the content that is organized into categories defined by taxonomy terms. Some of these displays include an exposed filter on price range and other criteria required by the client. Most of the displays are styled as grids. Some of these displays have tabs that allow site visitors to further drill down on the current set of items in the view. This functionality is provided by the Views Display Tabs module. One other notable feature regarding the display of content is the little slider showing the "featured art" in a 1x4 grid of thumbnails. With the help of the Views Slideshow module and custom styling, we get this fancy display sliding four items in at a time.

Theming

The design was provided by the client. This design was then made into a custom Drupal theme using Fusion as a base theme. To resolve a client request of putting the tags of a piece of content into the header as keyword metatags, Drupal's page pre-processing abilities are used. Basically, the array containing all of the taxonomy terms for that piece of content are broken out and placed into a pre-processed page variable that is then printed in the header as said keyword metatag.

View Website
View

Online Technology Industry Magazine

Online Technology Industry Magazine

Drupal Connect was hired in December 2010 to assist with a major upgrade from Drupal 5 to 6 of a respected online technology industry magazine. The specific areas our team was tasked to address were performance and scalability issues, which required expert-level Drupal experience and were critical to the overall success of the project. This case study describes only some of Drupal Connect's work on the project, specifically that led by Lead Developer Ryan Palmer to address the performance and scalability issues.

Established facts
Environment

    Apache 2.x, PHP 5.2.x, MySQL 5.x
    Memcached for Drupal cache and sessions
    Barracuda load balancer distributing traffic across two Web nodes
    Web nodes running NFS for sites/default/files. 16Gb RAM each.
    Dedicated MySQL server

Application

    Drupal 6.x
    190+ modules in use (180 at launch)
    ~33 custom modules (12 features), ~55,000 lines of custom code, excluding features
    1 custom theme: 14,000+ lines of CSS, 1,300 lines JS, 142 templates

Content

    ~150,000 nodes
    ~18,000 taxonomy terms
    ~10,000 users
    25 content types

Throughput and performance design requirements

    40,000 page requests per day
    Page generation under 1s per page

Analysis Tools

    XHProf - PHP profiling tool developed at Facebook
    jMeter -- load and performance testing. test profile built to measure performance and throughput based on 9/3 anon/auth mix for various parts of the site (article pages, answer pages, various landing pages). Uses a real session cookie to simulate being authenticated
    apache bench -- good for specific urls, measuring throughput
    Firebug/Google Chrome network analysis

Concerns

    Application performs poorly, inconsistently
    Anonymous page load time not acceptable

Application baseline

XHProf was used to improve baseline Drupal application performance by analyzing callgraphs and reports from various high-level administration pages. This takes the custom theme, primary menu, site-wide blocks, most third-party services and all content out of the equation and in theory should represent general application overhead. This was especially important considering the high number of modules used on this project, and the unpredictability of contributed modules and pre-existing custom code. Once slow or otherwise problematic PHP functions and processes were identified, steps were taken to optimize MySQL queries, cache third-party data services, cache views, cache objects (users, nodes, terms, etc.), or otherwise optimize them.
Per-path performance

Based on our jMeter testing suite, client feedback and first-hand experience, certain site sections were identified as being slow. Whether issues were persistent or intermittent, XHProf reports were captured and performance issues were addressed using the same methods described above.

Specific caching strategies:

Blocks: blockcache module was used to specifically set block cache settings, and block cache expiry times. This did require a patch to Drupal core. Example code for setting block cache expiry @ 5 mins in an update hook: /**
* Implements hook_update_N().
*/
function example_blocks_update_6000() {
// Force these blocks to expire after 15 minutes.
foreach (array('example_most_articles', 'example_most_articles_side', 'example_most_blogs', 'example_most_blogs_side') AS $v) {
variable_set('bc_life_example_blocks_'. $v, (15 * 60));
}
}
?>

Object caching: Memcached was leveraged for fast object storing, with smart expiries: /**
* Load the user object from cached values
* @param $uid
* The profile owner's user id or an array of values (name, mail, uid).
* @return $account user object
* Cache results for 60 minutes
*/
function example_user_load($uid) {
static $example_users;

$hash = md5(serialize($uid));
$cid = 'example_user:'. $hash;

if ($example_users[$hash]) {
return $example_users[$hash];
}
elseif ($cache = cache_get($cid)) {
$example_users[$hash] = $cache->data;
return $cache->data;
}
else {
$account = user_load($uid);
cache_set($cid, $account, 'cache', time() + (60 * 60));
return $account;
}
}
?>

Views caching: for certain problematic views, it became preferable to clear caches based on node authorship and administrative actions rather than time-based expiry. Query and rendering cache times were set far higher than usual (1hr or more) and hook_nodeapi, hook_form_alter and submission callbacks on administration interfaces were used to clear views caches: /**
* Implementation of hook_form_alter();
*/
function example_articles_form_alter(&$form, &$form_state, $form_id) {
switch($form_id) {
case 'nodequeue_arrange_subqueue_form':
if ($form['#subqueue']['qid'] == 3) {
$form['#submit'][] = '_example_nodequeue_arrange_subqueue_form_3_submit';
}
break;
}
}

/**
* Submission callback to clear a cache upon nodequeue 3 form submission
*/
function _example_nodequeue_arrange_subqueue_form_3_submit(&$form, &$form_state) {
cache_clear_all('views_default:editor_picks:en');
}
?>

Content delivery optimization

Where possible, all standard Drupal measures were taken to optimize front-end loading performance. Pre-existing circumstances meant that JavaScript aggregation was not possible, so steps were taken to amalgamate files manually. Anonymous page loading performance was determined to be unacceptable, largely due to the module overhead of the application. In fact, a near linear relationship was found between the number of modules enabled and the baseline performance of the application. The suggestion was made by Drupal Connect at the 11th hour to implement a reverse proxy cache (Varnish) to cache anonymous pages plus static assets to both dramatically improve anonymous page loading times and take the load off the very heavy apache processes for the serving all static assets. Varnish was installed by the client and configured by Drupal Connect, to operate per front-end server and between the load balancer and apache. Varnish was configured to cache aggressively and effectively, and Drupal was optimized to send proper headers, avoid sessions for anonymous users, etc. The end result was an average 95% "cache hit" rate and an anonymous page load time of 30ms (front page tested with ab, 95th percentile, n1000, c5), considered by all involved to be an exceptional outcome. The memory footprint of Varnish was large (2Gb+ per server), but CPU usage was less than 1% on each machine even while serving 95% of all traffic.
Lessons learned

    More modules = slower performance. The relationship was found to be nearly linear for baseline performance.
    Caching strategies should not be an afterthought. Views & block caching should be enabled from day one.
    Sometimes Drupal core needs to be hacked to achieve aggressive caching objectives. Drupal 7 should be more robust in this regard.
    Where practical (memory does cost money), Varnish should be used to serve all anonymous traffic.
    BUT, Drupal must be built with the assumption that anonymous users must not have SESS cookies.

View

Camouflage Data Masking

Camouflage Data Masking

One of the most crucial features of an enterprise-level Drupal deployment is integration with third-party Web services, especially third-party buisiness analytics tools such as Eloqua and CRMs (customer relations management systems) such as Salesforce. Particularly when e-commerce is involved, clients need to build workflows keyed to specific user interactions - for example, a user logging in, a user adding a product to their cart, a user downloading a file - where data about the user and about their activity is submitted to the third-party service. Moreover, these workflows need to be adaptable to changing business requirements.

The most common approach to such requirements is to leverage Drupal's internal APIs in a custom module. However, this approach limits the ability of the site manager to respond quickly to changing requrements, since custom modules usually require the involvement of a developer to modify them. It also requires a significant outlay of time and labor in development and QA. In general, Drupal Connect developers always look to existing, proven technologies when architecting solutions to even the most complex requirements.

When we built a new site for Camouflage Datamasking Specialists (http://www.datamasking.com), we accomplished the above requirements by leveraging the Rules module, which allowed us to hook into common user events related to log-in, registration, purchase, and file download to submit data to the Eloqua business analytics service. Using Rules, we were able to build complex workflows based on several available profile types the user had filled in, what areas of the site the user had accessed previously, and whether or not they had agreed to the terms of service.

Because we used Rules, site administrators were able to adjust the workflows as their business needs changed simply by creating new conditions and tying them to the desired actions within the Rules administrative interface. The only custom code required for the integration was the implementation of a Rules action for sending gathered data to the Eloqua analytics service as a CURLed form submission (Eloqua has an API, but Camouflage was not set up to be able to use it). Implementing the action was straightforward using Rules' API, minimizing the time and cost of development, QA, and maintenance.

Contact Us

Request a quote or get more info

If you would like additional information on our Drupal Development services or need Drupal support please reach out to us for a free quote: info@drupalconnect.com