Difference between Azure Container Service and Web App for Containers - azure

What is the difference between Azure Container Service and Web App for Containers?
They both seem to offer a fully managed platform on which we can deploy containers. I feel that Web App for Containers must be offering something more, but I don't see it. I've read the Azure Container Service FAQ and the Web App for Containers intro page, but the difference is not obvious to me.

Web App for Containers lets you run your custom Docker container which hosts your Web Application. By default the Web App Service with Linux OS provides built-in Docker images like PHP 7.0 and Node.js 4.5. But by following the instructions from this webpage you can also host your custom docker images which allows you to define your own SW-Stack. The limitation is that you can only deploy one docker image to an App Service. You can scale the App Service to use multiple instances, but each instance will have the same docker image deployed. So this allows you to use Docker as a Service, but isn't intended for deploying Microservices.
Container Services (ACS), Kubernetes Service (AKS) and Service Fabric allow you to deploy and manage multiple (different) Docker containers which might also need to communicate with each other. Let's say you implement a shopping website and want to build your web application based on a Microservices architecture. You end up having one Service (= container) which is used for registration & login of users and another Service which is used for the visitors' shopping carts and purchasing items. Additionally you have many further small services for all the other needed tasks. Because the purchasing service is used more frequently than the sign-up/sign-in service, you will need, for example, 6 instances of the sign-up/sign-in service and 12 instances of the cart service. Basically, ACS, AKS and Service Fabric let you deploy and manage all those different Microservices.
If you want to know the difference between ACS/AKS and Service Fabric you might want to have a look here.

Related

How to build self-made Azure App Service cluster with docker swarm

Since Azure App Services are too expensive, we would like to build our own App Service Cluster so we can deploy Docker images to custom cloud VMs/workers from different service providers.
It should cover functionalities like:
Deployment Center: selecting Docker images (Docker hub, gitlab) and deploy them to our cloud workers by tag
Scalability (like App Service Plan): add workers
Load balancing
SSL/Domain Management
FW Integration
Logging Streams
Does there exist already an open source framework with a GUI for this type of "private cloud" that can be deployed via docker swarm for instance?
thankz!

How many different ways are there to deploy a website under azure portal?

Good day dear community,
i have a smaller project where i need to search for different possibilities to deploy a website under azure portal.
Personally i found 4 different ways how to do it.
App services
App functions Serverless (which i dont understand how to deploy there a website)
Install a VM and then deploy a website
Use docker to deploy your code
Question:
Are there any more ways to deploy a website under azure and can somebody explain the deployment of websites with serverless as i dont understand how to publish a website there. i just managed to get the httptriggers and i am confused with that.
Thanks in advance
sorry for any spelling mistakes.
You can deploy to a website to a VM. But first you will have to setup the VM to be a web server. There are many different pre-configured images with either Linux or Windows OS. This will require you manage the OS of the VM.
An Azure App Service will abstract the OS and VM away from you. The OS will be managed for you and you can configure many settings through the Azure Portal. There are different plans that allow you to use more compute and/or memory. You can also setup Authentication through the portal. You can also elect to deploy you website inside a container to an App Service.
There are also Azure Function Apps which can be used. Azure Function Apps are not intended to serve as the backend to a website, but it can be. These are meant to serve only one purpose, not many like the backend of a whole website ( for example, you might use a different function app to serve content each page of a website instead of just one app service having multiple endpoints serving all pages of a website). With Azure function apps, you can deploy in a container or not in a container.
I am not sure what you mean by number 4, Container over docker. You can deploy a docker container an App Service or a Function App. You can deploy the container to docker hub or azure container registry (to name a couple), but that will not deploy your website so that it is accessible.

Limitations of Web App for Containers in Azure

We are planning to develop a new web application in Java or .NET. The application should be containerized using docker in Azure cloud platform and it should be scalable (user base at pick is about 80-90). Since, there is no need to develop a Microservice based application we have have planned to develop REST services in back end and Angular JS in front end as the application architecture.The Service back end will be deployed in web server and will run in one container and the Angular JS front end in another.
In this context will Web App for container in Azure App service would be the right choice?
What are the limitations of Web App for containers?
Is there any limitations with Web App for containers in Azure App service if the application is developed using Java Spring Boot?
Yes, it's a good choice to develop a web application in Java or .NET and containerized it for deployment easier.
The limitation, please refer to the section App Service limits of the offical document Azure subscription and service limits, quotas, and constraints.
And there is not any limits for using Java Spring Boot with WebApp for container on Linux. it's also same as do developing on Docker.
Additionally, just considered for developing REST service in back, I recommended you may use Azure Functions in Java that I think easier.
If you want to run just Spring Boot, you can also use the "Java SE" offering which is available for Windows or Linux in App Service. In this case you just deploy your code and you don't need to worry about managing containers, like updating the JRE version, etc.
However, if you are interested in deploying a containerized app, you can use Windows Containers or Linux Containers in Azure App Service.

Difference between Azure App Services and Web App for Containers

I was looking to use Azure App Services and noticed Azure now offers Web App for Containers, now I wonder what's the difference between them? And couple more questions come to my mind
Assuming I choose Web App for Containers, who is going to manage the container updates?
Is the deployment differs from App Services to Web App for Containers, from application perspective?
Web App for Containers is one of the offerings in Azure App Service. It allows you to deploy containerized applications on Linux and Windows (the latter is in preview).
The platform automatically takes care of OS patching, capacity provisioning, and load balancing. But, the container updates are up to you.
The deployment differs in that you will be deploying your application inside a Docker container instead of deploying directly like you do in a Web App.

Azure Docker Container Service Multiple Instances

I'm using Azure for the first time to deploy a web app. More specifically, I'm using the Docker Container Service to do this. I already have one instance of it deployed. But, I want to also deploy 2 more instances of the same web app. I want each instance to have a different URL. What is the best way of doing this? Do I have to add a new container service for each new instance and repeat the steps I did for deploying the first instance?
As in case of Azure Container Service (ACS),
You choose a container orchestrator i.e. Swarm, DC\OS and Kubernetes (Because creating replicas works differently in each of them).
In case of Swarm then either create a separate application container for the same application with a different end point and use automatic discovery feature for different URL(s) or choose a reverse-proxy load-balancer such as Nginx which will work on the same URL but on a different port (My blog here might help you).
Creating replicas across a cluster are used for Load Balancing, Routing Mesh, Scaling and Rolling updates etc.

Resources