DevOps plus Cloud: The Data-Driven Application Development Approach
DevOps the new philosophy for startups. I first had a look at what a data center is back in 2013, training with a Data Service Company. This was a room heavily invested in computing infrastructure which was capital intensive and a sacred shrine out-of-bounds for Juniors – well not for me *winks*.
Today with the deluge of startups springing up at a fast pace. One may wonder if this means these startups invested in such infrastructure to get her application to the end users. Not really! As technology is driving the economy in most countries and startups being a business that could just have between 1 – 10 employees within a 30 - 50 square floor these companies leverage on the cloud to delivering her application. This has totally eradicated months of setting up these infrastructure and also reduced the financial involvement by more than a million percent.
What is DevOps and how does it relate to cloud computing. Let’s start with the latter, Clouding computing. This is a technology of different sets and types of computing hardware, and components orchestrated to deliver services such as networking, infrastructure renting among many other things. Customers pay to temporarily own part of these infrastructures – web servers, database servers, load balancers etc. This is cost efficient and allows the lean startup to showcase her idea in the shortest possible time with minimal financial investment. DevOps leverages on this to deliver her application through a continuous development and integration methodology. This is how new features are also quickly implemented at the customer's request with less hassle. DevOps as David Linthicum remarks is about changing the processes of software development and deployment within the organization, applying tools that automate this and enhance quick delivery to market. It is the tight collaboration between the developers and operators removing the silos which were once the major barrier to effective and timely delivery. DevOps is the collaborative, cross-functional work style, where Devs and Ops share knowledge and have a basic understanding of each others task removing the bottleneck and finger pointing that used to be the norm in the past. It is bringing together smart individuals on a common goal to deliver great user interface and awesome user experience application.
So how do companies especially startups adopt such new software development methodology? Least I create this general impression of things being simple, this approach involves a lot of learning and acceptance for a new way of software development. Some few years back, websites and web applications were typically dumped unto a hosting provider's platform – this is still prevalent today, although cloud computing is fast replacing that. Today not leveraging the cloud not only limits the scalability of your business but makes your operational cost high.
A company's decision to adopt the agile methodology and moving her applications to the cloud could be quite challenging at the start. Probably due to the seemingly overwhelming number of services offered by these cloud providers and to some extent the learning curve to effectively use the cloud whichever provider you choose. It is important for the individual charged with your cloud operations to have some basic idea of software development cycle, networking lingo, and the concept of web servers. This would make the learning smoother.
The whole idea of deploying application unto the cloud revolves around bringing together pieces of various computing component to get your application served to the end users as opposed to the now phasing out approach where you simple upload your working application after development to your host provider who must have coupled these fixed resources at a price and would only upgrade your resource only when you might have suffered some lose owing to customer's complaints and at a price not favourable for your business – especially if the traffic on these servers are only at a high during some specific period of the day, week, or month.
I would possibly guess you just muttered why take the hard route if the hosting providers do that for me? Because this is typically what it means to be on top of your game. To give an instance, say you developed a school management system, and was lucky to close a deal with a client whose student population is about 5000, and your app seamlessly and flawlessly worked on a value hosting plan of your hosting provider which made provisions of a 20GB HDD, 4GB RAM, and sometimes leaving your no explicit choice of which additional services you may like to add – like upgrading your PHP interpreter from 5 to 7, using Ubuntu instead of Debian etc. And at other times if they create such offering append additional prices. This may be fine but does not build a contingency plan for an increase in student populations which translates to much load on your server than the allocated resources can handle.
Oh! I think I hear you also ask how DevOps connects with this. Okay. We are more than ever in a fast-paced, dynamic and always evolving time, with the need of customers changing nearly at splits of seconds – okay that may not be overtly correct. But the businesses that have the edge are those which could meet the customers need very quickly. This is where the DevOps agile methodology comes to play. Usually, every development team understands that with modifications in a codebase comes some head-aching bugs and sometimes coders syntax error which could be hard to pick most times -Phew! What a tough job. This tends to halt deployments and hinders the quick delivery of this new features. Continuous Development, Continuous Integration, and Continuous Deployment is DevOps workflow that meets these customer's demand in reasonable time.
My point? Explore the Cloud. It is driving the technology industry which makes it the cheapest fastest way for startups to demo that awesome application and collect feedback for the more stable launch.