Private, Public, Hybrid, Infrastructure as a Service, Database as a Service, Software Defined Datacenter; call it what you will but for the sake of this post I’m going to sum it all up as cloud. When virtualization started to become mainstream we seen a lot of enterprises adopt a “virtualization first” strategy, meaning new services and applications introduced to the business will first be considered to be virtualized unless a solid case for acquiring physical hardware can be made. As the IT world shifts we are seeing this strategy move more towards a “cloud first” strategy. Companies are asking themselves questions such as “Are there security policies stating we must run this inside of our datacenter?”, “Will cloud provide a more highly available platform for this service?”, and “Is it cost effective for us to place this service elsewhere?”.
Honestly, for a lot of services the cloud makes sense! But is your database environment one of them? From my experiences I’ve seen database environments stay relatively static. The database sat on different pieces of physical hardware and watched us implement our “virtualization first” strategies. We’ve long virtualized web front ends, the application servers and all the other pieces of our infrastructure but have yet to make the jump on the database. Sometimes it’s simply due to performance, but with the advances in hypervisors as of late we can’t necessarily blame it on metrics anymore. And now we are seeing cloud solutions such as DBaaS and IaaS present themselves to us. Most of the time, the database is the heart of the company. The main revenue driver for our business and customers, and it gets so locked up in change freezes that we have a hard time touching it. But today, let’s pretend that the opportunity to move “to the cloud” is real.
When we look at running our databases in the cloud we really have two main options; DBaaS (Database functionalities delivered directly to us) and IaaS (The same database functionality being provided, but allowing us to control a portion of the infrastructure underneath it.) No matter the choice we make, to me, the whole “database in the cloud” scenario is one big trade off. We trade away our control and ownership of the complete stack in our datacenters to gain the agility and mobility that cloud can provide us with.
Think about it! Currently, we have the ability to monitor the complete stack that our database lives on. We see all traffic coming into the environment, all traffic going out, we can monitor every single switch, router, and network device that is inside of our four datacenter walls. We can make BIOS changes to the servers our database resides on. We utterly have complete and ??? control over how our database performs (with the exception of closed vendor code ) In a cloudy world, we hand over that control to our cloud provider. Sure, we can usually still monitor performance metrics based on the database operations, but we don’t necessarily know what else is going on in the environment. We don’t know who our “neighbors” are or if what they are doing is affecting us in anyway. We don’t know what changes or tweaks might be going on below the stack that hosts our database. On the flip side though, do we care? We’ve paid good money for these services and SLAs and put our trust in the cloud provider to take care of this for us. In return, we get agility. We get functionality such as faster deployment times. We aren’t waiting anymore for servers to arrive or storage to be provisioned. In the case of DBaaS we get embedded best practices. A lot of DBaaS providers do one thing and one thing alone; make databases efficient, fast, resilient and highly available. Sometimes the burden of DR and recovery is taken care of for us. We don’t need to buy two of everything. Perhaps the biggest advantage though is the fact that we only pay for what we use. As heavy resource peaks emerge we can burst and scale up, automatically. When those periods of time are over we can retract and scale back down.
So thoughtful remarks for the week – What side of the “agility vs control” tradeoff do you or your business take? Have you already made a move to hosting a database in the cloud? What do you see as the biggest benefit/drawback to using something like DBaaS? How has cloud changed the way you monitor and run your database infrastructure?
There is definitely no right or wrong answers this week – I’m really just looking for stories. And these stories may vary depending your cloud provider of choice. To some providers, this trade-off may not even exist. To those doing private cloud, you may have the best of both worlds.
As this is my fourth and final post with the ambassador title I just wanted to thank everyone for the comments over the past month... This is a great community with tons of engagement and you can bet that I won’t be going anywhere, ambassador or not!