FME Server for Docker (Technology Preview)
What is FME Server for Docker?
Docker is container technology that makes it easier to create and now deploy our FME Server product.
FME Server for Docker is shipped as a collection of containers that together make up the FME Server application. As our platforms team lead Raven so aptly put it, “With Docker we are able to deploy FME Server on platforms that don’t support required libraries. We are also isolated from unexpected libraries (and library versions) that might impact FME’s behavior.”
Here is a good article on what Docker is and why it is exciting. Docker promises to change the way solutions are deployed. It has been embraced by many industry heavyweights such as Google, Microsoft, and IBM.
We currently deploy FME Server on a variety of Linux distributions. With Docker support, the number of distributions explodes and we are now able to say FME Server is supported on any platform that supports Docker!
Why are we Excited?
This technology preview is just the beginning of our use of Docker as a way to deploy FME Server. Aside from an easier deployment story, Docker has many other benefits for FME Server.
- Security: FME Server components within our Docker deployment are able to access the host machine resources only in ways that are specified. No longer do applications have access to the full host machine. For example, access to the underlying host OS file system is restricted to only those directories that are explicitly given.
- Network Model: Docker 1.10 has new network capabilities that further enhance security. Our deployment of FME Server leverages this. Components only see other components of Server that they interact with. FME Engines for example are on a different network than the Server database and the web server. For this initial release we have defined 3 networks within our Docker deployment.
- Stability: Each component is contained in its own container and is thus not able to take more resources than allocated. The result is a system that performs better under stress. From an IT operations perspective, if all applications on a server are deployed with Docker then they play nicer together resulting in not just more stable applications but more stable systems.
- Resource Sharing: For each FME Server container resource sharing is explicitly specified. Containers can only read and write to the resources that they are given access. For example, the FME Engine containers are not able to write to the workspace repository directory – only read.
- Platform Agnostic: Always one of our goals at Safe, FME Server is now available on any platform and any cloud service provider that supports Docker.
- Deployment: Deployment is simple. If the platform supports Docker, you will be going with FME Server in minutes. Here are the complete installation instructions. Even more exciting is the future of Docker as they strive to make applications as easy to deploy on a network of machines as they do one machine.
What does Docker mean for the Future of FME Server?
We believe Docker is the future deployment model for FME Server. Initially this will be limited to our Linux platform but with the release of Microsoft Windows Server 2016 and its support for native Windows containers, we see Windows in our FME Server for Docker future. The benefits of Docker are too big to ignore.
For FME Cloud we see the impact to be even bigger, as it gives us the ability to more easily deploy on other cloud platforms using technology like Docker Machine, Docker Compose, and Docker Swarm. This is an exciting area of R&D for us at Safe.
FME Server and Docker 1.10
We waited for Docker 1.10 so we could take advantages of Docker’s networking capabilities. The ability to partition our FME Server deployment on a single machine using different virtual networks adds yet another layer of security to our solution. It also maps the network design for how we will deploy FME Server across many machines with Docker in the future.
Docker is evolving quickly and assisting in our goal of scaling FME Server processing capabilities dynamically up and down based on load across a network of machines. Docker’s goal of abstracting a collection of machines to a single container fabric is ambitious, and once complete, will forever change the way applications are deployed.
Give it a try
With this Technology Preview we give you the opportunity to embrace Docker and FME Server together. We look forward to you trying it and giving us your feedback.
Here again are the links to get you going.
We are confident that once you give Docker a try you will be hooked. Have fun!