Persistent Storage and Fast Remote Builds

If you’ve been keeping up with us at Fly, you may be picking up on a bit of a narrative with us. Fly launched, in the long-long-ago, with a somewhat narrow use case. We took containers from our customers and transmogrified them into fleets of Firecra

Jerome Gravel-Niquet, Thomas Ptacek, Jerome Gravel-Niquet
11 min readintermediate
--
View Original

Overview

The article discusses the introduction of persistent storage and fast remote builds on the Fly platform, highlighting the evolution from ephemeral micro-VMs to a more flexible storage solution. It explains how Fly Volumes allow users to attach persistent storage to their applications, enhancing deployment capabilities and build times.

What You'll Learn

1

How to create and attach persistent storage volumes to Fly applications

2

Why using external services for storage can be beneficial for certain applications

3

When to implement a replicating database cluster for data resilience

4

How to leverage remote builds for faster deployment times

Prerequisites & Requirements

  • Understanding of containerization and microservices architecture
  • Familiarity with Fly CLI tools and Docker

Key Questions Answered

What is the purpose of Fly Volumes?
Fly Volumes allow users to attach persistent storage to their applications, enabling data to survive multiple reboots and deployments. This feature is crucial for applications that require consistent data storage, such as databases and caching systems.
How do remote builds on Fly improve deployment times?
Remote builds on Fly are faster because they utilize a builder app with attached storage to cache layers and manifests. This allows for quicker Docker builds compared to previous methods that relied on external services like AWS CodeBuild.
What are the limitations of using Fly Volumes?
Currently, Fly Volumes do not provide data resilience, meaning users must manage their own data backups and recovery strategies. This model is suitable for applications where data loss is an inconvenience rather than a disaster.
When should developers consider using external storage services?
Developers should consider using external storage services when they need reliable data storage solutions, such as RDS or S3, especially for applications that require high availability and data persistence.

Technologies & Tools

Some links below are affiliate links. We may earn a commission if you make a purchase.

Containerization
Docker
Used for building and deploying applications on the Fly platform.
Tools
Fly CLI
Command-line interface for managing Fly applications and resources.
Orchestration
Hashicorp Nomad
Used for managing application deployments and resource allocation on Fly's infrastructure.
Storage Management
Lvm2
Utilized for managing persistent storage volumes on Fly's infrastructure.

Key Actionable Insights

1
Utilize Fly Volumes to enhance the persistence of your application data.
By attaching persistent storage to your Fly applications, you can ensure that your data remains intact across deployments, which is essential for stateful applications.
2
Leverage remote builds to significantly reduce deployment times.
With the new remote build capabilities, you can streamline your CI/CD process, allowing for faster iterations and deployments without the overhead of local builds.
3
Implement a replicating database cluster for improved data resilience.
For applications that require high availability, using a cluster setup can mitigate the risks associated with data loss by ensuring that backups are maintained in real-time.

Common Pitfalls

1
Assuming that Fly Volumes provide built-in data resilience.
Users may overlook the fact that Fly Volumes currently do not offer data resilience, which means they need to implement their own backup and recovery strategies to prevent data loss.

Related Concepts

Persistent Storage
Remote Builds
Container Orchestration
Data Resilience Strategies