You have a classic car. Youโre in the middle of restoring it, and it looks mighty sweet. Paint is polished, wheels are stock, hubcaps (or spokes) are shiny, engine is completely restored to original spec.
But it has no gas tank.
A bit of a stark comparison, but thatโs where weโre at with application release automation (ARA)โat least in terms of portability. And where weโre likely to stay.
Hold on, Iโm a Fan
Before the DevOps aficionados get out the torches and pitchforks, let me be completely clear that Iโm a huge fan of ARA, and explain again why.
Tools such as Jenkins allow DevOps teams to automate the entire build/test stackโor, as much of it as their organization requires. That is a huge step forward, for all the reasons weโve covered in the past, including the one I think is often overlooked or underemphasized. With frequent build/test feedback, the code is still fresh in the developersโ head when they learn of problems. Most of the time, they are fixing before moving on to the next task, which is a huge plus compared to waterfall, where many problems show up long after the developer in question has forgotten what the code is doing because theyโre off on other things.
Likewise, tools such as Puppet, Ansible and Chef (to name a few) allow DevOps and security to set standards via script, and use those scripts to deploy over and over. This has all the benefits weโve discussed, tooโspeed of delivery, reduction of human error, repeatability that becomes stability, etc. This gives operations the ability to answer, โIs server X set up to do this new thing?โ by looking in deploy scripts and quickly updating things if the answer is no, but X will be required going forward. Thatโs one of my favorite bits of Application Provisioning.
Riding the Gap
For those unfamiliar, ARA simply bridges the gap between DEVops and devOPS. Tying code being released to platforms and configurations it will be released under. It has the ability to rapidly re-target a release to a new environment, and it can do predictable and repeatable releases, offering the benefits of application provisioning for the actual release segment. Most tools do this by tying together your favorite build tools and provisioning tools, and giving Ops a control panel that can manage the process end-to-end.
The benefits are huge. Particularly for Operations and Security (who have another place to standardize and insert essential monitoring), but also for development because it offers one further step in testing and by doing so reduces the surprises six months down the road, when youโve forgotten what
Bubblegum += 10
Is in your code for.
So donโt take my intro as offensive. I am a fan. But Iโm a realist. There is no panacea.
Itโs About the Data (as Always)
The two weakest parts of most ARA systems are server provisioning and data issues. Server provisioning is setting up OS/hardware, and many ARA systems tend to assume you magically did elsewhere, but this problem is only an issue in highly physical environments and there are tools to handle the problem; theyโre just not integrated well with most ARA systems. Data issues are the bigger problem.
Itโs cool that we can drag and drop a couple boxes, and magically switch our deployment from inside the DC to a cloud provider in the time it takes the ARA to build/deploy. But we all know thatโs not how the world works. Now you have an application, complete with database that is correctly configured and security that does AAA solidly โฆ and no data.
โJust move the data, then!โ the choir sings. No, thatโs really not how it works in an enterprise. Data itself is an object of security and compliance, and some source databases are so massive that moving them is a nearly impossible chore in and of itself. Amazon tips its hat to this fact with its import/export service.
This was the reason why I gut reacted to the โNo more physical data centers!โ crowd back in the midst of the hype with an eye roll. The amount of data stored in data centers is staggering, and often not portable at all. Add to this the fact that such data isnโt going to reduce, and we have a quandary.
What About Moving Forward?
Sometimes, it is necessary to accept that the current state is not changeable, but take steps to improve the future state. I donโt see this as a reasonable approach in this case, because the rules of data arenโt changing in a way to change future state in a positive way. Weโre generating more data every day, and that data will end up stored somewhere. Be careful where you store it, think long-term strategic. Having ARA doesnโt magically make that data portable, so make sure that where you store it today, while itโs small, is where youโll want to store it in five years, when it is a massive, largely immobile asset.
What to do โฆ What to do
Use ARA to multitarget all of those apps that are portable without terabytes of data, and make sure data generation/collection/analysis apps are on the architecture you will want them on moving forward. ARA offers a ton of other benefits, so data portability isnโt a deal breakerโor even a significant negative, since you probably already knew some datasets werenโt going anywhereโbut donโt expect miracles out of it. It canโt make your large datasets portable, so donโt expect it will. And use it to target the platform your organization feels is most appropriate for apps that will generate or collect a lot of data.




