Not sponsored: Don't worry, we're not sponsored by Digital Ocean, we're just big fans of products that make life easier.
For Scrumpy, we decided to bootstrap the business and didn't take any funding. We have little time and little money and have to be conscious about how we use our limited resources. Let me show you how Digital Ocean has helped us to get started and grow our server infrastructure over time, even with those limited resources.
What we're building
With Scrumpy we make enterprise project management methods accessible to small teams. Thanks to Scrumpy, small teams can do what used to be for teams that can afford to hire people just to configure Jira only.
I think we have a lot in common with Digital Ocean. Digital Ocean provides professional cloud infrastructure with a simple interface and great developer experience. You can start simple (and cheap) in seconds. As your needs grow, Digital Ocean grows with you and provides you with powerful solutions like scalable storage or managed databases. That's what we like about their service: It's simple and powerful. 🤓
Our Tech Stack
First of all, that's our current tech stack:
- GraphQL API built with PHP/Laravel, PostgreSQL, Redis, GraphQL Subscriptions (Sockets), Sonic Search
- Single-Page Application built with Vue.js
I. Publishing Something
When we decided to build Scrumpy, we built a simple landing page first. The landing page described in one sentence what we had in mind. It was important to us to collect email addresses, just to see if people are interested.
To host such a site there are many possibilities, but because we built the newsletter form with PHP, many solutions like GitHub Pages or Netlify didn't fit our use case. Of course we could have built it differently, but I like to build things as easy as possible and I had just built something like this in PHP before. So the whole landing page with design, development and launch was built in less than two hours.
I'm glad I can just boot up a droplet at DO in a few seconds and still be flexible enough to work with whatever I like, even if I change my mind later in the process.
II. Developing the Product
When a few hundred people registered for our waiting list within a very short time, we were sure that we had hit a nerve. So we started to develop the product. There may be teams that only develop on their MacBook for a while before putting something online. It's important to us to go online as early as possible so that even if it's still work in progress, we can show the results to others and gather feedback early on.
This means that after the first few lines of code, we set up the deployment and put it online on another $5/month droplet. Luckily this only took us a few minutes.
Why a separate droplet? I think it's good to separate the marketing landing page and app. That seems safer to me. So I can be sure that a security hole in the landing page isn't a risk to user data.
While we were building our app, we were reading one tutorial after the other at Digital Ocean. How do you set up SSL? How do I run supervisor? How do I update the Droplet? How to set up a firewall? Digital Ocean has a tutorial for everything. 😍BTW you can use this knowledge on other cloud providers too.
III. Launching the Product
In April last year it was time to launch. We already had a few paying customers before and saw in the DO monitoring that the server load was 30% on average. Since we expected a lot more users at Launch, we scaled the $5 droplet to a $15 droplet. That's super easy with resizing. The droplet is shut down for a few seconds and is faster and better at the next restart. Easy.
On the launch day almost 1,000 teams registered and tested the app extensively, but the little droplet (2 GB RAM, 2 vCPUs) from Digital Ocean coped well with it. CPU and RAM were never used more than 20 % for a long time, so everything was pretty healthy.
IV. Extending the Product
All the new users sent more and more feature requests. One of the most requested features were uploads. People wanted to upload Excel files, design files and screenshots. But we were worried that the hard drive would quickly run full. So we looked for alternatives and discovered Digital Ocean Spaces. This is a scalable cloud storage for little money. Without changing our existing infrastructure, we could easily add flexible storage to the app.
By the way, we also use Spaces for the update process of our Electron App. Our updater is compatible to S3 and Spaces respectively. It allows us to build a new version for Mac and Windows, sign the code and upload it to a Space with a single command. The running apps then access the space and see if there is a new version.
Current Phase: Scaling the Product
We now have hundreds of active users and teams from around the world who rely on our app to run fast, stable and reliable. Our API now receives approximately 100,000 requests per day. Sometimes our queue is busy processing several 100 jobs per second. Although we managed to not even restart our API droplet once since its launch (400+ days uptime), it always happens that we have to restart individual services, e.g. for updates. This can already cause the first users to complain and ask what's going on after a few seconds downtime.
Of course we want to avoid that, so we are now taking the next step and expanding our infrastructure. A few weeks ago we switched to the new Digital Ocean managed databases. In the next step we will distribute individual components of the API to several droplets and even run several servers in parallel for some things, so that we can restart individual servers without a failure.
Our planned setup looks like this: There is a load balancer that distributes the traffic to at least two different API servers, maybe more. The search, the GraphQL socket server and the queue, which always has to withstand heavy load, move to separate droplets. This should make the setup much more stable and perform even better.
We like the approach of Digital Ocean. We can get started simple and as time goes by we can add more and more professional tools such as scalable cloud storage. Just in a few seconds. And that's important for startups and small teams, isn't it? We want to move fast, grow fast and always stay flexible. That's great for hosting with Digital Ocean. And for project management, Scrumpy is a great solution.