Why you might need Staging-as-a-service ?
It was 3 PM as Pradeep crossed his fingers and pushed the code. He was hoping to see an all green output on his screen, and it did show up as expected. He tagged the latest build and notified Neeraja, the ops ninja in our team. She can deploy anything you throw at her to anywhere, be it the cloud, AWS or some staging server cranking in the corner. There are ongoing talks about doing continuous deployment to the test and staging servers once all the tests pass. We are window shopping various CI tools for this. Neeraja even gave a tech talk about Jenkins last week. But not today, this build has to be manually deployed.
Meanwhile Arjun, working on a hotfix, has branched the code and pushed a task to Neeraja. He’ll have to wait, as all the staging servers are running full with different feature branches. Arjun has an idea.
“Hey, I know you have to go out of your way for this, but can you provision a new VM in our AWS account so that I can install a Jenkins slave and test the hotfix.”
“umm. Sure. Make sure you create a separate role for this. Just a security precaution.”
After a while, Arjun hits a blocker.
“Hey, Neeraja, I need a Redis DB setup in the slave node and I’m not very good at provisioning it. Can you do it for me?”
“Arjun. Sorry, this has to wait. Pradeep forgot to send me a couple of configuration tweaks I had to run after deploying. Now I’ll have to deploy this all over again. We have our demo in a couple of hours.”
Arjun managed to install Redis on the node and run his tests successfully.
Pradeep gets a ping from Sangeetha, who’s testing the frontend.
“My UI regression tests are failing.”
“Which page? Which browser?”
“All of them.”
“Let me check.”
“Aah! Phantomjs is not installed in the new staging server. Let me install it and get back to you.”
“Cool, its working now.”
Alok, the project manager, gives a spin at the site and notices warnings.
“Arjun, did we run the tests?”
“Yup. It worked fine. Let me check.”
“Oh damn! I have a more recent version of PHP and I used its latest feature. The staging version runs a prior version.”
“Aren’t we using the VM configured by Neeraja?”
“Yes, but it slows down my machine. I had to cut corners.”
“So, its your turn to throw a treat today I guess.”
At Acme Inc, we had the custom of the person breaking the build to give a team treat at the neighbouring icecream parlour.
We managed to scrape by and deploy to production the other day. But all days do not have to be like this.
- Creating staging environments should be easy and cost effective. The activation energy so low that we don’t even have to think about it.
2. They should emulate the production setup as closely.
3. They should require minimum care and feeding. Remember, treat your infrastructure like cattle, not pets.
This is why we created ShapeBlock. Don’t forget to sign up for a free beta.