I'm kinda confused about the following terms
Container instance - are these prebuilt operating systems?
Code as a service - flat out don't understand
Serverless computing - huh?
-
Azure terms clarification from AZ-900 course
-
A container instance is a package that contains an application(s) code and all of the applications dependencies.
Think about a virtual machine. Hypervisors, like Hyper-V, virtualize the hardware. When you create a VM, you have to install an operating system and the applications. When you start the VM, you wait for the guest OS to boot, you log in, and then you can access the applications. You can move VMs to another physical server, but since the VM includes the OS, the VM can be several GB in size.
With containers, like with VMs, the hardware is virtualized. But unlike VMs, with containers, the OS is virtualized as well. So when you create a container, you don't install an OS, the container solution (Docker, Azure Containers, etc) provide the OS. So in the container, you are only installing (or developing) the applications. This means the container is much, much smaller. So they are easier to move around (portable). Because the OS is virtualized, When you start a container, it's very quick, you are not waiting for the OS to load. If you are running 5 VMs, you have to install the OS 5 times. If you have 5 containers, there is only one instance of the virtualized OS.
Containers allow you to create app environments without worrying about the underlying infrastructure. Developers can start a new container instance (a copy of a container image) and start developing, in minutes. No need to create a VM, install an OS, update the OS, install their dev tools, install apps, etc. And when the want to start over, they simply start a new container instance, it will be exactly the same as the last one (consistency)
Here are some links for more info:
https://www.docker.com/resources/what-container
https://docs.microsoft.com/en-us/azure/container-instances/container-instances-overviewI'll answer your other questions in a new post.
-
Code-as-a-service (similar to Function-as-a-service) is a way to execute code without the need for creating a server. It is primarily use is for automation.
If you have code that you need to execute, you could spin up a server in Azure, and then run your code on that server. But it takes time to create the server. Once your code has executed, you don't need the server until the next time you need to execute your code. But you have to pay for the server the whole time. Or you could delete the server, and create it again the next time you need it. Terribly inefficient.
CaaS allows me to send my code and have it executed, without the need for a dedicated server. Azure, like most CSPs have a lot of resources available. They have compute power, just waiting to be used, for someone to create a VM, etc. So they now allow you to just buy slices of time on a server, rather than have to create, and pay for, an entire VM, even when you are not using it. CaaS is usually billed by the second. So if my code takes 30 seconds to run, that's all I pay for.
Azure has Azure Functions. This is the same concept as CaaS.
https://azure.microsoft.com/en-us/services/functions/Both of these, CaaS and FaaS, are examples of serverless computing.
Serverless computing, is a bit of a misnomer. There are still servers. We have to have CPU, memory, RAM, disk, OS. etc. What they mean by serverless computing, is you don't deal with the servers. That is all hidden, taken care of behind the scenes, by the CSP (Azure, AWS, etc) So there are still servers, you don't interact with them directly.
Hope this helps,
-
Helps a lot. Thank you.
-
You're welcome! Keep asking questions!