Question

Choosing a plan for a startup

Posted September 27, 2019 3k views
Getting StartedDrupal

Hello,

I am working for Room Estate and we are considering to move to Digital Ocean from our current host.
Can you suggest us which plan should we start with?
Currently we are on shared hosting which is starting to show it’s downsides and migration is necessary. We are considering you and AWS. The only reason we may choose AWS over you (even though you are cheaper for startups) is that AWS is managing software updates and security (the hosting not the application itself).

We have Drupal 8 app (mostly custom modules).
The most important parts are:

  1. For Customer:
    1. Search for rooms (always growing database)
    2. Display Rooms (static)
    3. Sign contract
    4. User Cockpit
    5. Mobile app
  2. For Admins:
    1. Custom CRM
    2. All kinds of dabase querying
  3. Misc
    1. Cronjobs that can do some long and complicated processes

If you need clarification on anything in order to better assess what plan we need, please ask.

Thank you

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
Submit an Answer
2 answers

It is almost impossible for anyone to tell you how much resources you would need, as it is really application specific and it also depends on how much traffic you would be getting and etc. but of course I could suggest the following approach:

  • As you would be paying by the hour and not on monthly basis, you could start with a smaller droplet and scale up whenever needed. You don’t have to commit to a specific plan, it is really flexible and you can resize your droplets, add new ones at any time and you would only be charged by the hours.

  • Also once you have your setup ready, I would recommend running some stress tests to see how many connections your setup can handle and then you will be able to predict wether you need to add more resources or not depending on the expected concurrent connections that you need.

  • As you would have a database, I would suggest using the new DigitalOcean managed databases, all of the management part would be handled by DigitalOcean and you can focus on your application.

  • With the managed databases you can also have multiple read-only replicas with just a few clicks, so that way you could scale up your application even easier.

Conclusion:

Just sign up for a small droplet, run some stress tests and scale up accordingly.

Here’s how you could run stress tests:

https://www.digitalocean.com/community/tutorials/an-introduction-to-load-testing

Hope that his helps you :)

by Brian Boucheron
In this article, we'll talk about the server side of web performance optimization: how fast can your server respond to your user's requests? We'll review the general landscape of load testing, step through a plan to find your server's maximum practical response rate, and discuss some options for open source load testing software.

Hello everyone reading this question.

To built upon the last answer, I’ve written a small answer that can help you optimize your Droplets and get the maximum of them.

Ofcourse, the suggestions below can help you out but you’ll need to further research them if you decide to use any of them:

Let’s start with Server Optimization.

When looking at Server/Droplet Optimization, there are a few necessary services/packages that are universal.

  • The first one would be Server-side caching. Server cache is an umbrella term covering a number of different types of caching. This includes Content Delivery Network (CDN) caching, object caching, and opcode caching. Depending on what you want to achieve you might need one or the other. Usually, though, you can have all 3 types of caching as it shouldn’t interfere with your Website/App. I won’t go into more details about what each caching does as this post will become 3 pages long. There are multiple documents providing services/packages for each of the server-type caching.

  • Next would be using PHP-FPM (if your Website is using PHP of course). PHP-FPM is an efficient method on how to minimize the memory consumption and rise the performance for the Websites with heavy traffic. It is significantly faster than traditional CGI-based methods in multi-user PHP environments.

  • Another solution would be Database Caching. A database cache supplements your primary database by removing unnecessary pressure on it, typically in the form of frequently accessed read data. The cache itself can live in a number of areas including your database, application or as a standalone layer. Usually, for this kind of caching is being used Redis.

  • Apache NPM modules. If you are using Apache, you are using one of three NPM modules. Most certainly if you haven’t configured anything on it and have used the default configuration, you are using NPMPrefrok which is the most outdated one and thus the slower. I’ll recommend using one of the other two - NPMWorker and NPM_Event depending on your situation. Again, I would urge you to read more about these 3 and what is applied in which case.

  • Apache Workers. Basically, the Apache workers are equivalent to a room full of seats. These seats are the projection to your website. When someone opens your website, it’s like one person going to this room and sitting on one of the chairs. When the limit is reached, in order for a person to load your website, another one needs to close it. So basically, I’ll suggest increasing that value as well.

Those were the basic optimizations on a server level, let’s start with your Website/App

If you are using a CMS like WordPress, Magento, Joomla, Opencart or anything of the same matter, there will be plugins/addons. These addons can be very powerful if used correctly. The most helpful plugins are:

  • Caching Plugins
  • Image Optimization Plugins
  • Plugins that reduce redirections/requests
  • Plugins that reduce the size of JS and CSS files.
  • More often than not, there are a lot of JS and CSS files that are not being used, removing those should work as well

If you are not using a CMS, you’ll need to try and do what these plugins are doing manually.

Usually, Websites/Apps are slow because of a couple of reasons which range from too many requests or big images to a bunch of unnecessarily big JS or CSS files. Optimizing these whether you are using a Plugin or doing it manually is enough.

I hope this was helpful.

Regards,
KFSys