Local development is always a priority for us at Don’t Panic Labs. We want a great local development experience because it allows each developer to work independently.
Part of having a great local development experience means having all the tools you need on your developer machine. If you are running a system that needs access to a database, you need to have a local database. This has been our protocol for software development, and we use a local instance of SQL while doing the development.
During the last few years, we have slowly migrated to using Docker to host our SQL databases instead of using an installed copy. Docker SQL also has the advantage of being incredibly easy to reset.
The problem is, we don’t just use SQL. We use many other cloud services too. And if we can’t fully isolate developers, we are not in our most desired development state.
If we are developing for the cloud, we often use cloud-specific services. When developing in AWS, we would often use services such as S3 or DynamoDB. But the problem with these services is there hasn’t always been great simulators for running them locally.
And if you can run many pieces of the AWS cloud locally, you can also run them in isolation as part of your build processes. When each build can be independent and run on resources that are not shared, it can help ensure that each build does not interfere with other builds.
For AWS, there is LocalStack.
LocalStack allows for the running of many AWS services locally.
Getting LocalStack is easy. I recommend you use Docker to run LocalStack because Docker has the advantage of being very easy to remove and reset.
docker pull localstack/localstack
That will download the docker image. To run the Docker image, use:
docker run --rm -it -p 4566:4566 -p 4571:4571 localstack/localstack
Running this Docker image will give you many AWS services locally to use for development, such as S3, DynamoDB, SQS, SES, and many more.
I’ve found LocalStack both easy to use and a great way to do local AWS development. Very awesome.