Download your copy of Cloud Native Adoption Trends 2020-2021 to explore the ongoing tension between developers and IT leaders about what the highest priorities are for cloud native migrations.
At its heart, going cloud native is about managing complexity.
“Ten years ago, distributed systems were mainly the domain of academia and a few big companies like Google, Facebook and Amazon,” Akka framework creator and Lightbend CTO Jonas Bonér says. “Now the move towards multicore systems, cloud infrastructure, big data platforms and microservices is forcing developers into the distributed world whether they like it or not.”
That means developers have to think about problems they never had to consider when writing monolithic applications that run on a single core on a single node; like what to do when network problems prevent components from talking with each other, or how to handle node failures.
Organizations are only just beginning to really wrestle with the issue. A recent survey conducted by Lightbend of over 1,000 developers and IT decision makers found that the majority of respondents believed that either utilizing Kubernetes and containers (34.5%) or moving to a cloud infrastructure provider (23.8%) were the most important aspects of going cloud native. In other words, most are thinking more about cloud infrastructure than they are about writing applications that run well on that infrastructure.
But as Google developer advocate Kelsey Hightower put it: “There’s a ton of effort attempting to ‘modernize’ applications at the infrastructure layer, but without equal investment at the application layer, think frameworks and application servers, we’re only solving half the problem.”
The other half of the problem is, in short, managing application-level complexity. “The standard approach to dealing with complexity is to hide it behind a leaky abstraction,” Bonér says. “For example, hide the fact that you're speaking to a remote service, across the network.”
But as tempting as this model might be, it has major downsides. “When things fall apart, when nodes come and go or networks fail, all the hard problems are thrown right back in your face and you have no way to manage them, because they’re hidden behind an API,” Bonér says.
The solution, ironically, might actually be even more — but the right type of — abstraction. Bonér says enterprise developers will need to rely more and more on cloud and serverless services — not just stateless function-as-a-service platforms like Amazon Lambda, but also platforms providing stateful services, managing distributed state, storage, and communication to minimize the complexity they face.
The idea is that cloud providers will manage the deep complexities and leave developers to focus on business logic. You could also think of it not as abstraction but as being opinionated. The cloud providers are still faced with the complexities inherent to distributed systems. But they make the majority of the technical decisions.
“It’s liberating,” Bonér says. “There are fewer things to go wrong, fewer decisions to be made. You won’t need to worry about using the right libraries or the right protocols, because all of that is managed for you by the backend.”
Enterprises remain conflicted over this vision of the future. The Lightbend survey found 52.6% of respondents say they expect to move towards ever-increased automation, while 47.4% percent say that developers will still need to focus on maintaining underlying systems. Meanwhile, 58.1% said that they prefer frameworks they can configure and scale themselves, over frameworks delivered as-a-service or consumed via an API — even though 66.2% of managers would prefer to move towards APIs or as-a-service.
Of course there will always be tradeoffs in IT. With serverless, you trade some control over the underlying systems for less complexity, less responsibility for maintaining systems, and faster time to market. But the amount of control you have to sacrifice can vary. “Providers must provide the right knobs when it comes to these tradeoffs,” Bonér says. Finding the correct balance is a big part of what Lightbend is trying to accomplish with its Akka Serverless service and its open source Cloudstate platform.
“I think developers will learn to enjoy this new world where they can let go of a lot of these things,” Bonér says. “They won’t have to be on call all the time, and will be able to focus on the essence of the applications, on what provides business value.”
Check out Cloud Native Adoption Trends 2020-2021 to explore the ongoing tension between developers and IT leaders about what the highest priorities are for cloud native migrations.