Skip to main content

Update June 2021

Hello from the 🛸 Spawn 🛸 team!

MySQL 8.0 support!#

We’ve been working on supporting MySQL 8.0 which is now available for you to use! Either restore your own database or use one of our public images.

New Github Actions!#

We've also created a set of Github Actions that you can use in your CI pipelines:

Raspberry Pi (ARM-based Linux) support!#

We thought Spawn on a Raspberry Pi would be cool, so we’ve officially added support for ARM-based Linux operating systems! Want to give it a shot? Just follow the standard installation docs.

Service Information#

We’ve published details of Spawn’s hosted environment and security measures to protect your data. Head over to our service information page to read more about it.

Try the beta#

Spawn is currently in open beta, and free to use. It takes less than fives minutes to get up and running. Click the link below to join our beta 👇

👉 Get started

📝 Blogs#

The key to great database Continuous Integration is disposable databases#

Database Continuous Integration (CI) is often the final piece of the CI story for a project and with good reason; it is hard to do and much harder to have something your team will describe as ‘great’. Read more

Development databases in Docker aren’t good enough#

Development databases in Docker aren’t good enough on their own. Why? Because they’re almost always so far from the production environment characteristics that you get a false sense of security in development. Read more

Simple Database CI with Spawn and Github Actions#

Spawn’s new Github actions make database CI easier than ever before. Read more

Going all-in on cloud-based development with realistic databases#

Throughout 2020 and 2021 much of the world moved to remote-first working through unfortunate necessity, but have development environments kept up? Read more

✨ New features#

🤖 spawnctl#

  • spawnctl proxy data-container will configure a localhost proxy on your machine on the default port for the database engine your data container is running on. This can be useful for environments where you've already got localhost connection strings configured and you don't want to manually update the port when data containers are created.

📡 app.spawn.cc#

  • We are in the process of enabling users to see their resources in the browser by visiting app.spawn.cc This is now the place to accept our EULA

⬆️ MySQL 8.0#

  • We now support MySQL 8.0. For a complete list of versions supported by Spawn, please see here. Create data-images with MySQL 8.0 by specifying version: 8.0 in your MySQL source file

🌤 Spawn Service#

  • Improve overall reliability
  • Various bugs fixes
  • Improve our observability of the system
  • Raspberry Pi (ARM-based Linux) support

📖 Documentation#

  • Created new login flow
  • Move our documentation to docs.spawn.cc
  • Various documentation improvements

Simple Database CI with Spawn and Github Actions

Running tests against databases in CI pipelines is an essential part of testing your application. 

Provisioning databases in CI pipelines can be hard work, however. Broadly speaking you have two options:

  • Have all your pipelines use shared databases
  • Use Docker to run containerised database instances

The first option has the advantage that you can test against real data, perhaps a recently restored copy of production, but it effectively serializes your pipelines as they contend for the shared database. You may be able to scale by adding multiple database servers, but ultimately the parallelism of your CI pipelines is limited by the number of database servers you have available to the pipelines.

The second option is a substantial improvement in terms of parallelism as each pipeline run now has a dedicated database spun up and torn down for exclusive use. However, the problem of testing against realistic data is now more acute. Typically where we see Docker being used to provision databases in CI pipelines, we see the use of seed data stored in the code repository used to populate the containerised database. This means you lose the confidence that you gain from testing against a realistic data set. If you don't want to go down the route of using seed data, you need to manage a docker volume inside your pipeline, or run a lengthy database restore operation in each pipeline run.

Development databases in Docker aren’t good enough

Development databases in Docker aren’t good enough on their own. Why? Because they’re almost always so far from the production environment characteristics that you get a false sense of security in development.

Having isolated databases is far better than a shared environment where other developers trample over your changes. But because dev databases tend to either be empty, or have “happy path” data within them, they never truly demonstrate the behaviours you’ll end up seeing in production.

This leads to a variety of different problems:

  • Unexpected data loss during schema migrations
  • Unacceptable latency on specific queries because of vastly different data sizes
  • Poor UX due to unanticipated user-provided data
  • UI glitches or performance issues not caught in lower environments because of unrealistic data
  • Entire branches of code left unexercised due to conditions on the data not caught in lower environments

Update May 2021

Hello from the 🛸 Spawn 🛸 team!

Migration testing#

We’ve been working on supporting Microsoft SQL Server 2019 which is now available for you to use! Either restore your own database or use one of our public images.

spawn.cc has had some changes - you can now find all Spawn documents over at docs.spawn.cc, where you can also view all previous newsletter updates.

We’ve recorded a video to demonstrate creating a MySQL database from a backup using Spawn - head on over to our YouTube channel to see MSSQL and Postgres examples too.

Try the beta#

Spawn is currently in open beta, and free to use. It takes less than fives minutes to get up and running. Click the link below to join our beta 👇

👉 Get started

🎬 Videos#

Creating Spawn Data Images from a MySQL backup#

Martin Podlubny, Software Engineer on the Spawn team takes us through how to create a Spawn data image from a MySQL Server backup.

Automated Database Testing: How Flyway, GitHub Actions and Spawn solve Azure migration#

Changing production databases can be risky, and the earlier you can catch problems the better. Learn how to use Flyway, GitHub Actions and Spawn, a new solution that provides database copies on demand, to easily test database migrations. Instead of relying on last-minute staging environments, Grant and Santiago will show you how to quickly automate migration tests against a fully populated database.

✨ New features and improvements#

🤖 Spawnctl#

💾 Backups#

⬆️ SQL Server 2019#

  • We are now supporting SQL Server 2019. For a complete list of versions supported by Spawn, please see our engine support page. Create data-images with MSSQL 2019 by specifying version: 2019 in your MSSQL source file.

🌤 Spawn Service#

  • Improve overall reliability
  • Upgrade the specs of our master nodes
  • Increase the spec of k8s nodes that hold data-containers
  • Improve our observability of the system

📖 Documentation#

  • Migrate from docusaurus v1 to v2
  • Move our documentation to docs.spawn.cc
  • Various documentation improvements
  • Added previous spawn updates to our docs blog

Update April 2021

Hello from the 🛸 Spawn 🛸 team!

Migration testing#

This month, we’ve been focusing on making it easier for you to get up and running with Spawn. We have amended our documents, and filmed videos to show you how easy it is to get a Spawn container running from your PostgreSQL or SQL Server database. A Spawn container is quickly provisioned with your database’s schema and data, and is perfect for development or testing against.

We also discuss the pitfalls of not testing your migrations before they reach your production code, and demonstrate them in this open source repository. To learn more, have a read of this Flyway blog we published.

If you’re already convinced of the importance of testing your database migrations, jump straight to our step-by-step guide on implementing these tests in your CI pipeline using Spawn. Alternatively, contact us directly and we’d be happy to help you get set up with migration testing in CI.

Try the beta#

Spawn is currently in open beta, and free to use. It takes less than fives minutes to get up and running. Click the link below to join our beta 👇

👉 Get started

📝 Blog posts#

Why you should be testing Flyway migrations in CI#

Bad migrations slip through to the release process despite our best efforts. Thankfully, there are solutions to this...

Read more about how to test Flyway migrations in CI with Spawn

🎬 Videos#

Creating Spawn Data Images from Postgres backups#

Chris Heppell, Lead Software Engineer on the Spawn team takes us through how to create a Spawn data image from a Postgres backup.

Creating Spawn Data Images from a SQL Server backup#

Martin Podlubny, Software Engineer on the Spawn team takes us through how to create a Spawn data image from a Microsoft SQL Server backup.

✨ New features#

🤖 Spawnctl#

  • You can now see which image ID a container was created from by running spawnctl get data-container -o wide or -o json or -o yaml
  • Running spawnctl version from docker image now reports the correct version
  • Bug fixes and improvements

💾 Backups#

⬆️ Postgres 11, 12 and 13.2#

We now support PostgreSQL 13.2. For a complete list of versions supported by Spawn, please see our engine support page. Create data-images with Postgres 13.2 by specifying version: 13.2 in your Postgres source file

🖼️ Public data images#

Do you need a database with data now? We got Sakila, Pagila, Adventure Works or Wide Word Importers, run spawnctl get data-image --public to see the list of public data images and create a data container from those!

📖 Documentation#

Update March 2021

Hello from the 🛸 Spawn 🛸 team!

Sample databases#

To make it easier to try Spawn we’ve created some sample databases. To get started just download the client, authenticate, and instantly create copies of Pagila (PostgreSQL), Sakila (MySQL), Wide World Importers (SQL Server) or AdventureWorks (SQL Server).

spawnctl create data-container --image pagila:v11 --lifetime 1h

We’ve also created empty data images for PostgreSQL, MySQL and SQL Server so that you can quickly spin up a blank database.

PostgreSQL 12 support#

PostgreSQL 12 is now officially supported! We have a small backlog of other versions we plan on adding across our supported database engines but we’d love to know what versions you’d like. Reach out to us via this email or message us directly on slack.

Try the beta#

Spawn is currently in open beta, and free to use. It takes less than fives minutes to get up and running. Click the link below to join our beta 👇

👉 Get started

📝 Blog posts#

Collaborative database development with Spawn#

Database performance problems can be a pain to deal with. They frequently involve large amounts of data and require a lot of iteration to get the precise data set required to trigger the issue. And once you’ve got a reproduction database, what then? How do you share that reproduction and collaborate on the solution?

Read more about how to share large databases with Spawn

Implementing zero downtime deployments on Kubernetes - the plan#

We’ve reached the stage with Spawn where the application is stable and we are actively recruiting new users through our open beta. With this extra usage, and coming from other parts of the world we now have the problem of user operations being interrupted by our deployments.

Read more about how the Spawn team plans to implement zero downtime deployments

✨ New features#

🤖 Spawnctl#

Improve errors returned from our API

⬆️ PostgreSQL 12#

On top of PostgreSQL 11, we now support PostgreSQL 12. For a complete list of versions supported by Spawn, please see our engine support page. Create data-images with PostgreSQL 12 by specifying version: 12.0 in your sourcefile.

🖼️ Public data images#

Sample databases and pre-created empty images are now available as public data images. Run spawnctl get data-images --public to see the list.

🕘 How to - Scheduling data image creation#

One of the many benefits of Spawn is the ability to work with production-like datasets in all environments regardless of the size due to instant data container creation. See How to - scheduling data image creation.

🐳 How to - Run spawnctl using docker#

Did you know you can run spawnctl as a docker container?

Update February 2021

Hello again from the 🛸 Spawn 🛸 team,

February was a busy month, and we've got some interesting things for you. Spawn is now in an 🛸 Open Beta 🛸 🎉 so go ahead and try it out! We've also open sourced our demo repository to show what Spawn can do and written some new blog posts.

We're still posting updates to our Twitter account. Give us a follow at @Spawn_Db and ask us any questions you might have.

🛸 Get started instantly!#

  • Download Spawnctl
  • spawnctl auth
  • spawnctl onboard

And you are ready to go! :)

You’ll be asked to sign in with Github credentials

Beta usage is up to 5 concurrent data containers, please contact us if you need more

👐 Open Source#

We open sourced our Spawn Demo repo, including Github Actions.

Chris explains how to unlock database testing in CI with Spawn.

📝 Blog posts#

Breaking the database CI speed limit with Spawn#

It can often feel like your continuous integration (CI) environment has an artificial speed limit on it when you’ve got databases involved...

Read more about how spawn speeds up your continuous integration pipelines

Kubernetes testing: from Minikube to Multi-tenant clusters#

Check out how the Spawn team moved from minikube to multi-tenant clusters to test Spawn...

Read more about the Spawn team moved to multi-tenant clusters to test the Spawn service

✨ New features#

🤖 Spawnctl#

View database engine versions in the output of spawnctl get data-images and spawnctl get data-containers

🗣️ Organisations#

You can now see who is part of your org by running spawnctl get organisation

You can also see who owns which images by running spawnctl get data-images -o wide

If you are an org admin you can now see who owns which containers within your org by running spawnctl get data-containers --org

You can also update and delete existing containers (even if they do not belong to you) by adding the --org flag at the end of your commands.

You can create users within your organisation by running spawnctl create user

🖼️ Image lifetimes#

We also just released the ability to allow spawn to clean up existing images with the --lifetime flag (similar to how you can clean up containers). When you create a new image or when you update an existing one. Spawn will then remove those resources the same way as for data-containers.

spawnctl create data-image -f ./dev.yaml --lifetime 2h

Or

spawnctl update data-image 10001 --lifetime 2h

The second command will update the lifetime of your data-image to 2 hours and attempt to remove it when the time expires. If it has existing containers it will not be removed.

Update January 2021

Hello,

Here are our latest updates for Spawn - we've also reviewed all the work the team has done throughout 2020.

If you haven't signed up for our beta yet, click the link below! 👇

👉 Get started

✨ New features#

🤖 Spawnctl#

  • ⬆️ Updated redis containers to the latest version - v6!
  • ⌨️ Support pluralised nouns in our spawnctl commands
    • For example, spawnctl delete data-containers 10001 10002
  • 🗒️ Various improvements to our documentation
  • 🧐 See who owns a data-image in your team when running spawnctl get data-images

📝 Blog posts#

Spawn 2020 in review