Ciklum
Software-Defined Applications
and Infrastructure
2015
Ciklum
Software-Defined
Applications and
Infrastructure
www.ciklum.com [email protected]In the last few years, the concept of “agility” has
come to captivate the entire technology industry.
From six-person startups to thousand-strong enterprises, there is a drive to develop and to innovate faster, leaner, and smarter. This pressure, and the underlying cultural shift, has caused companies to question their long-held assumptions about what could -- and could not -- be automated, virtualized, or done in code. This questioning has led to the development of many cutting-edge technologies for managing
applications and infrastructure, making it possible for companies to adapt more quickly across their entire stack, from application to network to compute to storage. These advances, here summarized as “software-defined applications and infrastructure,” have made it easier for companies of all sizes to innovate, adapt, and deliver value.
These advances create challenges for larger enterprises, however, as these large, bureaucratic enterprises are now facing increased competition from nimble, savvy startups who are better-positioned to capitalize on these new technologies. Larger companies, buttressed by strong mindshare and marketshare, have felt less pressure to embrace these new technologies (and related philosophies). As these technologies mature, however, and larger companies realize more and more that their strong positions are no defense against disruption by smarter competitors, it is becoming imperative for large enterprises to learn from startups and to adopt their intelligent practices.
In this paper, we will discuss the emergence and characteristics of these new movements in software development and infrastructure management, and their implications for digital businesses of all sizes.
Agile Software
The “agile” movement was born in 2001, with the publishing of the “Agile Manifesto”, a set of four slogans and twelve principles which have come to define the cutting edge of software development. Those slogans, now common coin among software developers, are:
• Individuals and interactions over processes and tools
• Working software over comprehensive documentation
• Customer collaboration over contract negotiation
• Responding to change over following a plan This movement was a reaction to the prevailing paradigm of software development, commonly known as “waterfall,” and its numerous shortcomings. In waterfall development, a great deal of time is spent at the start of a project to define the requirements, establish the terms of engagement, and design the application. Only much later is software actually written, and not shown to the client until it was deemed
complete. Inevitably, as the agile founders contend, the developers would learn that the requirements had since changed, that the client had not fully understood their needs during the design phase, and that the project was more complicated than they had scoped. Missed deadlines, frustration, and buggy software was often the result.
As industry veterans, the founders of agile development realized that uncertainty and change are fundamental aspects of the software development profession, and sought to build a workflow that reflected this reality. This workflow seeks to create a development process
Infrastructure as Code
As the agile principles began to take root in developer’s imaginations, technology leaders started to look at other opportunities to build flexibility into their processes. Eventually, they started to realize that the infrastructure side of software -- the configuration and management of servers and networks -- was something that could potentially be automated as well.
Previously, internet companies needed large teams of system administrators to configure their servers and their networks, ensure security, and keep the systems running. Making changes to this infrastructure would require several weeks, if not months, of reconfiguration and testing. Once running, maintaining this infrastructure, and finding and fixing its failures, required the skilled labor of many engineers and sysadmins.
Eventually, innovative technologists started to wonder whether they could write programs to automate and manage this infrastructure on a mass scale, rather than spend many hours tinkering with settings. To their surprise, they found they could. Companies like Puppet (2005), Chef (2008), Salt (2011), and Ansible (2012) began developing software capable of managing entire clusters of servers -- writing files, executing processes, and checking for failure. Properly configured, these tools could autonomously oversee the configuration and management of arbitrarily large collections of servers, enabling increased flexibility of infrastructure on a massive scale.
These technologies work by exposing a language that can be used to describe server configurations as code. For example, rather than manually install, configure, and run nginx (a popular web server program) on every
server, it is now possible to define in a single shared file the desired state for nginx, and to have the relevant agents execute whatever commands are necessary to bring the server (or cluster of servers) into the desired state. These configuration files can be placed under version control, shared, and updated as the system as a whole evolves, making it easier than ever to set up and manage large, complex deployments.
As these technologies advanced, it became possible to control massive distributed systems from a single location. Their flexibility has made it possible to change infrastructure with the same flexibility as application code, bringing concepts of agility to infrastructure. This has made it possible to scale applications with greater speed than ever before, as well as provision new servers in order to support new, specialized applications.
These advances have also made it possible to abstract the infrastructure underneath a layer of software, an important landmark in the development of hyperconverged hardware, discussed shortly. that adapts quickly to changing requirements, easily
incorporates new knowledge and requirements, and continually delivers incrementally-improving software. This workflow has come to be implemented in many different ways: through “scrum” and “kanban,” using tools like Pivotal Tracker, Trello, Jira, and Asana, and by defining projects in terms of “user stories” and “points.” Different teams and different individuals have their own preferences, but the underlying principles are always the same: seek and respond to user (and client) needs, and continually expect and adapt to change and new information.
The deeper philosophy of agile is that people do not really know what they want until they have it, and that the best way to develop software is as a series of targeted experiments, each shedding more light on the customer and their true desires. It is this ability to quickly and cheaply experiment, discard, and refine that makes agile practices so effective for making great products, and what has allowed small companies who embrace these practices to disrupt their larger, more entrenched competitors.
The Cloud Revolution
All the while, general advances in technology (Moore’s Law and related phenomenon) were making it easier to move information. Dramatic increases in internet speeds in the last decade have made it possible to rely more and more on remote storage and compute power, rented by the hour, month, or year, from distant data centers. Commonly known as “cloud” services, the increased availability and sophistication of these services has transformed software development by reducing the cost and complexity of acquiring and maintaining IT resources to nearly zero.
The extreme flexibility that the advent of cloud infrastructure brought to businesses is hard to overstate. Capital expenditures (CAPEX) presented significant barriers to entry for small businesses looking to develop and market internet products. This gave an advantage to larger enterprises, who were able to achieve economies of scale in regards to capital expenditures -- allowing large firms to outcompete small firms by virtue of their size, not the quality of their product. Cloud services have lowered these barriers to nearly zero -- an internet product with one million monthly active users (MAU) can be run on Amazon Web Services (AWS) at an annual cost of less than $10,000, billed by the hour. Amazon recently released a whitepaper showing how their clients saw an average ROI of 560% over five years of using their cloud products: https://aws.amazon.com/resources/ idc-business-value-learn-more/.
In addition, services like AWS, along with Microsoft’s Azure, IBM’s Bluemix, and dedicated cloud providers like Heroku and Digital Ocean, are continually
developing new products to make it easier to develop and manage virtual infrastructure -- AWS products like OpsWorks provide an easy interface into Chef
(discussed above), while others, like Elastic Beanstalk, aim to create a single-button deployment option for simple applications.
Services like these have become the de-facto standard for startups across the world. The flexibility they offer makes it significantly easier to develop and deploy applications at the lowest possible cost, and their built-in monitoring and configuration interfaces make it significantly easier to manage this virtual infrastructure. This frees up valuable engineering resources to improve their products in response to market information, allowing the company to devote the maximum percentage of its resources to value-adding projects.
Cloud computing is not without its risks, however. Using cloud services necessarily requires relying on the cloud vendor to maintain the physical servers. Power outages and other unexpected disasters can bring down even the most hardened data center, and many enterprises are unwilling to surrender direct control over their hardware. In addition, many enterprises feel that cloud computing introduces unacceptable security risks, as their sensitive data will be stored offsite, on the same hard drives being used by countless unknown neighbors. Finally, some enterprises are wary of being tied to a single provider. They perceive that using a single cloud provider’s services will make it difficult to switch to another in the future, potentially putting the company at a disadvantage.
There are arguments to be made in both directions for all of these issues, but for now it is a fact that many enterprises shy away from the cloud, despite the advantages in speed and flexibility.
The New Enterprise
The advances in cloud computing have transformed the experience of consumers, as well as those of small and medium-sized businesses. For large enterprises, or those with sensitive data, cloud computing remains an unacceptably risky option. Large enterprises often choose to maintain their IT infrastructure in-house, and accept the costs associated with acquiring and maintaining storage, compute, and network resources as a necessary cost of doing business.
Yet, IT costs are a continual source of frustration. As a cost center, IT by itself creates no value for the business -- it is what that infrastructure makes possible that creates value. Current practices persist because there not yet a clear enterprise-grade alternative. As a result, enterprises are slowed by the significant friction involved with manually managing infrastructure, making them vulnerable to disruption by more nimble competitors.
Most CTOs, CIOs, and other C-level technology executives, are keenly aware of the tremendous progress taking place in their industry, and the amazing achievements being made by smaller firms who understand and are able to capitalize on new technologies. Slowly but surely, we are seeing the emergence of onsite, enterprise-level solutions which provide all of the benefits of agile, automated, virtualized infrastructure.
Companies like Nutanix and EMC are developing new hardware designed to be easily clustered and automated, eliminating the need for costly and slow manual configuration. New software platforms like OpenStack and Cloud Foundry are making it easier to virtualize and control entire data centers, abstracting away the underlying storage, compute, and network
resources, and making it much easier to provision and allocate resources as-needed without needing to manually configure the underlying hardware. Existing industry leaders like VMware are developing tools like NSX to make it easy to automate existing infrastructure, with minimal impact on existing configurations.
We are still in the early days of these enterprise-level solutions, but a new buzzword has already emerged: hyperconvergence. A hyperconverged data center is one where storage, network, and compute are all virtualized and managed via code, in which analytics, provisioning, backup, scaling, and healing are all automatic processes requiring minimum intervention by IT staff. The ideal hyperconverged solution is an out-of-the-box product, much like the original Mac was
for personal computers, that can be plugged in and configured with a few clicks.
The hyperconverged data center promises to be for enterprise what cloud services are for startups: a powerful and easy solution that frees up the maximum percentage of technical talent to work on value-added projects.
The New Normal
As the costs of storage, network, and compute resources continue to fall, and as virtualization and automation technologies make it increasingly easy to deploy and manage software, capital will increasingly cease to be a barrier to entry into the marketplace. More and more, companies will rise and fall by
delivering value to customers, and good ideas will have an easier time succeeding than ever before. To run a successful business in the modern age, it is crucial that leadership capitalizes on the advances in technology and best practices to build responsive, intelligent companies.
In many ways, these are positive developments: companies will no longer be able to get by due to an entrenched market position, and the quality of products available to consumers will continue to improve as new innovations are quickly tested and developed in response to consumer taste. This does present challenges to existing market leaders, however, who are finding themselves more and more under pressure to act like their more nimble competitors.
If we view the emergence of agile software
development as a recognition of the need to adapt to shifting client needs and new information, then we can see the emergence of software-defined applications and infrastructure as the recognition of the need to holistically adapt to shifting market needs (in their totality). Being a leader in today’s market is no longer a guarantee of success tomorrow, as newer companies are leveraging new tools to quickly learn their customer’s preferences and adapt their product to meet those preferences. With low barriers to entry, it is customer empathy, speed to market, and quality of execution which determine a company’s fate in today’s technology world.
Failing to shift to software-defined applications and infrastructure will leave firms in a vulnerable state, unable to adapt to changing markets and ill-positioned to respond to new challengers. It is imperative that companies of all sizes begin adopting a new approach to infrastructure, in which storage, compute, and network are all controlled en masse via a single point -- either a cloud interface, or a software abstraction layer over an in-house data center of hyperconverged server nodes. Failing to do so will leave companies in highly vulnerable positions, unable to respond to inevitable future challenges.
Fortunately, it is becoming easier and easier to make the shift. Companies like Amazon, Chef, VMware, and others are all keenly aware of the immense challenges that companies are already facing, and are working to make their products more convenient and easier to use. As mentioned above, Nutanix and others are working on hyperconverged hardware which can be easily clustered with minimal configuration and management. Larger companies have been slow to make this transition, creating a significant opportunity for a vendor to claim dominance in this space. Look forward to more and more products of these types to emerge over the upcoming years.
The next decade holds both immense challenge and immense promise. Old assumptions about why companies rise and fall are being revealed as groundless, and revolutions are emerging from unexpected corners. As the pace of change continues to accelerate, companies will be increasingly defined by their ability to adapt. Moving to software-defined applications and infrastructure is the first step towards meeting these challenges and seizing these opportunities.
© Ciklum 2002-2015 All rights reserved www.ciklum.com