Developing and delivering modern apps

23:23 · Watch on YouTube ↗

Transcript 3,257 words · about 22 min to read

Auto-generated captions from YouTube, not hand-corrected, so names and technical terms may be imperfect. The video is authoritative.

>> Hey there, welcome. My name is Bob Ganley, I'm with Dell Technologies. Today, we're going to discuss, Four Factors for Modern Apps Success: Application infrastructure strategies for the cloud native era. The reality of today is that every organization must have a digital presence. We're all investing in how to use technology to create value, and share that value with our constituents. And with the global economy, going digital, it's critical that organizations transform to meet this growing need. Even before the COVID-19 pandemic, IDC estimated 60% of global GDP will be digital by 2022.

This means that even for physical goods, 60% of the value chain will be derived via digital means. Whatever business you're in, success will increasingly be a result of experiences and insights derived from data and the software that drives the digital experience. For this reason, organizations that will achieve success will do so by means of delivering digital services powered by data and brought to life as modern apps running in a multi cloud world. Forrester recently interviewed CIOs to find out what their top priorities are, and not surprisingly, 78% or most of CIOs agree that improving their portfolio of applications is a top priority.

But interestingly, almost half of those organizations have not made any improvements in the last year or more. In terms of where to start, surveyed CIOs agree that in order to start delivering great customer experiences, enterprises must modernize their application infrastructure. They also discussed the emerging technology trends that will help them supercharge application improvements. And not surprisingly, they said that containers and cloud-native will have the biggest impact. In fact, according to IDC by 2022 90% of all applications we developed and delivered using cloud-native approaches.

What's truly amazing is the sheer volume of applications that are going to be developed with these new approaches. IDC in their most recent future scape study says that over 500 million new apps will be built using cloud-native practices by 2024. So let's focus in on cloud-native technology, What's different about it and how is it changing the game for applications? Cloud-native combines new processes for software development on operations, and new architectures for applications and systems. In terms of processes, traditional application development follows a process called Waterfall, which is characterized by distinct phases from requirements gathering, to deployment and maintenance.

And each phase is well defined with distinct exit criteria and handoffs between them. Traditional operational practices are typified by ITIL change management processes. The challenge of Waterfall is that it leads to long development cycles before handing an application to ops, while ITOps is tasked with keeping an application available and secure, so they prioritize stability and resist change, which slows innovation. For example, my first job as a software developer, it was 18 months from when we started gathering requirements to the time when we delivered a working application to operations and that is typical.

As you know, requirements change over time, and long lead time for software development leads to applications not keeping pace with the needs of users. Processes for cloud-native applications Agile and DevOps. Agile features rapid iteration with quick releases. Agile involves users for feedback throughout development process, the goal is to quickly develop a minimum viable product, get feedback and add more features. The motto is, "Fail fast," meaning it's better to find out right away if the application is meeting customer needs. DevOps means that ITOps teams are involved throughout the development process delivering and managing the infrastructure to speed innovation.

In terms of architectures, traditional application architectures are monolithic, meaning that all capabilities are packaged together in a single payload. Virtualization technology is often used to improve the utilization and efficiency of the underlying hardware. Think of a monolith as being like a freight train it has awesome power and capacity but, it takes a long time to load and is not easy to reconfigure. Cloud-native applications are developed in a microservices architecture. An application is a collection of loosely coupled components that are packaged as microservices, so they can be deployed, scaled and updated independently.

Those independent services are packaged as containers which are lightweight and have the minimum overhead. Think of a set of containers as being like a fleet of delivery vehicles. Each has reduced power and capacity, but each one is quick to load, easy to replace, and overall the fleet provides more flexible and resilient delivery services. And just as a fleet of delivery vehicles needs a dispatcher to coordinate the delivery of service, in cloud-native architectures, containers need an orchestrator and Kubernetes serves that role. It's responsible for scheduling and monitoring the fleet of containerized micro services to make sure that applications are reliable, scale well and deliver the expected level of service.

There are a couple of factors that are slowing down the ability of organizations to take advantage of cloud-native technologies in their application portfolio. First, let's discuss those challenges and then talk about how Dell Technologies is helping our customers address them. The applications are so important and cloud native-approaches are so compelling, what is keeping organizations from making progress faster? Think of the first challenges being everything related to day zero, or what's needed to source and stand up a cloud-native stack. When you take a look at cloud-native approaches and the enabling software, you see a thriving and dynamic market that has tons of opportunity.

The cloud-native community has embraced open source and that has enabled very rapid development of an ecosystem of tools that can help with creating applications architected as microservices and deployed in containers, and managed by Kubernetes. Kubernetes is curated by the cloud-native computing foundation, there are 550 member organizations with 85,000 contributors to the CNCF. And its top projects are known as those which are graduated or incubating and there's actually 26 of those. So when organizations are looking at putting together a cloud-native stack, they usually look at a commercial implementation on one of those, and it takes specialized knowledge to make the choices and integrate them to work together.

