From initial conception to eventual retirement, cloud native applications running on Kubernetes require consistent management throughout the application lifecycle. Application lifecycle management encompasses the tools, teams, and processes necessary to improve the timeliness and quality of software deployments, optimize productivity across your organization, and ease the application management and maintenance burden.
Application lifecycle management (ALM) is defined as an approach for managing the software lifecycle end-to-end—from initial planning and development to testing and maintenance to decommissioning and retirement.
ALM provides a valuable framework for planning how software will be developed, deployed, managed, and updated. This includes establishing initial ALM requirements, governance, and methodologies. ALM can be important to software success because done correctly, it provides all stakeholders with better visibility into the application lifecycle, offering a clear view of the status of the development, integration, and maintenance of an application, and keeping all teams involved with the software on the same page and working efficiently.
As organizations evolve from traditional waterfall methods to agile, DevOps, and cloud native, ALM tools and processes evolve in sync. There may be multiple ALM processes in a given organization depending on where it is in the transition from traditional to modern applications. An important goal of ALM in many enterprises is to combine multiple development practices into a comprehensive ALM methodology spanning legacy, agile, and cloud native development practices.
ALM process flow
The purpose of ALM is to establish greater uniformity for tools, teams, and processes so that everyone involved always knows where an application is in its lifecycle, and what comes next. The ALM process is divided into a number of stages, helping teams ensure that they are planning for specific application requirements in advance instead of after the fact. For instance, the ALM process gives DevSecOps teams the opportunity to truly embrace the “shift left” philosophy of DevSecOps, planning for application security before the development process commences.
In each stage of the ALM process, you create and oversee specific ALM requirements for that stage, as well as managing ongoing ALM requirements. The stages of ALM typically proceed in order but may require significant overlap and iteration with modern software development approaches.
Stages of ALM
While you may choose to further subdivide each of the stages below, all ALM activity can be considered part of the following three high-level stages.
Stage 1: Governance
Beginning with the business need, application governance includes the decision-making process of identifying whether and why an application is needed, what problems it solves, what resources will be required to make the application a reality, and what regulatory, security, and other considerations must be taken into account, for example, if data must be kept in a certain geography.
Governance requirements include everything from compliance regulations to the choice of technology platform. These ALM requirements are the foundation that underpins software development, so it is essential to be thorough in their definition.
Stage 2: Development
In the ALM development stage, development and DevOps teams begin the creation of the application, increasingly utilizing agile development tools and methods to implement CI/CD, whether for containerized deployments or for traditional VM workloads. The ALM development process includes writing code (or acquiring code that’s been written elsewhere), testing the application, and facilitating its deployment once initial development is completed. Legacy waterfall development processes separate testing from development; however, with agile and DevOps methods, testing is performed in conjunction with development.
Stage 3: Maintenance
After the initial deployment, ALM considers the remainder of the application’s functional life to be part of the maintenance stage. Frequent releases address both bugs and feature additions, as well as integration with other new or legacy applications. Maintenance also addresses any rehosting necessary, for example, applications may be moved from on-premises to cloud, or from VMs to containers.
A final aspect of maintenance is planning for application retirement, both end of support (EOS) and end of life (EOL). All stakeholders need to be aware of when an application will no longer be supported or will be replaced with a newer version.
Benefits of application lifecycle management
Some key benefits of application lifecycle management include:
Improved planning. ALM provides the means to map out the entire application lifecycle from resource planning to end of service. ALM helps make it clear how an application fits into a larger project with clear guidelines for each stage of the lifecycle.
Enhanced compliance. ALM gives teams a consistent set of tools, with the goal of providing everything necessary to produce high-quality applications. It promotes quality through source code management, well-defined testing, and collaborative effort. ALM also defines the skill sets needed in each stage of the lifecycle to help ensure the delivery of compliant software.
Better visibility. ALM provides visibility across the application lifecycle for all stakeholders. It provides an integrated system to improve communication and collaboration by aligning software objectives with user needs and corporate goals.
Higher quality software products. ALM harmonizes tools, teams, and processes to deliver applications that are optimized from end to end, resulting in better performance and reduced costs.
What to keep in mind if you're considering application lifecycle management
Technologies that support ALM
Many companies want to accelerate software development and increase the cadence of feature delivery. A DevOps or DevSecOps approach provides a solid foundation for teams seeking to achieve these goals. ALM is well aligned with DevOps and DevSecOps and helps you clearly define and implement the necessary ALM tools, teams, and processes as you evolve your approach to software development.
The cloud native technology stack—including Kubernetes, containers, agile development, microservices, and serverless—provides a modern environment to support DevOps methods and facilitate ALM. The Kubernetes ecosystem operating on containerized applications enables automation that can streamline the processes necessary for deploying and managing applications across the entire application lifecycle.
Choosing ALM tools
There are a number of tools available that can facilitate application lifecycle management, including ALM Works, Basecamp, tuleap, Atlassian Jira, and Azure DevOps Services.
While tools such as these may be appropriate for your needs, they are not essential. Whatever your chosen ALM tool set, it should encompass the following functionality:
- Source code management
- Project management
In addition, you’ll probably want to identify the best integrated development environment (IDE) or set of IDEs for your company’s needs. As a general rule of thumb, it’s always best to look for tools that integrate well with the tools you already use. It’s also important to avoid being overly prescriptive and to get buy-in from the teams that will be using any new tools you add as part of your ALM efforts.
ALM vs. SDLC
The software development lifecycle (SDLC) focuses only on the development stage of the software lifecycle. As such, it can be considered a subset of ALM, which covers the entire application lifecycle.
ALM and VMware Tanzu
The goal of VMware Tanzu is to help organizations build, manage, and scale modern applications and infrastructure more efficiently. VMware Tanzu products and services are designed to provide an exceptional experience, helping you deliver higher quality software in less time.
VMware Tanzu Application Platform encompasses many of the capabilities required for ALM in a platform that enables you to jumpstart your app development efforts, boost developer velocity, and accelerate the path to production. Tanzu Application Platform supports multi-cloud environments and runs on any API-conformant Kubernetes distribution.
VMware Tanzu Labs can help your teams build the skills they need to succeed with application lifecycle management and modern development methods. Our experts can help you get better results from any and all stages of the application lifecycle from governance to development to maintenance.
Tanzu Labs has helped many of the world’s largest and most complex enterprises and governments adopt modern software development practices at scale while developing software together. These organizations are now building better software—delivered by more productive software teams—and delighting millions of users.
Spring makes programming Java quicker, easier, and safer for everybody. Spring’s focus on speed, simplicity, and productivity has made it the world's most popular Java framework.
Frequently Asked Questions
What is application lifecycle management used for?
Application lifecycle management (ALM) provides a framework to manage an application from cradle to grave. ALM encompasses the people, tools, and management processes necessary for each stage of an application’s existence from governance and planning to development to ongoing maintenance.
What are the key stages of application lifecycle management?
The three major stages of ALM include:
- Governance encompasses all the necessary planning to ensure an application is well-managed and compliant throughout its entire lifecycle. This includes:
- Requirements management
- Software architecture
- Change management
- Release management
- Development includes writing or acquiring code, testing the application, and facilitating deployment once the initial ALM development effort is completed.
- Maintenance is typically the longest stage of the application lifecycle, spanning from initial deployment to the end of an application’s useful life. Update releases address both bug fixes and feature additions, as well as any rehosting necessary, for instance when an application is migrated from a data center to the cloud.
What is the difference between ALM vs DevOps?
ALM pre-dates DevOps. As a result, a lot of early material on ALM is written with the waterfall methodology in mind. However, the philosophy of ALM around governance, development, and maintenance is to a large extent built into the agile framework.
Although many will disagree with this statement, DevOps—as an extension of agile—has inherited and is built on ALM principles. ALM is almost implicit in DevOps.
As you modernize your software methods, the best advice may be to embrace the principles and approaches that best move your organization forward and avoid getting too caught up in philosophical debates.
Is GitHub an ALM?
GitHub is a hosting service for version control using Git repositories. Since source code management and version control are essential to ALM, GitHub can definitely be a component of any ALM effort. GitHub can be integrated with most areas of ALM to enable traceability.