Every web application that may need scale later should be a distributed system

If you know your web application will not need scale ever, then you don't need a distributed system.

However, learning distribtued system design is not that complicated unless you are an entry-level developer.

I guess people who tell others to not care about scalability for a software startup are probably marketers, hustlers, or financiers who consider product building as someone else's responsibility and are willing to discard failing products and hire developers for a new product. They typically try to fail quickly, discard companies, and start new ones. That's why these types love starting with agency businesses which don't require product development. You can learn a lot from them, but if you are a solo software entrepreneur, product development is your responsibility, and you should learn distributed system design before writing code or starting a business. You wouldn't hire entry-level engineers for your business, would you?

I think it's valuable to learn distributed system design and basic software engineering techniques like unit tests and documentation and functional programming and simplcity-oriented software design(rich hickey's simple made easy).

After you learn basic software engineering and distributed system design, you can reuse these design patterns over and over for the rest of your life and move quickly as a solo software entrepreneur.

It's a one-time cost that pays for the rest of your life. Design is cheap. Fixing a production system that has a fundamentally broken design that can't scale is very expensive. Solo software entrepreneurs should start with a solid distributed system design instead of trying to bolt scalability and solid software engineering practices onto production web applications. Many other online businesses suffered scalability issues so that you don't have to. You don't have to learn from your own mistakes when you can learn from other people's mistakes.

You can be a marketer or a hustler as a solo software entrepreneur once you learn distributed system design and basic software engineering.

Solo software entrepreneurs shouldn't try to copy marketers and financiers who have money to hire quality engineers.

I also recommend not using SaaS frameworks because the cost will snowball if you try to grow. AWS lambda isn't really free of infrastructure management. If you use SaaS, use ones that you can easily migrate away from. You don't want to be locked into specific vendors.

1 points | by doojin 4 hours ago

1 comments

  • benoau 3 hours ago
    Keep your servers stateless so you can distribute traffic between many instances. It's a very easy model to wrap your head around, I think pioneered by a YC startup a very long time ago called Heroku.

    All it really means in practice is you wouldn't store things like session state on your web server, server #1 can't hold your information because server #2 or #3 or #85 might receive your next HTTP request. I think dev in general shifted to this model about 15 years ago anyway!