How do you store the http code? is it stored locally on each machine or on a shared storage? If locally , how do I update the code if the web site changes
Existem várias maneiras de armazenar o código no armazenamento compartilhado, como uma montagem NFS / S3 - facilitando a atualização central, obviamente, você introduz um ponto único de falha, de modo que as pessoas geralmente têm dois cópias do código em armazenamento diferente, para que eles possam perder apenas metade de seus nós - e você pode usá-lo também para testes / implantações em azul / verde. Outra opção seria armazená-lo em um sistema de arquivos distribuído, como o Ceph ou similar, com as mesmas advertências.
Same goes for static content , I'm assuming it resides on a shared storage
Geralmente, isso é verdade, muitas pessoas usam armazenamento baseado em nuvem para conteúdo estático, pois geralmente ele está "próximo", do ponto de vista da rede, até seus CDNs, é raro ver conteúdo armazenado em servidores Web diretamente nos dias de hoje .
If I'm using a CDN , does it simply cache all static accessed data? and for how long ?
Isso é certamente a funcionalidade básica, eles geralmente podem fazer muito mais do que isso e o TTL é quase sempre configurável em uma base de objeto / arquivo individual.
LBs - How can it see if a machine is overloaded (load avg) if at all ?
Várias formas diferentes, conexões abertas, tempos de resposta, estatísticas de utilização de recursos compartilhados - LBs podem ser muito 'sintonizáveis', eu tenho uma enorme quantidade de respeito por bons gerentes de LB.
LBs - can I have a cluster of LBs? if so how does it work ?
Sim, literalmente camadas deles e da maneira que você quiser - como exemplo, usamos LB'ing Global para enviar tráfego para um datacenter específico com base em vários fatores e, depois de acessá-lo, ele é dividido em diferentes grupos de serviços (verde / azul, por exemplo) e, em seguida, para o serviço real-LBs.
What DB would you pick for youtube/streaming like site? and why
Não há um melhor na classe DB desculpe - há muitos fatores, o custo é grande (minha palavra MSSQL e Oracle podem ficar super gastas nos dias de hoje!), mas a principal coisa a considerar é se seu DB PRECISA referencial-integridade como se fosse, então você precisa de um banco de dados baseado em SQL (existem os gratuitos, MySQL e PostGRES são muito populares), mas se você pode projetar seus dados corretamente então você pode se safar com 'NoSQL 'bancos de dados como o Couchbase / Mongo / Cassandra e eles absolutamente FLY , muito mais rápidos que o SQL para consultas básicas - mas obviamente eles são menos ricos em recursos. A outra coisa é que você pode fazer seu banco de dados funcionar inteiramente na nuvem agora - a AWS em particular tem um strong portfólio de tipos de banco de dados e o Azure obviamente tem o MSSQL como parte de seu portfólio.