The value of an architecting a scalable foundation is often ignored or misunderstood by startups.
During a startup’s growth phase an unscalable architecture demands an exponential waste of resources.
A startup’s ability to scale easily on demand and when needed ends up becoming a pivotal factor that either facilitates growth in user adoption or threatens the very existence of that startup often referred to as “death by growth” by scalability professionals.
The key to successful software engineering resides in understanding the difference between scalability, availability and performance.
Presented at Startonomics Conference, San Francisco, USA in 2008
- What to do before you get big?
- Lay the right foundation
- Ability to Shard / Partition
- Decouple components
- Effectively cache
- Have a plan in place
- What can wait after things start to grow?
- Now focus on micro optimizations
- Acquiring and upgrading hardware
- Performance optimizations and OS tuning
- Implementing High Availability and Disaster recovery
- Use CDN
- Focus on scalability, the rest will follow
- Horizontal is better, Vertical is costly
- Go Asynchronous
- Go Stateless
- Best IO is No IO
- Cache effectively using shared cache and monitor utilization
- Decouple as much as possible
- Build using APIs
- Easy to scale development and deployment and open up your service
- Virtualize/Abstract everything
- Choose two out of Consistency, Availability and Partition-Tolerance
- Measure utilization first, then performance
- Choose the right infrastructure & invest in right skills
- Architect so you don’t have to re-architect