As solo developers, we’re always trying to find the best services for the job without emptying our pockets. I thought I’d write a short article about what I think are the best services for solo developers. These help me minimize costs while also giving me loads of functionality. Hopefully, this will reduce the amount of time you spend deciding which services to use.
When working on a new project two of the most important things to me are cost efficiency as well as ease of use. I like to focus purely on development with as little infrastructure management as possible while always minimizing cost. Although cost seems to be a trade-off for low infrastructure management and ease of use, it doesn’t always need to be. I think I’ve found the best services for solo developers. They work perfectly fine for me anyway.
Version Control is a part of every developer’s toolset. For me, Gitlab is a winner. Not only because it provides version control but also because it has a whole suite of tools for creating and managing DevOps pipelines. It’s super easy to use and guess what? It has a generous free tier with unlimited private repositories as well as free build minutes per month. If you’re a solo developer then the free tier should be perfectly fine.
Project management for solo developers
Trello is my tool of choice for project management. It’s easy to use and good for quick task management.
Depending on your use case and latency needs you’ll either be able to go for a serverless option or have an actual VM on AWS Lightsail. For solo developers, the fully managed, auto-scaling services out there are too expensive for the size of the instance you’re going to get. At this stage in your project, it’s most likely not so important to worry about how your application is going to scale to multiple instances. This is one of the cases where I would sacrifice infrastructure management for cost.
If you go down the serverless route, you’re definitely going to need to take a look at the Serverless Framework. This works perfectly on AWS. One of the key benefits of going serverless is that you’ll have virtually no startup cost since you’ll be paying per execution. This means if a project isn’t as successful as you thought it would be, at least you never lost any money maintaining it.
An excellent CDN that I use is Netlify. It integrates well with any deployment pipeline with its CLI tool. You can connect it up to a git repository too.
I personally like to use CloudWatch since it integrates well with Lightsail. It’s pretty easy to add it to a docker-compose file too. I’m sure there’s plenty of other tools available but this is really all I use. CloudWatch has a generous free tier too.
If you’re building a project that relies heavily on file storage I would use AWS S3. This is one option that also offers a free option. However, There’s also another great service that I’ve recently been exploring which is Wasabi. Wasabi doesn’t offer a free tier though and requires a monthly fee. For large amounts of files, it can end up being 80% cheaper than S3. At this stage, it’s probably not super important though. As solo developers building small applications, if we’re storing 5GB of data (S3 free tier) then we’re likely making enough to make that investment.
There are two main types of database technologies that you’ll choose from. SQL and NoSQL. In terms of the technology itself, I prefer to use SQL databases. The main reason is that when I work on a project, I don’t know all my data access patterns from the start of the project. That’s an important point to keep in mind if you decide to use NoSQL. There’s a lot of companies that have used serverless NoSQL services and ended up with a huge bill because they never designed their data correctly.
If you do go down the NoSQL route then there’s a number of options that provide fully managed services with free tiers available. The most famous ones being AWS DynamoDB, MongoDB Atlas as well as Google’s Firebase. All of which are pretty solid options. If you’re a solo developer and worry about cost, then it’s unlikely that you’re dealing with huge amounts of data. In this case, you should probably go with something like MongoDB Atlas. Of course, as with all NoSQL database, it requires a lot of upfront design when modeling your data.
If you go down the SQL route then, unfortunately, there’s not a lot of managed database services for solo developers. You’ll need to fork out a bit of cash for a managed database service. Managed database instances on AWS Lightsail start at $15. Otherwise, if you want to trade off database management for cost then you could just as easily use AWS Lightsail for a tiny instance to host your own database for as little as $3.50. You’ll also need to install the database yourself too.
The cheapest option, of course, is to host your database in the same instance as your application. For development environments or applications that don’t have a lot of users, this is completely fine. As for the database itself, I prefer to use PostgreSQL.
Email services for solo developers
Most applications also need an email provider for both transactional and marketing emails. There’s a huge amount of these providers, but not a lot of them are great services for solo developers. My go-to option is SendGrid since they offer a decent free-forever option which includes 100 emails per day. If you’re sending 100 emails a day then you’re likely making enough to pay the cost for one of their plans. Yes, there is AWS’s Simple Email Service, which is super cheap, but it lacks a lot of features that a service like SendGrid gives out of the box.
The bottom line
Taking everything into consideration, if you go down the serverless route then you’re likely only going to need an instance for your database which is either a monthly cost of $3.50 unmanaged or $15 for a managed database. Picking services for solo developers can be a long process and can hinder development progress. I hope these notes helped you out. Sometimes it’s a good idea, not to over-optimize your application and just choose the options that will allow you to get things done as fast as possible and optimize later. The most important thing is to get a project finished and shipped as quickly as possible so that you can get feedback and iterate on your product. If that project ends up being a success, then pay someone else to worry about it for you!