Editor's note: This article is part of a two-part series on cloud-native applications. To read part one, click...
When it comes to cloud-native applications, development is only half the battle. Organizations must understand how to manage, monitor and scale their apps once they're in production.
The management of cloud-based applications relies heavily on automated tool sets and workflows, as cloud vendors handle the underlying hardware and infrastructure. This removes much of the guesswork and manpower around provisioning resources, but it also means you need to rethink the traditional concepts of scaling, storage, configuration and monitoring to adapt to the ephemeral nature of the cloud.
The reality of cloud-native application management is that users can't manage what they can't monitor. If users don't know how much traffic they're getting -- or how that traffic impacts the stability of the infrastructure -- it is nearly impossible to properly scale or react to problems that may arise from inside and outside of your cloud architecture.
Monitoring vs. logging vs. alerting
One of the biggest advantages of cloud-native application development is the access to cloud provider management and monitoring tools, such as Amazon CloudWatch, Azure Monitor and Google Stackdriver. The ability to monitor, log and receive alerts about both cloud-native applications and the services they rely on is a foundational piece of cloud management.
However, there are significant differences when it comes to monitoring, logging and alerting.
Monitoring: Monitoring is mainly concerned with collecting and analyzing metrics about a given piece of infrastructure -- such as CPU load, request latency or memory usage.
Logging: Logging is less about metrics and more about data. It logs details -- such as who, what, where, when and why -- so users can know what is happening at any given moment.
Alerting: Alerting focuses on the reaction of that data, rather than consumption. Users need to identify the thresholds that the application can safely run and set alerts when it crosses those thresholds.
Proper monitoring, logging and alerting practices enable users to see, track and react to problems as they happen, which can be the difference between degraded performance and a sustained outage.
Containers can add consistency to a range of IT processes, whether it's development, testing, deployment or hosting. And while they're a great place to put application code to build applications, they also have management benefits for cloud-native apps.
Container orchestration tools, such as Kubernetes, are heavily cloud-driven, even though they also can be used on premises. When paired with the scalability of the cloud, these services can be used to automatically scale infrastructure as needed. Also, cloud providers -- like AWS, Microsoft and Google -- have direct support for container orchestration, which can reduce the amount of overhead necessary to get started.
These orchestration tools can tie directly into cloud-native services and their monitoring metrics, so users can react in an automated fashion, directly within the application infrastructure, when issues arise. As a result, large applications are easier to manage and users gain more control over how individual services interact.