The public cloud is tomorrow’s IT backbone. As cloud vendors introduce new capabilities, the application-building process is undergoing a profound transformation. The cloud is based on key tenets such as global scale, commodity hardware, usage-based billing, scale-out, and automation. But how does the cloud impact what we do as programmers every day? What do we need to do at a program level that aligns us with the aforementioned tenets?
Exception Handling and Instrumentation Welcome to this module on Exception Handling and Instrumentation. In this module, I'm going to talk about certain programming tips related to exception handling, retry logic, and instrumentation in cloud-based applications. As you can imagine, the core concepts are not dissimilar from what you're already familiar with in terms of on-premises applications. My goal here is to point out certain things that you need to be aware of when writing cloud-based applications. For example, if you have a logic to open a database connection or make another network operation, and if that call fails for whatever reason, what kind of retry logic would you implement? And what kind of implication would it have in terms of cost, in terms of contention in a cloud-based application? So let's talk about that. Similarly, we'll talk about things like logging. And then we'll talk about if you have multiple instances of the same application, as is common because the scale-out model is common in the cloud, how do you aggregate that information to get a unified view of your application? So we'll talk about tips like this in this module.
Containers, MicroServices, and Reuse Welcome to this module on Containers, MicroServices and Reuse. In this module, we'll be talking about containers, which is a way to organize your application, and package your application, so that you can easily move it, from an environment to environment, whether that environment is a public cloud, provider to another public cloud provider, or between on-premises and the cloud. We will also talk about microservices, which is a way to organize your application into smaller parts, which makes it easier to manage and scale. And then finally, we will be talking about reuse, focusing on the kinds of reuse that are enabled in the cloud. So why are we talking about these three things, in this one module? As I said earlier, microservices is a way to break your application into smaller parts that can run independently. Now as you can imagine, as you have a large number of these parts, it becomes more challenging to manage them, to move them around, between machines, and containers, and specifically Docker as you will see later in this module, is one way to achieve that, by packaging it in a certain format you can easily move them around. And similarly we are talking about reuse in this context, because cloud enables certain additional opportunities for use, as you will see, like the Cloud Marketplace allows you to go and grab a third party component and use it. And finally we'll be talking about things like machine learning, that allow you to tap into a rich repository of existing algorithms that you can use within your application. So let's get started.
Cost, Scale, and Automation Welcome to this final module in this course. In this module, we are going to talk about three interrelated concepts. We will start out our discussion about cost. As we have discussed earlier in this course, cloud is based on a utility-based computing model, which means you pay for the resources that you use, which also means that as developers, we are responsible for turning off resources that are not being in use. Next, we will talk about scaling--the ability to scale up and down based on the load on our system. And, of course, this goes hand in hand with the cost because you only want to scale when there is a need to, and you scale down when you don't have load in the system. And the final topic that we are going to talk about in this module is automation, which is really the glue between the first two topics. In order to be cost effective, in order to dynamically scale, you need a robust automation story. So in this module, we are going to talk about these three interrelated topics from the perspective of a developer. Let us get started.