The cloud has drastically changed the business world. To keep pace with and support those changes — and in some cases drive them, the field of application development has had to make its own changes. Among those dominating our attention in 2020 is the change to cloud application development.
Cloud-native: Beyond the Fads
Cloud-native app development refers to designing apps that don’t just reside in the cloud. They’re purpose-built, deployed, and managed to leverage the cloud’s elastic scalability and flexibility.
The development approach is more than a fad. In a 2019 keynote address, the executive director of the Cloud Foundry Foundation, said “There will be a 100% increase in the number of cloud-native apps organizations are writing and using. This means you can no longer just invest in IT, but need to be in cloud and cloud technologies as well.”
To do that, c-suite executives, IT professionals and app developers alike must understand and embrace the terms, tools, trends, and technologies shaping cloud-native development.
The ClearScale team sees the following as most important to understand in 2020.
Containers and Container Orchestration. Containers are lightweight, highly scalable receptacles that include all the logic required to run apps. They isolate the apps’ execution environments from each other, but share the underlying OS kernel. Agile and standardized, they support app portability between all types of infrastructure including public cloud, private cloud, virtualized servers, and bare metal servers. That makes them work well for creating cloud-native apps that can be deployed and run on any cloud environment. Companies can select any cloud provider any time or easily migrate from one provider to another. This facilitates cost optimization and development of multi-cloud apps.
The low overhead of creating and destroying containers, orchestrated by solutions such as Kubernetes, along with the high packing density in a single VM, makes containers ideal for deploying microservices.
Serverless. Serverless is a cloud execution model in which a cloud services provider runs the server and dynamically allocates the necessary resources. Pricing is based on the resources consumed by an app rather than on pre-purchased capacity.
Developers don't have to provision servers or manage infrastructure scaling. The cloud provider abstracts away those tasks, allowing developers to push code to production faster. An event triggers app code to run. The cloud provider then dynamically allocates resources for that code. The user stops paying once the code finishes executing. As a result, serverless is known for lowering costs, reducing operational complexity, and increasing DevOps efficiencies.
Automation. For 2020, automation isn’t as much a trend as it is a growing necessity. Automation for deployment, testing, and alerting translates into faster, more reliable app deployments and updates. It also helps establish a more maintainable code base, where the processes are repetitive and every one of them is documented in scripts. Code can be safely deployed because numerous automatic tests are in place. If something goes wrong, alerts are sent so it can be fixed.
Statelessness. Many on-premises apps store the state of the app on the infrastructure the code runs on so the app can be broken when adding/removing server resources. Cloud-native apps aren’t tied to infrastructure, which means they can run in a highly distributed manner while maintaining their state independent of the underlying infrastructure.
Right-sized capacity. A cloud-native app platform dynamically allocates and reallocates resources based on the ongoing needs of the app. Traditional IT designs a dedicated, custom infrastructure solution that’s often over-sized based on worst-case capacity estimates with little capability to scale beyond to meet demand.
Amazon Web Services (AWS) Leads in Modern App Development
AWS will continue to be prominent in 2020 and beyond. When it comes to support for modern app development, including the cloud-native type, AWS is at the forefront.
Along with its APN partners — including ClearScale, AWS is helping to change how apps are developed; how development teams think, work and collaborate; and how businesses use apps to deliver value and establish a competitive edge.
AWS and its partners are also evolving development practices into best practices and creating new use cases.
The list of AWS resources relevant for cloud-native app development is too long to include here. However, the following are some that we like to use at ClearScale.
Amazon DynamoDB is a fully managed, multi-region, multi-master, durable database with built-in security, backup and restore, and in-memory caching for internet-scale apps.
Amazon Simple Storage Service (S3) is a scalable, low-cost, web-based object storage service designed for online backup and archiving of data and app programs. AWS Lambda is a compute service that enables developers to run code without having to manage servers. It executes code only when needed and scales automatically.
AWS Fargate is a serverless compute engine for containers that works with both Amazon Elastic Container Service (ECS) and Amazon Elastic Kubernetes Service (EKS). Amazon Cognito facilitates the control of user authentication, as well as access to any mobile apps on devices connected via the Internet.
Amazon CloudFront is a global CDN service that helps in secure delivery of data, videos, apps, and APIs.
AWS Step Functions lets you coordinate multiple AWS services into serverless workflows so you can build and update apps quickly. You can design and run workflows that stitch together services, such as AWS Lambda and AWS Fargate into feature-rich apps.
Amazon EventBridge is a serverless event bus for easily connecting apps together using data from the user’s own apps, integrated Software-as-a-Service (SaaS) apps, and AWS services.
AWS AppSync is a managed service that uses GraphQL to make it easy for apps to get the data they need. It simplifies app development by enabling users to create a flexible API to securely access, manipulate, and combine data from one or more data sources. For mobile and web apps, it also provides local data access when devices go offline, and data synchronization with customizable conflict resolution, when they are back online.
AWS Amplify is a development platform for building secure, scalable mobile and web apps. It helps authenticate users, securely store data and user metadata, authorize selective access to data, integrate ML, analyze app metrics, and execute server-side code. It covers the complete app development workflow from version control to production deployment, and easily scales from thousands of users to tens of millions.
Amazon Pinpoint is a marketing and analytics service hosted on the AWS public cloud that enables organizations to engage with and track metrics related to its app end users.
Machine Learning and Artificial Intelligence:
Amazon CodeGuru is a service for automated code reviews and app performance recommendations. It’s powered by ML, best practices, and lessons learned from millions of code reviews and thousands of apps profiled on open source projects and internally at Amazon.
Amazon Personalize is an ML service that makes it easy for developers to create individualized recommendations for customers using their apps. Amazon Forecast is a fully managed service that uses ML to combine time series data with additional variables to build forecasts.
Amazon Transcribe facilitates the incorporation of speech-to-text capability into apps. It uses a deep learning process — called automatic speech recognition (ASR) to — convert speech to text quickly and accurately.
AWS Cloud9 is a cloud-based integrated development environment (IDE) for writing, running and debugging code with just a browser.
AWS Cloud Development Kit (AWS CDK) is an open source software development framework to model and provision cloud app resources using familiar programming languages.
AWS X-Ray helps developers analyze and debug distributed apps.
ClearScale Can Help
If this all seems like a lot to digest, don’t worry. ClearScale is here for you. We have the expertise to drive the full cycle of app development, modernize monolithic apps, build a new app from scratch according to best practices, provide consulting services, and much more.
Learn about some of the app development work we’ve done for other customers in our case studies. Or, talk to us directly about your needs.
Get in touch today to speak with a cloud expert and discuss how we can help: