Skip to main content

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

Update December 2020

The Spawn team wishes you a merry christmas 🎄!

Spawn xmas

🔢 Spawn by the numbers#

  • 79 beta users
  • 18 teams using spawn
  • 615 images created
  • 46,152 containers created
  • 98% uptime
  • 8 blogs published

Update November 2020

Thank you to everyone who signed up for the Spawn Beta. We’re excited to let you know about the latest updates! If you haven't signed up for our beta yet, click the link below! 👇

👉 Get started

✨ New features#

🤖 Spawnctl#

⌛ Data container lifetimes!#

When creating a data container it is now possible to specify how long the container should live for, before being automatically deleted. See the docs for the new feature Create data-container and Update data-container.

👥 Organisations#

See all the members of your organisation with the new spawnctl get organisation command. This lets you see exactly who has access to Spawn in your organisation.

❌ Just show me the logs#

When data image creation fails, did you know that you can run spawnctl logs data-image to see why? We’ve made this more discoverable by suggesting it whenever an image creation attempt fails. There is also an analogous spawnctl logs data-container command to see the database engine logs for your data containers.

🖖 Aliases#

We’ve added some aliases for the get/create/delete data-container/data-image commands. You can now use di or dc instead of data-image and data-container.

🔐 No more copy/paste of security codes#

spawnctl now authenticates using the Device Authorization Grant, which means you don’t have to copy/paste a code from the browser anymore. Just log into the browser window, and spawnctl will detect you’ve authenticated.

📡 Spawn service#

  • 🕰 We’ve made some cluster improvements, meaning more consistent startup times for data containers.

📝 Blog posts#

Development and containers - Gotta go fast!#

Development containers are part of a Visual Studio Code extension that allows you to....

Read more about how to use dev containers and spawn

Update October 2020

Thanks to everyone who signed up for the Spawn Beta. We’ve been busy improving the service from your feedback, and we’re excited to let you know about the latest updates.

We hope you find this helpful. Get in touch if you have any more questions, or if you want to sign up for the beta click the link below👇

👉 Get started

✨ New features#

🤖 Spawnctl#

  • Breaking Change: Paths in a data image definition file (e.g backup folder location or scripts folder location) will now be resolved 'relative to the image definition file' instead of the current working directory
  • Breaking Change: Fixed creating redis data images and data containers
  • Support for both custom and plain pg_dump backup formats for PostgreSQL when creating data images
  • Fixed the -o wide flag to correctly display the wide output for data images
  • Resolved an issue where logs were not correctly recorded in Windows due to symlinks
  • Added a --no-headers flag to all spawnctl get commands to suppress table headers from being printed
  • Allow reset and delete commands to take multiple resource names as a parameter

📡 Spawn service#

  • Additional stability improvements for startup of data containers
  • Removed the default setting of disabling connection pooling on connection strings returned from the Spawn service
  • Improved deletion performance and stability

📝 Blog posts#

Spawn Case Study#

How Spawn has been helping a team at Redgate Software improve their development workflow by halving their automated test code, and reducing test times by 30%...

Read more about our case study with Redgate engineering team

How-To series#

Spawn Case Study

How Spawn has been helping a team at Redgate Software improve their development workflow by halving their automated test code, and reducing test times by 30%

Overview#

On the Spawn team, we have spoken to some of our users to identify the problems Spawn has solved for them. We reached out to 2 software engineers, who are currently working on Redgate Change Control (RCC) at Redgate. RCC is a version control tool for your databases, allowing you to manage deployments in a migrations-first approach.#

Given the nature of the product, their development and testing is very database heavy, and on top of that they support multiple database engines. The main challenges they faced included managing database state in CI pipelines, and also it was a struggle to test locally on their machines. Their first solution was for each developer to have Docker containers, as opposed to managing instances manually. But they found that, particularly with continuous integration, provisioning containers each and every time was a pain. There was a lot of management code which was "eroding our productivity" and it's more code to maintain which developers don't need: "there are more things to go wrong, and when they do go wrong it's time we could've spent elsewhere".

In comes Spawn...#

The team found Spawn through other people at Redgate, and to begin with, just tested the waters. Sam, one of the engineers on the RCC team, told us that they had been using Docker for local testing, and he was ok with that as it "just worked". But his first thought from playing around with Spawn was "wow that's actually really cool! Why haven't I been using this beforehand?". The team found it easy to make the switch over to Spawn from Docker. They went through their CI build script, removing all the set up needed for Docker and replacing with simple 1 lined spawn commands. The RCC team are also taking advantage of Spawn's branching feature - whenever changes to their CI pipeline were made, they could test on a branch with unique containers per branch. They became independent of the contingency of the pipeline.

"Spawn takes the pain out of provisioning databases"#

David Legge, Tech Lead @ Redgate

Redgate office

Helping out sales engineers#

After integrating Spawn into their CI, Sam was tasked with helping internal sales engineers with an advanced demo for a customer. They required many databases to be set up, and globally available as they were dotted around in the US, and the UK. Planning out how he'd achieve this, Sam decided Spawn would be a perfect fit for having databases stick around for a few weeks, to be torn down after use. A VM was considered, but he decided it was too complicated and too much installation was required. As he was already using Spawn locally at this point, he thought "why not use it in this scenario?"

Sam created 7 data-containers from 1 Microsoft SQL Server data-image which took a total of 10 minutes, and could be accessed from anywhere in the world. Compared to their previous methods using Docker, Sam said it could've taken from anywhere between a few hours to a whole day. There is also the pain of managing the instances once they're up, he noted.

The sales engineers were able to easily practice the demo before the day, by using Spawn's reset command which puts the database back to match the original state of the data-image. Sam said this was a great added bonus to using Spawn for this task, and made it so much easier with the reset ability.

"It has made our integration testing a lot easier"#

Sam Comer, Software Engineer @ Redgate

Outcomes#

1. The main outcomes Sam has seen from Spawn is having a consistent base#

They'd know there's an MSSQL container there, and they'd know exactly what state it'll be in so there's no need to worry about it. They like the easy-to-use command line interface with the single pane of glass view, and have found it easier to not have to worry or care about how they approach installing MSSQL or MySQL instances, and Sam can "save space in my brain for other things".

2. The team has reported that from using Spawn, their automated test code has been halved and also test times are reduced by 30%#

3. Using Spawn has sparked other ideas and interests for the team; they're looking to include PostgreSQL next year, and already know how they can leverage Spawn to provision these instances#

They have also seen how they could've improved their demo with the sales engineers. Instead of the approach of bringing up a container by running the command and then running a script manually every time, they can provision a database in a new data-container and populate it all in 1 step from running a script. They would also make use of the save command, allowing them to create a history of their data and schema in their demo, so they can go back to a specific revision at any time.

Redgate team working

"I was bogged down in a lot of Docker stuff. But Spawn took the pain out of that, and I got to throw away a lot of scripting"#

Sam Comer, Software Engineer @ Redgate

"The penny drop moment for me was throwing away reams of code which did docker management, and replacing it with a little bit of code"#

David Legge, Tech Lead @ Redgate

Join the beta#

If you've finished reading this case study and you feel Spawn could help you solve similar problems, you can get access to the Spawn beta and try it out for yourselves.

👉 Get started

Update September 2020

Thanks to everyone who signed up for the Spawn Beta. We’ve been busy improving the service from your feedback, and we’re excited to let you know about the latest updates.

We hope you find this helpful. Get in touch if you have any more questions, or if you want to sign up for the beta click the link below👇

👉 Get started

✨ New features#

🤖 Spawnctl#

Spawnctl shell completion 🐚#

  • Can now auto-complete resource names when pressing the tab key
  • The resource names it will work for include data-containers, data-images, and access-tokens
  • Now supports the following shells: Bash, ZSH, Fish and PowerShell
  • Check out the spawnctl completion command for more information

Fixed refresh tokens#

  • Tokens now successfully refresh after 24 hours

Improved error handling#

  • Display errors returned by the API
  • Don’t error on data-container deletion when it doesn’t exist
  • Return more meaningful error messages

Support absolute paths to definition files for data-image creation#

📡 Spawn service#

  • Stability improvements
  • Various website fixes and improvements
  • Increase infrastructure capacity
  • Increase container password entropy

📝 Blog posts#

Next.js development with instant dev-database provisioning#

Next.js is a really exciting framework that makes it simple to build React applications...

Read more about how to set up instant database provisioning on top of Next.js

Testing database migrations#

Database migrations help to keep database schema versioned, by documenting database changes in source control...

Read more about how to do database migration testing

Update August 2020

We’re excited to share our first Spawn update! We hope to make these updates more frequent to let you know what we’ve been doing.

This blog launches alongside the official launch of the Spawn beta programme 🎉 We’re excited to get you onboard!

We hope you find this helpful. Get in touch if you have any more questions, or if you want to sign up for the beta click the link below👇

👉 Get started

✨ New features#

🤖 Spawnctl#

  • YAML output for spawnctl commands
  • Specify new image names for the graduate command with --name [name]
  • Spawnctl update notifications
  • Additional security added to Spawnctl auth flow to prevent MITM replay attacks
  • Support multiple resources passed to delete command to clean up multiple resources with one operation

📡 Spawn service#

  • Autoscaling infrastructure to handle additional capacity requirements for users
  • Unique passwords for each data-container created from data-images
  • Miscellaneous security fixes and hardening

🌟 Spawn Azure Data Studio Extension#

  • Update extension to work with the latest API changes in Azure Data Studio

📝 Blog posts#

Extending Kubernetes with Operators#

Having attended the last two European KubeCon events (2018 and 2019)...

Read more about how to extend k8s with operators

Ephemeral databases using Spawn#

Spawn offers many advantages for teams that might be used to using shared development environments...

Read more about how you and your team can use ephemeral databases