Hey,
These are 3 things I consider every time I design or review a software system.
1. KISS: Keep It Simple, Stupid
The best systems are usually the simplest. You probably don’t need Kubernetes. You probably don’t need ECS. Start with a single server and a database you’re comfortable with. SOME Enterprise-scale problems require more complex solutions, but most projects don’t.
2. Know what’s going to break first
Every system has a failing points. Could be your database, your server, or a 3rd party API you rely on. You don’t even need a fix yet, just know what your first breaking point is. If you’re at 50,000 users, you should already be thinking about what happens at 80,000.
3. Keep good documentation
You won’t be the only person working on this forever. Keep your system design docs clean and up to date. It helps you learn faster over time (you can always go back and see why you did something), and it makes onboarding new people way easier. I used to read the original design docs for every service I worked on at Amazon. The systems changed a lot over the years, and it was really interesting to see what the original engineers planned for, and what they didn’t.
Simple systems scale better than clever ones.
– Arjay
