But LiveRebel is different: instead of scripts, it talks in terms of applications, servers and the deployment process in general. And with the addition of general file-based deployments in LiveRebel 2.6, applications on any platform can enjoy the domain-driven mindset.
I thought hard about the features I should discuss in this post. Eventually I arrived at the conclusion that developers are not so unlike. You’ve probably shared all the painful experiences I’ve had as a past web enthusiast. At least that’s the way I’ve felt when talking about it in PHP, Python and Ruby on Rails circles. So here it goes: these are the LiveRebel features I wish existed when I was earning my living as a PHP developer.
Deployment Automation on Steroids
When you press that shiny ‘deploy’ button in LiveRebel, the gears start to turn and the application gets updated. But this doesn’t seem much different from an easy
ssh + git pull. Well, as the application grows, the deployment process remains just as simple with LiveRebel. Configuration scripts make easy to customize the deployment process with any executable file. Need to run Chef or Capistrano for provisioning? Update the database? Run a Selenium test suite once the application is deployed? Just add the script into the right directory and LiveRebel does all the heavy-lifting.
As an example, let’s look at running a Selenium test suite to verify that the main functionality works in production.
It’s that simple! LiveRebel also manages script versions to avoid conflicts, e.g. by default they are executed once per server. Because we want our tests to be run on every deployment, I’ve added
always to the path. If one-click deployments are not automated enough for your tastes, try out our Jenkins and Bamboo plugins, CLI or REST API.
Software failures are inevitable. And if you’re ill-prepared, you can expect downtime, angry end-users, hours of puzzle solving and probably a phone call in the middle of the night.
But it doesn’t have to be this way. LiveRebel is a gentleman, so when things go awry, it rolls back to the previous version. And it covers the whole application: configuration scripts, managed database migrations and application files are all reverted. So with a bold mindset, you could even deploy each commit, run the Selenium suite on each deployment and count on LiveRebel to react to any failures. And once you have time to fix the errors, LiveRebel gives you a detailed overview of each operation.
The benefits of code revision control apply equally to databases. Unfortunately the adaption is nowhere near. So we decided to try to change this. We took a great language-agnostic database migration tool — Liquibase — and supercharged it for deployments:
- Detect database changes before deployment
- Check for backwards compatibility and data loss
- Apply database changes automatically
- Revert changes back on downgrade or rollback
Keeping Tabs on Deployments
How many teams know exactly which application version is in production? Most of the people I’ve met are lucky enough if there’s a manually updated document to track this and modifications aren’t made in the live environment. This is obviously troublesome: critical live modifications might get lost, inappropriate database changes applied and it’s hard to debug if you’re unsure in which version the errors appear.
LiveRebel gives an one page overview of all the applications and versions on all the servers and even databases.
Transparent Environment Configuration
I’ve seen so many attempts to tackle environment-specific configuration problems, yet nothing has come close to satisfaction. Most often you just manually create a file, or if you’re evolved, use Chef to copy the file for you. Or if you’re lucky and have small number of environments, you can bundle everything with the application and switch between them based on some parameter. But then the code is a mess.
LiveRebel takes a robust approach: add a file with property placeholders in
liverebel directory and during deployment, properties get injected and the file copied in the application directory. Properties are stored in a Git repository (history for free) and can be defined per server or per server group.
Read a dedicated blog post for more details.
LiveRebel takes automated deployment much further than fancy scripts ever could. A one-page overview gives you a single control center for applications and servers, and automated rollbacks make failures a non-issue so you can focus on product development instead of firefighting. Simple deployment customization, database migrations and environment configuration give out-of-box solutions for common annoyances. And this is just the beginning.
So go ahead and give it a try — it takes just minutes to set up and you’ll never want to go back. You can grab the latest from our download page (make sure to choose 2.6+). Or you can use the PHP demo app in Yii Framework with an easy-to-set-up demo environment (uses Vagrant and Virtualbox) to play around with LiveRebel features.
Join our webinar on March 14 to be the first to see LiveRebel 2.6 in action!