As published on The New Stack
Is your organization looking to gain a sustainable business advantage, or trying to increase business velocity with cloud native applications? Chances are your answer is yes or soon-to-be yes — and that you’ve had or will have had a leading role in the app’s development.
For you, risk is not an acceptable option. Here in this post, I’m specifically referring to the risk of performance and stability issues once applications are in production, at scale, on day two.
Let’s examine why and how to strip the risk from day two operations. For one, it has a tremendous upside for the organization. What’s more, it reflects extremely favorably on you as the architect.
Cloud Native Opportunities and Challenges
The modern enterprise must balance an increasingly complex environment with its ability to innovate. No one says it’s an easy feat.
On the plus side, at the intersection of cloud and open source, there lies a plethora of new technologies that can help businesses transform almost overnight. And transform overnight they are being forced to do. Since the year 2000, over half of the Fortune 500 have disappeared; through merger, acquisition or simply closing their doors due to failure to take advantage of digital disruption.
Undoubtedly, digital transformation is a major driver in the shift toward application-centric methodology. That said, new technologies like cloud native ones, and how they interoperate, have introduced levels complexity that IT has not seen before. IT has been charged with the task of transforming the business through the use of real-time analytics and applications that can be tuned, updated and optimized in minutes, not days or months. This rapid deployment model places tension and stress on the traditional IT functions and processes, requiring organizations to take an entirely new approach to application development and operations.
The playing field is far from level. Organizations born in the cloud with their developer armies tend to have a leg up on more traditional enterprises. It wouldn’t be a stretch to say the state of cloud native app development today is like tinker toys for digital natives.
Complexity: The Cloud Native Killer
Whatever the size of your team or where your business sits on the DevOps maturity curve, complexity challenges everyone. It’s the biggest killer of cloud native applications. And when you’re faced with navigating an enormous open source universe and ensuring that the selected technologies will always work with your existing IT stack, it can lead to unique challenges on Day 0 (proof of concept), Day 1 (deploying your first application) and Day 2 (defined below).
Defining Day 2
Day 2 is a DevOps concept that has been around for some time, referring to the phase of the development lifecycle that follows initial deployment where the real application demands exist. On Day 2, Service Level Agreements (SLAs) are ratified and guaranteed, as organizations place stringent requirements on applications such as resilience, scale, agility, security, governance and compliance. In other words, Day 2 is when an enterprise feels the real business impact, or crushing loss if it fails, potentially flushing hundreds of hours and thousands of dollars down the drain.
Beyond simply deploying one application with a handful of microservices, Day 2 means successfully navigating multiple cloud native applications deployed with different requirements, technologies and SLAs that have to be managed and operated. Day 2 represents a consistent and sustainable operational capability across projects and applications, empowering organizations with a uniform way to audit, secure and prove compliance.
Smart Companies (and Architects) Plan for Day 2 Before Day 0
The reality is that today’s dynamic IT environment, while experiencing the creation of truly amazing technology, forces organizations to choose from an excessive number of options — from cloud providers to orchestration platforms, to setup tools. Do you use public cloud, private cloud or a hybrid of the two? What do we use for monitoring and logging? How should I integrate my developer pipeline?
The path to building applications can take months just for initial setup and often overlooks how they need to perform in the real-world every day. Celebrations on Day 1 when an application goes live are not only premature, but poor planning also leads to untimely damage control on Day 2 when scale creates unforeseen problems, such as application crashes and performance degradation.
However, the real failures in Day 2 are more process-related than technology, as organizations are unable to efficiently respond to application performance issues because they don’t have the correct monitoring, logging and alerting to identify the root cause and remedy the incident. It’s about not knowing how to troubleshoot or recover in Day 2 that leads to the most tragic circumstances.
Success in Day 2 requires the following three steps:
- Design with Day 2 in mind by including operational teams in planning conversations, as they will be responsible for architecture and platform decisions.
- Understand that smarter and reliable deployments that drive an organization’s success are contingent on more than just technology.
- Pair technology with the necessary experience to guide strategic planning efforts starting early, meaning proactively identify production requirements for success before any code is written or specific technology is selected.
It’s time to make cloud native development ready for enterprise prime time and empower all of you technical leaders who have the savvy to spearhead powerful change within your organization. Fundamental to this mission is early Day 0 planning for de-risking Day 2 to allow mission-critical applications to achieve their full strategic value for the business. The future of the modern application is based on cloud-native concepts and benefits, so be sure you’re preparing your organization, your career and your customers for long-term success.