The following is a guest post from Greg Franczyk, chief technology officer of Madison Logic.
Since 2014, cloud-native applications have been a major discussion topic in the tech world. Many growing technology companies are cloud-based today, and those working in the cloud are feeling a fast and dramatic shift.
If you liken the cloud to transportation, we're in a ZipCar moment — meaning we've moved on from the horse-and-buggy days, but we're not quite in our Acela phase yet.
That said, one of the advantages of the cloud is that you can get out of the car and hop on, or off, the high-speed train at any moment. Development can move quickly in the cloud, which is one of its many advantages.
To elaborate further on the state of cloud-native, let's expand on that analogy a bit:
- The car: Back in the early days of computing, companies were building massive data centers. In many ways, owning a data center is analogous to owning a car in the 1980s. If you didn't live in a major city, you had to own a car to get around. It may seem great on the surface, but owning a car means maintaining a car, putting gas into a car and owning or renting a safe space to store the car. It's expensive, cumbersome and kind of a headache.
- The ZipCar: The need for cages is ameliorated somewhat as cloud providers like AWS, Azure and Google offer infrastructure-as-a-service. They take the physical computer and use the cloud to make it a virtual server. Like a ZipCar in today's sharing economy, the server is there when needed, on demand and maintenance-free. However, you still need to install and check software on the server, and to ensure there's adequate disk space and memory. So while it's an improvement, it still isn't ideal.
- Modern mass transit/Acela: A Platform as a Service offering takes cloud computing up a notch. These services offer hosted, managed ways of running applications that you would typically run yourself. Everything is managed for you. It's comparable to a very efficient public transportation system — where you can jump on a point A, jump off at point B — and you never need to worry about fuel, road conditions or getting lost.
Cloud native is essentially about using all the capabilities of the cloud, without having to worry about maintenance. There is no need to maintain underlying software or operating systems — companies need only focus on functionality.
The transportation metaphor is really intended to draw attention to the evolution of companies through this cycle of maturing cloud computing. However, there is a mind shift that needs to happen. We all need to stop thinking about cars, and start thinking about mass transportation. In this case, it's not about the ride. It's about the destination.
As cloud-native innovation progresses, there are a few key areas in which organizations will have to adapt for success:
- Companies can no longer have the same processes. As products are developed, old-school development processes should be abandoned for newer, more iterative and agile processes. Stop over-investing on the "right" equipment and infrastructure. Don't think about buying a server and invest time and money into defining what that server is and needs to do. Use the cloud. Think instead about rapid prototyping ahead of requirements. This will deliver meaningful feedback early on, and quick iterations on those prototypes. That will, in turn, get products to market faster than a traditional cycle.
- Fail fast and fail often. This is the way of innovative, fast-moving, nimble organizations. The nimble company will jump into the process of creating and building. This builds a culture of innovation and an agile team supported by an agile infrastructure. By contrast, companies that have invested heavily in servers will be more risk averse and more fearful of failure.
- Cut the dead wood. Along with agile infrastructure comes the agile team. These efficient groups should over-index in coders, and reduce the surrounding admin staff. The most effective teams will be lean, and filled with skilled and talented people who have an entrepreneurial streak. These folks will own a project and see it through, in contrast to the "waterfall" days, when a team member would take a process through the required tasks only, then hand it off.
- Embrace systems engineering. That is, rather than focus on standard development, focus instead on the ability to engineer a solution to a complex problem. Cloud-specific engineering demands this focus. To embrace cloud native, organizations need to also embrace systems engineering.
Cloud-native computing, at the end of the day, means companies can shift our focus from servers and their maintenance to the end goal. Already, we have the capability to write code and not worry about any of the things around it. Companies can look at our goals and then easily work to achieve them, rather than getting bogged down in the setup and requirements. Most importantly, the benefit of cloud-native applications lies in the fact that companies can focus on the use case — and ultimately the user. When products can be designed exclusively around the user without concern for the needs of the system, better products are the result.