Table of Contents
Achieve Cloud Elasticity with Iron
Speak to us to find how you can achieve cloud elasticity with a serverless messaging queue and background task solution with free handheld support.
How Did We Get Here?
- Image - the Docker Image is the file that holds everything necessary to run a Container. This includes:
- the actual application code
- a run-time environment, with all the OS services the application needs.
- any libraries needed for your application
- environment variables and config files, such as connection strings and other settings.
- Container - a Container is a "copy" of an Image, either running or ready to run in Docker. There can be more than one Containers copied from the same Image.
- Networking - Docker allows different Containers to speak to each other (and the outside world). The code running in the Container isn't "aware" that it's running within Docker. It simply makes network requests (REST, etc), and Docker routes the calls.
- Volumes - Docker offers Volumes to allow for shared storage between Containers.
- The Server, or Daemon - the Daemon is the "brains" of the whole operation. This is the main process that manages all the other Docker pieces. Those pieces include Images, Containers, Networks, and Volumes.
- REST API - The REST API allows programs to communicate with the Daemon for all their needs. This includes adding/removing Images, stopping/starting Containers, adjusting configuration, etc.
- Command Line Interface (CLI) - allows command-line interaction with the Docker Daemon. This is how end-users interact with Docker. It uses the Docker REST API under the covers.
- a Rails environment for web services
- connected with a MySQL database
- with Redis available for caching.
Iron.io Serverless Tools
Speak to us to learn how IronWorker and IronMQ are essential products for your application to become cloud elastic.
- Core OS' rkt (Rocket) - the "pod-native" container engine. Developed by a Kubernetes-based software team, this is a competitor to Docker.
- Cloud Foundry - adds a layer of abstraction on top of Containers. Allows you to provide the application, and not worry about the layering beneath. With this service, you're not really focused on the Container layer.
- Digital Ocean - a cloud-based provider that calls its containers "droplets". This appears to be like Cloud Foundry, in that they abstract away some complexity. There are still cloud/Kubernetes options in their control panel.
- "Serverless" services - major cloud providers like AWS and Azure offer "serverless" services. These allow companies to create simple web services on the fly. No hardware, or hardware virtualization. No worries about the underlying platform. Not technically Containers, but offer support for many of the same use cases.
- "Dashboard" for all the Containers. One place to watch and manage them all.
- Automatic provisioning and deployment. Rather than individually spinning up Containers, the orchestration engine manages for you. Push a button, adjust a value, more Containers spring to life.
- Redundancy - if a Container fails in the wild, an orchestration engine will notice it fail. And put a new one in its place.
- Scaling - as your workload grows, you may outgrow what you have. An orchestration engine detects capacity shortages. It adds new Containers to spread the load.
- Resource Allocation - under all those Containers, you're still dealing with real-life computers. Orchestration engines can manage and optimize those physical resources.
- Cluster - A Cluster is an instance of a Kubernetes environment. It has a Master node and several Worker nodes.
- Node - A Kubernetes Node is a process that runs on a server (physical or virtual). A node is either a Master node or a Worker node. Together, Master and Workers manage all the distributed resources, both physical and virtual.
- Master - the Master node is the control center for Kubernetes. It hosts an API server exposing a REST interface used to communicate with Worker nodes. The Master runs the Scheduler, which creates Containers on the various Worker Nodes. It contains the Controller Manager, which manages the current state of the cluster. If the cluster doesn't match the desired state, the Controller Manager will correct it. For example, if Containers fail, it creates new Containers to take their place.
- Worker - the Worker Nodes carry out the wishes of the Master Node. This includes starting Containers and reporting back their status. As an environment needs to scale to more machines, Kubernetes adds more Worker Nodes.
- Pods - A Pod is the smallest deployable unit in the Kubernetes object model. It consists of one or more Containers, storage resources, networking glue, and configuration. Kubernetes deploys Pods to Nodes. Docker is the main Container technology Kubernetes uses, but others are available.
- Docker Swarm - already mentioned above, this is Docker's Container Orchestration offering. This has the advantage of coming from the same team that maintains Docker. It is also considered easier to use by some, and faster to get started. Additionally, Swarm uses the same CLI as Docker. This makes it easy to use for those already familiar with Docker.
- Nomad - this is a lightweight orchestration platform. This doesn't feature all the bells and whistles of more advanced systems. It is more simple, though, which may appeal to some.
- Docker Swarm - an easy stepping stone from simple Docker, Swarm is worth exploring first. Using the same CLI, you can grow your Docker environment to multiple Containers on several Machines. If you are able to manage everything this way, you might just stop there.
- Kubernetes - if Swarm doesn't seem up to the task, it's probably worth the leap to Kubernetes. It's the leader in the orchestration space, which offers the same documentation and support advantages. It will grow as big as you need it and supports the complications that arise with large-scale systems.
Unlock the Cloud with Iron.io
Find out how IronWorker and IronMQ can help your application obtain the cloud with fanatical customer support, reliable performance, and competitive pricing.