When teams implement OpenStack Swift object storage
Teams implement OpenStack Swift when an OpenStack cloud needs native object storage for backups, images, application data or clients that speak S3, and they must decide whether to build and run it in-house or bring in a partner. Swift is the object storage service in OpenStack, and it is an eventually consistent store: a write is acknowledged once enough replicas or fragments are persisted, and the remaining copies converge in the background. That model suits large volumes of unstructured data, but it changes what applications can assume about reads immediately after writes. Swift runs as a separate service from compute and block storage and authenticates requests through Keystone, so the project, group and role decisions already made for the cloud carry over to object access.
Three design decisions usually determine whether the build is sound. The first is ring design. The ring maps account, container and object names to partitions and then to storage devices, and its part power, zone layout and device weights decide how data spreads across failure domains. Ring parameters are slow and difficult to change once data is stored, so ask for a written ring plan that names zones, replica count and the expected growth path before hardware is ordered. The second is the durability scheme, which is either replicated copies or erasure coding. Replication is generally simpler to operate and handles small objects with less overhead, while erasure coding stores less raw capacity per object in exchange for more CPU use and a more involved reconstruction path. Confirm which scheme your workloads need with a test on representative object sizes.
The third decision is client compatibility. Swift has its own API, but many backup products, image pipelines and application SDKs expect S3. The s3api middleware can expose an S3-compatible endpoint on top of Swift, yet support varies by operation. Build a test matrix that covers the exact calls your tools make, including multipart upload, versioning, presigned URLs, lifecycle rules and access control policies, and run it against the middleware version you plan to deploy. Do not assume that a tool which works with a public S3 service will behave the same way on a private endpoint until you have tested it.
Ceph RADOS Gateway is the main alternative and is the better fit in some situations. RGW offers S3-compatible and Swift-compatible APIs on the same Ceph cluster that may already back Glance images, Cinder volumes and Nova guest disks. If your organization already operates Ceph, or needs multisite replication, Keystone or LDAP authentication and policy features that you have verified in a pilot, RGW can reduce the number of storage platforms your team must run. If the priority is a dedicated object store with Keystone-native access and the ring model, Swift remains the natural choice. Base the decision on a pilot against your own workloads, because feature comparisons alone will not show how each platform performs under your traffic. A quote should follow a written scope that covers the ring plan, the durability choice, the client test matrix, hardware and network sizing, and operating runbooks.
What Swift does inside an OpenStack cloud
Swift delivers each capability below through one account, container and object model, so a decision in one area affects the others. Read the cards together when you plan tenancy, durability and client access for your cloud. Each card names what to confirm in the current Swift and OpenStack 2026.1 deployment documentation before you size the cluster.
RESTful object API
Swift exposes storage over HTTP, so applications and scripts create, read, update and delete accounts, containers and objects with standard requests. Object data travels over the network directly to storage nodes, which makes network design and TLS termination part of the storage plan. Plan which client tools and applications will call the API before you publish endpoints to users. Confirm the supported verbs, headers, metadata limits and large-object handling in the current Swift API reference.
Account, container and object hierarchy
Each account usually maps to a Keystone project, containers group related objects, and objects carry the data along with user metadata. The hierarchy determines how quotas, access control lists and container listings behave, so agree on naming conventions and container layout early. Ask your team to confirm how account and container metadata, listing limits and container sharding are configured for your expected object counts. Check these settings in the current Swift documentation rather than relying on defaults.
Multi-tenant access through Keystone
Swift validates tokens issued by Keystone, so users from different projects share one cluster while their accounts stay separate. Role assignments in Keystone, together with the ACLs set on accounts and containers, decide who can read or write data. Federated users arrive through the mapping rules described in the Keystone federation documentation, so confirm which roles your operators and user groups receive in the OpenStack 2026.1 deployment guides before onboarding tenants.
Replication and erasure coding
The ring places each object's copies or fragments across disks and zones, and storage policies choose between replication and erasure coding for a given container. Replication generally keeps repair simpler and reads cheaper in compute, while erasure coding stores less raw capacity per object but adds encoding work and more involved rebuilds. Confirm the policy types, minimum node and zone counts, and recovery behavior for your failure domains in the current Swift storage policy documentation.
s3api middleware for S3 clients
The s3api middleware lets S3-compatible clients reach Swift endpoints, so teams can reuse backup tools and SDKs built for S3. Compatibility covers a defined set of operations, so test each client workflow against your cluster, including multipart uploads and signed requests, before relying on it. If you need a single platform that serves both S3 and Swift APIs with Keystone authentication, compare the Ceph Object Gateway option described in the Ceph documentation.
How the ring places and protects objects
The ring is the lookup table that tells every Swift proxy and storage node where an object belongs. When a request arrives, Swift hashes the account, container and object name to choose a partition, and the ring maps that partition to the devices that hold its copies. Every node reads the same ring files, so placement needs no central metadata service. Your main decisions are the ring builder settings: the partition power, the replica count for each storage policy, and the minimum time between partition moves. Confirm the exact parameter names, defaults and limits for your release in the Swift documentation before you build the first ring, because the partition power is difficult to change after data is stored.
Each device is assigned to a zone, and zones can be grouped into regions. The builder tries to place copies of a partition in different zones, so the loss of one rack, switch or site does not remove every copy. Erasure-coded storage policies apply the same placement logic to fragments instead of full copies. They lower raw capacity overhead but add CPU work and more network traffic during reads, writes and repairs. Before you choose a policy for each data type, count the zones and nodes you can supply. That number limits which replica counts and fragment layouts are viable, and it sets how much failure you can absorb without losing availability.
Swift is eventually consistent for object data. A write succeeds once a majority of the copies are stored, and the remaining copies are brought up to date later by replicators and object updaters that compare and repair differences in the background. During that window, a read can return an older version of an object, and container listings can lag behind recent writes. Applications that expect every read to reflect the latest write need to be designed for this. A common approach is to write each new version under a unique object name rather than overwrite an existing one. Ask your application owners which access patterns depend on immediate consistency, and confirm the guarantees for your Swift release before they design around them.
Changing the ring moves data. Adding, removing or reweighting devices changes which partitions belong on which devices. The builder reassigns a subset of partitions, you distribute the new ring to every node, and the replicators then copy or delete data over the network. This work uses disk I/O and bandwidth for as long as it runs and can slow client requests. Add capacity in controlled steps, review the builder's reported movement before you deploy, and schedule the work for periods of low traffic. Track replication lag and queue depth while it runs. Treat device removal as a planned data migration, and confirm that copies stay spread across zones throughout the process.
Configuration decisions to settle before the build
This table compares the decisions that set the shape of a Swift cluster and the operating commitments each one creates. Read each row as a choice to record before hardware is ordered, because partition power, durability scheme and zone layout are hard to revisit once data is in the cluster. The main takeaway is that durability, failure domains and the API surface should be agreed with the teams who will run and use the store.
| Decision | Option | When it fits | Operational cost |
|---|---|---|---|
| Durability: replication | Replica policy on standard disks | Small objects, mixed workloads and simpler failure handling | Largest raw capacity overhead as copies multiply across devices |
| Durability: erasure coding | Erasure-coded storage policy | Large, mostly static objects where capacity cost matters most | More CPU for reconstruction and weaker small-object latency. Test with your real object sizes. |
| Zone layout | Zones mapped to racks, power feeds or sites | Failure domains you can name and that fail independently | Each zone needs spare capacity to absorb a loss, and inter-zone latency adds to write time |
| Multi-region layout | One cluster spanning regions | Site loss tolerance is a stated requirement and added latency is acceptable | Higher latency and more moving parts. Confirm affinity options for your release. |
| Ring partition power and weighting | Partition power set at build time, weights proportional to usable capacity | Clusters with a planned growth path and mixed drive sizes | Changing partition power needs a supported migration, and weight changes move data |
| Client API: native Swift | Native Swift API with Keystone-scoped access | Swift-aware tooling and applications built for Swift | Clients must speak Swift, and fewer off-the-shelf S3 SDKs apply |
| Client API: s3api | s3api middleware, alone or alongside the native Swift API | S3-compatible clients and existing S3 tooling | Compatibility gaps to test, plus credential mapping and s3api settings to maintain |
| Keystone authentication | Keystone with federated identity (SAML 2.0 or OpenID Connect) | Corporate directory sign-in and project-scoped access | Mapping rules to maintain, and a Keystone outage blocks all clients |
| Proxy tier access | Load balancer in front of Swift proxy nodes | Several proxy nodes, TLS termination and health checks | Another highly available pair to run, plus certificate renewal and health check tuning |
When Ceph RADOS Gateway is the better choice
Choose Ceph RADOS Gateway (RGW) when your clients need both S3 and Swift APIs and you want one storage gateway serving both. RGW offers S3-compatible and Swift-compatible APIs on top of Ceph, so applications written for either protocol can share the same back end. Native Swift serves the Swift API directly, and S3 access depends on the s3api middleware. Before deciding, list every client that will connect, the protocol and API version each one uses, and the operations it calls. That inventory is the starting point for any comparison.
RGW's documented feature set covers multisite configuration, compression, Keystone and LDAP authentication, and multi-factor authentication. It also integrates with Open Policy Agent and exposes AWS STS, IAM and SNS APIs. Treat these as capabilities to verify, not defaults to assume. Confirm that the release line you plan to run includes each feature your clients or security policy depend on, and test the specific IAM and SNS actions your applications call. A supported API does not guarantee that every operation behaves the same way your client expects.
Ceph's source is licensed under LGPL-2.1 or LGPL-3, with some bundled components under other licenses, and the project itself offers no paid edition. Commercial support therefore comes from vendors or service partners, and that cost belongs in your comparison. The Ceph releases page lists Tentacle (20.2.x) and Squid (19.2.x) as actively maintained, with Squid's estimated end of life on October 31, 2026. Confirm the current dates on that page before committing, and plan any upgrade path with that estimate in mind.
The main trade-off is operating a separate storage platform. A Ceph cluster has its own monitors, OSDs, failure domains, network design, hardware sizing and upgrade cycle, and your team needs skills to run it. A native Swift cluster keeps object storage inside the OpenStack control plane, which means fewer moving parts if Swift is already in place. If your organization already runs Ceph for Glance, Cinder or Nova disks, adding RGW usually extends an existing skill set. If it does not, RGW adds a new platform, so request a quote that covers both the build and the ongoing operations.
Rollout sequence for a Swift deployment
The sequence moves from requirements and zone design through deployment, identity setup and ring onboarding to durability testing and handover. Each step closes with a named artifact, so the team can confirm the cluster is ready for clients before production traffic arrives. The order matters because ring design depends on the zone layout, and failure testing depends on a working ring.
Capture requirements and client inventory
Start by listing every application that will read or write objects, and record whether each uses the native Swift API or S3-compatible clients. Capture object sizes, expected growth, access patterns, durability expectations, data residency rules and the sites that must hold copies. Platform engineering and application owners should sign off on the list together. The step closes with a requirements record and a client inventory that name the protocol each client needs. Those two documents decide whether the s3api step applies and shape every later design choice.
Design zones, hardware and failure domains
Translate durability targets into a zone layout that maps zones to racks, power feeds and sites, and set the replica count each object receives. Choose drive and node sizing so that a single expected failure cannot remove more copies than the design tolerates. Confirm network capacity between storage nodes and proxies, and identify the hardware that must be benchmarked before purchase. The output is a ring design record listing zones, device classes, replica count and the failure scenarios the design is meant to survive.
Choose the deployment method and pin the release
Select between Kolla-Ansible, which deploys OpenStack services in Docker containers, and OpenStack-Ansible, which deploys in LXC containers or on bare metal. Use the OpenStack 2026.1 deployment guides as the reference for whichever method you choose. Check the choice against your existing tooling, your operators' skills and your planned upgrade approach. Pin the release and the Swift version it includes in the configuration. The output is a deployment decision record and a version manifest that the upgrade plan can reference.
Register Keystone endpoints and roles
Create the Swift service entry and its public, internal and admin endpoints in Keystone. Define the service user, an operator role and the roles client projects need for object access. If federation is in scope, map identities from your corporate directory with Keystone mapping rules that place users into the right groups and projects. Test token issuance and an authenticated account request from a client host. The output is an endpoint catalog and role matrix that the security team has reviewed and approved.
Build rings and onboard storage devices
Create the account, container and object rings using the zone layout from the design record. Add devices one zone at a time, check the weight each device receives and review a rebalance preview before committing changes. Store each builder file and resulting ring file in version control, then distribute them to every node in a controlled order. The output is a device onboarding log and verified ring files on all nodes, confirmed by checking that every node reports the same ring version.
Enable the s3api middleware where needed
Enable s3api only if the client inventory includes S3-compatible applications. Configure the middleware in the proxy pipeline, set the region and endpoint values clients will use, and confirm how S3 credentials map to Keystone users. Test each client against the operations it actually calls, including multipart uploads, object listing and presigned URLs. Record unsupported operations and decide with each application owner whether the application changes or the gap is accepted. The output is a client compatibility report listing tested operations and known gaps.
Test durability and failure scenarios
Run planned failures on a staging cluster that mirrors the production design. Cover a failed drive, a stopped storage node and the loss of an entire zone. Observe how replication and the replicator process recover, confirm that reads and writes continue as the design predicts, and check that objects return to their full replica count. Compare the observed recovery behavior with the expectations in the design record. The output is a tested failure runbook with expected results and recovery steps for each scenario.
Set up monitoring, backups and handover
Configure monitoring for proxy availability, disk and node health, replication backlog and capacity by zone, and route alerts to the teams that will respond. Back up the builder files, ring files and service configuration to a location outside the cluster, then test one restore in a lab. Confirm with the business whether object data needs a copy outside the cluster, since replication within the cluster is not a backup. Hand over runbooks, architecture records and the access model to operations. The handover closes when application owners sign the client acceptance report and operations has run the failure runbook once with its own staff.
What drives effort and cost, and how to keep it down
This table lists the design choices that change Swift implementation effort, the direction each one pushes cost, and how to contain it. Design, build, testing and handover are usually one-time work, while a retainer recurs and covers upgrades, monitoring and operations after go-live. Read the rows together, since zones, hardware and migration volume often set the schedule more than the code does. Ask any quote to state which drivers it assumes.
| Driver | Effect on effort and cost | How to keep it down |
|---|---|---|
| Number of zones and regions | More failure domains mean more ring design, placement rules and failure tests. Each added region adds network and capacity planning. | Fix the zone count before build. Start with one region and add others as a planned phase. |
| Hardware heterogeneity | Mixed drive sizes and speeds need weight tuning and uneven capacity planning, and they add test cases. | Standardize drive and node classes per storage policy. Record ring weights and retire mixed hardware on a schedule. |
| Object count and size profile | Many small objects raise metadata load and rebalance time. Large objects shift the work toward network and disk throughput. | Benchmark with a representative sample before sizing. Ask the client for object count and size distributions. |
| Client applications needing S3 compatibility | Each S3 client adds API surface to test, such as request signing, multipart upload and bucket behavior. Scope grows with the client list. | Inventory each client and the S3 calls it makes. Test those calls only, and confirm unsupported calls in writing. |
| Keystone integration complexity | Keystone-backed authentication, project mapping and token handling multiply test cases. Federation with a corporate directory adds identity work. | Limit the first release to one identity source and a documented role model. Map projects and roles before coding starts. |
| Migration volume from existing stores | Data volume, copy tooling, cutover windows and checksum verification drive most of the schedule. Running old and new stores in parallel adds operating cost. | Measure data volume and change rate first. Migrate in application waves and keep the old store read-only for a defined period. |
| Monitoring and backup requirements | Dashboards and alerts must cover ring health and replication state. Replication guards against hardware loss but does not protect against deletion or bad writes, so backup needs its own design. | Define metrics and alert thresholds with your operations team. Set backup scope, target and restore tests explicitly in the scope. |
| Compliance evidence needs | Assessors expect evidence of access control, encryption, logging and restore testing. Collecting that evidence late adds rework across the build. | Agree the control list and evidence formats at design. DeployOpen prepares evidence, while independent auditors and certification bodies make the assessment. |
Moving existing object data into Swift
Moving data into Swift is mostly an inventory and cutover problem, not a copy problem. Before anyone picks a tool, the team needs a complete list of the buckets, containers and file shares in scope, the applications that read and write each one, and the owner who can approve a switch. Ask each application owner which credentials, access lists and public URLs their system uses, and which objects they must keep or can discard. Most failed migrations trace back to a bucket nobody listed, a service account nobody rotated, or a nightly job that still writes to the old location after cutover.
Naming and metadata need a mapping decision before the first byte moves. Swift organizes data as accounts, containers and objects, and the S3 compatibility layer, when enabled through the s3api middleware, maps S3 buckets onto containers. Confirm which bucket names can become container names without conflict, how object keys with slashes or unusual characters will appear, and which custom metadata, content types and object tags your applications depend on. Where a source feature has no clean equivalent, such as versioning, lifecycle rules or object locking, record the gap as an explicit decision, because the application team will otherwise discover it in production.
Choose a copy tool that your own engineers can read, rerun and validate. Prefer tools that support S3 on both ends or that can work with the source's native API, can resume after interruption, can filter by prefix, and produce a manifest or log you can compare later. Test the tool on a representative subset first, including large objects, zero-byte objects, and keys with special characters. Ask the tool vendor or project for the exact options that control overwrite behavior, retries and concurrency, and confirm them in your environment. Do not rely on performance claims from a datasheet; measure against your own network path and the Swift cluster's capacity.
Plan a parallel period in which the source and Swift both hold current data and the application team confirms behavior against Swift. Use this period to change one non-critical consumer at a time, to test credential and endpoint changes, and to run incremental syncs for objects written after the first full copy. Cutover then means freezing writes on the source for the agreed window, running the final delta copy, switching client endpoints and credentials, and keeping the source read-only for a rollback period. The client team must provide application owners who approve each switch, a named contact for each consumer, the access lists and service accounts that need new credentials, and a cutover window that avoids batch jobs and reporting runs.
Verification decides whether the move is finished. Compare object counts and total bytes per container against the source inventory, then compare checksums for a defined sample, or for all objects if the data is regulated or business critical. Confirm that Swift stores the checksum or ETag your tool expects, and record any object whose checksum differs for investigation rather than overwriting it silently. Keep the manifests, tool logs and sign-off records as evidence for your change record and for any later compliance assessment. Ask DeployOpen or your internal team to define the acceptance criteria in writing before the first copy, so that the team agrees what success looks like.
How Swift connects to the rest of the platform
Swift depends on Keystone for identity, can expose an S3-compatible front door, and sits inside an operations model that covers backups, monitoring and upgrades. Each integration has a platform owner and a client-side owner, and the decisions between them should be settled before the cluster is built.
Keystone authentication and project scope
Swift validates tokens issued by Keystone and enforces access per project, so the proxy pipeline must point at the correct Keystone endpoint and service user. Your platform team owns the service account, the endpoint catalog entries and the role names that map to operator and reseller access. Confirm the middleware names and options for your release in the deployment documentation, then check that every project that writes containers has a defined role.
Federated sign-in through SAML or OIDC
When the corporate directory is the source of identity, Keystone federation with SAML 2.0 or OpenID Connect maps directory users to groups, roles and projects through mapping rules. Your identity team owns the identity provider registration, the attributes or claims released at sign-in and the group names that drive access. Agree the mapping rules with the directory owners before go-live, and test a user from each group, because a rule that matches nothing fails quietly by denying access.
s3api middleware for S3 clients
The s3api middleware lets S3-compatible clients reach Swift containers and objects through the same proxy pipeline. The platform team configures the middleware in the proxy server pipeline and decides how S3 access keys are issued and tied to Keystone projects. Application teams own their client code, credential rotation and the bucket naming and listing behavior their applications expect, so test each client library against the operations it uses on the release you deploy.
Ceph RGW when S3 and multisite lead
Ceph RADOS Gateway offers S3 and Swift-compatible APIs, documented multisite configuration, Keystone and LDAP authentication, and AWS STS, IAM and SNS APIs. Choose it when those features drive the requirements, since it requires a Ceph cluster and a different operating model from Swift. The storage lead and application owners should make this decision together, based on which APIs and replication topology the workloads need, and confirm which Ceph release line you plan to run.
Backups and monitoring coverage
Swift replicates or erasure-codes objects across the ring, but replication does not protect against deletion, bad writes or a lost ring configuration. Define backups for ring files, server configuration and the Keystone database, and schedule restore tests that the operations team can repeat. Monitoring should cover replication and auditor activity, disk health, proxy latency and authentication failures. The operations team owns both, while application owners agree on alert routing and recovery time expectations.
Keeping the cluster on a supported release
OpenStack upgrades between adjacent releases and between SLURP releases, and 2026.1 Gazpacho is a SLURP release released on 2026-04-01. Stable branches are maintained for about 18 months, so a cluster on an older release loses fixes before it reaches end of life. The platform team owns the upgrade plan, the Kolla-Ansible or OpenStack-Ansible workflow and the rollback point, while application owners schedule their own change windows and validate their workloads after each step.
Questions teams ask before hiring help with Swift
What does a Swift implementation cost and what drives the quote?
A quote follows from a written scope, and the largest drivers are the number of sites the cluster spans, the capacity and durability you need, and the integrations you require. DeployOpen does not publish a price list.
The quote should separate one-time work from recurring costs:
- One-time: design of the ring and storage policies, deployment with Kolla-Ansible or OpenStack-Ansible, Keystone and s3api integration, load balancer and TLS setup, testing and documentation.
- Recurring: support or a retainer, upgrades between releases and monitoring.
Hardware, drives, network equipment and data center space are normally bought by you, so ask for them as separate lines. Also ask for the quote's assumptions about replication versus erasure coding, because that choice changes both the hardware you buy and the effort to operate the cluster.
How long does a Swift deployment take from start to handover?
The timeline depends on how much design is still open when work starts, how quickly hardware is racked and networked, and how many integrations must be tested before handover. A cluster with settled requirements and ready hardware moves faster than one where the replication policy, failure domains and identity model are still under discussion.
Fixed-scope engagements agree deliverables and timelines in writing before work starts, so ask for the schedule as part of the quote. Ask which milestones depend on your team, such as network changes, DNS, certificates, Keystone service accounts and sign-off on the ring design. Upgrades to later OpenStack releases follow their own schedule and are planned separately from the initial build. Confirm the release you intend to deploy against the current OpenStack release calendar at the time you decide.
What does our team need to provide for a Swift project?
Expect to provide people, access and decisions. Name a sponsor who can approve scope, an infrastructure owner for servers, switches, load balancers and DNS, and a security contact for TLS certificates, secrets and access policy.
You will need administrative access to the target environment, whether that is your cloud accounts, your data centers or an air-gapped network. Identity work needs the owner of your directory or Keystone federation source. Share actual usage data where you have it, such as typical object sizes, request patterns and expected growth, because these shape the ring and storage layout. Also identify the client applications and backup tools that will use the API so they can be tested. Agree on who will be on call after handover before the build begins.
Can our own engineers build and run a Swift cluster?
Yes, if your engineers have solid experience with Linux, Ansible, networking and storage operations, and they have time to learn ring management and the OpenStack release cycle. Building the cluster is only part of the work. Someone must own replication health, disk failures, capacity additions, ring changes, Keystone and s3api configuration and upgrades.
Teams that already run OpenStack control planes usually find the deployment tooling familiar. Teams new to OpenStack need more time on identity, networking and monitoring. A partner can build the first cluster, transfer knowledge through runbooks and pairing, and then support it under a retainer if you want one. Compare your team's capacity to operate a stateful, eventually consistent store for years, not only to deploy it once.
When is Ceph RGW a better fit than Swift?
Ceph RGW is often the better fit when you want one storage platform for block, file and object, when you already run Ceph, or when you need multisite replication. Ceph RGW offers S3-compatible and Swift-compatible APIs, Keystone and LDAP authentication, compression, multi-factor authentication, Open Policy Agent integration and AWS STS, IAM and SNS APIs.
Swift is a good fit when you want an OpenStack-native object service, when its ring-based placement and eventual consistency model suit your workloads, or when object storage should stay under the same OpenStack governance as the rest of the cloud. Swift is licensed under Apache 2.0 and Ceph under LGPL, so licensing alone should not decide the choice. Run a proof of concept with your own workloads before you commit.
Which S3 clients work with Swift through the s3api middleware?
Swift exposes an S3-compatible interface through its s3api middleware, so many S3 clients can read and write objects. Compatibility depends on the operations you use, though, so test the exact clients your teams run, such as backup tools, SDKs, data pipeline connectors and CLI tools, against the release you plan to deploy.
Check each feature separately: authentication method, multipart upload behavior, bucket operations, versioning, object lock and lifecycle rules. Confirm the supported feature list in the documentation for your target release. Also review how eventual consistency in listings and replication affects applications that expect strong read-after-write behavior. A compatibility test matrix can be included in the scope so that results are documented before handover.
How are Swift upgrades handled across OpenStack releases?
Upgrades follow the OpenStack release cadence, so the upgrade plan should be written into the scope from the start. OpenStack has historically released on a six-month cycle. Since the 2022 cadence change, upgrades are supported between SLURP releases as well as between adjacent releases. Epoxy and Gazpacho are both SLURP releases, so planning around a SLURP path reduces the number of upgrade steps.
Stable branches are maintained for about 18 months. After that, only SLURP releases may enter an unmaintained phase before end of life. Each upgrade should be rehearsed on a staging cluster that mirrors production, with a tested rollback plan and checks on ring and storage state. Ask for the upgrade method, the staging requirements and the support window in writing, and confirm any Swift-specific steps against the release notes for your version.
What do we receive at handover from a Swift implementation?
Handover should leave your team able to operate the cluster without the implementer present. Expect deployment code and configuration in your repositories, along with documentation of the ring design, replication or erasure coding policies, failure domains, network integration and identity integration.
The operations runbook should cover disk replacement, capacity addition, ring rebalancing and backup of configuration. You should also receive test results, the S3 compatibility matrix, monitoring and alert definitions, a record of access granted and a list of open risks. Ask the quote to name each deliverable and its acceptance criteria. Object content backup is a separate design decision, because Swift replication protects against hardware failure but is not a backup product.
How DeployOpen scopes and delivers a Swift implementation
DeployOpen plans, implements, hardens, backs up, documents and supports self-hosted open-source platforms in infrastructure you control. For OpenStack Swift object storage, that means scoping the ring, replication and erasure coding choices, and S3 client access before any build starts, then delivering in your own cloud accounts, data centers or air-gapped networks.
How we scope
- The written scope names the Swift regions, ring design inputs, and which clients will connect.
- Scope records whether each storage policy uses replication or erasure coding, with the reasoning for each.
- Engagements are fixed-scope, so deliverables and timelines are agreed in writing before build work starts.
How we build
- Deploy Swift proxy, account, container and object services in your data centers or cloud accounts.
- Build and validate ring files, then test replica placement and failure handling before any production data is written.
- Configure the s3api middleware and test S3-compatible clients against the endpoints they will actually use.
How we hand over
- Documentation covers ring build procedures, rebalance steps, storage policy definitions and the reasoning behind them.
- Runbooks cover disk replacement, node failure, ring changes and capacity expansion, walked through with your operators.
- Handover includes configuration kept in version control, credential ownership notes and a supervised first operations cycle.
How we support
- Ongoing support, upgrades and continuous testing are available as retainers after handover.
- Configuration and ring file backups are set up and tested, with restore steps documented for your team.
- Compliance evidence such as configuration records and test results is prepared for your assessors, who make their own determinations.

