Is it possible to run Azure Service Fabric Mesh on-premises? - azure

Azure Service Fabric can be run on Windows Server. Can Service Fabric Mesh be hosted that way as well?

The underline platform is the same service fabric binaries, the only difference is that on MESH you don't manage nodes and all definitions is based on Containers and Hardware Resources (Network, CPU, storage), you will be able to simulate a "Single Node" MESH cluster like you do with current SF and deploy you mesh applications in there.
If your plan is to have a production environment onPrem I haven't got in much details about it, now that it is becoming an opensource solution, I assume yes, but I don't think it is on their top priority.
For now, there is not much documentation about it, so the best you can find will be on these links:
https://learn.microsoft.com/en-gb/azure/service-fabric-mesh/
https://azure.microsoft.com/en-us/blog/azure-service-fabric-mesh-is-now-in-public-preview/
How to setup local development cluster:
https://learn.microsoft.com/en-gb/azure/service-fabric-mesh/service-fabric-mesh-howto-setup-developer-environment-sdk

Related

Orchestration of on-demand jobs on Azure cloud

I am facing the following problem: I need to execute on-demand long running workers on Azure VMs. These workers are wrapped in a docker image.
So I looked at what Azure is offering and I seem to have the following two options:
Use a VM with docker-compose. This means I need to be able to programatically start a VM, run the docker image on it, and then shutdown the VM (the specs we use are quite expensive and we can't let it run indefinitely). However this means writing orchestration logic ourselves. Is there a service that maybe we could use to make life easier?
Setting up a k8s cluster. However, I am not sure how pricing works here. Would I be able to add the type of the VMs we use to the cluster, and then use the k8s API to start on-demand containers? How would I get priced in this case?
If the only thing you need are workers, there are a few more options you have. Which service suits best depends on the requirements you have. Based on what's in your question, I would think one of the following two might fit best:
Azure Container Instances
Azure Container Instances offers the fastest and simplest way to run a container in Azure, without having to manage any virtual machines and without having to adopt a higher-level service.
Azure Container Instances is a great solution for any scenario that can operate in isolated containers, including simple applications, task automation, and build jobs.
Azure Container Apps (preview)
Azure Container Apps enables you to run microservices and containerized applications on a serverless platform. Common uses of Azure Container Apps include:
Deploying API endpoints
Hosting background processing applications
Handling event-driven processing
Running microservices
According to Azure's Container services page, here are your options:
IF YOU WANT TO
USE THIS
Deploy and scale containers on managed Kubernetes
Azure Kubernetes Service (AKS)
Deploy and scale containers on managed Red Hat OpenShift
Azure Red Hat OpenShift
Build and deploy modern apps and microservices using serverless containers
Azure Container Apps
Execute event-driven, serverless code with an end-to-end development experience
Azure Functions
Run containerized web apps on Windows and Linux
Web App for Containers
Launch containers with hypervisor isolation
Azure Container Instances
Deploy and operate always-on, scalable, distributed apps
Azure Service Fabric
Build, store, secure, and replicate container images and artifacts Azure
Container Registry
EDIT:
Based on the comment
Let's say the only requirement is that I am able to use the resources on-demand, so I only end up spending the amount of money that would take for a certain job to finish execution. What would you use?
the answer would most probably be Container Apps, if the code you have available is not easily migrated to an Azure Function. The most important reason: they are Serverless, which means they scale to zero and you only pay for actual consumption. Next to that, you have to write limited to no orchestration logic, since the container apps can scale based on event sources.
Enables event-driven application architectures by supporting scale based on traffic and pulling from event sources like queues, including scale to zero.
Another great resource is Comparing Container Apps with other Azure container options.

Production web api hosting, web app for containers or azure container instances?

I have an ASP.NET core 3.1 based web api ready to deploy to Azure for production use. For test / development, I have been deploying it to a traditional app service on Azure which I believe is a shared Windows VM under the hood. I have been on F1 tier and it suits my needs for test and dev.
But for production, even the cheapest plan costs me $93.44 per month which I would like to avoid if I can.
In order to lower the cost, I have decided to containerize my app and deploy it using "web app for containers" or "azure container instances". My question is, based on your experience, which method will give me reasonable production-scale performance while minimize my monthly cost? Or would containerize my app save me any money at all?
Please note that I have evaluated Azure Functions and decided it is not what I would like to use.
For your requirements, first of all, you need to know that the Azure Container Instance benefits for its quick start and running. See this:
Azure Container Instances is a great solution for any scenario that
can operate in isolated containers, including simple applications,
task automation, and build jobs.
It's good for the simple application, but not good for scenarios where you need full container orchestration, including service discovery across multiple containers, automatic scaling, and coordinated application upgrades. And I think it's also not stable for the production use, it's more appropriate for the test.
And the Azure App Service is cost according to the service plan, the service plan billed on a per second basis. You can plan the use with time as you need and the App Service has more features than Container Instance. Or if you do not satisfied with App Service, maybe you can take a look at the Azure Kubernetes Service, it has more control and feature then the Container Instance.
As of beginning of 2022 looks like Container Instances and Web Apps for containers will be the same ~32eur which is a bit better than the app service ~50eur.

Service Fabric for Development Environment on Windows Server

We are developing Microservices with .NET Core on top of Service Fabric.
We have two development environments that is part of our release process, Automated Test Environment and Functional Test Environment. Using two full instances of SF on Azure is costy given that we can tolerate availability and performance for our dev environment and given that our production environment is on Azure. We already have a VM that we can use.
Does SF work under Windows Server 2016 Core? (I couldn't find any affirmation online).
Is it possible to have two instances of our application running on one VM?
In order to setup a Service Fabric cluster you need at least 3 machines (or you cannot reach quorum in your cluster). If you run it on Azure then you also choose the Reliability and durability tier for your nodetypes https://learn.microsoft.com/en-us/azure/service-fabric/service-fabric-cluster-capacity#the-reliability-characteristics-of-the-cluster. A higher reliability tier (Silver, Gold or Platinum) means that you need further nodes (machines) in cluster.
You can run multiple instances of the same application and of different deployment versions in the same cluster. You need to consider how your services are assigned ports (for those that expose HTTP endpoints), otherwise these will conflict if you have multiple instances of the same application type in the same cluster. There is currently no way to provision new instances through Visual Studio, you need to use PowerShell, the API or the Service Fabric Explorer.

Changes required to run Kubernetes provisioning script (Kubernetes + CoreOS in Microsoft Azure) to run in production environment?

I am planning to deploy a production deployment with 'Kubernetes + CoreOS' in Microsoft. And planning to run couple of micro services in the cluster. My plan is to have 5 nodes, I will have 5/6 pods to run each will have 3-5 instances. I was following the official documentation of Kubernetes, I found https://github.com/kubernetes/kubernetes/blob/release-1.0/docs/getting-started-guides/coreos/azure/README.md is really helpful, the script works awesome. But I don't think that its production ready for my use case , as
the deployed VMs are not assigned to Availability Sets
Not able to specify an existing Virtual Network, Resources, location etc.
I am a newbie in this field. Can someone help me out to let me know what all steps to be taken to make this a real production environment ?
the deployed VMs are not assigned to Availability Sets
It is true indeed, as an author and maintainer of the guide, I will welcome a pull-request to enable this, which should be quite easy and probably similar how affinity groups are currently handled.
Not able to specify an existing Virtual Network, Resources, location etc.
This is a very good point, however it's probably best to refactor current ad-hoc JavaScript wrapping to something more streamlined with Azure Resource Manager, which hasn't been generally available at the time I implemented that integration.

Advantage of using Windows Azure for MapReduce

I'm trying to develop a MapReduce application using Hadoop which could run on top of Windows Azure.
ie: using the Windows Azure clusters to deploy.
I wanted to know what could be the advantages of going in with Windows Azure when compared to other cloud services such as Amazon EC2, Google and so on.
Any help would be appreciated.
Azure has 1 click cluster deployments, parternships with hadoop solution providers to optimize solutions on Azure, VPN capabilities for seamless hybrid solutions along with a plethora of other things.
You also get the ability to automate using Rest or Powershell APIs and built in automation and monitoring that can be predictive as well as re-active to autoscale on demand. The seperation of concerns from compute and storage enables you to stand up and tear down clusters on demand so you can pay for them only when you need to.
Beyond this, billing by the minute is also ideal for anybody reselling compute time on clusters running on Azure.

Resources