Author: Bob Quillin

  • A Guide to Sustainable Application Modernization

    A Guide to Sustainable Application Modernization

    Sustainable development is a blueprint for societal growth that is applied around the world to balance the needs of the present while optimizing for the future. Sustainability consists of three pillars — economic, environmental and social — that must work together to meet this goal. The complexities of digital transformation and application modernization can benefit from applying a sustainability lens to this challenge that not only includes the technical benefits of cloud computing but, more broadly, the three P’s of sustainability: Profit, people and planet. Application modernization will benefit the business in measurable ways, but can also affect unexpected positive cultural and green initiative benefits.

    Sustainable Application Modernization: What is it?

    Sustainability initiatives have always had to take a holistic approach that combines human, ecological and economic health and vitality. Sustainable application modernization is no different in that business leaders are dealing with finite resources (budget, staff and time) that must be applied now to align with longer-term priorities and their associated consequences. The main goal of application modernization is to transform an enterprise’s monolithic applications into modern architectures that can more fully take advantage of cloud-native services such as containers, microservices, serverless and a range of DevOps methodologies. These technical capabilities lead to a number of high-value cloud benefits including scalability, elasticity and engineering agility. Too many modernization strategies and business plans stop there and this is a mistake. By undervaluing the sustainability benefits that include economic, environmental and people upsides, technology business leaders are not accounting for some of the most important benefits of modernization.

    Breaking down the modernization problem along the three pillars of sustainability helps define sustainable application modernization:

    • Economic sustainability: The business benefits of modernization must account for releasing more features and fixes more frequently, less downtime, lower technical debt and higher rates of innovation.

    • Environmental sustainability: A modern architecture is more resource efficient, scales at a much finer level than a monolith, and is able to take advantage of cloud data centers that offer the “greater efficiency of aggregated compute resources.” These cloud-native architectures enable more intelligent application orchestration and resource allocation usage based on demand, need, cost, seasonality and performance.

    • Social sustainability: Besides the ongoing challenge of recruiting and retaining talent for maintaining a monolith, the resulting development team structure is a direct reflection of the architecture itself and this is most often monolithic, too. A more domain-centric approach using modern technologies creates leaner, more focused team topologies that can also operate effectively in remote work structures.

    The broader benefits and impacts of effective application modernization align directly to metrics associated with elite performers in DevOps research reports that track four key performance categories: Frequency of application deployments, application feature lead time, change failure rates and time to recovery. This long-standing and annual research report from DevOps research and assessment (DORA) metrics also now reaches beyond the business and technical dimensions into the performance, culture, people, burnout and team impacts of these modern best practices.

    Application Modernization is Not Just an IT Problem

    Most application modernization projects never fully get off the ground because technology leaders look at modernization as just an IT problem. The business cases for these projects focus on technical benefits or simple cloud migration and lift-and-shift infrastructure cost improvements. A sustainable application development methodology opens up this calculus to the three dimensions of sustainability: Economic, environmental and social.

    Much as everyone from developing countries to the richest nations in the world view sustainability initiatives along these lines—balancing economic growth, environmental health and the vitality of their citizenship—application modernization projects can be a catalyst to major improvements that drive profit, maximize efficiency while improving company culture, retention and team growth.

    Sustainable Application Modernization: Three Steps to Get Started

    The enthusiasm for application modernization is high, but organizational precendent and a history of failed efforts stop most projects before they get started. These three steps can set you on a sustainable path going forward.

    • Start with a data-driven plan: A monolithic application architecture requires a quantitative understanding of the technical debt you are carrying at an architectural level; the move to a cloud-native architecture unlocks the business, environmental, and cultural benefits discussed above. Thus, it’s critical to assess your application estate from an architectural perspective to calculate the complexity and risk associated with your applications, prioritize which applications to modernize and extract ROI benefits related to the modernization effort.
    • Build a broad coalition across the pillars: A sustainable application modernization plan works across three pillars that span different roles, functions, and initiatives in an organization. This strategy creates both an opportunity and a need to recruit outside the technology team to the business and product owners that can validate and then promote the economic upside. Next, pull in green initiatives and corporate sustainability representation that can quantify and promote the environmental benefits further. Finally, HR, training and project management experts will understand and align with the people-side of modernization to create more agile, happier and efficient teams.
    • Create a continuous modernization culture: This approach is designed to maximize short-term benefits while optimizing for the future. It’s critical to look at this as an ongoing, continuous best practice that becomes ingrained at both a technical and cultural level. Most modernization strategies have resulted in one-off projects that, even if completed, may quickly devolve back to bloated monoliths due to a lack of cultural and organizational commitment to take these practices forward and iterate across all applications in the future.

    Sustainable application modernization methodologies can change the course of application development inside an organization and provide a catalyst toward a thriving future that pushes the technology forward and can maximize the value to the business, environment and company culture.

  • Best Practices for Modernizing App Modernization

    Best Practices for Modernizing App Modernization

    Modernizing legacy systems to embrace a loosely-coupled microservices architecture is the biggest predictor of success for continuous delivery, according to Google Cloud’s 2021 Accelerate State of DevOps report. Studies continue to show that the most elite DevOps performers enjoy more frequent code deployments, faster lead times to deploy, low change failure rates and faster time-to-recovery. 

    Leading enterprises like Netflix, Tesla and Starbucks proved that a microservices architecture minimizes fine-grained dependencies between services, which can then be independently tested, deployed and scaled. Combined with DevOps best practices, this reduces technical debt and allows for modernization based on a factory model approach that incorporates automated analysis and deep observability. 

    That said, application modernization to date has been a manual process requiring multi-year projects that suffer a high failure rate. How can we apply modern tools, known DevOps best practices and desired business benefits to improve and accelerate a company’s modernization efforts? In other words, how do we make modernization more modern? 

    By using automation, AI and data science, building repeatable pipelines and shifting architecture left, architects can get in front of technical debt before it becomes unmanageable. In this article, we’ll explore these practices in more detail.

    Intelligently Automate Everything Possible

    DevOps methodologies have taken manual steps and applied automation to create repeatable processes that scale. Modernization teams today are in dire need of these methodologies, as they are stuck with manual approaches that don’t scale across an entire application estate. Thus, applying intelligent automation, AI and data science to modernization—and creating a repeatable pipeline for refactoring—is a natural extension of DevOps successes over the last decade.

    Continuous Integration, Continuous Deployment, and Continuous Modernization

    CI/CD methodologies are a core best practice for DevOps teams and are already familiar patterns that development organizations are using for their application life cycles. But, there is no continuous delivery without continuous modernization. Elite teams continuously monitor technical debt accumulation and address it at every application release cycle, thereby implementing continuous modernization in their application life cycles.

    Deep Application Observability

    Observability, defined as monitoring, logging and tracing, is a foundation for cloud-native architectures. Modernizing an existing monolith requires deep observability beyond simple static code analysis to include deeper domain-driven behavior analysis and dynamically tracking dependency interactions. This is also the secret to uncovering dead code that is no longer used.

    Ensure Architectural Parity

    You must understand your infrastructure architecture to inform your application architecture and your modernization options. Lift-and-shift causes headaches for many organizations because the traditional three-tier architectures of monolithic applications have a completely different topology than cloud-native applications, which are designed from scratch to leverage the efficiencies of the cloud. 

    Whether it’s a hybrid approach (part on-premises, part cloud), public or private cloud, it’s important to ensure that your modernization strategy ensures architectural parity between the target application and its ultimate destination in the cloud. Also, it’s important to understand your modernization options: Rehost, replatform, refactor, rewrite, etc. What can you lift-and-shift and what needs more attention? 

    To find the answer, incorporating data science-driven analysis, automated service extraction and, more importantly, people, to help you understand the possibilities is critical. 

    Get Executive Support for Your Modernization Project

    This isn’t about simply churning through your backlog; your executive sponsors for a project of this scope need to understand, in business terms, why this is crucial for the organization. There are plenty of metrics showing the financial and opportunity costs of maintaining mission-critical applications that are aging and problematic. 

    To get executive buy-in for your modernization initiatives, you need to formulate a business case that communicates the cost of maintaining the legacy apps, both in time and resources to maintain, but also the negative impact on innovation, customer acquisition and retention and speed to market.

    DevOps practices emerged to improve how IT organizations reliably and efficiently deliver software from development to operations and out to customers. Applying these emerging technologies of automation, pipelines and deep observability to application modernization initiatives will enable teams to accelerate how they deliver application transformation projects. By investing in training application teams in these methods and providing modern tooling to support that training, organizations more reliably and more efficiently move both people and projects forward into the next generation of cloud applications.

  • A Golden Age for Developers

    A Golden Age for Developers

    There’s probably never been a time since the dawn of programming when there has been more opportunity for developers—individuals and teams—to imagine, create and be successful. Developers are able to do a lot more (and do things a lot faster) with more tools, a better development ecosystem and a tighter connection with the rest of the enterprise than was possible even a few years ago.

    To me, we are in a golden age for developers. And it comes just as the need for developers has never been greater, in every enterprise.

    Three things have come together to create this moment: Culture, code and the cloud.

    Changing Culture

    First, developers today operate in a culture that is far more collaborative than in years past, both internally and externally. A big part of that is the growing adoption of the DevOps methodology, which breaks down silos between business units, IT and development through partnerships between developers and the enterprise. It’s changing how we work and think.

    DevOps leads to a process of continuous integration of new ideas and features that meet business needs, and continuous deployment life cycles that get those features operational rapidly. Rather than taking weeks or months to get a new version of an application up and running, it’s possible to make constant incremental changes and have things running in days or even hours. The enterprise is able to be exceptionally agile responding to business changes and challenges—and, if there’s a problem or failure, the mean time to recovery is just as fast.

    Democratized Code, Empowering Cloud

    A major factor in enabling this approach is the widespread use of open source code. Open source has democratized access to powerful tools and platforms that can greatly accelerate work for any developer. Open source projects are mature, stable and growing, which provides equal access for citizen and enterprise developers alike. The size of your IT operation no longer matters: Developers everywhere can call up on their laptops the same tools that once were available only to web-scale unicorns. It removes limits to a developer’s imagination and the ability to create something new.

    Finally, the ever-expanding realm of cloud-native computing is putting incredible resources and computing ability within reach of every developer. Tools such as Kubernetes, which let you create and orchestrate applications in containers that can then be deployed and run in the cloud; serverless technologies; and other new ways of using distributed computing power remove barriers. Where a developer once might have been reluctant to create apps that required high levels of computing power, that’s not the case now with the cloud. What once may have taken access to a Cray supercomputer is now at a developer’s fingertips.

    Retraining, Not Replacement

    If there’s any challenge in this golden age, it’s helping the enterprise to make the transition—in particular, facilitating the leap that existing development teams must take in using these new approaches and new tools. In fact, the top issue for cloud developers is to make this cultural change.

    That takes both strong top-down leadership and an openness by veteran developers to new ways of working for developers, especially those who’ve been around for a while.

    Too often, we see companies trying to make the switch by offering early retirement to their veteran developers and trying to recruit a new team that’s already used to DevOps, open source and the cloud. That’s the wrong way to do it. Instead, even as they bring in newer developers, companies should look to retrain their existing team.

    That takes more than just telling people, “Here are the new ways we’re going to operate,” and then throwing them into it. There are a lot of tools and gateways available that can help people move gradually from the tools and languages they have been using. For example, in the last 12 months alone, numerous open source Kubernetes operators, service brokers and frameworks have been introduced that allow enterprise teams to leverage cloud-native technology from a context they already know, including WebLogic, database and Java. Look for combinations of people and projects that are likely to result in some early wins, and then have those people help train the rest of the organization.

    Make sure to take advantage, too, of the external collaborative environment that exists. Have veterans go to conferences or meet-ups and learn from the community—which, thanks to open source, is huge and growing.

    This will do more than give you a development team that’s built for today’s market, which demands that you deploy faster and react to failures in a more graceful way. It also will help you recruit and retain. Developers are twice as likely to recommend their workplace to if they are using DevOps principles—they are happier, easier to recruit and easier to retain.

    In this golden age for developers, the potentials are limitless—and every enterprise can participate. Making that cultural change, taking advantage of open source code and exploiting the power in the cloud—those are the keys to building the team and the applications that will spell success.

    — Bob Quillin