Addressing Modern Application Lifecycle Needs With A Development And Delivery Platform
Businesses face ever-increasing pressure to become more competitive. Strategies include delivering better offerings to the market and operating more efficiently. These conditions directly impact how IT works. The rapid pace at which organizations must develop applications and services introduces new challenges at every stage of the process, from development to deployment to operation. Adding to the complexity, deployment targets for these applications and services have multiplied from on-premises to cloud and hybrid cloud to edge, and even multi-cloud.
At the same time, as deployment footprints have increased, organizations see the value in addressing quality and security issues as early as possible in the design and development of applications, i.e., the call to “shift-left.” The value of collecting and sharing observability data throughout the application lifecycle to increase performance, reliability, and security is recognized as well. These factors are driving interest in a new approach to development based on a development and deployment/operating environment that can support increasingly distributed development teams and balance developer choice with operational standardization.
This eBook describes the modern application platform, which combines the development and delivery workflows, its benefits, and the factors you should consider when deciding on an approach to putting an integrated platform in place for your application teams. Some use cases will show how teams with different workflows using different methodologies can work on the same platform successfully.
Chapter 1:
Is the Comprehensive Application Environment a Myth?
The “application environment” is the technology and tools required to develop, deploy, and operate applications over their lifetime. A comprehensive one is an environment where the technology and tools function together through a degree of integration to support the complete workflow for developing, deploying, and managing applications and services across a hybrid environment (cloud, multi-cloud, on-premises) and an organization’s software projects, including modernizing existing applications or building new applications.
Is this a “One Ring to rule them all” scenario? Not quite. Let’s acknowledge from the start that a single environment can’t serve all the needs of today’s complex software portfolio.
An IT world divided
There are many ways that organizations have sliced and diced modern IT. It can be in-house vs. outsourced, departmental vs. corporate, regionally, cloud vs. on-prem, data specialists vs. application developers, infrastructure vs. services, edge vs. core, etc., with security and innovation often set apart. We will focus on cloud-native applications and the services they commonly require during the development or modernization process, deployment, and operation over their lifetime.
Teams or silos?
Currently, organizations often segment their teams according to the kind of applications they are developing and managing. While DevOps has gone a long way to bring together development and operation teams, these are still divided, with some teams focused on modernizing legacy applications and others focused on developing for the cloud (cloud-native development). IT departments find themselves maintaining two or more distinct development stacks, each of which is growing increasingly complex. A traditional development stack may have limited support for a DevOps practice or even an Agile approach since these depend on a deployment stack for testing code and proofing the operations aspects of applications. The ideal scenario would be to provide one environment that can handle most of an organization’s software projects. Does it exist?
Part of the answer: platform engineering
Platform engineering is a relatively new trend in cloud development, emerging around 2019. Its origins seem to stem from the world of Kubernetes, where there is an ongoing effort to abstract the Ops aspects of target platforms such as Kubernetes for Developers. This effort has grown to create a formally organized team that is responsible for curating and managing the tools and stack required for developing cloud applications and continuously adapting them to support the changing needs of developers and operations as they respond to new business strategies. Some platform engineering teams have even taken on the charter of creating, or at least maintaining, the infrastructure for hybrid cloud and edge applications.
The skill sets of a platform engineering team can include:
- Hardware expertise (especially with GPUs and accelerators, and how to access them on a cloud)
- Application architecture
- Storage architecture
- Tools evaluation and implementation
- Scripting and programming
- Security and DevSecOps
- Data engineering and governance
- QA
- Site/service reliability
- Performance
Some of these coverage areas are more critical than others or require more or less depth of expertise. Take data engineering and governance, for example. For non-data-intensive applications, the platform engineering team must facilitate at least the sourcing and hygiene of the data accessed or collected by an application, understand how the data pipelines of integrations are supposed to function, and be aware of governance and security implications an application has. However, most organizations have teams that are dedicated to managing corporate data and all that entails. The same expertise model applies to security. The platform engineering team is not responsible for an organization’s security practice or infrastructure, but they do ensure that the platform they build and operate follows the rules, as it were.
Supporting non-cloud applications
Depending on where you are at on your cloud trajectory, you likely still have on-prem applications to manage. Everyone seems to have a tale about an antique in a closet somewhere running an application that no one needs to touch—or dares to! That example aside, few will ever migrate 100 percent to the cloud and stay there. Will you maintain a completely separate development and test stack for your non-cloud applications? Perhaps you have stacks for each target footprint: edge, cloud.
Teams working on these non-cloud applications code in different languages, implement different architectures (the predecessors to micro-services), run on different infrastructures (web servers, enterprise client/server, mainframes), and have different runtime environments (VMs, JVMs, containers). Expertise and an environment to support this work will still be needed to varying degrees by most organizations, even after modernization and digitization targets are achieved. It is likely that you will still need to connect them to your cloud applications to extend the data and business processes that those applications depend on. Even if you have no plans to change any of your legacy applications, at a minimum, you must be prepared for the probability of having to apply security patches.
Chapter 2:
Think Hybrid and Plan for Change
The perfect platform that will support your organization’s complete application portfolio and all the workflows associated with its creation, delivery, and operation does not exist. That is the case even if you build it yourself to exact specifications because new technology and business imperatives will challenge your assumptions.
As with all software implementations, there will be trade-offs. The more you profile the applications in the portfolio and the teams responsible for them and assess your current and upcoming projects, the closer you will come to making an optimal choice.
Broaden your perspective
Step one: form a cross-functional team to drive requirements and prioritize the benefits you want to gain from an application development and delivery platform. A cross-functional approach will smooth organization-wide buy-in and increase adoption. That team should include the business units and internal customers, especially when it comes to validating current and future priorities.
Selecting an application platform is not just a technology decision. Different groups have different issues they must address, including:
Prioritize wisely
Know where you can compromise and where you cannot. It is likely that your list of goals includes some irreconcilable differences. Some of your goals will be absolutes, and others are qualities that exist on a slider. The best example of this is Flexibility and Control. Every IT organization wants a degree of both. Having absolute flexibility or absolute control would decrease productivity or quality, or both.
Common goals when implementing a new application platform are to introduce or increase:
- Productivity
- Consistency and standardization
- Control
- Flexibility
- Cost savings (capital and/or operational)
- Quality assurance
- Reduced complexity
- Risk management through security and compliance
- Adaptivity and extensibility
- Scalability
- Reliability
- Observability and manageability
Chapter 3:
Ingredients of an Application Platform
Along the spectrum from DIY to buying an off-the-shelf platform, there are different pros and cons. Selecting the right approach and then the solution with the best-fit elements involves an assessment of your current and future application teams’ projects and their requirements. Since there is no ideal solution, the requirements will have to be prioritized and compromises made.
“Environment” vs. “Platform”
The key difference between an environment and a platform is the degree of integration among the
tools and layers of the stack required to develop and operate applications. An environment might have no integration among tools at all, which means that developers have to assemble all the components themselves, probably from a combination of IT services, cloud services, and individually sourced/down-loaded software. A platform differs from an environment as it includes at least core development and deployment tools that work together (by design or by integration) for a cohesive DevOps workflow.
The question remains: build or buy? DIY or partner? IT departments now typically provide many of
the services directly or facilitate their access from a cloud, so the completely DIY model is rare. On the opposite side of the spectrum, one can buy bundled solutions from software providers, which may be limited in their ability to serve the full range of needs because they are overly opinionated or controlled. In the middle is the platform that has been engineered internally to support both application development and deployment.
Application platform capabilities
The modern application platform supports cloud and non-cloud applications, including applications
with hybrid deployment targets. It supports their development, deployment, and operation throughout their lifecycle. In many organizations, each of these phases is executed on different platforms, forcing team members to specialize on one phase or, if a DevOps approach is to be effective, to be cross-trained on all the platforms, at least to some degree.
- Multiple programming languages so that developers can code in the best language for the task at hand
- Productivity features that facilitate code reuse, low-code or no-code options, code suggestions
- API management, the ability to access integration and data services
- Source-code control and collaboration tools
- Multiple application architectures such as microservices, serverless, containers, legacy modular, or monolithic
- Application security features such as certificates and keys, and access policy definitions
- Robust CI/CD tools for application pipelines and lifecycle workflows include monitoring and improving performance, modifying operations playbooks or scripts, developing new features, patching, testing, and iterative deployment.
- Live unit testing, performance testing, and debugging in an environment that replicates the complexities of the target environment with orchestration services and distributed clusters if apps require them.
- Self-service discovery and provisioning (which includes documentation of code, APIs owned by other teams, container images, and development instances)
- Observability tools, log management, and auditing capabilities
- Ability to provide teams access to the application platform as a service
The long list of capabilities is in keeping with the goal of closing the gap between development and operating infrastructure. Consider the productivity gains and avoided risks if cloud or edge applications weren’t tested on a laptop or in an individual’s cloud account with orchestration, data streams, or remote nodes merely being simulated.
Chapter 4:
The App Platform Approach in Action: Use Cases and Benefits
The need for a unified application environment and a platform upon which to execute has never been greater. Major business and technology changes over the last few years have forced organizations to rethink traditional approaches to application development and deployment and manage the applications and their updates over time.
Some of the main use cases where an app platform can help include:
Application modernization acceleration: Businesses are finding that they must modernize their
legacy applications to be able to keep pace with fast-changing market conditions. Increasingly, application modernization means focusing on components of larger monolithic applications and modernizing them to improve performance and scalability and expose the functionality for new use cases.
Businesses are deploying many more applications, and those applications frequently need to be
updated. Important factors driving the need for application modernization include the need for
business agility, cost reduction, increased scalability, resilience, and security. Another reason application modernization is so important is that it lets developers use the latest technology to develop their applications and in their applications. For example, they can create applications that are cloud-based, making them easy to scale.
Another use case for an app platform is to support the building of new cloud-native applications. Businesses today find they must adopt cloud-native and DevSecOps approaches to create modular, adaptable, microservices-based applications and data services.
The key to achieving this is to deploy a modern architecture and operational practices like serverless, application programming interfaces (APIs), event-driven architecture, and automated pipelines to simplify application development, delivery, and integration. An app platform can help in all of these areas.
One additional area where new methods, such as the use of an app platform, are needed has to do
with the need to embed intelligence into applications. Today, many applications are enhanced by integrating data analytics, artificial intelligence (AI), and machine learning (ML) capabilities directly
into an application to deliver more insight and value. That requires making use of vast amounts of data generated in different ways and stored across multiple locations. Providing access to that data andmaking the analysis part of the application itself is now a common requirement and one that an app platform can help simplify across all application areas.
Benefits abound
A suitably selected application platform can help accelerate application modernization by using frameworks and technologies that help teams build, extend, and connect applications and services with each other and with existing applications as they move to the cloud and containers. Such a platform can help development teams deliver new software to users quickly and securely. At the same time, team members can innovate with modern cloud-native patterns such as microservices, data streaming, and event-driven architectures that unlock strategic capabilities and benefits for organizations.
With such a platform, businesses can speed the time to value and increase developer productivity and collaboration. To accomplish this, the platform should give developers a choice and efficiency with self-service tools and services and offer scalability and security for operations efficiency.
Teaming with a technology partner
Businesses looking to adopt an app platform approach for their application needs could try to assemble discrete pieces into a single platform. That approach takes a great amount of time and consumes resources.
A better approach is to look for a technology partner that offers real-world expertise, a proven solution, and an ecosystem of partners. That’s where Red Hat comes in.
Red Hat brings together everything needed to transform applications. It offers:
- An integrated portfolio: Red Hat lets businesses build a software foundation for all application transformation use cases using a complete, integrated portfolio of products and cloud services that work together reliably.
- A certified partner ecosystem: Red Hat gives businesses access to a broad ecosystem of Red Hat certified ISV products to customize an environment with application, data, AI/ML, developer, and IT operations services that work together.
- Migration tools: The tools help businesses plan a transformation journey and move applications to Red Hat OpenShift.
Its offerings include Red Hat Application Foundations, which is a connected set of application services that, together with Red Hat OpenShift, help accelerate containerized application development and delivery across hybrid and multi-cloud environments. Red Hat Application Foundations serves as a toolkit for organizations looking to quickly build and integrate application and data services as part of their application and infrastructure modernization strategy.
Additionally, Red Hat offers developers an integrated solution designed to connect applications both within and outside of the container environment. It brings key application services and components to help developers employ cloud-native application patterns and swiftly bring their applications to customers.
With such capabilities, developers can more easily create and integrate applications that range in complexity for efficient and scalable execution across hybrid cloud environments. The bottom line is that Red Hat offers a toolbox of key application services and provides developers with ready-to-implement components that include high-performance data streaming services, API management, service connectivity, lightweight runtimes, frameworks, and more. This enables development teams to modernize their application with scalability, agility, and extensibility.