The next challenge area, is everything related to day two operations, provisioning resources, applying patches, upgrading new versions, scaling resources, up and down, etc. The benefits of rapid innovation are many, Kubernetes is released every month, and that's a minimum of 12 times a year. But that's for just one component of the stack and that doesn't include emergency patches when CVEs are discovered, so keeping things fresh may present an even more challenging environment than just setting them up. The third challenge area concerns technical debt and the nature of modern applications.

No organization can do this in a vacuum. There are existing environments that have to be maintained and existing applications that run the business and existing staff with skills that keep things operational. New applications and technologies need to add value and not have a negative impact on operations. So the question becomes, how can organizations optimize their existing investments in infrastructure and people while simultaneously adopting cloud-native approaches? And this all takes place in the backdrop of IT infrastructure today, and that means a multi-cloud world.

Whether private cloud, public cloud, or edge locations, organizations need the agility to place the right workload in the right cloud for the right reasons. Let's look at a way to address each of these challenges. First, consider the challenges with sourcing and standing up the cloud-native stack. When it comes to assembling a cloud-native platform, don't reinvent the wheel. The cloud-native computing foundation is curating a rich ecosystem and Kubernetes is only one of the required pieces for a full cloud native stack, it's got to run on something.

So whether the target environment is a public cloud or an HCI cluster in a server room, you need to pick the hardware infrastructure. And speaking of infrastructure, the virtualization abstraction layer that's created by the IaaS is a crucial building block as well. As for storage, any created data has to be stored in a persistence layer. Networking is huge. In the world of containers, connections are constantly being created and torn down, so choosing a software defined networking overlay and integrating that into the solution is crucial.

This all has to fit into the context of existing systems so monitoring an analytics are table stakes for enterprise IT. Kubernetes has rapidly become the winner in the race to define a standard orchestration layer for container deployed microservices, and every service must be discoverable and verified as secure so an image registry is a required part of any cloud-native stack. While the open source community has been a blessing in terms of providing rapid evolution and maturing of these components, the opposing curse is that you have to choose to download the upstream bits, or choose among competing commercial distributions.

Having the expertise to make intelligent decisions about which option to choose for each component is a challenge unto itself. With that done, the task then becomes integrating them so that they all work together in a stable system. Building a cloud-native stack from scratch is complex, and the resulting system is what I like to call a science project, it's not a production ready platform. Chad Sakac likes to call them Rube Goldberg machines. And I love that image because it communicates the unneeded complexity and brittleness of those from scratch implementations.

The bottom line is that the result of building a platform from scratch is usually a snowflake, one off design. It's guaranteed to take a long time to produce and it's unlikely to be the right environment with which to entrust your business critical applications. Contrast that with our approach with Dell Technologies cloud platform, we deliver Dell Technologies cloud as a complete package, we've selected the best components. It's turnkey, we've integrated them, so that they work together out of the box and it's automated, so we remove many of the manual tasks required to stand up a cloud-native environment.

It's standard, we've incorporated the latest upstream source Kubernetes, so you're not locking in to proprietary extensions and it works with today's apps as well. And it's trusted, it's running today in production at some of the leading organizations who have adopted cloud-native software and techniques. But once you get up and running, you need to stay that way. Now that you've stood up a turnkey platform, congratulations because you've reached day zero. But standing up your cloud platform happens once, then you have to keep it fresh.

Automation is the key to address the challenges associated with ongoing operation of your modern apps infrastructure. For a production ready platform, you need to maintain and scale the right service levels for your modern applications. The benefits of rapid innovation are many Kubernetes is released every month, and that's a minimum of 12 times a year. But that's just for one component of the stack and that doesn't include emergency patches, for example, those that are released when CVEs are identified. Automated Lifecycle Management is a crucial capability for keeping things secure, reliable and compliant, the whole stack should be updated together.

Each component should be upgraded in a predetermined sequence to optimize the process and eliminate the potential of failure, due to incompatible versioning, or changes in best practices don't do this manually. When it comes to adding capacity and taking advantage of specific hardware enhancements, it's important to have the option to employ a non disruptive process that allows new nodes to be added to a cluster without causing downtime or negatively impacting workload performance. Pre engineered integration with specific workload provisioning and configuration capabilities can greatly contribute to an agile LOB initiative.

This streamlines infrastructure provisioning across multiple clusters according to the needs of the workload. A couple of specific examples here are automated provisioning of a horizon workload domain for standing up VDI, or automated provisioning of Kubernetes clusters as needed for cloud native-applications. With the right platform, data migrations and other disruption events due to the introduction of new generations of technology are a thing of the past. Automation is crucial for efficient and secure operations. It's key to address the challenges associated with ongoing operation of your modern apps infrastructure, but how does that work with your current infrastructure?

And how do you acquire the skills that are needed to support these new capabilities? Your existing investments are actually a crucial asset in this initiative. Every CIO that I talk to is focused on managing and evolving their application portfolio. How can an organization keep the lights on and support existing operations while investing in new applications and capabilities to meet LOB objectives? Technical debt is sometimes used to refer to this challenge. But I don't like that term because it implies that existing applications are a liability when in fact, they hold value that must be optimized.

