Just a few years ago, we thought of the public cloud primarily as a way to access scalable IT infrastructure as a service. Since then, hyperscale cloud vendor offerings have evolved, and organizations of all shapes and sizes are increasingly viewing the cloud as a platform for accelerated and agile software development.
This addresses our need to deliver new applications and features to employees, customers, and other end users at a faster rate. Innovation is relentless – we’ve moved from apps to super apps, and businesses need to build more apps faster, easier and cheaper to harness the power of digital ecosystems, next-generation data integrations and of artificial intelligence.
This trend is made possible by the significant investments that large-scale public cloud service providers have made in modularizing and packaging their offerings for developers. Amazon Web Services, Microsoft Azure, and Google have all launched services specifically designed to help developers and engineers build scalable, resilient, cloud-native applications faster and with less effort.
Welcome to the world of cloud-native software development – an approach to developing more responsive and fault-tolerant applications in public, private, or hybrid clouds using cloud-native tools. Cloud-native techniques allow us to build loosely coupled systems that are secure, manageable, and observable. They also allow engineers to make frequent, high-impact changes with minimal effort.
Cloud-Native Technology Reaches the Mainstream
Cloud-native software development has been around as long as cloud computing. Indeed, the Linux Foundation founded the Cloud Native Computing Foundation in 2015 to champion cloud native tools and open source adoptions. Many born-in-the-cloud companies are already embracing cloud-native development.
But it took some time for the technology to mature to a state where it could enter the mainstream. Major enablers include containers, serverless computing, and Kubernetes, which help developers build applications using loosely coupled services and microservices. This allows for faster, more automated releases through a continuous integration/deployment (CI/CD) pipeline.
Organizations not born in the digital age may need to align their cloud-native plans with their application modernization journey.
Containerization ensures applications are lightweight, cost-effective, and portable, delivering on the promise of faster, cheaper, and easier cloud-native development. Serverless, on the other hand, allows developers to push code into production faster. In this model, developers do not need to provision servers or manage application scaling. These tasks are abstracted by the cloud provider.
A microservice, on the other hand, implements a business capability through an autonomous service that runs its own processes independently and communicates through application programming interfaces or messaging. This ensures increased fault tolerance and resiliency in the application architecture.
Start the cloud-native journey
With these technology enablers in place, where should an organization start moving to cloud-native development? There is no right answer, but I can suggest a general approach.
As a starting point, cloud-native development cannot yet address all use cases, and companies will need to be strategic about where they deploy this approach to development.
Cloud-native development works especially well for new, entirely new software projects. Digital-native tech start-ups have embraced this approach wholeheartedly because they were born in the cloud. New software projects allow organizations to truly push the boundaries of cloud-native development, ensuring that the value gained from the application exceeds development costs and effort.
Organizations not born in the digital age may need to align their cloud-native plans with their application modernization journey. The skills available to the company will be a critical success factor. Just as decades-old legacy applications need to be modernized, the people who build them need to update their skills.
A great place to start is to review the organization’s cloud and software development teams and how they work together. The cloud-native journey begins with the people in the business, how they work together, and the automated processes that support them. A mature DevOps framework is non-negotiable. This is a critical feedback loop that drives operations in the development lifecycle.
Software developers need to look beyond code
Previously, software developers could focus primarily on their code, but now they also need to understand where that code resides, and the services and infrastructure available from cloud providers. Hyperscale cloud providers simplify this with tools like AWS Amplify and Google Firebase.
These services eliminate the manual effort of setting up cloud infrastructure, databases, CI/CD pipelines, and development environments. They also automate the build process, allowing developers to focus on their code and speed up feature releases. Some even let developers use a single console to set up a web or mobile app backend, connect an app in minutes, and build a web interface.
As powerful and sophisticated as these services become, engineers and developers need to be aware of how they work, and the use cases they serve, to realize their potential. This is the domain of the cloud developer of the future – a versatile person who crosses the roles of software developer and cloud engineer.
This future role – which requires a marriage of DevOps, cloud engineering and software development skills – will be the standard bearer for application and software development in the cloud world. In fact, we are already seeing many people develop these skills organically as they strive to keep up with cloud developments.
As organizations progress in their journey to the cloud over the next decade, this mix of skills will become so intertwined that it will be difficult to divide roles. The best engineers, developers, and architects are already cross-functional. Cloud-native development and the cloud developer mean that every developer will need to review their skills and how they collaborate to keep pace with an ever-changing world.