It finally happens: your doctor tells you to get off that comfy couch and start exercising. You decide on your weapon of choice: running. After all, how hard can it be to run?
At first, it is brutal and slow—small surges of ponderous running followed by long recovery times. Your form is inefficient; your speed is barely faster than a brisk walk; and your legs, lungs, and for some reason, even your arms hurt from the short distances. It feels positively Sisyphean. However, doctor’s orders, so you persist.
Your legs start firming up, your form improves, and—though you still hurt while running—you start feeling good afterward. Your endurance increases, your weight decreases, and suddenly you hit an inflection point. Your improved endurance, combined with your reduced weight, has set the scene for your first surge forward. At this inflection, the combination of endurance and weight loss set the stage for your first run where you feel like a real runner. You run faster and farther, and you feel better.
This same inflection exists with technology—especially when it comes to modernizing your infrastructure and business applications. Instead of doctor’s orders, you’re faced with market demands, a restless board of directors, and a cacophony of user requests. Your movement from large, monolithic, single-deployment architecture to less-weighty, more-agile technologies is analogous to the shedding of your pounds. The advantages of modern architecture, such as ease of deployment, scalability, and non-disruptive upgrades, provide the structure to build the endurance your company needs to surge forward.
For at least three decades we have faced the need for modernizing legacy applications. Mainframe to PC, to client/server, to Web, to SOA, and now to cloud. Today, the stage is set better than at any time in the past for the modernization of traditional applications. Enterprise-grade technology is cheaper than ever and readily available. Cloud services and open source have reached the level of maturity and reliability associated with traditional boxed software. Finally, expectations of users—both inside and outside of your company—and the market in general for applications and use of technology are at heights never before seen with no signs of letting up.
While this may sound like a CIO’s horror movie, it is an exciting time with plentiful opportunity. It’s up to the CIO and CTO to understand how these changes affect their organization and business and ultimately set up their team for success.
Technology and User Expectations
There are three major trends causing the modernization of key enterprise applications to be more important than ever before: cheap and available technology, mature and reliable technology, and market and user expectations. Each presents a multitude of challenges, however, with a calculated approach the benefits can be harnessed and the risks mitigated.
Cheap and Available Technology
The explosion of open source technologies in the last decade has led to an unprecedented amount of free, stable, maintained, and configurable tools and applications. Linux and open source BSD OSes have been market-proven for over a decade, demonstrating a richness in features, performance, and stability. Following this enormous success has been a flurry of tools from source control, server/VM management, development and deployment frameworks, and robust lightweight programming and scripting languages.
Today GitHub alone contains over 30 million projects and over 12 million contributing developers. Projects such as Jenkins, Docker, Hadoop, Vagrant, MongoDB, and hundreds of others are widely used for enterprise-scale development and deployment across the world.
The move to an “as a service” tech economy at wide scale enhances this offering. Shifting costs from CapEx to OpEx has caused challenges for enterprises. But early adopters have paved the way for the late majority. Huge capital costs for data centers are replaced with operating expenditures providing a lean cost model, easier global expansion, and better budget management.
The combination of enterprise-class open source tools and cloud services provide the necessary ingredients to begin a modernization strategy with relatively low capital outlay.
Mature and Reliable Technology
RightScale’s 2016 State of the Cloud Report provides a comprehensive view of enterprise cloud maturity and the challenges enterprises are facing. Cloud Explorers have multiple applications running in the cloud and Cloud Focused Enterprises are heavy cloud users. These two groups combined represent 59% of enterprise respondents. Cloud Beginners, those with one project running in the cloud represent another 26%. Cloud Watchers, those who are planning to use the cloud, and those with no cloud plans represent 9% and 6% respectively. Cloud is well past early adopters.
The growing interest in the cloud is reinforced by enterprises reporting that their number one challenge with respect to the cloud is the availability of expertise, which jumped from 27% in 2015 to 32% in 2016. All other challenges remained about the same. Demand for knowledgeable resources is outpacing supply. This is another sign that the pace for cloud adoption is accelerating.
This year Amazon Web Services (AWS) turns ten years old. For fiscal year 2015, Amazon reported AWS revenue of $7.88B and some analysts predict that 2016 revenue will top $10B. Microsoft Azure turns six years old this year. Though Microsoft does not split out Azure revenue, analysts estimates are in the $3B to $5B range.
Precise numbers are not important; what’s important is cloud services are realizing material revenue, which is a direct result of the actions that enterprises are taking. Netflix (2015 revenue of $6.77B) recently completed a seven-year migration project, now the entirety of their stream service, worldwide, runs on AWS. Cloud technologies are not only ready for the most demanding of workloads, billion-dollar companies run their core business on them 24 hours a day, 365 days a year, across the globe.
Market and User Expectations
People have grown to expect highly robust and integrated experiences from the applications they use. Whether it’s controlling their lights, doing their banking, or booking a table, people expect applications to be constantly updated with new capabilities, and for these updates to happen without intervention or downtime.
Uber and Lyft are harnessing technology to drive a revolution in hired ground transportation. Airbnb is doing the same in overnight accommodations. Netflix toppled the incumbent empires of video rental through innovative technology. These companies are not only causing major disruptions in their respective market, they are also altering customer expectations across all markets.
According to a Forrester report, organizations modernize for a variety of reasons, but the common themes are faster response to rapidly changing markets, empowered customers, and nimble competitors. (“Application Modernization, Service by Microservice” –Forrester 11/20/2015)
Gartner adds that cloud, mobile, social, and information are driving insatiable demand for new application requirements to meet ever-changing business process capabilities (“How to Modernize Your Application Portfolio” – Gartner, 1/23/2014).
People’s heightened expectations translate to enterprise applications. The analyst in the finance department expects low latency data and for new business requirements to be met in days. Customers expect information and services to be available through the experience of their choosing, generally mobile first. They also expect these services to be integrated and instantly available 24 hours a day, 365 days a year. In the modern world of continuous deployment, on-demand scalability, and 24/7 availability, having a site or service down for maintenance is akin to somebody receiving a busy signal when they call you. Those days are over.
IT organizations are under pressure to meet these ever-growing expectations. Starting from scratch is generally not feasible, they must figure out how to breathe new life into existing applications to support richer scenarios and ultimately meet user and market expectations.
When approaching modernization teams will often jump straight to the technology. We recommend a structured approach that supports building a strong foundation for continued and sustainable innovation and allows the demonstration of incremental progress that doesn’t require months of investment.
In Nordstrom’s February 2016 earnings call, CFO Mike Koppel said the company intends to focus its online technology efforts on fewer, more meaningful projects. In addition, the company stated it’s going to reduce its capital spending this year and for the next few years. This increases the importance of breathing new life into existing applications and doing so in an iterative manner to reduce overall risk.
The modernization approach involves three steps:
- Remove delivery bottlenecks caused by resource scarcity.
- Introduce modern processes and supporting tooling.
- Employ modern cloud technology and architectural patterns.
Step 1: Remove delivery bottlenecks caused by resource scarcity
A nirvana for application development teams is self-service access to clean environments that are representative of the production environment. It’s typical for teams to work in environments that are cobbled together, loosely representing the actual production environment. Furthermore, when it comes time to deploy between environments, these environments are locked down for days or more. Even in this situation, there are usually only a small number of these prized environments. Developers and testers are reluctant to let these go for fear they’ll never be able to get those resources back. The latency for fulfilling even a single VM request can be lengthy. A four-week wait time for a simple Linux VM with minimal memory and disk is ponderously common.
Before attacking your processes and ultimately the application, you need to equip your team with the right tools. They need to be able to conduct side-by-side testing. They need to be able to experiment at a rapid pace at low cost. They need to be able to start from the last known good state, thrash on it, throw it away, and instantly get another environment. These environments need to be representative of the production environment. Variability leads volatility which leads to uncertainty which ultimately leads to risk. “It works on my box” is a sign that your environments are suffering from insufficient determinism!
Step 2: Modernize processes
The ability to reliably and repeatedly build applications, configure target machines, and deploy applications to those machines is critical to success. This is partially leveraging the right tools but it’s mostly about culture and process. There is ample literature on continuous integration, continuous delivery, configuration management (codifying machine configuration), agile and lean development, and DevOps. The issue is not a lack of ideas, process, or philosophies.
You need to do your homework and determine which approach and which tools will work best in your development culture. A lot of this depends on your company’s—and team’s—current culture, the culture you want, and your change management process. Trying to anticipate all future needs and roadblocks is a futile exercise. The road to success is to list the required changes, and accept the weeks, months, and years it will take to implement them. Implement a change management process for your development process; a process that flexes with new information and rewards forward progress. Lastly, don’t be afraid to seek outside help. There are experts abound who have implemented these process and tools many times over. Though you might think your situation is unique, many organizations have faced the same challenges that you face.
Step 3: Modernize the architecture
Your applications have years—and in some cases—decades of changes. A bit of exception logic here and bit more over there. Special logic for month-end, quarter-end, year-end and something more special for leap year. The change history contains names of application developers who have since retired from the company. The functional specifications are nowhere to be found and the code is poorly commented.
These applications, however, provide vital functions to the business and cannot easily be sunset or wholesale replaced. There are many approaches to updating these applications that are beyond the scope of this paper. If you’ve followed steps one and two, then your processes and tooling are already structured for your teams to get down to serious business, regardless of the approach and technologies you employ. Remember, you will not only need to run old and new in parallel to support testing efforts, there are parts of the old that will be live in production for months—potentially years to come.
Even though it’s over two years old, Gartner’s advice is as relevant today as it was in 2014: Application modernization efforts require an organizational-level strategy and plan that involves all aspects of the IT organization. (“How to Modernize Your Application Portfolio” – Gartner, 1/23/2014) Lifting your critical business technologies off of legacy implementations and renovating them to take advantage of modern technologies and processes is much like the undertaking when you decide to start running for your health. You don’t open the front door and start running. You need the right game plan, the right foundation, and the right tools. Create a plan, iterate on it, and keep moving forward. Nobody wins a marathon from years of watching from the sidelines. You have to get up, work hard, and—most importantly—get in the race.
This post was co-written by Jacob Manalan.