As of a little after 19:00 UTC on 2 July 2014, Drupal.org is now delivering as many sites as possible via our EdgeCast CDN.Why a CDN?
We are primarily concerned with the network level security that a CDN will provide Drupal.org.
The CDN enables us to restrict access to our origin servers and disallow directly connecting to origin web nodes (which is currently possible). The two big advantages are:
- Accelerate cacheable content (static assets, static pages, etc).
- Allow us to easily manage network access and have a very large network in front of ours to absorb some levels of attacks.
Here are some examples of how the CDN helps Drupal.org:
- We were having issues with a .js file on Drupal.org. The network was having routing issues to Europe and people were complaining about Drupal.org stalling on page loads. There was basically nothing we could do but wait for the route to get better. This should never be a problem again with EdgeCast's global network.
- We constantly have reports of updates.drupal.org because blacklisted because it serves a ton of traffic coming in and out of a small number of IP addresses. This should also not happen again because the traffic is distributed through EdgeCast's network.
- A few months ago we were under consistent attack from a group of IPs that was sub-HTTP and was saturating the origin network's bandwidth. We now have EdgeCast's large network in front of us that can 'take the beating'.
By enabling EdgeCast's raw logs, rsync, and caching features, we were able to offload roughly 25 Mbps of traffic from our origin servers to EdgeCast. This change resulted in a drastic drop in origin network traffic, which freed up resources for Drupal.org. The use of rsync and the raw log features of EdgeCast enabled us to continue using our current project usage statistics tools. We do this by syncing the access logs from EdgeCast to Drupal.org’s utility server that processes project usage statistics.Drupal.org
Minutes after switching www.drupal.org to use the CDN, there were multiple reports of faster page load times from Europe and North America.
A quick check from France / webpagetest.org:
Pre-CDN results: first page load=4.387s. repeat view=2.155s
Post-CDN results: first page load=3.779s, repeat view=1.285s
Our CDN uses a combination of Anycast IP addresses and DNS trickery. Each region (Asia, North America, Europe, etc.) has an Anycast IP address associated with it. For example cs73.wac.edgecastcdn.net might resolve to 126.96.36.199 in North America, and 188.8.131.52 in Japan.
Since 184.108.40.206, 220.127.116.11, etc. are Anycast IPs, generally their routes are as short as possible, and the IP will route to whatever POP is closest. This improves network performance globally.Why can't drupal.org be a CNAME?
The DNS trickery above works by using a CNAME DNS record. Drupal.org must be an A record because the root domain cannot be a CNAME. MX records and any other records are not allowed by the RFC on CNAME records. To work around this DNS limitation, Drupal.org URLs are now redirected to www.drupal.org.
Small commits allow for big wins.
Something that I have been using a lot lately is GIT's cherry pick command. I find the command very usefull and it saves me bunches of time. Here is a quick lesson on what it does and an example use case.What is GIT cherry-pick? man page
Git cherry pick allows you to merge a single commit from one branch into another. To use the cherry pick command follow these steps:
Drupal 8 is moving along at a steady pace, but not as quickly as we all had hoped. One great advantage this has is it gives developers time to backport lots of the features Drupal 8 has in core as modules for Drupal 7. My inspiration and blatant rip-off for this blog came from the presentation fellow Lullabot Dave Reid did at Drupalcon Austin about how to Future-Proof Your Drupal 7 Site. Dave’s presentation was more about what you can do to make your Drupal 7 “ready” where this article is more about showing off Drupal 8 “hotness” that we can use in production today.
Ronan Dowling (ronan), lead developer at Gorton Studios joins Ted and Mike to talk about all the new features in Backup and Migrate 3.0 including file and code backup and a improved plugin architecture. We also get up-to-speed with Drupal 8 development, review some Drupal-y statistics, make our picks of the week, and ask Ronan 5-ish questions.
Cross-posted with permission from Genuine Interactive
Les is a web applications engineer at Genuine Interactive. He is a frequent Drupal community contributor. Genuine’s PHP team works on projects in a range of industries from CPG, B2B, financial services, and more.
One of the key features of a Drupal module is an admin interface. An admin interface enables you to make a module's settings configurable by a site editor or administrator so they can change them on the fly.Tags: Drupal Module DevelopmentPlanet Drupal
Although Drupal 8 has had a Conditions Plugin API for a several months, it wasn't until during DrupalCon Austin sprint we managed to get blocks to use the Conditions Plugin API for block visibility.
The great thing about Condition Plugins, is they are re-usable chunks of code, and many contrib projects will be able to take advantage of them (Page Manager, Panels, Rules anyone?)
In this post, I show how you can create an example Page Message module that uses a RequestPath condition plugin to show a message on a configured page.
So you've finished building a beautiful Drupal website. That means your work is done, right?
Not even close! Building the site is only the beginning: every website needs to be deployed, hosted, monitored, maintained, upgraded, security patched, scaled, and more— and if you start thinking about those things only after finishing your site, you’re bound to run into trouble.
Fortunately, DrupalCon Amsterdam is here to help! We’ll be running a #devops track that will bring devs and ops closer together. We’ll be discussing ways to achieve easier deployments, as well as how to ensure better stability, scalability and security for your big, beautiful Drupal website.
We've got a bunch of awesome speakers with experience in all of the above topics, as well as:
... and many more topics that you should think about when building that beautiful website that can't afford to go down.
The DrupalCon Amsterdam DevOps track will feature a broad range of talks covering the various technologies used in devops— and we expect it will be a nice counterpart to the traditional Drupal-centric tracks. These DevOps sessions will give you a perfect opportunity to peek into new technologies and talk with the best people working on those solutions.
Whether you are putting together a small internal application or a large, popular, internet-facing site, your job does not end at the last commit. So join us in learning how to release stronger and better software faster. We’re all in this together, so let’s share the love and learn from each other!
Today, my cover was blown.
If you came across this photo on your Facebook account or Twitter feed and you’ve been wondering – or furiously texting friends who were in Austin last month – “Is that really...?” or “Was he...” and “Did you meet him?”
The answer is:
No. Howard Stern did not attend DrupalCon as a Drupal Watchdog secret agent. (Although we did hear a rumor that he was in Austin at the time, taping an episode of America’s Got Talent, and that he just might put in a surprise appearance at the Convention Center.)
Truly, that was I in the photo: Ronnie Ray, your fearless Watchdog blogster.
So now you know. But kindly keep this information on the QT.
Although if you or your company want a Howardish presence at DrupalCon Amsterdam, feel free to send checks, cash, a NYC-Amsterdam round-trip airline ticket (and Howard only flies first class, alas) to R. Brawer, c/o this magazine.Images:
Get started with some quick and easy ways to improve the content editor experience, using contributed modules.
Want to get started with Drupal 8 coding, but not sure where to begin?
Fear not! That’s exactly how I felt before I jumped down the rabbit hole by attending my first Drupal 8 code sprint, organized by the Forum One team earlier this month. Others there seemed to be in the same place I was in – which is to say that what we anticipated to be a quick installation actually turned into a lot of time spent that I’d have rather spent contributing!
To spare the next person from this experience I have created a friendly slideshow to guide you through the setup and installation process of getting Drupal 8 up-and-running locally.
Enjoy! And if you have any suggestions for enhancements, please leave them in the comments below
One of the most exciting features of Platform.sh is it’s ability to use Drush makefiles to rapidly prototype sites. By default, new projects can start with a makefile that will automatically add Commerce Kickstart or vanilla Drupal. Then, using the makefile, you can add new modules, themes, and libraries, by simply adding a few lines to the makefile and commiting. When you push the changes to your platform, the entire site will be rebuilt. Plus, whenever you’re in “makefile mode” any extra files that are in the root of the respository get pushed into sites/all/default. So if you have any custom modules, you can just stick them in modules/ and they’ll end up in sites/all/default/modules. This can make your code bases not only small, but far more manageable. You can convert a site that isn’t a makefile into a makefile. And in this post, that’s exactly what we’re going to do.
As marketers, you understand the importance of having a system that promotes ease and efficiency when it comes to implementing marketing processes. You want to create content once and use it over and over in different ways to create contextual user experiences.
Drupal provides you with a variety of powerful, integrated tools to not only help you understand who you visitors are and what they want to accomplish, but to also dig deeper into their interactions, engagements and habits with your site.
Here are just a few reasons why enterprise marketers adopt Drupal.
Last week I had the opportunity to present at the Federation of Earth Science Information Partners (ESIP) Summer Meeting held in Copper Mountain, CO. The Summer Meeting is a gathering of IT professionals from across several different agencies such as NASA, NOAA and USGS. Each year, the group comes together to talk about the challenges that they each face while trying to engage and support the scientific community.
When I got in on Wednesday a few of us got together to talk about how to kickstart the Science on Drupal group. While there’s been a science presence in the Drupal community for several years now in one form or another, there’s been a recent interest in pooling resources together to make a larger group. We had a great time strategizing how to grow the group over chips and salsa.
For my presentation, I went over various different tools for doing online mapping work, both with native Drupal tools and other toolsets.
One of the big challenges that this community has to face is how to work with large datasets that don’t fit neatly into a typical Drupal site. For my part, we spent a lot of time going over how to leverage tools like D3, CartoDB, GeoServer, and Mapbox to connect to data outside of Drupal and provide meaningful interaction with it.
They also exposed me to DEIMS, a Drupal distribution that they had collaborated on that also features some interesting ways to interact with external data. There was a great presentation at Drupalcon Austin on the distribution that’s definitely worth checking out.
If you’re interested in catching the presentation, the slides are posted on Github and the video is here. If you’re interested in catching up with what’s going on with the Drupal in Science working group, check out their page on groups.drupal.org.
Thanks again to Adam Shepherd and the rest of the ESIP Drupal Working Group for inviting me out to hang out and learn from their experiences.
This summer is an important time to help get Drupal 8 done, so there is no good reason to skip getting together. We are holding two Drupal 8 sprints at the same time on August 7 to 10: one in North America at TCDrupal, and one in Europe at Drupalaton. Sprinters from both events will collaborate on Drupal 8 issues.
Join jthorson, xjm, alexpott, Crell, mtift, YesCT, and other lead Drupal 8 developers at Twin Cities DrupalCamp (North America) or dawehner, swentel, fago, Wim Leers, rteijeiro, lewisnyman, emma.maria and Gábor Hojtsy among others at Drupalaton (Europe). Read more in the event announcement.
The Acquia Cloud API makes it easy to manage sites on the platform. The API allows you to perform many administrative tasks including creating, destroying and copying databases, deploying code, managing domains and copying files.
Acquia offers 2 official clients. The primary client is a drush plugin which can only be downloaded from Acquia Insight. The other is a PHP library which states in the README that it is "[n]ot ready for production usage".
On a recent project using WF Tools we needed some pretty advanced deployment scripts for sites hosted on Acquia Cloud. We had tried using a mix of bash and PHP, but that created a maintenance nightmare, so we switched to Python.
I was unable to find a high quality Python library, so I wrote a python client for the Acquia Cloud API. The library implements all of the features that we needed, so there is a few things missing.
Chaining complex commands together is easy because the library implements a fluent interface. An extreme example of what is possible is below:import acapi # Instantiate the client c = acapi.Client('email@example.com', 'acquia-token') # Copy the prod db to dev, make a backup of the dev db and download it to /tmp c.site('mysite').environment('prod').db('mysite').copy('dev').backups().create().download('/tmp/backup.sql.gz')
Some of the code is library is "borrowed" from the Python client for Twilio. The library is licensed under the terms of the MIT license.
I am continuing to develop the library. Consider this a working alpha. Improving error handling, creating a comprehensive test suite and implementing the missing API calls are all on the roadmap. Pull requests are welcome.