Cloud app development is more complicated than ever. Gone are the days when a developer just uploaded a workload to one of a few basic cloud instances. Today, public cloud providers like Amazon provide a bewildering array of features and services -- many with overlapping capabilities -- and the menu of public cloud services is still growing.
A proliferation of services has made cloud app development increasingly difficult to design and optimize the architecture for public cloud workloads.
"It seems like every few months there's a new product offering that's almost identical to one they're already offering but different just enough to make you re-think your entire architecture," said Chris Moyer, vice president of technology at ACI Information Group. The burgeoning list of Amazon Web Services (AWS) instance types and services also complicates service optimization and pricing, making it difficult to achieve optimum workload performance, predict costs and understand billing changes.
The speed, flexibility and scalability available in the public cloud have had a profound impact on applications development. A decade ago, it might take up to two years before a new application was even ready for testing. Developers can now take short-term, incremental approaches and experiment with designs in ways that would have been impractical with traditional development methods. "For every success there's going to be a thousand failures, so it's much better if there's little to no upfront costs," Moyer said.
In the past year, public cloud providers have begun supporting platform-as-a-service offerings like Docker or AWS Lambda event-driven computing services. These services have reduced the need for low-level operating system knowledge, and developers can simply focus on building and deploying code. The system administrator role is changing too; moving away from basic OS know-how and emphasizing cloud OS features like load balancing, auto-scaling, clusters, virtual private cloud (VPC) configurations and so on.
But the growing array of public cloud features and changes in app dev practices have changed the demand for tools. Application developers are turning to tools that track costs, suggest strategies to optimize workload performance and streamline integration with AWS. Third-party tools such as CloudCheckr add another layer of monitoring beyond native AWS tools like Trusted Advisor, helping enterprises with cost management, security, resource reporting, monitoring and policy management. Then there are tools such as Codeship that integrate with AWS CodeDeploy to assist with application testing, deployment, and workflow organization for public cloud applications. And a utility such as Jenkins gives developers an open source platform to automate code tests and builds.
While third-party tools are not essential, they can help make applications more cloud-agnostic. "Codeship works on bare metal or AWS, so you could have your same tool even if you decided to drop or migrate away from AWS," Moyer said, adding that third-party code repository hosting like GitHub or Bitbucket can also be helpful. Although AWS now has its own repository, I can be helpful for developers to maintain their own in a redundant external location.