I'm Greg DeArment, Group Engineering Lead at Palantir.
And today, I'll be discussing Apollo,
Palantir's platform for continuous deployment
across all environments.
We built Apollo to bring the convenience and stability
of SaaS, where no SaaS has gone before.
From submarines to satellites, private clouds
and on-premise data centers, Apollo
enables the secure seamless delivery of software
across any environment, anywhere on Earth.
This flexibility enables us to meet our partners
where they are, wherever they are, and, in turn, empowers
them to reach further.
When we launched Gotham in 2008, cloud computing
was in its infancy.
Most enterprise software was still
installed in customer-owned hardware and their own data
centers, meaning upgrades were relatively
infrequent and manual.
By the time we launched Foundry eight years later, in 2016,
the software landscape had changed dramatically.
The cloud was discussed as a singular entity,
with a singular grip on enterprise software.
Companies rapidly embraced the SaaS model,
microservice architecture, and CI/CD
for the ability to push constant granular updates
to their production environment.
Because of this, commercial cloud providers
were entering a heyday of hyper scale growth and adoption.
However, five years later, there is no single cloud.
Instead, organizations are looking up
and seeing a sky full of clouds - some public, some private,
and many that are hybridized.
And this number is only increasing.
Some government customers require their software to run
in purpose-built government or classified clouds that live
separately from standard public cloud infrastructure -
such is the case with the US government's FedRAMP Impact
Level accreditation programs.
We've also seen stringent data protection regulations put
in place by national governments,
particularly in Europe with GDPR.
This has resulted in enterprise software frequently needing
to be hosted in country.
Simultaneously, large companies are increasingly
moving to private clouds and returning
to on-premise for security, data privacy, or financial reasons.
Together, this cloud fragmentation
has narrowed the opportunities available to companies
relying on traditional SaaS architecture.
These companies are left to stagnate,
unable to evolve alongside their customers
or support robust product growth.
To keep up with expanding delivery environments,
some organizations decide to build continuous deployment
capabilities in-house.
While this is certainly possible, doing so
pulls valuable resources away from innovation,
as time is wasted cobbling together
a set of open source CI/CD tools that were designed
for a singular cloud world.
You need to keep your engineers spending their creative energy
on building new capabilities for your customers,
not figuring out how to deploy and operate those capabilities.
You need an operational story for a disaggregated deployment
model that doesn't require you to scale
your headcount in order to scale your business.
That's where Apollo comes in.
Apollo is an orchestration engine for the enterprise,
enabling continuous deployment, configuration management,
and central software operations across these mini cloud
and on-prem environments.
Apollo employs a number of different concurrent processes,
including version management, advanced rollout strategies,
and release promotion to ensure platforms stay up
to date and operational 24/7.
With Apollo, you can release new capabilities,
deploy them at scale, compose them
into novel platforms, de-risk releases,
and rapidly resolve problems as they arise.
Having deployment health and continuity
on a single pane of glass gives engineers a common interface
to handle risk management concerns
unique to each environment.
Here's how it works.
Most software companies have already adopted containers
and have continuous integration pipeline for their software
development lifecycle.
Let's add Apollo.
First, you define the capabilities and configuration
of each service you want to run and package it
into a distributable format, a standard OCI container image.
This framework does not require you to make code changes.
The Apollo hub is the central environment
containing the Apollo software catalog, orchestration engine,
and control panel for managing your software installations
across the environments in your fleet.
Within this hub, you simply register
new versions of your services.
Your code and software always stay
within the existing source control
and artifact repositories.
Next, there is a deployment platform
that runs within each environment you want to deploy
and manage software within.
This is a set of software that sits on top of Kubernetes,
but also supports a container-less world.
The deployment platform within each environment
connects back to the Apollo hub, reporting the current state
of the environment.
It then receives updates the target date of each service,
as upgrades or configuration changes become available
and meet the constraints declared
by both services and the environment.
Apollo was built to power workflows at scale.
So as you deploy to more environments,
your engineers stay focused on shipping, new capabilities,
and not the mechanics of how those capabilities get
deployed or upgraded.
Different environments have different risk tolerances when
it comes to software updates.
For instance, you'll want to roll out new features
to canary environments first before moving
those same updates to classified networks
or to critical edge hardware that
are harder to operate within.
Apollo facilitates software stability across these
different environments by using a concept called
'Release Channels.'
Environments can subscribe to a release channel in accordance
with their individual risk tolerance
and appetite for new features.
Once pushed via release channel, Apollo
enables the evaluation of rollouts
through a powerful suite of tools
to help operators understand the risks associated
with each pipeline, surface problems, and ship code better.
As new opportunities require your software
to be deployed across new cloud regions, cloud providers,
and on-prem environments, Apollo enables your business
to deploy software where it's needed.
Your software engineers can continue
to focus on the product and not on building
for specific environments.
Managing incremental installations of software
are treated no differently than your first development
and production environments.
Your software engineering teams rely
on the same mechanics for how their software gets delivered.
Apollo makes it possible to take the same approach to Continuous
Delivery across different security or classification
boundaries by enabling you to deploy an Apollo hub
within each network boundary.
Each network hub is responsible for managing the environments
on that network.
This compliance-aware change management
enables Apollo to centrally manage services
and environments across different compliance regimes,
empowering seamless operation across highly-regulated
business environments.
Apollo effectively removes the deployment environment
as a constraint, enabling engineers
to focus on velocity and application code.
They write code once that works for all customer environments.
Ultimately, this approach brings more capabilities
to customers faster - supercharging your growth
by bringing homogeny to an increasingly
heterogeneous world.