STEP 2: SPEED EXISTING APPLICATIONS USING FAST MONOLITHS
When embarking on a cloud-native application journey, organizations should not only focus on new development. Many legacy applications are critical to business operations and revenue generation and cannot simply be replaced. Rather, they need to be integrated with new cloud-native applications. But how do you speed up an existing monolith? The answer is to take a fast monolith approach by moving your existing monolithic architecture to a more modular, service-based architecture and API-based communication.
Before beginning the onerous task of refactoring monolithic applications into microservices, organizations should first create a solid foundation for their monolithic architecture. Although monolith applications are associated with lack of agility, their poor reputation is mostly due to the way these monolithic applications are built. A fast monolith, however, can achieve many of the agile benefits associated with microservices — without the added complexity and costs.
Evaluating a fast monolith approach ensures that applications are built following solid design principles and properly defined domain boundaries. This approach supports a more gradual and less risky transition to a microservices architecture, if needed. Evolving a fast monolith in this way sets the foundation for a successful microservices architecture.
If applications were not designed using a fast monolith approach, they can still be made faster by moving the existing monolith to a container-based platform. This shift speeds deployment and delivers higher return on investment (ROI). Subsequent integrations or features for the monolith can be built using cloud-native techniques and approaches.
You can also start breaking down your monolith into smaller components at your own pace, using a phased approach.
STEP 3: USE APPLICATION SERVICES TO SPEED DEVELOPMENT
Reusability has always been key to speeding software development, and cloud-native applications are no exception. However, reusable components for cloud-native applications must be optimized and integrated into the underlying cloud-native infrastructure to fully provide the benefits.
Why re-create a caching service, rules or workflow engine, integration connectors, mobile and API management capabilities, data virtualization service, messaging broker, or serverless framework when you can use existing ones that have been optimized and integrated to the underlying container-based infrastructure? These application services, whether they are Software-as-a-Service (SaaS), Platform-as-a-Service (PaaS), or iPaaS offerings, are effectively ready-to-use developer tools.
Cloud-native applications may need one or more of these type of services to help developers accelerate development and get new applications to market faster. Whereas DevOps and containers accelerate the delivery and deployment of a cloud-native application, application services accelerate its development.
For example, cloud-native application developers can take advantage of application services specifically built to not only perform well in a container-based infrastructure, but also to take advantage of platform capabilities, such as CI/CD pipelines, rolling and blue/green deployment, automatic scalability, fault tolerance, and more.
STEP 4: CHOOSE THE RIGHT TOOL FOR THE RIGHT TASK
An increase in the fields of software study, such as Internet of Things (IoT), machine learning, artificial intelligence (AI), data mining, image recognition, self-driving cars, and more, has resulted in a growing variety of frameworks, languages, and approaches for software development.
Building cloud-native applications is becoming more diverse as the choice of language or framework is increasingly tailored to the specific business application need. The resulting increase in complexity merits use of a container-based application platform that supports the right mix of frameworks, languages, and architectures to support cloud-native development.
Cloud-native development also requires choosing the right tool for the right task. Whether cloud-native applications are being implemented using a 12-factor approach, domain-based design, test-based design and development, MonolithFirst, fast monolith, miniservices, or microservices, the cloud-native platform must offer the right mix of frameworks, languages, and architectures to support the chosen development requirements. In addition, the underlying container-based platform should support a set of curated runtimes and frameworks that is continuously updated in line with technological changes.
Figure 1. Cloud-native application development becomes even more diverse
STEP 5: PROVIDE SELF-SERVICE, ON-DEMAND INFRASTRUCTURE
Agile methods have helped developers create and update software quickly but lack an efficient mechanism for timely infrastructure access when and where it is required. When releasing applications to production, overall speed to market is affected. Filing a ticket and waiting weeks for IT operations to release resources is no longer a sustainable model in an era when infrastructure is inexpensive and engineering talent is costly.
Self-service and on-demand infrastructure provisioning provides a compelling alternative to unauthorized shadow IT by allowing developers to access the infrastructure they need, when they need it. But this model can only be effective if IT operations teams have control and visibility across what is often a dynamic and complex environment.
Containers and container orchestration technology abstract and simplify access to underlying infrastructure and provide robust application life-cycle management across various infrastructure environments, such as datacenters, private clouds, and public clouds. A container platform offers additional self-service, automation, and application life-cycle management capabilities. This model lets developers and operations teams spin up consistent environments quickly, helping developers focus on building applications without the obstacles and delays associated with provisioning infrastructure.
Standardization is also an important part of a self-service model. It helps organizations automate and deliver consistently to meet business objectives. Process standardization involves mapping the exact sequence of events and activities needed to achieve a task — for example, releasing an application to a new environment.
Containers also support application portability, including the creation of a cloud-native application that can be deployed and run on any cloud provider. Portability offers the freedom to select any cloud provider at any point in time, easily migrate from one cloud provider to another, optimize related costs, and develop a multicloud application without coding to a specific cloud provider API.
Learn more about different practices and techniques that support the cloud-native journey.
DISCOVER THE OPEN PRACTICE LIBRARY
STEP 6: AUTOMATE IT TO ACCELERATE APPLICATION DELIVERY
IT or infrastructure automation is essential to accelerating the delivery of cloud-native applications by eliminating manual IT tasks. Automation can integrate with and apply to any task or component, from network and infrastructure provisioning to application deployment and configuration management.
IT management and automation tools create repeatable processes, rules, and frameworks that can replace or reduce labor-intensive human interaction that delay time to market. They can extend further into specific technologies, like containers, or methods, like DevOps, into broader areas, such as cloud computing, security, testing, monitoring, and alerting. As a result, automation is key to IT optimization and digital transformation, speeding overall time to value.
Over time, integrated, full-scale automation will not only become a reality, but will yield higher efficiency, faster DevOps, and rapid innovation.
Learn more about the important role of IT automation in “The automated enterprise”
DOWNLOAD THE E-BOOK