Friday, January 29, 2010

Current perspectives on Scalability - A buffet from various Internet scale companies

Dark Launch
Use(functional) concurrency supporting languages basd servers for applications which map to a parallel environment more.
Use straight forward HTTP web servers for req-response style requests.
Use C++ whenever efficiency/logging is required.

Develop/use NOSQL based approaches(Cassandra) for semi-structured/unstructured data that can tolerate relaxed consistency.

Develop your own Storage system (which does not require all the metadata and inode entries generally required by general POSIX systems) for photos to get rid of expensive CDN's.

Scribe - Their own distributed/reliable Logging System.

Do not use too many fine grained services - I have seen this problem in companies where too many fine grained services, then result in a drop order on deployment day (pretty painful).

No service private schemas ( Then how do they make changes to databases in an isolated way).
Swim Lanes

Thursday, January 21, 2010

Business Skills for Technology executives

I was reading one of the blog posts from AKF Partners the other day, where they talk about the business skills that need to be acquired by Technology Executives.
It is pretty coincidental, that I started on this exact quest some time ago.

The approach is pretty simple.
1) Got to recommended reading list
2) Read one book on each topic - whenever you have time
3) So far I understood Competitive Strategy, Positioning and a very basic way to read financial reports and a number of other skills too.
4) I felt this was the best approach in Silicon Valley - short of a full time MBA program.

Tuesday, January 19, 2010

An Architecture to learn from:FaceBook Chat

Many times a programming language is just a tool.. Sometimes it is a differentiator

At Facebook , they have used Erlang mostly for its lightweight concurrency and its actors model concurrency( ErLang calls them Channels; Scala calls them actors)

This has real implications in terms of how many machines Facebook has to buy to support chat; I am sure they cut their hardware requirements by at least half from what they would have needed if they went with a traditional request/response model; Shows how a good architecture means real money saved for hight traffic sites.

If you want to learn how Facebook uses Erlang as a differentiator, go through this presentation
There is a pdf somewhere also which explains the architecture in more detail.

My only question is this : Could a java based NIO approach have delivered similar/same results for Facebook; Is Java threading model so heavy and the semantics of shared memory so ill suited for Facebook chat?

Ramping up on Scala

I was getting up to speed on Scala on and off, but never made a concerted effort to get the entire hang of it.

Yesterday I finally got hold of Martin Odersky's Programming in Scala book and going at a good pace.

I would love to use more and more functional programming features in my future career.