Currently I am building a very small platform that I would like to put into a test production phase here in the next few months.
From now on it is just a simple web application. It contains things like:
- Users / profiles
- commenting systems
- User-created posts
Nothing too amazing or complicated. However, I have more features in the works. Such as:
- Subscriptions / Payment
- Two-factor authentication
- Automated e-mails and text messages
- Mobile application
I have three main servers.
Database: Isolated SQL Server that only the API server can access. Contains all persistent data relevant to the platform.
API: Go server that provides indirect access to the database server and manages authentication and tokens.
- HTTPS: Nginx for static content delivery and another go server for dynamic content management. Communicates strongly with the API server.
I also use CloudFlare for DNS management, SSL certificates, and DDoS protection.
An API server is intended to simplify the integration of a mobile app into the system.
I do not focus much on the features of my project, but more on the practices that I should focus on as I expand it. I expect that higher traffic will be the main problem that could paralyze my current setup.
Given the fact that I only have one server providing static and dynamic content, I worry that I get problems as I get more and more requests (and maybe even requests from other places in the world).
I know things like load balancing, but the question I'm asking here is what I should ask myself to make an informed and intelligent decision about how I'm going to implement it.
The main goal here is to prepare this platform for some of the issues facing larger platforms (like SE) and what things I should consider along the way. For example, how should I build my application in earlier phases to support the bigger things that come later.