Terminology
This document describes the various terms used throughout Seaplane and the associated CLI/SDK.
The best way to introduce these terms is in reverse, from the outer most component that you'll interact with the most, to the physical components running underneath the hood. This is because we want you to think about your applications and services in this order — you shouldn't need to worry about the low-level building blocks!
Formation
At the heart of Seaplane is your formation
(s). Formations can be thought of as your high level application or service load balancer and entry point. This is the entry point for all public and private traffic.
When using the seaplane
CLI tool you will create local formation
Definitions. These definitions can be used to create remote Instances running on our Seaplane Cloud. But what is a formation
? A formation
is made up of two items, configuration
s and flight
s definitions. We'll discuss flight
s in a moment.
NOTE on Terms: Throughout this document if we say "formation" without qualifying whether it's a Definition (which resides locally on your hard drive), or an Instance (which is running in our Cloud based on your definition); that means it applies equally to both concepts. Where there are differences we will specifically say Definition or Instance as appropriate!
Formation Configurations
Each formation
has one (or more!) configuration
s. A configuration
tells us how to schedule your formation
along with other details like what type of traffic should be allowed.
As briefly noted above, one thing that makes formation
s a little different, and quite powerful, is that they can actually have multiple configuration
s! They can even have multiple active configuration
s (we refer to those as In Air
) and multiple inactive (Grounded
) configuration
s!
A configuration
whose status is In Air
is one that Seaplane is actively sending traffic to. Having multiple configuration
s from a single formation
listed as In Air
means Seaplane is load balancing between them based on the defined traffic weight setting of each configuration.
A configuration
whose status is Grounded
is one that has been deployed (uploaded to Seaplane), but is not yet In Air
(being utilized).
Deployed Configurations
When you create a new formation configuration
using the seaplane
CLI tool, that configuration only resides locally on your computer. You can edit or view this configuration
freely without affecting any of the systems running in the Seaplane Cloud. Once you're satisfied, you can launch
the formation
and any associated configuration
s to our Seaplane Cloud.
Once a configuration has been launch
ed successfully, it now resides in our Seaplane Cloud and traffic will be sent to any of the flight
s that it describes. Do note that there are command line options for launch
ing a formation
and setting it as Grounded or immediately In Air depending on your use case.
Which brings us to the heart of formation
s, and what these configuration
s are actually describing.
That's the flight
definition!
Flight
A flight
is logically a single container. However, under the hood, we spin up many actual container instances and spread them across the globe or within the regions you specify.
When your users send traffic to Seaplane, it gets routed to the appropriate formation
whose configuration describes the actual flight
s it is made up of, and who ultimately receive and process the user traffic.
To take a step back and describe a scenario in industry terms, imagine you're setting up a website to sell your state of the art Airplane Landing Gear (sticking within our motif, of course). Like many modern web applications, your website will be made up of a few different components; a front facing webserver, a backend database, and perhaps a backend metrics platform. You've already created the container images for each of these components, and if you were to draw out a diagram of how they interconnect, it would look something like this:
The important point is your webserver is the only component receiving public traffic, but the backend components may all need to network with one another to form the entire service.
If we translate this into Seaplane terms we still get the exact same diagram, but we would describe it like so:
- A "Landing Gear Website"
formation
- The
formation
sconfiguration
would specify- That it is made up of three
flight
s- A "webserver"
flight
- A "database"
flight
- A "metrics"
flight
- A "webserver"
- How public traffic arrives, and which
flight
to send it to - How the
flight
s are allowed to communicate/network with each-other
- That it is made up of three
Now what's really neat to us, is that each of these flight
s is not just a single physical container, but its own CDN like cluster! This makes your service (the Landing Gear Website in our example) much more robust, and can drastically increase your performance as you sell these landing gear to customers around the globe!
Additionally, let's say you had a version 2.0 of this Landing Gear Website you wanted to roll out. Perhaps it swaps out one metrics server for another, or maybe it consists of entirely different flight
s in total.
You can add a new configuration
to the existing formation
. Once activated, Seaplane will balance between your two versions. Since these two "versions" could be referencing the same flight
definitions, you easily can swap out only the parts you want to balance between. Or if you want to do full on A
/B
testing, all the flight
s could be different, the sky is the limit!
To visualize the example image, we kept it simple and the only difference between these two configuration
s is the metrics platform. After launch
ing the formation
with the second configuration added, your diagram would look like this:
In the more complex scenario, where all flight
s are different, it would look like this:
Container Instance
The lowest level component we should address, and we've already mentioned it a few times, is the actual container instances themselves. We haven't mentioned these until now because, if everything is working as intended, container instances are invisible to you and your users. Logically, the flight
is your container instance.
That being said, there are rare occurrences where you will need to think about how Seaplane is distributing your traffic, and in those instances it's important to know that there are actual container instances running under the hood.
These container instances are controlled by your flight
and formation
configuration. For the most part, you can let Seaplane handle the details of how they get distributed. However, it is possible to network between physical container instances individually when coordination is necessary. Doing so is outside the scope of this guide, and is normally handled out-of-band.
Container Image
Just like the container images you know and love from all your standard OCI compliant tools, there is nothing fancy here. We instantiate your container instances, which make up your flight
s and form your formation
s from good ol' standard OCI images.
Updated about 1 month ago