Hello everyone. My name is justin luk.
I am the program manager for azure container instances, and
Today we're going to have about 20 minutes to talk about why aci
Is the easiest way for you to run containers in the cloud
Today, and why you should use them in contrast to something
Like aks, a kubernetes service or a service fabric and things
Like that. So let's start off with saying
You're all at the right session, so there's a really big
Opportunity right now especially for containers in the cloud,
Because gartner believes in the next few years, we're going to
See over half of enterprises running mission-critical
Containerized and cloud native workloads in production, and so
That's a 10x increase over what exists today and that means
There's a lot of opportunities for you to be at the spearhead
Of this modernization, as well as join azure on this journey as
We start to containerize all the things. And so can i get a quick show of
Hands: who here has used containers before?
Ah, nice. Who here uses containers in production?
That's still pretty good. Okay, so who here has tried
Azure container instances? all right.
That's not bad either. Okay, so why containers?
For the people who don't use containers and don't have them
In production, there's a few special values that containers
Provide over virtual machines or functions as a service, and so
Containers aren't meant to replace either of those.
They're simply another tool in your toolbox for when ever you
Have a problem that needs to be solved by software and so one
Of the values is speed, and so in the virtual machine world
You'd have to boot up an entire operating system for your host
And in a containerized world you don't need to define that
Yourself. You can containerize your
Application and your user space and this means it's simpler for
You in terms of overhead, and so the second component would be
Simplicity, being able to modularize large applications
Into singularized containers is fantastic, so an example would
Be batch data processing so when you extract, transform and load
Data, being able to dedicate a container to each step in that
Process lets you scale out bottlenecks if that occurs.
Let's say you pull out of data and it takes a long time.
You can scale out the extraction container.
Packaging, having to wonder do i have my dependencies all packed
In with my application? being able to specify all that
Within one docker file makes your life much easier.
And so we're going to bring the best that microsoft has to offer
To make sure we have the best services, which means we're
Going to bring clippy back and everything will work perfectly
And you want ned anything else ever.
Azure container is the easiest way to do so.
This enables you to run containers without touching a server.
If you run containers today you probably stand up your own
Virtual machines, install docker. But in aci, you can say: hey, i
Have my docker image, i just want to deploy that. I don't want to muck about
Virtual machines and you can do that.
Azure take care of everything under may container and we'll do
That for you. The second component is we want
You to see containers as a compute primitive.
It interacts with the azure cli, we'll make sure the containers
Have that same experience for you. And so on top of that, we're
Going to let you define your own configurations, so instead of
Going by a vm configuration sku set you can say hey i need
Exactly one cpu. I need exactly one gig of memory
And we'll bill you per second for each of those resources that you pick.
And then the last component is we'll provide you secure
Hyper-visor isolation for each of your containers. This is the same security model
You're used to with virtual machines and we'll make it
Familiar and reliable in the same way for containers.
And so let's stop talking about powerpoints and then i'm going
To drag over this browser. And then we'll hop into the
Azure portal, which hopefully everyone here has seen once or twice.
I'll open up the azure cloud shell and i'll type: az
Container create. I'll define one cli demand to
Deploy a container. I'll specify my resource group,
This test resource group. I'll specify a name and today
I'll deploy a quick mario game and deploy my image and i'll
Come over to docker hub, so this is a public container image
Registry where you can copy/paste the container image.
I'll set an ip address so we can actually go play the game.
And then i'll set a port to be opened.
And so that's just one simple command. And then this will be kicked off
And this is going to call the container resource provider that lives within azure and we see
That the request succeeded so let's go into the azure portal.
And take a look at at it from a gi perspective.
Here's the mario container we just deployed, let's hop in here s
O here we see the cpu starting to spike already so we
Have integration with azure monitoring so you can check,
What's the cpu utilization? what's the memory utilization?
How's my container looking from a health perspective so let's go
Ahead and copy/paste this ip and i'll hop into the containers tab
Where i can refresh and then we see the image is still pulling
But we can go in here and check the properties. We have our image name, the port
We opened and the default configuration for 1.5 Gigs of
Memory and 1 vcpu and let's hop into our logs to see if it's
Still loading. It is. So let's refresh.
Here we see we've pulled, we created and we started the container.
This has pulled the bits from docker hub, slapped it on to an
Azure container instance we've stood up for you and we can see
The logs, they should be spitting out apache logs now.
And so it actually doesn't even stop there.
We have rich functionality for things like exec, so if you're
Familiar with docker this is the same as docker exec, and so this
Means i can execute arbitrary commands within a live running
Container, great for debugging so i can do an az container
Exec, specify the resource group and the container and then let's
Do a bash terminal so this will bring me into a live interactive
Bash session with my running container.
Here's all my application logic and i can also type nv to see
All the environment variables so we can see what version of tom
Cat we have running and things like that.
So let's open up a new browser, hit port
8080, And this will bring us to this mario game hopefully.
And so we support any docker compatible registry, so you can
Use an azure container registry as well, so this is going to
Give you the best in-class performance because then you can
Start to co-locate your registry with your container resources
And vice versa. So let's come back in here.
Looks like we're still resolving.
There's no clear. Let's go ahead and exit that.
Network resolution. All right.
We'll let this spin a little bit more, but i actually have a backup.
So let's go to helloworld. And so here's the same
Application, so you can play mario if you want.
We've got 10 minutes left so i'm going to keep playing mario and
You can come ask me questions later about mario. So -- there we go.
Now it resolved. And so let's get back to the
Deck, and hopefully that showed you how easy it is to dry a
Single container if you want but we support scaling out.
If you want to run tens or thousands of containers we can
Do that for you but if you want self-healing or autoscaling or
Things like this that are inherently built in you want a
Cybernates, which has this complicated logic to let you
Manage and orchestrate containers at scale.
So what you just saw is a quick view around why you might want
To use aci specifically though. So, one, all i did was point you
To a docker image. You never touched a vm so
Infrastructure in that perspective is invisible.
If you want to burst out workloads, you don't want to have to worry about the overhead
Provided by all these new vms, you just want your container to run.
That's what we enable for you. The second aspect is
Microbilling so since we bill by the second, you can get a higher
Compute utilization than you would with vms so if i have a
Process that runs maybe an hour a day for a week out of a year,
Then i'm not going to want a vm dedicated for that.
I can instead deploy a container when i need, get 100
Utilization and tear it down when i want.
That's part of the beauty of having immutable infrastructure.
Then the last component is that modularity, so being able to
Scale out certain areas of logic that might become bottlenecks
And so what else can i build with aci? maybe i don't want to just
Deploy mario games the rest of my life.
I don't know why you wouldn't. But data processing is a great example.
The etl example, you mate need to extract, transform and load
Logic into a durable store, containerizing each component.
If you need that flexibility of a container is a great option so
I want to use my own language for the runtime.
I want to use my own open source libraries. A container is a great format to
Do that. Event driven applications, so
This infrastructure is classically used with functions
As a service so azure functions is the best route for you in the
Typical event driven infrastructure but if you want
To run a process that maybe takes an hour, running a
Function for an hour might not be your best route. And in that world, a container
Might be the right route so you can actually call an azure
Function to deploy an azure container and that will do the
Heavy lifting for you. And then on the last bit,
There's elastic bursting so we have built in integration with
Aks so that you can actually burst out in a kubernetes
Cluster running with just vms into aci so you have this mixed
World of managed containers but also vms where you might want
To configure at that level. So here's a really quick example
Of a very simple event driven architecture with container instances.
So let's say you have some kind of web front end, it could be
Hosted in azure web apps or a container or vm, whatever you
Want and that submits a job into a queue so this queue could be
An azure service bus or any, like a generalized azure queue
And this is going to be basically hooked into azure
Functions and so for the lightweight things azure
Functions can go and do those jobs but if you have a heavier
Process, the azure function can start up a container on demand
And do the heavy lifting right out to a durable store if you
Want and then you can tear it down so container instances
Support concepts like restart policies, so that if my
Container exits successfully with exit code 0, the container
Will just stop billing and it will just term flight so that
Helps you manage your costs a little bit, as well.
And then really quickly, on the aci front, raise your hand if
You're familiar with kubernetes. Wow, nice.
So in the typical kubernetes world today if you're the
Developer or the operator, you'll be deploying pods through
The kubernetes control plain and these will get scheduled on to
Vms that already exist in the infrastructure and this means
That you are either going to have just enough pods running
Within all of these vms or you'll spin up number vms in
Response so aci has the opportunity to come in and say:
Hey, if you don't have the resources already created and
Provisioned just spin them out into azure container instances
And we'll spin them up in seconds and we'll satisfy that
Workload that's meant to be burrsy or transient.
So we have the aks connector and the virtual kubelet project
Which if you're interested in, swing by our booth, over there
With containers and microservices. We're happy to talk about that
But this enables a world where you have a mixed workers inside
Of kubernetes so you have things that can be deployed on virtual
Machines, if you have steady state workloads.
Maybe it runs for a whole month, you want a dedicated vm.
Maybe you have hardware dependencies, you want an fpga
Or g36789u you have in your own cluster. But if you have burrsy and
Transient workloads let them spin out into aci.
The connect or is built so you only use the kubernetes
Control plan and it allows you to keep and maintain your
Existing infrastructure so really quickly what's next?
So today you can assign a public ip address and a dns name for
Your containers, and we're currently working on letting you
Join container instances into virtual networks. This is expected to land
Sometime mid to late this summer.
So this is the highest priority for us.
But we're also working on more regions.
Log analytics integration so you saw you can pull your logs via
The api but you mate want to cache them, or query them with
Specific queries you want to write. We'll make sure you have log
Answer and a first class fashion a nd then we'll be
Supporting things like container health probes so liveliness and
Readiness nodes so you'll be able to more quickly understand
Which containers are ready and willing to do the work that you need.
And then support for things like secret environment variables to
Make that process of passing secrets and yesterday's to and
From containers a lot more finally we announced cheaper
Pricing with the announcement of the general availability a few
Weeks ago. So this is effective on july
1St and so what we've basically done is removed the
Flat rate to create containers and basically cut the memory
Costs by a little bit more than half. And so this hopefully opens up
New options and new use cases for when you might want to use
Aci. So on that note, i would
Encourage you to go deploy and go learn.
I hope you saw that it was relatively easy to deploy a
Single container so we have tons of collateral, a lot of great
Videos and we have our booth where you can talk to myself and
My colleagues about when you might want to use it and what
The best practices are. So on that note, thank you all
Very much for coming. [ Applause ] it's been a pleasure.
Ct-i'm happy to take questions to the side, or at the booth.
>> One, one, two, two. Check, check.