
Andres publishing version 0.0.0.1 of the Merrcury Engine
Answer: They are all part of a very powerful publishing tool, and it just so happens to be the one that Andres just finished developing for the Merrcury Engine (the software powering LetMeGo).
As many of you may know, publishing the new version of a website is not easy. It requires a thoughtful mind to make sure that the downtime is short and that no data is lost. Imagine that challenge, multiplied by 20. This is the case of the Merrcury Engine: 20 repositories, 20 databases, and many web servers… and that is just the development environment! We need the same setup in the staging environment (where we test the system), and once again in the live environment.
Almost everything about the Merrcury Engine is state-of-the-art (remember our crazy architecture?). The publishing mechanism couldn’t be left behind. So, we decided to work on one that would realize many of our dreams, and give us peace of mind. A publishing tool that is flexible and automated enough for us to relax, yet bureaucratic enough to tell us when we are messing up. We call it PublisheRR.
PublisheRR takes into account many “best-practices” and methodologies. These are some of them:
- Code Version Control: PublisheRR automatically creates and logs versions that combine individual revisions from more than 20 different repositories. It is also capable of publishing code from different branches.
- Database Version Control: In the same way that we can go back to previous versions of the code, PublisheRR can simultaneously takes us back to previous versions (snapshots and/or schema) of more than 20 databases. If you want to learn more about database version control check out this article.
- Automated Unit Testing: Every unit test should pass before it is published and after it is published. Only code that passes all tests in the stating environment can be published in the live environment. PublisheRR does all these checks automatically.
- Automated Rollbacks: If anyone of the dozens of checks fail, PublisheRR automatically rolls back the code and database to their previous state. What could fail? Many things: unit tests, database upgrades, server connectivity, etc.
- Automated Selenium Testing: Although not implemented yet, PublisheRR will automatically control hundreds of selenium tests via Selenium Grid. They will start running right after the site goes live after a publication and will last, probably, a few hours.
- Friendly Downtime: PublisheRR automatically and sequentially brings down every web server, placing friendly messages to visitors of each one. After the code has been published and the databases have been upgraded, PublisheRR restarts the web servers in order to make sure that all unit tests pass. Finally, it restarts the public web servers.
- XML Descriptors: PublisheRR is being used to publish code and update databases in all the server environments we have: development, staging, and live. PublisheRR uses XML-based descriptors to know how and what to publish where.
- And much more: Automated ACL version control, friendly failure recovery, automated cron job management, etc.
The delivery of PublisheRR by Andres comes with both good and bad news:
The bad news is that it took Andres more than four weeks of “immersion time” (the equivalent of several months of regular work) to complete the first version of PublisheRR. Unfortunately, I hadn’t estimated time for it, but our alternatives weren’t very attractive either. We are shuffling around some tasks inside the team, to continue targeting our deadlines.
The good news is that PublisheRR will gives us even more peace of mind. Said peace of mind will allow us to focus better on what we do best: write beautiful, life-changing code.
Thank you Andres!
Alexander Torrenegra
P.S. PublisheRR 0.1 was previously developed by Henry. It was used for almost one full year to publish code from the repository to our development environment. Thank you too Henry

Hey Alex,
This project simply sounds great, I try to read every single post here, because every week I learn a little about new and awesome technologies here. Have a nice day and my best wishes for you and your team
Good skill – luck is for losers
Thank you JAMS!!!
Very awesome article , i will bookmark your blog right now
Good blog , i will bookmark it right now !
I do not know about that. I’m not sure We believe your current ideas. I’ll basically agree to differ. Thanks…for the posting.