Service Fabric
Service Fabric is a distributed application platform for packaging, deploying, and managing stateless and stateful distributed applications and containers at large scale. Service Fabric runs on Windows and Linux, on any cloud, any datacenter, across geographic regions, or on your laptop.
Getting started with Service Fabric
To get started building applications for Service Fabric:
- Set up your development environment for Windows, Linux, or Mac.
- See our documentation.
- Run some sample projects.
Project timeline and development
Service Fabric is currently undergoing a big transition to open development. Our main goal right now is to move the entire build, test, and development process to GitHub. For now the Service Fabric team will continue regular feature development internally while we work on transitioning everything to GitHub.
We'll be providing frequent updates here and on our team blog as we work to get situated in our new home.
Quick look at our current status
- Service Fabric build tools for Linux
- Basic tests for Linux builds available
- Container image with build tools available to run builds
Currently in progress
- Build tools for Windows
- Improve dependency consumption process
- Automated CI environment
- Migrate complete test infrastructure
How to engage, contribute and provide feedback
During our transition to open development, we are primarily focused on tasks related to building, testing, and developing Service Fabric on GitHub. If you are interested in helping out with this effort, head over to the current set of issues to see what we currently need help with. We will happily work with you and take any contributions that help us move Service Fabric development to GitHub
In the meantime, contributions to other areas of Service Fabric are welcome on a best-effort basis. While the team continues to develop internally, we will integrate the changes into our internal development repo for testing and verification, and then push the merged changes back to GitHub when the change is released. The smaller and more targeted your PRs, the easier it will be for us to review and integrate them.
For more information on how this process works and how to contribute, provide feedback, and log bugs, please see Contributing.md.
Build Requirements
The requirements below are based off running a clean build using ninja, with the command
$ runbuild.sh –c –n
The build were run on Azure Linux VMs. They should be taken as estimates of how long a build will take.
Machine SKU | Cores | Memory (GB) | Build Time |
---|---|---|---|
Standard_D8s_v3 | 8 | 32GB | ~2 hours |
Standard_D16s_v3 | 16 | 64GB | ~2 hours |
Standard_D32s_v3 | 32 | 128GB | ~2 hours |
On a smaller VM (Standard_D4s_V3/4 cores/16GB) the build may fail. You may be able to build on a machine with less ram if you limit the parallelism using the -j switch. The build also requires approximately 70GB of disk space.
Setting up for build
Get a linux machine
This is the linux version of Service Fabric. You need a linux machine to build this project. If you have a linux machine, great! You can get started below. If not, you can get a linux machine on Azure.
Installing docker
Our build environment depends on Docker. In order to get started you will need to install docker.
There are many ways to install docker, here is how to install on Ubuntu:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce
Optional: Enable executing docker without sudo
By default docker requires root privelages to run. In order to run docker as a regular user (i.e, not root), you need to add the user to the docker
user group:
sudo usermod -aG docker ${USER}
su - ${USER}
You do not need to do this, but note that if you skip this step, you must run all docker commands with sudo.
Build Service Fabric
To start the build inside of a docker container you can clone the repository and run this command from the root directory
./runbuild.sh
This will do a full build of the project with the output being placed into the out
directory. For more options see runbuild.sh -h
.
Optional: Build the container locally
If you would prefer to build the container locally, you can run the following script:
sudo ./tools/builddocker.sh
Currently, the build container is based off a base image that includes a few service fabric dependencies that have either not yet been open sourced, or must be included due to technical constraints (for example, some .NET files currently only build on windows, but are a dependency of the Linux build).
This will pull all of the required packages, add service fabric internal dependencies, and apply patches.
Troubleshooting: Internet connectivity when installing local docker containers behind a firewall
A common issue with building a docker container behind a firewall is when the firewall blocks the default DNS used by docker. This will manifest as packages failing to download during the docker build
step (such as in the builddocker.sh
script above).
To fix this, you need to tell Docker to use an alternative DNS server. As a root user, create or edit the Docker daemon's config file at /etc/docker/daemon.json
so that it has an entry that looks like this:
{
"dns": ["<my DNS server IP here>", "<my DNS secondary server IP here>"]
}
Take note to replace the above command with your actual local DNS server, and restart docker:
service docker restart
Documentation
Service Fabric conceptual and reference documentation is available at docs.microsoft.com/azure/service-fabric. Documentation is also open to your contribution on GitHub at github.com/Microsoft/azure-docs.
Samples
For Service Fabric sample code, check out the Azure Code Sample gallery or go straight to Azure-Samples on GitHub.
License
All Service Fabric open source projects are licensed under the MIT License.
Code of Conduct
All Service Fabric open source projects adopt the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.