Why You Should Point Staging to Your Production Database

I have been thinking about this topic more recently as I’ve just started working with a new infrastructure, and one of the things that I noticed is the staging database is a separate copy of the production database. It also happens to be a very old copy that has drifted, certainly in data and possibly in schema. It was likely put in place to avoid the perceived problem of new code possibly affecting production data in some critical way, and having a safe and solid environment to examine changes before they do hit production. [Read More]

Go Deployment

Intro In the spirit of the recent re-release of Deployinator, it seems timely to write a little bit about deployment. However, this is not a how-to on writing a Deployinator stack, but an overview of the high-level mechanics of getting a golang app deployed into production. Its worth mentioning that this methodology is just one of many ways you might go about deploying your app, but this is what has worked for me. [Read More]

Deployinator: Put a Button on it

I’ve been meaning to post more, but have been so busy lately at Etsy its been hard to find time. Going to get better at that! In the meantime, Erik Kastner and I just got back from OSCON and gave a talk about removing the cultural barriers that come as a result of unecessary process. We also open sourced the tool we use to deploy code over 30 times a day here on github [Read More]

Deploying A Catalyst App on Private Hosting

Intro In the last post I wrote about deploying Catalyst on shared hosting. While shared hosting may seem attractive pricewise, you’ll quickly grow out of it, and it makes sense to move to hosting with some more control if you are serious about your website. There are lots of choices when it comes to where you may want to host, and if you are looking for virtual options, Slicehost, Linode, prgmr, or even Amazon EC2 are great choices. [Read More]

Deploying a Catalyst App on Shared Hosting

Intro People have long complained that one of the tricky things about perl is the deployment phase, much because of the intricacies of mod_perl and its unfriendliness towards shared environments. In fact, I would highly recommend FastCGI over mod_perl since it is quite easy to understand and configure. This post is going to focus on smaller shared hosting environments, and how easy it can be to quickly deploy a Catalyst web app. [Read More]

Using DBIx::Class to Version Your Schema

Intro to DBIx::Class In my opinion DBIx::Class is one of the best ORM solutions out there. Not only can it model your database, including mapping out any foreign key relationships, it can also be used as a canonical point of reference for your schema. This means we can use it not only as an application layer interface to the database, but can also define a versioned database structure using the code, where if you add a field into your result class, you can generate a version of alter statements and a DDL just by running a simple script. [Read More]

Code Deployment Techniques

Introduction Getting code out to your target production machines is a bit of an art form that many seem to take for granted. A lot of shops that I talk to seem to think of the deployment process as an svn up on each node. Even if this works for you, it’s really not a great way to deploy code. The main reason is that it does not scale well. [Read More]

Compile the Linux Kernel and Create Distributable Debian Packages

Introduction Compiling a kernel is actually a fairly easy thing to do these days. I’m going to go over how to do this on a Debian box since that happens to be my distro of choice. This will work just as well on Ubuntu. You can always wait for the packaged version, but you’ll always be a little behind some of the cutting edge features. This method allows you to get the latest upgrades that are incorporated into the kernel, or even to apply cutting edge kernel patches against the kernel source. [Read More]