Lessons that i have learned from different web applications architecture.
Posted September 29, 2008on:
I was waiting to study on these applications architecture for a long time. Just couldn’t manage time, this time after coming here in my hometown Sylhet I got a good amount of time and didn’t waste this time to study on Google architecture, Youtube architecture, Flickr architecture and finally twitter architecture. I just had this curiosity to know how these apps actually maintain the high scalability. No doubt that Google is the king of scalability. They got all pure engineers from around the world and I guess this is the only company in IT sector who implemented university studies directly in real life.
So what lessons I have learned?
- Simplicity allows you to re-architect more quickly so you can respond to problems. It’s true that nobody really knows what simplicity is, but if you aren’t afraid to make a change then that’s a good sign simplicity is happening.
- A team is always a powerhouse of a company. Only a talent team can find a better ways of scalability. After all a team is the main recourse of a company.
- Make your application easily partitionable from the start. Then you always have a way to scale your system.
- Most performance comes not from the language, but from application design.
- Turn your website into an open service by creating an API. Twitter’s API is a huge reason for their success. It allows user’s to create an ever expanding and ecosystem around Twitter that is difficult to compete with.
- Move your all popular content to CDN (content delivery network). You are just giving the responsibility to trusted people to do your job. Certainly it reduces the load to the main server. Creating own network would be time consuming and costly.
- If you have a long tail product caching won’t always be your performance savior.
- Know what’s essential to your service and prioritize your resources and efforts around those priorities.
- I have noticed applications that use too much cache, they prefer PHP scripting language! (I.e. Facebook, Flickr).
- Caching and RAM are answers to everything. All applications give priority on these…
- If we optimize then we should optimize a large thing as small things makes the system evil
- If you fails on your system then get advice from the community. There are better expert in the community than your company nerds.
- Hide update using AJAX
- Build self-managing system that work without having to take the system down