A true modern applications approach leverages the capabilities of a diverse set of services exposed through API's that includes existing data sources, and run the business transactional systems, as well as new algorithms, analytics, customer experience improvements, mobile apps, etc. Some of those may be implemented through existing monolithic applications and some may be implemented in new containerized microservices. The infrastructure to support applications is evolving as well. Many organizations are well experienced with virtualization and are implementing infrastructure as a service as the next step and efficiency in managing their traditional workloads.

As additional service models are being deployed, organizations add things like containers as a service, and higher level abstractions for the developer such as platform as a service. The challenge comes when fundamentally different and incompatible approaches are adopted to these different service models, problems are created, as separate environments are adopted, for example, one for traditional workloads and a separate one for cloud-native workloads. If there are different hardware in different supporting teams required, there's a lot of opportunity for inefficiencies and roadblocks to creating a successful modern apps initiative.

The pragmatic approach is to enhance existing infrastructure and staff that are currently supporting virtualized apps and infrastructure as a service in a way that adds support for containers and Kubernetes orchestration. Modern applications will combine services from both traditional monolithic apps and emerging containerized apps. And that makes sense, it makes sense that the same hardware and the same people supporting them. Hardware is expensive, and it makes sense to get the most from the infrastructure by enabling pools of resources across both traditional and cloud-native workloads.

In cloud-native skills are at a premium. Staff with knowledge of legacy systems are valuable in their own right. You can ensure that you maximize the value derived from both by equipping your staff with tools that extend their knowledge, this will allow them to support cloud-native applications with their existing skill set. And you can start now by adding cloud-native capabilities incrementally. Choose an approach that allows you to run both virtualized monolithic applications, as well as containerized microservices applications on the same infrastructure.

Extend your existing people skills by leveraging familiar tools that can add standard cloud-native capabilities to your existing infrastructure as a service. A pragmatic approach to modern apps leverages existing investments by adding cloud-native capabilities incrementally, most organizations are using multiple cloud solutions today. So how does your modern apps initiative, embrace private and public cloud? The key is to drive for consistency across all your clouds. The reality of today's IT environment is the cloud is here to stay. At Dell Technologies, we believe that cloud is an operating model, not a place.

That means the cloud is about how information technology is used to achieve organizational goals, not where applications run. A modern application approach assumes that you're building for a multi cloud reality. Where applications are run should be driven by business, technical, operational and financial considerations, not compatibility limitations. The right approach allows the same VM or container to be moved unchanged, so developers and IT can create alignment between application needs and infrastructure options. We call this consistent infrastructure, and it's a great way to avoid the costs associated with porting applications to run in different clouds.

A consistent operational framework that spans all environments allows policies and processes to be instituted in a way that limits operational silos. This can dramatically improve governance, security and compliance, as well as enhancing DevOps productivity. A consistent cloud operating model should extend across all environments, including on premises data centers, edge locations, and public cloud to eliminate problems inherent in using different tools and teams to manage different clouds. Architect your modern apps environment to provide consistent infrastructure and consistent operations, a true hybrid cloud.

Now let's take a look at an example of an organization that's using cloud-native approaches to meet their modern application needs. Liberty Mutual is a good example of a company that has harnessed the power of cloud-native approaches. Their leadership understands that software and applications are crucial to their future. In fact, it's so important that they've said they want to become a software company that sells insurance. With traditional software approaches, they were experiencing long lead times to deliver new applications, and users of the apps are often disappointed, something had to change.

When they saw a short window of opportunity to enter a new market, the accident and health insurance market in Australia, they knew they had to move fast. They decided to use a new approach the cloud-native approach to develop and deliver software that their brokers would use to quote and manage policies, they teamed with Dell Technologies on framing the application. The team had talks with end users the brokers, and in four weeks, they were able to deliver a minimum viable product and receive customer feedback.

Then, developers continued building the product and iterations, integrating it with back end systems, adding underwriting quoting and rating capabilities and six months later rolled out a fully functional solution for brokers. They were able to go from idea to taking revenue in a new market in six months, and the results speak for themselves. In terms of closing business, they've achieved a 40% strike rate, which compares with a 20% for the industry average. Brokers were able to get a quote out in three minutes compared to about 10 minutes for their competitors.

They're able to take revenue right away with 200 quotes and 60 policies within one month of operation. By using cloud-native approaches, Liberty Mutual was able to develop and deliver software quickly that truly made a difference for their business. Organizations today are looking to modernize their applications approach so that they can improve the creation and delivery of value to their constituents. Agile and DevOps processes are being adopted as a way to speed application development and deployment efforts. Cloud-native capabilities like containers with Kubernetes orchestration are important enablers of modern apps.

Dell Technologies has proven expertise in helping our customers implement a cloud operating model and the infrastructure needed to support a modern applications approach. In this presentation, I've summarized some considerations that we've learned in those engagements. So thanks for listening to this discussion of, The Four Factors for Modern App success: Application infrastructure strategies for the cloud-native era. My name is Bob Ganley. You can find me by my Twitter handle @ganleybob. com/cloud. Thanks for listening and have a great day. (slow dramatic music)