DAVID MALAN: Tudo bem, bem-vindo de volta. Antes de mergulhar em computação em nuvem, Pensei em parar por um momento se existem questões pendentes ou temas que surgiram durante o almoço que agora pode ser de interesse. AUDIÊNCIA: [inaudível] DAVID MALAN: OK. Oh ok. AUDIÊNCIA: [inaudível] DAVID MALAN: Não, é claro. OK, bem, espero que todos os seus problemas surgem nas próximas horas e amanhã, especialmente. Mas vamos dar uma olhada, então, para onde a última discussão sobre a configuração um site leva, de forma mais geral quando se trata de computação em nuvem, a criação de uma arquitetura de servidor, os tipos de decisões que os engenheiros e desenvolvedores e gerentes precisa fazer quando se trata a fazer mais do que apenas inscrever-se para um US $ 10 por host mês quando você realmente quer construir fora a sua própria infra-estrutura. E nós vamos tentar amarrar isso de volta, por exemplo, para Dropbox e outros como eles. Então, vamos começar a considerar quais os problemas que surgem como negócio fica bom e surgem bons problemas. Assim, no caso mais simples de ter alguma empresa que tenha um servidor web, você pode ter, digamos, um servidor que vamos chamar a que se parece com isso. E estes dias, a maioria servers-- e vamos na verdade, uma imagem a este tão que é um pouco menos nebuloso. Então server-- cremalheira Dell de volta ao dia, há eram computadores mainframe que ocupava salas inteiras. Estes dias, se você fosse para obter um servidor, ele pode parecer um pouco algo como isto. Os servidores são medidos em que são chamados unidades de rack, ou RUs. E um RU é de 1,5 polegadas, que é um padrão da indústria. Portanto, este parece ser um servidor de dois RU. Então é 3 polegadas de altura. E eles são geralmente 19 polegadas de largura, o que significa tudo isso tipo de coisa é padronizado. Então, se você olhar em um center-- dados não apenas em um servidor, mas vamos vejam o Google de centro de dados e ver se nós ver uma imagem agradável no Google Imagens. Isto é muito melhor iluminado do que você normalmente encontrar, e muito mais sexy olhando como resultado. Mas isto é o que se parece com um par centena de servidores tudo sobre isso mesmo tamanho, na verdade, na prateleira após prateleira após bastidor após bastidor em um centro de dados. Algo como isto-- Isso pode muito bem ser o do Google, desde que eu pesquisei Google. Mas poderia ser representativa de um modo mais geral um data center em que muitos empresas são tipicamente co-localizados. E co-localizados geralmente significa que você vá para um lugar como Equinix ou de outros fornecedores que têm grandes armazéns que têm muita energia, lotes de refrigeração, esperançosamente muita segurança, e gaiolas individuais colocando prateleiras de servidores, e você quer alugar as prateleiras ou você trazer as prateleiras em. E as empresas individuais, startups especialmente, terá algum tipo de biometria para entrar em sua gaiola, ou uma chave, ou um cartão-chave. Você abre a porta. E dentro de lá é apenas uma pegada metragem quadrada que você está pagando para, dentro de que você pode colocar o que quiser. E você normalmente paga para o poder. E você paga para as pegadas. E então você paga -se para os servidores que você está trazendo para esse espaço. E o que você tem então a opção de fazer é pagar alguém para sua conectividade serviço de internet. Você pode pagar qualquer número dos fornecedores, os quais normalmente vêm em que o centro de dados. Mas a questão realmente interessante é, que realmente se passa nos bastidores? Eles podem muito bem parecido com o que acabamos de ver. Mas eles desempenham funções diferentes e talvez precise fazer coisas diferentes. E vamos realmente motivar essa discussão com a questão de, qual é o problema começa a surgir se você for bem sucedido? Então você tem um site que você construiu. E talvez vende flores ou algo assim. E você tem feito muito bem com vendas de widgets on-line. E você começa a experimentar alguns sintomas, o seu site. Quais podem ser alguns dos os sintomas técnicas que os usuários relatam como negócio está crescendo e crescendo e seu site é beneficiando com isso? AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, exatamente. Então você pode ter um desaceleração do seu site. E por que isso pode acontecer? Bem, se assumirmos, por fins de discussão agora, que você está em um destes anfitriões web comerciais que falamos antes do almoço, que você pagar algum número de dólares para por mês, e você já pagou para o custo anual de seu domínio nome, para que host é provavelmente overselling seus recursos em certa medida. Então você pode ter um nome de usuário e senha em seu servidor. Mas isso talvez vários outros, ou vários dúzia de outros, ou talvez até mesmo vários centena de outras, usuários. E sites viver fisicamente no mesmo servidor. Por que isso é possível? Bem estes dias, servidores como este normalmente tiver vários discos rígidos, talvez como muitos como seis ou mais unidades de disco rígido, cada um dos quais pode ser tanto como 4 terabytes nos dias de hoje. Então você pode ter 24 terabytes de espaço em apenas um pequeno servidor como este. E mesmo se você roubar um pouco desse espaço para redundância, para fins de backup, ainda é um monte de espaço. E, certamente, um site típico não precisa de tanto espaço. Basta registrar usuários e armazenar os logs de ordens não leva tudo o que muito espaço. Assim, você pode particionar bastante um pouco e dar a cada usuário apenas um pequeno pedaço do que isso. Enquanto isso, um computador como este nos dias de hoje normalmente tem vários CPUs-- não apenas um, talvez dois, talvez quatro, talvez 16, ou até mais. E cada um desses processadores tem uma coisa chamada um núcleo, que é tipo de como um cérebro dentro de um cérebro. Então, na verdade a maioria de todos aqui com laptops modernos tem, provavelmente, um dual core ou quad core CPU-- e, provavelmente, só uma CPU dentro de um laptop estes dias. Mas os computadores desktop e computadores de rack como isso pode ter muito poucos mais CPUs, e em núcleos de volta. E, francamente, mesmo em nossos Macs e PCs de hoje, você realmente não precisa de dois núcleos ou quad core para verificar seu e-mail. Se há algum gargalo quando se trata de usar um computador, vocês, os humanos são provavelmente a mais lento coisa sobre esse computador. E você não vai ser capaz de verifique seu e-mail mais rápido se você têm quatro vezes mais CPUs ou núcleos. Mas o mesmo é tipo da verdadeira de um servidor. Um único site talvez não necessariamente precisa de mais do que um CPU ou um núcleo, uma pequeno cérebro dentro fazendo todos os pensamentos eo processamento. Assim, os fabricantes têm semelhante começou a cortar esses recursos de modo que talvez o seu site recebe um core, o seu site recebe um núcleo, ou talvez nós estamos compartilhando um tal núcleo. Também estamos compartilhando espaço em disco. E também estamos compartilhando RAM, ou memória de acesso aleatório de antes, dos quais há também uma quantidade finita. E essa é a chave. Não importa o quão caro o computador estava, ainda há um finito quantidade de recursos na mesma. E assim a mais e mais você tentar consumir esses recursos, as coisas mais lentas pode se tornar. Mas por que? Por que as coisas devagar como um sintoma de um servidor que está sendo sobrecarregado? O que está acontecendo? AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, exatamente. Propus anteriormente que RAM é um tipo de memória. É volátil, em que é onde as aplicações e os dados estão armazenado quando eles estão sendo usados. E assim, portanto, não há apenas um número finito de coisas que aparentemente pode fazer de uma só vez. E também é mais rápido, O que é uma boa coisa. Mas também é mais caro, que é uma coisa ruim. E também é, portanto, presentes em menor quantidades do que espaço em disco, disco rígido espaço, o que tende a ser mais barato. Em outras palavras, você pode ter 4 terabytes de espaço em disco no seu computador. Mas você pode ter 4 gigabytes, ou 64 gigabytes, em ordem de grandeza, de um factor 1.000 a menos, de memória RAM em seu computador. Então, o que um computador faz? Bem, suponha que você tem 64 gigabytes de memória RAM em um servidor como este, que seria bastante comum, se não baixa nos dias de hoje. Mas suponha que você tenha tantos os usuários que fazem tantas coisas que tipo de tipo de precisa de 65 gigabytes de memória para lidar com tudo isso uso simultâneo? Bem, você poderia apenas dizer, Desculpe, alguns número de usuários apenas não pode acessar o site. E essa é a medida de último recurso, certamente. Ou você, como o operacional sistema, como o Windows ou Mac OS ou Linux ou Solaris ou qualquer número de outros sistemas operacionais no servidor, poderia simplesmente decidir, você sabe o quê? Eu só tenho 64 gigabytes de RAM. Eu meio que precisa 65. Então você sabe o quê? Vou tomar 1 gigabyte valor dos dados na memória RAM que foi o menos recentemente acessados e apenas movê-lo para o disco temporariamente, literalmente, copie-o do rápido memória para a memória mais lenta para que eu possa, em seguida, lidar com isso necessidade gigabyte 65ª para a memória, fazer alguma computação nele. Então, quando eu terminar de fazer isso, Eu só vou passar que para o disco, mover a outra RAM eu coloquei temporariamente no disco de volta para o hardware real de modo que eu sou o tipo de multitarefa. Então, eu sou uma espécie de colocar as coisas temporariamente neste espaço mais lento então eu criar a ilusão de manuseamento de todos. Mas há uma desaceleração. Por quê? Bem, dentro destes disco discos nos dias de hoje é o quê? Em vez disso, o que faz um disco dirigir diferente da RAM o melhor que sei agora? AUDIÊNCIA: [inaudível] DAVID MALAN: OK, é verdade. AUDIÊNCIA: [inaudível] DAVID MALAN: Então, muito verdadeiro. E isso é um efeito colateral ou recurso o facto de que a memória RAM é realmente mais rápida. E, portanto, você quer usá-lo para uso corrente. E um disco é mais lento. Mas é permanente ou não-volátil. Então você usá-lo para o armazenamento de longo prazo. Mas em termos de implementação, se eu olhar para cima o que é chamado um DIMM, memória dual in-line Módulo, isto é o que um pedaço de RAM pode normalmente ser parecida. Então, dentro da nossa Mac-- isso é um bug. Dentro dos nossos Macs e PCs, a nossa área de trabalho computadores teria sticks de memória, como seria chamá-los, ou DIMMs, ou SIMM de volta no dia, da memória que se parecem com isso. Nossos laptops provavelmente tem coisas que são um terço do tamanho ou metade do tamanho. Eles são um pouco menores, mas o mesmo pouco idea-- peças de silício verde ou de plástico que bolacha tem poucas fichas pretas sobre eles com muita de fios de interligação tudo. Você pode ter um monte de estes interior do seu computador. Mas o takeaway aqui é é inteiramente eletrônico. Há apenas elétrons fluindo neste dispositivo. Por outro lado, se olharmos para o interior de uma unidade de disco rígido e puxar para cima uma imagem aqui, você faria em vez ver algo como isso, que não têm eletricidade passando por isso, em última instância. Mas o que também salta para fora com você sobre isso? AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, há aparentemente partes móveis. É como uma espécie de registro velho ou leitor de fonógrafo. E isso é muito bonito. É um pouco mais sofisticado do que isso-- enquanto que um jogador fonógrafo usado ranhuras no registro, isso realmente usa minúsculas partículas magnéticas pequenas que não consegue ver. Mas, se uma pequena partícula magnética se parece com isso, é considerado um 1. E se ele se parece com isso, norte-sul, em vez de sul-norte, que poderia ser um 0. E vamos ver amanhã como podemos construir de que, para as coisas mais interessantes. Mas tudo o que é tem que mover fisicamente é certamente vai ir mais devagar que a velocidade da luz, que em teoria é o que um elétron pode fluir a, embora realisticamente não completamente. devices-- tão mecânica muito mais lento. Mas eles são mais baratos. E você pode caber tanta mais dados dentro deles. Assim, o facto de haver existe no mundo algo chamado de memória virtual, usando um disco rígido como este como se fosse RAM transparente para o utilizador, simplesmente movendo dados a partir da RAM para o disco rígido, em seguida, movê-lo de volta quando você precisa -lo novamente, cria a desaceleração. Porque você literalmente tem que copiá-lo de um lugar para outro. E a coisa que você está copiando-o para e de, na verdade, é mais lenta do que a RAM onde quer que seja. O aqui-- solução alternativa Se você não gosta do que desacelerar, e sua memória virtual é tipo de ser sobrecarregado, o que é uma outra solução para este problema? AUDIÊNCIA: [inaudível] DAVID MALAN: Bem, aumento da memória virtual nos deixaria fazer isso em uma escala ainda maior. Nós poderíamos lidar com 66 gigabytes das necessidades de memória, ou 67 gigabytes. Mas suponha que eu não gosto esta desaceleração, de fato Quero desligar virtual memória, se isso é mesmo possível, o que mais eu poderia jogar na este problema para resolvê-lo, onde eu quero lidar com mais usuários e requisitos mais memória do que eu fisicamente têm no momento? AUDIÊNCIA: [inaudível] DAVID MALAN: Infelizmente não. Portanto, a CPU e os núcleos eles são em são um recurso finito. E não há analógico nesse contexto. Boa pergunta. Então, só para ficar claro, também, se interior deste computador é, digamos, uma vara de memória RAM que se parece como isto-- e por isso vamos chamar isso de RAM. E aqui é a unidade de disco rígido. E eu vou tirar essa pictoricamente como um pequeno círculo. Existem 0 e 1s em ambos dados these--, vamos generalizar-lo como. E, essencialmente, se um usuário é executar uma aplicação como, digamos, um site que requer este quantidade de RAM por usuário, o que estou propondo, por meio desta coisa chamado de memória virtual, é mover-se apenas temporariamente que por aqui para que agora eu pode mover a memória de outra pessoa requisitos lá. E então, quando isso é feito, I pode copiar este para trás sobre e isto vai aqui, movendo-se, assim, o que eu queria lá em outro lugar completamente. Portanto, há apenas um monte de switcheroo, é o takeaway aqui. Então, se você não gosta disso, e você não faz quer colocar nada no disco rígido, o que é uma espécie de óbvio A solução da pessoa do negócio para o problema, ou o engenheiro de solução, para que o assunto, também? AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, quero dizer, literalmente, jogar dinheiro no problema. E, na verdade, esta é a perfeita Segue a algum do nível mais elevado discussões sobre a computação em nuvem. Porque um monte de que é motivado por decisões financeiras, nem mesmo necessariamente tecnológico. Se 64 GB de RAM é muito pouco, bem, por que não começar 128 gigabytes de memória RAM? Por que não começar 256 gigabytes de memória RAM? Bem, porque não? AUDIÊNCIA: [inaudível] DAVID MALAN: Bem, custa mais dinheiro, com certeza. E se você já tem reposição espaço em disco rígido, de forma eficaz, ou equivalentemente, espaço em disco rígido é tão muito mais barato assim como você pode usá-lo. Então, novamente, não há esse trade off que vimos ainda mais cedo nesta manhã, onde não há realmente necessariamente uma resposta certa, há apenas uma resposta melhor ou pior com base no que você realmente se preocupam. Portanto, há também realidades tecnológicas. Eu não posso comprar um computador, no meu conhecimento, com um trilhão de gigabytes de RAM agora. É apenas fisicamente não existe. Portanto, há algum limite superior. Mas se você já mesmo comprado para um consumidor Mac ou PC, também, em geral, há esta curva de recursos onde pode haver uma boa, uma melhor e um melhor computador. E os retornos marginais em sua compra do dólar o melhor computador contra o melhor computador pode não ser tão alta como gastar um pouco mais de dinheiro e obter o melhor computador sobre o bom computador. Em outras palavras, você está pagando um prémio para obter o topo da linha. E o que vamos ver na discussão de computação em nuvem é que o que é muito comum nestes dias, e que empresas como Google no início popularizou, não estava prestando para e construção realmente sofisticados, caros souped acima computadores com lotes e lotes de tudo, mas sim comprar ou construir bonita computadores modestos, mas muitos deles, e usando algo que é geralmente chamado de escala horizontal, em vez de escala vertical. Então escala vertical significaria ficar mais RAM, mais rígido, mais de tudo, e uma espécie de investir verticalmente no seu hardware então você está apenas começando a melhor dos melhores dos melhores, mas você está pagando por isso. escala horizontal é uma espécie de obter o bottom camadas coisas, o bom modelo, ou mesmo o modelo pior, mas se muitos deles. Mas, logo que você obter lotes de eles-- por exemplo, neste caso, servidores web, se este servidor ou de um web site é insuficiente, em seguida, apenas intuitivamente, o solução para este problema de carga ou sobrecarga em seus servidores ou é obter um servidor maior ou, o que estou propondo aqui em vez de escalar verticalmente por assim dizer, seria, você sabe o quê? Basta obter uma segunda um destes. Ou talvez até obter um terceiro. Mas agora nós criamos um problema de engenharia por natureza deste negócio ou decisão financeira. Qual é o problema de engenharia agora? AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, como fazer você conectá-los e- pena? AUDIÊNCIA: [inaudível] DAVID MALAN: Direito, porque eu ainda have-- se eu reintroduzi-me para esta imagem, se este é o meu laptop em algum lugar na internet, que está agora entre me ea empresa que estamos a falar, agora eu tenho que descobrir, ao qual servidor faço para enviar esse usuário específico? E se há outros usuários, como este, em seguida, este aqui, e talvez este é o usuário A, este é o usuário B, este é o usuário C, e este é o servidor 1, 2, e 3-- agora uma resposta intuitiva pode aqui ser apenas, vamos enviar o usuário A a 1 e B e C de 2 a 3. E nós pode lidar com 3 vezes o número de usuários. Mas isso é uma simplificação exagerada. Como você decide quem enviar para onde? Então, vamos tentar argumentar por isso. Então, suponha que os computadores A, B, e C são os clientes, e servidores 1, 2 e 3 são horizontalmente escalado servidores. Então, eles são tipo de idêntica. Eles estão todos rodando o mesmo software. E todos eles podem fazer a mesma coisa. Mas a razão pela qual temos três deles é tão que podemos lidar com três vezes mais pessoas ao mesmo tempo. Então, nós sabemos da nossa discussão antes do almoço que há em hardware entre os computadores portáteis e os servidores. Mas vamos apenas uma espécie de generalizar que agora, como a internet ou a nuvem. Mas sabemos que, na minha casa, há provavelmente um roteador em casa. Perto os servidores, há provavelmente um roteador, servidor DNS, DHCP. Não pode ser qualquer coisa queremos nesta história. Então, como é que vamos começar a decidir, quando o usuário A vai para something.com, qual servidor para encaminhar o usuário? Como podemos começar a contar esta história? Audiência: O balanceamento de carga? DAVID MALAN: O balanceamento de carga. O que você quer dizer com isso? AUDIÊNCIA: Voltando onde o uso é mais e qual deles tem o a maioria dos recursos disponíveis. DAVID MALAN: OK, então deixe-me introduzir um novo tipo de hardware que ainda não discutimos, que é exatamente isso, um balanceador de carga. Isso também poderia ser apenas um servidor. Pode parecer exatamente como a que vimos há pouco. Um balanceador de carga é realmente apenas um pedaço de software que execute em um pedaço de hardware. Ou você pode pagar um fornecedor, como Citrix ou outros, Cisco ou outros. Você pode pagar por seu próprio hardware, que é um balanceador de carga de hardware. Mas isso só significa que eles pré-instalado o balanceamento de carga software em seu hardware e vendeu para você todos juntos. Então vamos desenhá-lo como um retângulo para nossos propósitos. Como agora eu implementar um balanceador de carga? Em outras palavras, quando o usuário A quer visite o meu site, seu pedido de alguma forma ou outro, provavelmente por meio daqueles routers que falamos anteriormente, vai chegar, eventualmente, este balanceador de carga, que, em seguida, precisa de fazer uma decisão de roteamento-like. Mas é o roteamento de tipo de um propósito maior agora. Não é apenas sobre a obtenção de do ponto A ao ponto B. Trata-se de decidir qual ponto B é o melhor entre eles-- 1, 2, ou 3, neste caso. Então, como faço para decidir se ir a 1, a 2, a 3? O que pode esta caixa preta, por assim falar, estar fazendo no interior? Isso também é outro exemplo em ciência da computação da abstração. Tenho literalmente tirado um balanceador de carga como uma caixa preta em tinta preta, dentro de que é um pouco interessante lógica, ou magia, mesmo, dos quais precisa vir um decision-- 1, 2, ou 3. E a entrada é apenas A. AUDIÊNCIA: [inaudível] DAVID MALAN: Eu sinto muito? AUDIÊNCIA: [inaudível] DAVID MALAN: Tudo bem, como podemos categorizar os tipos de transações Aqui? AUDIÊNCIA: visualizar uma página da Web contra consultando um banco de dados. DAVID MALAN: OK, isso é bom. Então, talvez este usuário quer ver uma página web. E talvez seja mesmo conteúdo estático, algo que muda raramente, ou nunca. E isso parece ser uma operação bastante simples. Então, talvez nós vamos arbitrariamente, mas razoavelmente, digamos, servidor 1, o seu propósito na vida é apenas para servir conteúdo estático, arquivos que raramente, ou nunca, mudança. Talvez seja as imagens na página. Talvez seja o texto na página ou outro tal tipo de coisas desinteressantes, nada transacional, nada dinâmico. Por outro lado, se o usuário A está verificando fora do seu carrinho de compras que requer um banco de dados, um lugar para armazenar e lembre-se que a transação, bem talvez esse pedido deve ir ao servidor 2. Então, isso é bom. Assim, podemos carregar equilíbrio baseado do tipo de pedidos. Como mais podemos fazer isso? Quais os outros-- AUDIÊNCIA: Com base no servidor de utilização e capacidade. DAVID MALAN: Certo, OK. Então, você mencionou que antes, Kareem. Assim que se nós fornecemos alguma entrada no [inaudível] entre os servidores 1, 2, e 3 do presente balanceador de carga de modo a que eles estão apenas constantemente informando o balanceador de carga que o seu estado é? Como, hey, balanceador de carga, Estou na utilização de 50%. Em outras palavras, eu tenho metade do número de usuários como eu posso realmente segurar agora. Hey, balanceador de carga, eu sou a utilização de 100%. Hey, balanceador de carga, 0% de utilização. O balanceador de carga, se é concebido de uma maneira que pode tomar esses comentários como entrada, ele pode, então, decidir, ooh, número 2 está em 100%. Deixe-me não enviar solicitações futuras para ele para além dos usuários já conectados. Esse cara é de 0%. Vamos enviar um monte de tráfego para ele. Esse cara disse que ele está em 50%. Vamos enviar algum tráfego para ele. Assim que seria um ingrediente, que poderíamos tomar carga em conta. E isso vai mudar ao longo do tempo. Assim, as decisões vão mudar. Então, isso é realmente uma boa técnica, um que é comumente usado. O que mais poderíamos fazer? E vamos realmente apenas resumir aqui. Assim, as decisões podem ser aqui por tipo de tráfego, eu vou chamá-lo. Ele pode ser baseado na carga. Vamos ver se não podemos venha com alguns outros. AUDIÊNCIA: [inaudível] DAVID MALAN: Localização. Então, isso é uma boa. Então localização-- como pode você alavancar essa informação? AUDIÊNCIA: [inaudível] DAVID MALAN: Oh, isso é bom. E sobre quantos milissegundos seria diminuir com base no que vimos este manhã, você diria? AUDIÊNCIA: [inaudível] DAVID MALAN: Bem, com base nas rotas de rastreio vimos anteriormente, que é apenas uma medida aproximada de algo, pelo menos quanto tempo leva de dados para ir de A para B se sente como nada locais era, o que, como 74 milissegundos, mais ou menos? E então nada 100 mais, 200 mais foi provavelmente no exterior. E assim com base nessa sozinho, parece razoável supor que para um usuário em os EUA para acessar um servidor Europeia pode demorar duas ou três vezes contanto, mesmo em milissegundos, do que poderia tomar se que servidor foram localizados aqui geograficamente, ou vice-versa. Então, quando eu propus mais cedo que especialmente uma vez que você cruza essa 200 milissegundos limiar, mais ou menos, seres humanos que começam a notar. E a rota do traço é apenas assumindo dados brutos, desinteressantes. Quando você tem um site, você tem que obter o usuário fazer o download de imagens ou filme arquivos, grande quantidade de texto, os pedidos subsequentes. Nós vimos quando visitamos, o que era -lo, Facebook ou Amazon antes, há um monte de coisas que precisa ser baixado. Então, que vai somar. Então multi-segundos pode não ser razoável. Tão bom, a geografia é um ingrediente. Assim, em empresas de fatos como Akamai, se você já ouviu falar deles, ou outros há muito tomadas geografia em conta. E verifica-se que, por natureza, de um endereço IP, o endereço IP do meu laptop, você pode inferir, com alguma probabilidade, onde você está no mundo. E, de facto, há serviços de terceiros Você pode pagar que mantêm bancos de dados de endereços IP e geografias que, com alta confiança será verdadeiro quando solicitado, onde no mundo É este endereço IP? E assim, de fato, o que outras empresas usam isso? Se você tem Hulu ou Netflix, se você já foi viajar para o exterior, e tenta ver algo na Hulu, e você não está em os EUA, você pode ver uma mensagem dizendo, não em os EUA. Desculpe, você não pode visualizar este conteúdo. AUDIÊNCIA: [inaudível] DAVID MALAN: Ah, realmente? Mas sim, então na verdade isso é uma aplicação perfeita de algo muito técnico a um problema real. Se você fosse para VPN a partir de Europa ou na Ásia ou em qualquer lugar no mundo à sua corporativo sede em New York ou onde quer que você esteja, você está vai criar a aparência para sites externos que você está realmente em New York, mesmo que você esteja fisicamente muito longe. Agora você o usuário está indo para sei que você está, obviamente, de distância. Mas você também vai sentir-lo porque desses milissegundos adicionais. Essa distância adicional ea criptografia que está acontecendo na VPN vai retardar as coisas. Por isso, pode ou não ser uma grande experiência. Mas Hulu e Netflix vai ver -lo como sentado em algum lugar em Nova Iorque, como você claramente adquirida. O que é uma perfeita solução para isso. Tudo bem, então a geografia é uma decisão. O que mais podemos usar para decidir como para rotear o tráfego de A, B, e C a 1, 2, e 3, novamente, colocando o chapéu de engenharia on? Isso tudo soa muito complicado. Uh, eu não sei mesmo onde para começar a implementar essas. Dê-me algo que é mais simples. Qual é a maneira mais simples para tomar esta decisão? AUDIÊNCIA: É o servidor disponível? DAVID MALAN: É o servidor disponível? Então, não é mau. Isso é bom. Isso é uma espécie de nuanças de carga. Então, vamos manter isso na categoria de carga. Se você está disponível, eu sou apenas vai enviar os dados lá. Mas isso pode sair pela culatra rapidamente. Porque se eu usar essa lógica, e se eu sempre pedir 1, você está, você está, você está, se a resposta é sempre sim, Eu estou indo para enviar 100% do tráfego para ele, 0% para todos os outros. E em algum momento, nós estamos indo bater que a desaceleração ou o site indisponível. Então, o que é ligeiramente melhor do que isso, mas ainda bastante simples e não quase tão inteligente quanto tomando todas Estes dados adicionais em conta? AUDIÊNCIA: Custo por servidor. DAVID MALAN: Custo por servidor. OK, então deixe-me atirar que na categoria de carga, também. Porque o que você vai encontrar em uma empresa, demasiado-- que se você atualizar seus servidores ao longo do tempo ou comprar mais, que você pode não ser capaz de obter exatamente as mesmas versões de hardware. Porque ele cai fora da data. Você não pode comprar mais. Os preços variam. Então você pode ter diferentes servidores no seu conjunto, por assim dizer. Isso é totalmente bem. Mas o hardware do próximo ano pode ser duas vezes mais rápido, duas vezes tão capazes quanto os deste ano. Assim, podemos lançá que na categoria de carga. Este ciclo de feedback entre 1, 2 e 3 no balanceador de carga certamente poderia dizer que, hey, eu estou em 50% da capacidade. Mas pelo jeito, eu também têm o dobro de núcleos. Use essas informações. Mesmo simpler-- e isso vai ser um tema em ciência da computação. Em caso de dúvida, ou quando você quer uma simples solução que geralmente funciona bem ao longo do tempo, não escolher o mesmo servidor o tempo todo, mas choose-- AUDIÊNCIA: um acaso? DAVID MALAN: --um servidor aleatório. Sim, escolher um ou outro. Assim aleatoriedade é realmente este ingrediente muito poderoso em ciência da computação, e em engenharia mais em geral, especialmente quando você quer para tomar uma decisão simples rapidamente sem complicar-lo com toda destes muito inteligente, mas também muito inteligente, que requerem soluções ainda mais engenharia, tudo quanto mais pensamento, quando realmente, por que não eu apenas uma espécie de lançar uma moeda ou uma três faces da moeda, neste caso, e decidir se quer ir 1, 2, 3? Isso pode sair pela culatra probabilisticamente, mas muito parecido com as probabilidades de virar cabeças novamente e de novo e de novo e de novo e de novo e de novo é possível em Super reality--, super improvável. Então, ao longo do tempo, as probabilidades são apenas o envio usuários aleatoriamente a 1, 2, 3 e vai trabalhar perfeitamente bem. E esta é uma técnica geralmente conhecido como round robin. Ou, na verdade, isso não é round robin. Esta seria a abordagem aleatória. E se você quiser ser ainda um pouco mais simples do que isso, round robin seria, primeira pessoa vai para 1, segunda pessoa a 2, terceira pessoa a 3, para uma quarta pessoa. E é aí que reside o round robin. Você só tipo de ir ao redor em um ciclo. Agora, você deve ser esperto sobre isso. Você não deve cegamente enviar ao usuário número do servidor de um, se o que é o caso? Se é a capacidade máxima, ou é apenas não responsivo. Assim, idealmente você quer alguma tipo de loop de feedback. Caso contrário, você acabou de enviar todos de seus usuários para um beco sem saída. Mas que podem ser tomadas em conta, também. Portanto, não sob a apreciar o valor da apenas aleatoriedade, que é bastante frequente uma solução para estes tipos de problemas. E nós vamos escrever o round robin. Assim como algumas empresas implementar round robin ou aleatoriedade ou qualquer uma dessas decisões? Bem, infelizmente, eles fazer coisas como esta. Deixe-me puxar para cima outra imagem rápida. Na verdade, vamos fazer dois. Eu não sei por que estamos ficando todos esses pratos. Isso é muito estranho. Tudo bem, o que eu realmente quer é uma captura de tela. Isso é estranho. Tudo bem, então eu posso falsificar isso. Eu não sei o quanto mais longe Eu quero continuar a rolagem. Então, muito comumente, você vai encontrar-se em um endereço como www.2.acme.com, talvez www.3 ou 4 ou 5. E manter um olho para isso. Você não vê que muitas vezes. Mas quando o fizer, isso meio que tende a ser maior, mais velhos, empresas stodgier que tecnologicamente realmente não parecem saber o que estão fazendo. E você vê isso em empresas de tecnologia às vezes, os mais velhos. Então, o que eles estão fazendo? Como eles estão implementando balanceamento de carga, iria parecer? Se você encontrar-se como o user digitação www.something.com, e de repente você está em www.2.something.com, o que tem a sua carga balanceador provavelmente feito? AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, de modo que o balanceador de carga é presumivelmente tomar uma decisão baseada em um dos estes tomada de decisão processes-- realmente não importa qual. Mas assim como eu desenhei o os números no quadro aqui, os servidores não são apenas chamado 1, 2, e 3. Eles estão provavelmente chamada www1, www2, www3. E verifica-se que dentro de uma solicitação HTTP é este recurso. E eu vou simular este como se segue. Eu vou abrir essa mesma aba Developer Network como antes apenas para que possamos ver o que está acontecendo por baixo do capuz. Eu estou indo para limpar a tela. E eu estou indo para ir, vamos dizer, http://harvard.edu. Agora, para o que razões de negócios, Harvard decidiu, como muitos, muitos outros sites, para padronizar a sua site em www.harvard.edu tanto para técnicos e razões de marketing. É apenas uma espécie de em voga para ter o www. Assim, o servidor em Harvard tem redirecionar alguma forma o usuário, como eu continuo dizendo, de um URL para o outro. Como isso funciona? Bem, deixe-me ir em frente e pressione Enter. E observe a URL de fato rapidamente alterado para www.harvard.edu. Deixe-me rolar para trás neste história e clicar neste debug informações de diagnóstico, se você quiser. Deixe-me olhar para o meu pedido. Então aqui está o pedido que fiz. E note que é consistente com o tipo de solicitar que eu fiz de Facebook antes. Mas note a resposta. O que é diferente em a resposta desta vez? AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, por isso não é um 200 OK. Não é um 404 Not Found. É um 301 movido permanentemente, o que é uma espécie de uma maneira engraçada de dizer: Harvard elevou e se mudou em outros lugares para www.harvard.edu. Os 301 significa que este é um redirecionamento. E para onde o usuário deve aparentemente ser redirecionado? Há um boato adicional de informação privilegiada que envelope. E cada uma dessas linhas será agora começar a chamar um cabeçalho HTTP. Header é apenas um valor de chave pair-- algo cólon alguma coisa. É uma peça de informação. Onde deve ser o novo localização aparentemente ser? Observe a última linha Entre todos os cabeçalhos. AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, por isso há informação adicional. A primeira linha que eu tenho realçado diz 301 Movido permanentemente. Bem, por onde ele se mudou? A última linha-- e eles não tem que ser nessa ordem. Ele pode ser aleatória. Localização cólon significa, hey navegador, vá para este URL em vez disso. Então navegadores entender redirecionamentos HTTP. E isso é muito, muito forma comum de saltar o usuário de um lugar para outro. Por exemplo, se você já tentou para visitar um site que você não está se conectou, você pode de repente achar -se em uma nova URL completamente sendo solicitado a efetuar login. Como isso funciona? O servidor, provavelmente está enviando uma 301. Há também outros números, como 302, um pouco diferente em significado, que enviá-lo para outra URL. E, em seguida, o servidor, uma vez que você logado, irá enviar-lhe de volta para onde você realmente pretendia. Então, o que, então, são mal sites de engenharia está fazendo? Quando você visita www.acme.com, e eles simplesmente acontecer de ter chamado seus servidores www1, www2, www3, e assim por diante, eles são muito simply-- que é justo, mas muito tipo de foolishly-- redirecionando você para na verdade, um servidor diferente chamado. E ele funciona perfeitamente bem. É agradável e fácil. Nós vimos como seria feito por baixo do capuz no envelope virtual. Mas por que isso é, sem dúvida, um decisão de engenharia ruim? E por que eu sou uma espécie de condescendência para esta engenharia especial abordagem? Argumentam por que isso é ruim. Ben? AUDIÊNCIA: [inaudível] DAVID MALAN: Cada servidor teria de ter uma cópia duplicada do site. Eu estou bem com isso. E, de fato, é o que eu sou supondo para toda esta história, uma vez que, se bem wanted-- na verdade, com exceção de Dan do anterior sugestão, onde se você tem diferentes servidores fazendo coisas diferentes, então talvez eles poderiam realmente ser funcionalmente fazer coisas diferentes. Mas, mesmo assim, em algum momento, o seu banco de dados vai ficar sobrecarregado. O seu servidor de ativos estática vai ficar sobrecarregado. Então, em algum momento, estamos volta a esta história, onde nós precisa de várias cópias da mesma coisa. Então, eu estou bem com isso. AUDIÊNCIA: [inaudível] DAVID MALAN: OK, então algumas páginas pode ser desproporcionalmente popular. E assim fixar-se em um endereço não é necessariamente a melhor coisa. [INAUDÍVEL]? AUDIÊNCIA: [inaudível] DAVID MALAN: O que você quer dizer com isso? AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, exatamente. Então você não quer necessariamente have-- você certamente não querem ter seus usuários digitando manualmente no www1 ou www2. De uma perspectiva de branding, que só parece um pouco ridículo. Se você quiser apenas uma espécie de limpo, experiência elegante, Tendo este tipo de forma aleatória URLs numeradas realmente não é bom. Porque, então, os usuários são certamente vai copiar e colá-los em e-mails ou mensagens instantâneas. Agora eles estão propagando. Agora você está tipo de confundir o seu menos público técnico, que pensa seu endereço na web é www2.something.com. Não há nenhuma semântica convincentes para isso. Ele só passa a ser um subjacente detalhes técnicos que você tem numerados seus servidores desta forma. E pior ainda, e se, por exemplo, talvez na época do Natal, quando negócio é realmente crescendo, você tem www1 através www99, mas em janeiro e fevereiro e em diante, você desliga metade dos assim você só tem www1 através www50? Qual é a implicação agora para que decisão de negócio muito razoável? AUDIÊNCIA: [inaudível] DAVID MALAN: Você precisa gerenciar todos aqueles que ainda estão. AUDIÊNCIA: [inaudível] DAVID MALAN: Exatamente. Esse é um tipo da captura lá. Se seus clientes têm o hábito de bookmarking coisas, enviando-os, apenas salvar o URL em algum lugar, ou se é apenas em sua auto completar em seu navegador para que eles estejam Não realmente escrevendo-a intencionalmente, é apenas a acontecer, eles poderiam, durante 11 meses do ano efetivamente, chegar a um beco sem saída. E apenas o mais astuto de usuários vai perceber, talvez eu devesse manualmente remover esse número. Quero dizer, ele simplesmente não vai acontecer com muitos usuários, tão ruim para os negócios, má engenharia de aplicação sábio. Então, felizmente, não é mesmo necessário. Acontece que o que balanceadores de carga pode fazer é em vez de dizer, quando A faz uma request-- hey A, ir para um. Em outras palavras, em vez de envio de que redirecionamento de tal modo que um passo neste processo é o movimento aqui, ele é, então, disse para ir para outro lugar. E assim o passo três é, ele vai para outro lugar. em vez disso você pode continuar a rota, a continuar a usar esse termo, todos os dados de A através do balanceador de carga para que ele nunca contatos 1, 2, ou 3 diretamente. Todo o tráfego não ficar "encaminhado" pelo balanceador de carga própria. E agora nós somos tipo de deliberadamente borrar as linhas Entre estes vários dispositivos. Um balanceador de carga pode encaminhar os dados. É apenas uma função que ele tem. Assim, um balanceador de carga, também, é um pedaço de software, realmente. E um roteador é um pedaço de software. E você pode absolutamente ter duas peças de software dentro de um computador físico para uma carga balanceador pode fazer essas várias coisas. Portanto, há uma outra maneira ao fazer isso, o que realmente remonta a espécie de primeiros princípios de DNS, o que nós falamos sobre antes das férias. DNS foi Domain Name System. Lembre-se que você pode pedir a um servidor DNS, o que é o endereço IP google.com, facebook.com? E nós podemos realmente fazer isso. A ferramenta não usamos anteriormente é um que é tão acessível, chamado nslookup, para pesquisa de servidor de nomes. E eu estou indo só para digitar facebook.com. E eu vejo que o IP do Facebook endereço, aparentemente, é isso. Deixe-me ir em frente e copiar disso, vá para um navegador, e vá para http: // e que endereço IP e pressione Enter. E com certeza, parece funcionar. Agora trabalhando para trás, o que era dentro do envelope virtual que o Facebook respondeu com quando Eu visitei que endereço IP diretamente? Porque o aviso prévio, onde estou agora? Onde eu estou agora, o endereço? AUDIÊNCIA: [inaudível] DAVID MALAN: Na versão segura, e no www.facebook.com. Portanto, não é mesmo apenas o endereço IP seguro. Facebook ele tomou sobre si quer dizer, isso é ridículo. Nós não estamos indo para mantê-lo neste URL olhando feio que é numérico. Nós estamos indo para lhe enviar um HTTP redireccionado por meio de que mesmo cabeçalho que vimos antes-- localização cólon alguma coisa. E assim isto significa simplesmente que, por baixo o capô ainda é este endereço IP. Cada computador na internet tem um endereço IP, ao que parece. Mas você não têm necessariamente para expor que para o utilizador. E bem como de volta ao dia, há foi 1-800-COLLECT, 1-800-C-O-L-L-E-C-T, em os EUA, era uma maneira de fazer a cobrar chama através de um telefone muito facilmente memorável número ou 1-800-colchão para comprar uma cama, e mnemônicos semelhantes que você mesmo ver no telefone tipo de tipo de ainda, que as cartas mapeiam para números. Agora, por que isso? Bem, é muito mais fácil de memorizar 1-800-colchão ou 1-800-COLLECT vez de 1-800 algo algo algo algo algo algo algo, onde cada daqueles é um dígito. Da mesma forma, o mundo aprendeu rapidamente que não devemos ter pessoas memorizar endereços IP. Isso seria tolice. Nós vamos usar nomes em vez disso. E é por isso DNS nasceu. Tudo bem, então com o que disse, em termos de balanceamento de carga, vamos tentar yahoo.com. Bem, isso é interessante. Yahoo parece estar voltando três IPs. Então inferir a partir disso, se você pudesse, o que é uma outra maneira que pudéssemos implementar essa noção de balanceamento de carga talvez mesmo sem usar um físico dispositivo, este novo dispositivo físico? Em outras palavras, eu posso tirar o financiamento que você tem para o balanceador de carga e dizer-lhe para usar algum já existente peça de hardware para implementar essa noção de balanceamento de carga? E o spoiler é, sim, mas que, ou como? O que é o Yahoo talvez fazendo aqui? Kareem? OK, Chris? AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, tudo três desses trabalhos. Então, aleatoriedade, round robin, localização-- você pode apenas alavancar uma parte existente do quebra-cabeça que falamos anteriormente do DNS sistema e simplesmente dizer, quando o primeiro utilizador do dia pede yahoo.com, dar-lhes o primeiro endereço IP, como aquele que termina em 45 lá em cima. E da próxima vez que um usuário solicitar o endereço IP do yahoo.com de algum lugar no mundo, dar-lhes o segundo IP, em seguida, o terceiro IP, em seguida, o primeiro PI, em seguida, o segundo. Ou ser esperto sobre isso e fazê-lo graficamente. Ou fazê-lo de forma aleatória e não apenas fazer -lo round robin desta forma. E, neste caso, então nós nem sequer precisa para introduzir este preto em caixa para a nossa imagem. Nós não precisamos de um novo dispositivo. Estamos simplesmente dizendo computadores para ir para os servidores diretamente, eficazmente, mas não por meio do seu nome. Eles nunca precisa saber o nome. Eles estão apenas a ser dito que yahoo.com mapas para qualquer um desses endereços IP. Então ele envia exatamente a mesma solicitação. Mas do lado de fora o envelope, ele simplesmente coloca o IP que foi informado da. E, desta forma, também, poderia nós balancear as solicitações por apenas enviar o envelope a um diferente dos próprios servidores do Yahoo? E se continuarmos a escavação, vamos ver provavelmente outras empresas com mais. CNN tem dois expostos ao público. Embora, na verdade, se fizermos isso de novo e novamente-- cnn.com-- você pode ver eles estão mudando fim, na verdade. Então, o mecanismo é CNN usando, aparentemente? AUDIÊNCIA: Aleatória. DAVID MALAN: Bem, pode ser aleatória, embora parece ser o ciclismo e para trás. Por isso é provavelmente round robin, onde eles estão apenas trocando a ordem de modo que eu vou presumivelmente tomar a primeira. Meu computador vai demorar o primeiro de cada vez. Então, isso é o balanceamento de carga. E isso nos permite, em última análise, para mapear os dados, ou pedidos de mapa, em vários servidores. Então, que tipo de problemas agora ainda existe? Parece que nós apenas realmente resolveu um problema bom. Temos usuários para diferentes servidores. Mas-- oh, e Chris, fez você tem uma pergunta antes? AUDIÊNCIA: [inaudível] DAVID MALAN: depende totalmente. Então, o que está acontecendo aqui? E nós podemos realmente ver isso. Então, vamos tentar o Yahoo. Na verdade, vamos para o Facebook. Porque nós sabemos que se trabalha. Então eu vou para copiar esse endereço IP novamente. Vou fechar todas essas guias. Eu estou indo para ir aberto que separador de rede especial aqui em baixo. E eu vou visitar somente http: //. E agora eu vou bater Enter. E vamos ver o que aconteceu. Se eu olhar para esse pedido, aviso que meu-- Facebook é um mau exemplo. Porque eles têm um técnica super sofisticados que esconde esse detalhe de nós. Deixe-me usar Yahoo instead-- http: // que o IP. Vamos abrir nossa rede guia, preservar log. E aqui vamos nós, Enter. Isso é engraçado. OK, então aqui é o famoso 404 mensagem. O que é engraçado é que eles provavelmente nunca estará de volta. Porque não há, provavelmente, não algo de errado per se. Eles têm apenas deliberadamente decidiu não apoiar a forma numérica de seu endereço. Então, o que estamos realmente vendo na guia Rede, se eu conseguir isso aqui em cima, é, como eu disse, o famoso 404, onde se eu olhar para os cabeçalhos de resposta, este é o que eu tenho aqui-- 404 Not Found. Então, vamos tentar um outro. Vamos ver se CNN coopera com a gente. Eu vou pegar um dos endereços IP da CNN, limpar isso, http, dá, dá, dá, dá. Assim, em resposta a Chris de pergunta, que se trabalhou. E vamos para cabeçalhos de resposta. Na verdade não, tudo bem, eu sou lutando para encontrar um exemplo de trabalho. Então CNN decidiu, vamos deixá-lo em qualquer endereço que você realmente visitar, questões de marca de lado. Mas o que não estaria acontecendo, se pudéssemos vê-lo no caso do Facebook, é que seria um 301 Moved Permanentemente, muito provavelmente, dentro do qual é Localização: https: //www.facebook.com. E as probabilidades são www.facebook.com é um alias para exatamente o mesmo servidor que acabamos fui. Portanto, é um pouco contraproducente. Estamos visitar literalmente o servidor. O servidor é então a dizer-nos, ir embora. Ir para este outro endereço. Mas nós só assim acontecer de ser vai voltar a esse mesmo servidor. Mas, presumivelmente, que agora permanecer nessa servidor sem este e para trás. Porque agora nós estamos usando a chamada versão do local, e não a numérico. Boa pergunta. OK, por isso, se nós agora assume-- nós ter resolvido o balanceamento de carga. Temos agora um mecanismo, se é através de DNS, se é através desta caixa preta, seja ela está usando qualquer uma destas técnicas. Podemos tomar uma solicitação do usuário e descobrir a qual servidor, 1, 2, ou 3, para enviar ele ou ela. O que começa a quebrar sobre o nosso site? Em outras palavras, temos construiu um negócio que foi anteriormente em um único servidor. Agora que o negócio está em execução em vários servidores. Que tipos de suposições, que tipos de decisões de design, pode agora ser quebrar? Isso é menos óbvia. Mas vamos ver se não podemos colocar o nosso dedo sobre alguns dos problemas que tenho criado por nós mesmos. Mais uma vez, é uma espécie de como segurar baixo o vazamento na mangueira. E agora um novo problema tem aparecido por aqui. AUDIÊNCIA: [inaudível] DAVID MALAN: OK, então temos que continuar a crescer o nosso espaço no disco rígido. Eu estou bem com isso agora. Porque eu acho que eu posso escala horizontal. Como se eu estou funcionando baixo, eu vou ficar quarto servidor, talvez uma quinta de servidores, e, em seguida, aumentar a nossa capacidade por outro 30% ou 50% ou estante. Então, eu estou OK com isso, pelo menos por agora. AUDIÊNCIA: [inaudível] DAVID MALAN: OK, então isso é um bom ponto. Então, suponha que os servidores não são idênticos. E serviço ao cliente ou o equivalente electrónico está recebendo alguma mensagem de um usuário dizendo, isso não está funcionando direito. É muito possível, às vezes, que talvez um ou mais servidores está agindo um pouco errado, mas não os outros, o que pode, certamente, tornar mais difícil para perseguir a questão. Você pode ter que olhar para vários lugares. Isso é manifestação de outro tipo de bug, o que é que você provavelmente deveria ter projetado sua infra-estrutura de modo tudo o que é verdadeiramente idênticos. Mas isso não revelar um novo problema que não tinha antes. O quê mais? AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, há mais complexidade. Há fisicamente mais fios. Há um outro dispositivo. Na verdade, eu já introduziu um direito fundamental conceito e um problema fundamental aqui conhecido como um único ponto de falha, o que, mesmo se você nunca ouviu falar a frase, você provavelmente pode agora trabalhar para trás e descobrir isso. O que significa que eu tenho um único ponto de falha na minha arquitetura? E pela arquitetura, eu só significa a topologia do mesmo. AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, o que se o balanceador de carga vai para baixo? Eu inseri este homem de meia cujas propósito na vida é para resolver um problema. Mas eu já introduziu um novo problema. Um novo vazamento surgiu na mangueira. Porque agora se o balanceador de carga morre ou quebras ou misfunctions, agora eu perder o acesso a todos os três dos meus servidores. E antes, eu não fiz tem esse intermediário. E por isso este é um problema novo, sem dúvida. Nós vamos voltar a como podemos corrigir isso. AUDIÊNCIA: [inaudível] DAVID MALAN: Isso seria uma abordagem. Sim, e por isso este vai ser bastante buraco do rato começamos a ir para baixo. Mas vamos voltar a que em apenas um momento. Que outros problemas que criamos? Então Dan mencionado banco de dados antes. E mesmo se você não está muito familiar tecnicamente, um banco de dados é apenas um servidor onde alterar os dados são tipicamente armazenados, talvez uma ordem que alguém tenha colocado, seu perfil de usuário, seu nome, seu endereço de e-mail, coisas que podem ser inseridos ou alterados ao longo do tempo. Anteriormente, foi o meu banco de dados sobre no mesmo servidor que o meu servidor web. Porque eu só tinha um conta de hospedagem web. Estava tudo no mesmo lugar. Onde devo colocar meu banco de dados Agora, no servidor 1, 2, ou 3? AUDIÊNCIA: 4. DAVID MALAN: 4, OK, todos bem, então vamos lá. Então eu vou colocar o meu database-- e vamos começar a rotular estes www, www, www. E eu vou dizer, este é o número quatro. E eu vou dizer db para banco de dados. OK, eu gosto disso. Que linha que eu deveria presumivelmente estar chegando aqui? AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, então o código, como discutiremos amanhã, presumivelmente é a mesma em todos os três servidores. Mas agora precisa se conectar não a um banco de dados rodando localmente, mas em outros lugares. E isso é bom. Nós podemos apenas dar o banco de dados a nomear, como nós temos, ou um número. E que tudo funciona bem. Mas o que nós fizemos? Temos horizontalmente escalado por ter três servidores em vez de uma que, é bom. Porque agora podemos lidar com três vezes mais carga. E melhor ainda, se um ou dois desses servidores vai para baixo, meu negócio pode continuar a operar. Porque eu ainda tenho um, mesmo que eu sou tipo de mancando em termos de performance. Mas o novo problema tem I introduzido, movendo a base de dados a este servidor separado em vez de 1, 2, e 3? AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, então agora eu tenho outro ponto único de falha. Se meu banco de dados morre, ou precisa ser atualizado, ou o que quer, agora com certeza, meu site está online. E eu posso servir estática, conteúdo imutável. Mas não posso deixar que os usuários fazem login ou alteração qualquer coisa ou pedir qualquer coisa, pior ainda. Porque se 4 é desligada, em seguida, 1, 2, e 3 realmente não pode falar com ele por definição. OK, então sim, e então é por isso Eu estou hesitando em desenhar esse. Então, vamos voltar a isso. Eu não quero continuar a empurrar-lo fora. Mas o quadro é muito rapidamente vai ficar estressante. Porque você precisa para começar ter dois de tudo. Na verdade, se você já viu o filme Contato há alguns anos atrás com Jodie Foster-- não? OK, então para os dois nós que vi Contact, há uma relação lá onde eles essencialmente comprei dois de algo ao invés de um, embora pelo dobro do preço. Por isso, foi uma espécie de brincalhão comentar no filme. É uma espécie de relacionado a isso. Poderíamos absolutamente fazer isso. E você acabou de custo -nos duas vezes mais dinheiro. Mas vamos voltar a isso. Então nós resolvemos isso. Então você sabe o quê? Isto é como uma ladeira escorregadia. Eu não quero lidar com ter de ter uma base de dados duplicada. É muito dinheiro. Você sabe o que? Quero ter meu banco de dados assim como na versão de um onde cada servidor tem o seu próprio banco de dados local. Então, eu estou indo só para desenhar db em cada uma delas. Portanto, agora cada servidor web é idêntico na medida uma vez que tem o mesmo código, a mesma ativos estáticos, mesmas imagens e texto e assim por diante. E cada um tem seu próprio banco de dados. Fixei o único ponto de problema de falha. Agora eu tenho um banco de dados. Não importa qual dois ou um destes coisas morrem, há sempre uma esquerda. Mas o novo problema criei que a solução da Dan evitado? AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, eu tem que sincronizá-los, certo? Porque ou eu preciso para sincronizar quem vai where-- em outras palavras, Se Alice visita minha local, e ela aconteceu para obter de forma aleatória ou redondo robined ou o que quer, a número um servidor, depois disso eu tenho que sempre mandá-la para o servidor 1. Por quê? Porque se eu enviá-la ao servidor 2, que vai para olhar como ela não existe lá. Eu não estou indo para ter seu histórico de pedidos. Eu não vou ter o seu perfil lá. E isso só se sente como ele está convidando problemas. E quando Bob visita, I tem que enviá-lo sempre para o mesmo servidor, 2, ou qualquer um, e Charlie para um terceiro, e consistentemente. Isto não é razoável, apesar de tudo. Isto é chamado particionamento de seu banco de dados. E na verdade isso era o que Facebook fez no início. Se você seguiu a história do Facebook, que começou aqui no campus como www.thefacebook.com. Em seguida, ele evoluiu uma vez Mark começou espalhando para outros campi e para ser harvard.thefacebook.com mit.thefacebook.com, e provavelmente bu.thefacebook.com, e semelhantes. E isso foi porque no início, eu não acho que você poderia ter amigos em todo campus. Mas isso é bom. Porque ninguém de Harvard tenho enviado para este servidor. Qualquer um de BU tenho enviado para este servidor. Qualquer um de MIT tem enviado para este server-- em teoria. Eu não sei bem toda a detalhes de implementação subjacentes. Mas ele as pessoas presumivelmente dividida por seu campus, onde a rede era. Então, isso é bom até o ponto onde você precisa de dois servidores para Harvard, ou três servidores para Harvard. E depois que a simplicidade tipo de quebra. Mas isso é uma abordagem razoável. Vamos sempre enviar Alice para o mesmo lugar, enviar sempre Bob para o mesmo lugar. Mas o que acontece se Alice de servidor ficar offline? Bob e Charlie ainda pode comprar coisas e fazer login no site. Mas Alice não pode. Então você já perdeu um terço de sua base de usuários. Talvez isso é melhor do que 100%? Mas talvez seria bom se pudéssemos ainda apoio 100% dos nossos usuários mesmo quando um terço da nossa servidores ficar off-line. Para que pudéssemos sincronizar o quê? Nem os utilizadores, por si só, mas o banco de dados em todos esses servidores. Então, agora nós meio que precisa de algum tipo de interconexão aqui, para que os próprios servidores pode sync-- razoável. E, na verdade, essa tecnologia existe. No mundo dos bancos de dados, não há a noção de bancos de dados master-slave, ou primária-secundária, onde, entre as características não é apenas para armazenar dados e responder com os dados, mas também apenas para constantemente sincronizar com o outro. Então toda vez que você escreve ou salvar algo a esse banco de dados, -lo imediatamente se "replicado" para as outras bases de dados bem. E qualquer momento que você lê-lo, não importa onde você está. Porque se, em teoria, todos eles sincronizados, você está indo para obter o mesmo ponto de vista dos dados. Então, isso soa perfeito. Tem que haver uma captura. O que pode ser a captura? AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, por isso três vezes tanta coisa poderia dar errado. Isso é uma realidade. Tudo isso poderia ser o mesmo em espírito. Mas alguém precisa configurá-los. Há uma maior probabilidade de que algo vai dar errado. Apenas combinatória você tem mais coisas propenso a erros. O que mais é ruim potencialmente? AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, então a sincronização pode ser ruim. Mesmo como você deve saber a partir de backups e tal, se você apenas está fazendo cegamente backups, o que se algo dar errado em um banco de dados? Você excluir algo que você não deveria. Você imediatamente replicada esse problema em qualquer outro lugar. Então, Victoria foi backups talking-- seria uma coisa boa aqui. E por isso vamos voltar a isso. E para ser claro, estamos falando não se trata de backups aqui per se. Nós estamos falando sobre a verdadeira replicação ou sincronização entre os servidores. Eles estão todos ao vivo. Eles não são feitos para ser usado para backups. AUDIÊNCIA: [inaudível] DAVID MALAN: O que é isso? AUDIÊNCIA: Higher-- DAVID MALAN: custo mais elevado. Nós já triplicou o custo para Certifique-se, embora, pelo menos em termos do hardware. Uma vez que é uma base de dados apenas um pedaço de software. E um servidor web é um pedaço de software. Provavelmente é livre se estamos usando qualquer número de coisas de código aberto. Mas se estamos usando algo como Oracle, estamos a pagar a Oracle mais dinheiro por licenças ou Microsoft para acesso. Tem que haver algum outro problema aqui. Não pode ser tão simples. Então, para seu ponto, eu acho que foi Kareem, para a geografia earlier-- ou não, Romana, era, por geography-- suponha que estamos sendo inteligentes sobre isso, e nós estamos colocando um de nossos servidores, e por sua vez os nossos bancos de dados, em os EUA, e outra na Europa, na outra América do Sul, outro na África, outra na Ásia, em qualquer lugar que pode querer todo o mundo. Nós já sabemos da nossa trace rotas que ponto A eo ponto B, se eles estão mais distantes, vão levar mais tempo. E se alguns de vocês têm usado ferramentas, como o Facebook ou Twitter ou quaisquer desses sites estes dias que estão constantemente a mudar por causa do utilizador dados criados, às vezes, se você bateu Recarregar ou abrir a mesma página em outro navegador, você vê versões diferentes, quase. Você pode ver o status de alguém atualizar aqui, mas não aqui, e então você recarregar, e então aparece e você recarregar novamente, e desaparece. Em outras palavras, manter um olho para isso, pelo menos, se você estiver usando sociais criação de redes especialmente. Mais uma vez, só porque o dados está mudando tão rapidamente, por vezes, os servidores não ficar fora de sincronia. E talvez seja um super pequena janela. Mas 200 milissegundos, talvez ainda mais do que isso-- é Vai levar algum valor diferente de zero de tempo para esses bancos de dados para sincronizar. E não somos apenas falando de um pedido. Se uma empresa tem milhares de utilizadores utilizando-o simultaneamente, eles podem tamponar. Em outras palavras, pode ser uma fila ou uma linha de espera antes de todos os banco de dados consultas podem obter sincronizados. Então talvez seja realmente alguns segundos. E de fato isso é verdade eu acho que mesmo a este dia com o Facebook, através do qual quando sincronizar a partir de Costa Leste à Costa Oeste, que tem um não-trivial o atraso de propagação, por assim dizer, que você acabou de tipo de ter de tolerar. E por isso não é muito um bug, pois é uma realidade que os usuários não pode ver os dados de correcção para, pelo menos alguns segundos. Eu vejo isso no Twitter um lote realmente onde às vezes eu vou twittar em uma janela, abra outro para em seguida, vê-lo para confirmar que de fato subiram, e ele não está lá ainda. E eu tenho que tipo de recarregar, recarregar, reload-- oh, aí está. E isso não é porque não foi salvo. Ele só não tem propagado para outros servidores. Portanto, este trade-off, demasiado-- você realmente quer se expor ao risco que, se o utilizador vai para a sua ordem história, na verdade não é lá ainda? Eu vejo isso em certos bancos. Ele sempre me irrita quando, bem, por um lado, você só pode ir como seis meses atrás em seus extratos bancários em alguns bancos, mesmo que em teoria deveriam ser capaz de ter tudo on-line. Eles simplesmente pegar o material off-line às vezes. Às vezes, demasiado-- o website é? Há um-- oh, é GoDaddy, eu acho. GoDaddy, quando check-out a compra de um nome de domínio ou algo assim, eles muitas vezes dar-lhe um link para o seu recebimento. E se você clicar no link à direita distância, que muitas vezes não funciona. Ele apenas diz, beco sem saída, nada aqui. E isso é muito por causa da estes atrasos de propagação. Porque por qualquer motivo, eles está tomando um pouco de tempo para gerar efectivamente que. Portanto, esta é uma espécie de como você deseja puxar seu cabelo para fora em algum ponto. Porque tudo o que você está tentando fazer é resolver um problema simples. E continuamos a criação de novos problemas para nós mesmos. Então, vamos ver se nós pode tipo de desfazer essa. Acontece que a combinação bancos de dados em todos os seus servidores web não é realmente a melhor prática. Geralmente, o que um engenheiro faria, ou arquiteto de sistemas, seria ter diferentes níveis de servidores. E só por causa do espaço, eu vou desenhar o seu banco de dados até aqui. Poderíamos ter banco de dados e número do servidor de quatro aqui que tem conexões com cada um desses servidores aqui. Portanto, esta pode ser a nossa frente acabar com camadas, como as pessoas iriam dizer. E esta seria a nossa camada de back-end. E isso significa exatamente isso estes enfrentar o usuário. E os bancos de dados não enfrentam o usuário. Nenhum usuário pode diretamente aceder à base de dados. Então, vamos agora talvez ir para baixo o percurso proposto Victoria. Este é um único ponto de falha. Isso me deixa desconfortável. Então, o que é talvez o mais solução óbvia? AUDIÊNCIA: [inaudível] DAVID MALAN: Desculpe, dizer que novamente. AUDIÊNCIA: [inaudível] DAVID MALAN: servidor não-produção. O que você quer dizer? AUDIÊNCIA: [inaudível] DAVID MALAN: Oh, OK, então backups. OK, para que pudéssemos fazer isso, com certeza. E, na verdade, isso é muito comumente feito. Este pode ser o número de banco de dados cinco. Mas isso é apenas ligado ao número de quatro. E você pode chamá-lo de um hot spare. Estas duas bases de dados pode ser configurada para apenas constantemente sincronizar entre si. E por isso, se esta máquina morre, por qualquer que seja estúpido razăo o disco rígido morre, alguém tropeçar o cabo, alguns software é falho e os trava a máquina ou crashes-- você poderia ter um ser humano literalmente desligue esta da parede e em vez disso ligar este em. E, em seguida, dentro de, digamos, um poucos minutos, talvez meia hora, você está de volta online. Não é grande, mas também não é horrível. E você não precisa se preocupar sobre quaisquer problemas de sincronização. Porque tudo já está lá. Porque você tinha uma perfeita de backup pronto para ir. Você poderia ser um pouco extravagante sobre isso, como algumas pessoas costumam fazer, onde você pode ter o número de banco de dados de quatro aqui, número de banco de dados cinco aqui, que estão conversando entre si. Mas você também tem essa tipo de arrangement-- e deliberadamente parece confuso, porque é-- onde toda a servidores front-end pode conversar com todos os servidores de back-end. E por isso, se esse banco de dados não responder, esses servidores front-end têm ter programação código neles que diz: se você não conseguir um ligação a este banco de dados, a principal começa imediatamente falando para o secundário. Mas esta empurra o agora a complexidade do código. E agora seus desenvolvedores, o seu software desenvolvedores, tem que saber sobre isso. E você está tipo de amarrar o código que você está escrevendo para o seu back-end real detalhes de implementação, que torna mais difícil, especialmente numa maior empresa ou um site maior, onde você não necessariamente quer que os programadores de ter para saber como o banco de dados engenheiros estão fazendo seu trabalho. Você pode querer manter essas funções tipo de funcionalmente distintos de modo que há esta camada de abstracção entre os dois. Então, como podemos corrigir isso? Bem, nós meio que resolvido este problema uma vez antes. Por que não vamos colocar um dos estas coisas aqui, onde ele fala em vez de número quatro e cinco, todos os servidores Web front-end falar com este intermediário, e o intermediário nas rotas de transformar seus dados? Na verdade, o que poderia ser um bom nome para essa coisa? AUDIÊNCIA: [inaudível] DAVID MALAN: OK, gerente de banco de dados. Mas o que pode um termo ser que poderíamos reutilizar para este dispositivo? Estamos equilibrando. É, portanto, na verdade, eu sou não sendo justo aqui. Assim, um balanceador de carga implicaria que estamos alternando frente e para trás aqui, que não necessita ser realmente o caso. Portanto, há algumas maneiras que podemos fazer isso. Se este for de facto um equilibrador de carga, o história é exatamente a mesma de antes. Alguns dos pedidos ir a 4. Alguns deles vão para 5. E isso é bom. Porque agora podemos lidar com o dobro do rendimento. Mas esta conexão aqui é super importante. Eles têm de manter-se constantemente sincronizada e esperançosamente não são geograficamente muito distantes assim que a sincronização é essencialmente instantâneo. Caso contrário, pode ter um problema. Então isso não é ruim. Mas, novamente, nós temos introduzido um novo problema. O problema foi que eu apenas recriado? Ponto unico de falha. Então, qual é a solução para isso? Assim como Victoria de fond de gastar dinheiro, podemos levar esse cara para fora e fazer isso. E eu só vou mover aqui espaço suficiente. E isso vai ser um pouco confuso. Eu estou indo para manter as linhas de desenho. Suponhamos que todos essas linhas vão para ambos? Uma técnica muito comum aqui seria de usar uma técnica chamada de batimento cardíaco em que cada um destes dispositivos, balanceadores de carga de esquerda e direita, ou o que quiser chamá-los, está constantemente dizendo, eu estou vivo, Estou vivo, eu estou vivo, eu estou vivo. Um deles, por padrão actua como primário. Então, todo o tráfego está sendo encaminhado através a da esquerda, por exemplo, por padrão, de forma arbitrária. Mas logo que o cara do lado direito não ouvir o cara esquerda mais, a da direita é programado para automaticamente, por exemplo, assumir o endereço IP do uma do lado esquerdo, e, portanto, tornar-se o primário, e talvez envie um e-mail ou uma mensagem de texto para os seres humanos para dizer, hey, a principal esquerda é offline. Vou me tornar primário para agora. Assim, torna-se vice-presidente presidente, por assim dizer. E alguém tem que ir salvar o presidente, se quiser. Porque agora temos um temporária ponto unico de falha. Assim como complicado ou estressante como isso pode parecer para começar a ser, isto é como você resolver estes problemas. Você faz jogar o dinheiro para ele. Você joga hardware para ele. Mas infelizmente você adicionar complexidade para ele. Mas o resultado, em última análise, que é você tem um muito mais, em teoria, arquitetura robusta. Ainda não é perfeito. Porque mesmo quando nós poderíamos have-- não ter um único ponto de falha. Temos agora pontos duplos de fracasso. Mas se duas coisas dão errado, o que absolutamente podia, nós ainda vamos estar offline. E assim muito comum no indústria é descrever seu tempo em termos de noves. E uma espécie de meta a aspirar é de 99,999% do tempo seu site está online. Ou melhor ainda, adicionar uma mais alguns noves a isso. Infelizmente, estes noves são muito caros. E vamos realmente fazer isso. Então, se eu abrir a minha calculadora grande de novo, 365 dias por ano, 24 horas em um dia, 60 minutos em uma hora, e 60 segundos em um minuto, isso é quantos segundos existem em um ano se eu fizesse isso corretamente. Então, se nós vezes isso por 0,99999, isso é quanto tempo queremos aspirar. Então isso significa que devemos estar-se desta quantidade de segundos durante o ano. Então, se eu agora subtrair o valor original, ou melhor, este novo valor do first-- 316 segundos, que, naturalmente, é de cinco minutos. Então, se o seu site ou sua empresa é alegando "cinco noves", em que você está até 99,99% do tempo, que significa que é melhor ter sido inteligente o suficiente e rápida suficiente e lave o suficiente com recursos que seus servidores são apenas off-line cinco minutos fora do ano. É um caro e coisa difícil de aspirar. Portanto, é um trade-off, também. 99,999% do tempo é bastante duro danado e caro. Cinco minutes-- você mal consegue para o servidor de substituir fisicamente algo que deu errado. E é por isso que começamos a fiação coisas juntos mais complicados priori de modo que os computadores pode classificar de corrigir-se. Sim. AUDIÊNCIA: [inaudível] DAVID MALAN: o problema poderia estar em qualquer número de lugares. E em fact-- AUDIÊNCIA: [inaudível] DAVID MALAN: Absolutamente, absolutamente. E como a imagem é ficando mais complicado, Poderia ser a servidores web. Pode ser a energia para o edifício. Poderia ser algo físico, como os cabos ficou desgastado ou expulso. Pode ser a base de dados não está respondendo. Pode ser que actualiza o seu funcionamento sistema e algo está pendurado. Portanto, há tantas outras partes móveis. E então um monte de engenharia que tem que ir atrás desta é realmente apenas o comércio offs, como forma muito tempo, quanto dinheiro é, na verdade, vale a pena, e quais são as ameaças você está realmente preocupado? Por exemplo, no cursos que ensinam em Harvard, usamos um monte de computação em nuvem, que vamos começar dando uma olhada em agora, Na verdade, onde usamos Amazon Web Services. Só porque essa é a aquele que começou com. Mas há cada vez mais nos dias de hoje do Google e Microsoft e outros. E nós conscientemente optar por colocar tudo de máquinas virtuais de nossos cursos, como são chamados, na Acho é Virgínia Ocidental do centro de dados. A maioria dos nossos alunos acontecerá a ser os EUA, embora existam certamente alguns internacionalmente. Mas a realidade é que é apenas mais simples e é mais barato para nós colocar todos os ovos no cesto Virgínia, embora eu saiba que se algo der errado na Virgínia, como tem ocasionalmente happened-- como se há um furacão ou de algum tempo evento como esse, se há alguma problema rede elétrica ou a como-- tudo dos dados de nossos cursos pode ficar offline para algum número de minutos ou horas ou até mais. Mas a quantidade de complexidade que seria necessária, e da quantidade de dinheiro que seria ser necessária, para operar tudo em paralelo na Europa ou na Califórnia simplesmente não faz muito sentido. Portanto, é um comércio racional off, mas um doloroso quando você está realmente ter esse tempo de inatividade. Bem, vamos transição agora para algumas das soluções baseadas na nuvem para alguns destes problemas. Tudo o que tenho sido até agora discutir é uma espécie de problemas que têm estado conosco por algum tempo, se você tem o seu próprio servidores de sua empresa, se você ir a um co-location colocar como um centro de dados e compartilhamento espaço com outra pessoa, ou hoje em dia na nuvem. E o que é agradável sobre a nuvem é que todos destas coisas que eu sou desenho como objectos físicos Agora pode ser pensado como tipo de objetos virtuais na nuvem que são simulado com o software. Em outras palavras, a computadores hoje, servidores de hoje, como a imagem Dell Eu mostrei anteriormente, são tão rápidos, têm tanta RAM, tanto CPU, tanto em disco espaço, que as pessoas têm escrito software para partição virtualmente um servidor para dentro da ilusão de que sendo dois servidores, ou 200 servidores, de forma que cada um de nós clientes tem a ilusão de ter não apenas uma conta em algum web hospedar, mas a nossa própria máquina que estamos aluguer de outra pessoa. Mas é uma máquina virtual em na medida em que um servidor de Dell, -lo novamente pode ser particionado para dentro duas ou 200 ou mais máquinas virtuais, tudo o que dar a alguém administrativa acesso, mas de uma forma onde nenhum de nós sabe ou pode acessar outra virtual máquinas no mesmo hardware. Então, para pintar um quadro em lâminas de hoje, Eu tenho esse tiro aqui a partir de um site chamado Docker. Portanto, este é um pouco mais detalhes do que realmente precisa. Mas se você ver isso como seu infrastructure-- então apenas o seu próprio hardware, seus servidores, as prateleiras, os dados centro, e todos isso-- você faria tipicamente executar um sistema operacional hospedeiro. Portanto, algo como-- poderia ser Windows. Não seria Mac OS. Porque isso não é realmente empresa nos dias de hoje. Portanto, seria Linux ou Solaris ou Unix ou BSD ou FreeBSD ou qualquer número de outros sistemas operacionais que são gratuitos ou comercial. E então você executar um programa, programa especial, chamado de hypervisor, ou monitor de máquina virtual, o VMM. E estes são os produtos, se você estiver familiar, como VMware ou VirtualBox ou o Virtual PC ou outros. E o que esses programas fazem é exatamente que característica que eu descrevi anteriormente. Ela cria a ilusão que uma máquina física Pode haver várias máquinas virtuais. E assim estas caixas coloridas acima da parte superior é pintando um retrato do seguinte. Este hypervisor, este pedaço de software, chamá-lo VMware, rodando em algum outro sistema operacional, chamá-lo de Linux, está criando a ilusão de que este computador físico é, na verdade, um, dois, três computadores virtuais. Então eu agora comprados, como o proprietário de este hardware, um computador físico. E agora eu estou alugando para três clientes. E esses três clientes todos pensam eles têm uma máquina virtual dedicada. E não é Bait and Switch. É mais divulgação que você estiver usando uma máquina virtual. Mas tecnologicamente, todos nós tem total controle administrativo sobre cada um dos hóspedes sistemas operacionais, o que poderia ser qualquer número de sistemas operativos. Posso instalar o que eu quiser. Eu posso atualizá-lo como eu quero. E eu nem sequer têm de saber ou se preocupam com o outro operacional sistemas nesse computador, as outras máquinas virtuais, a menos que o proprietário de tudo isso cinza material está sendo um pouco ganancioso e é exagerar seus recursos. Então, se você está tomando um máquina física e vendê-lo para 200, mas não 400 clientes, em algum momento vamos tropeçar em aqueles mesmos problemas de desempenho como antes. Porque você só tem uma finita quantidade de disco e a RAM e assim por diante. E uma máquina virtual é apenas um programa que é fingindo ser um computador de pleno direito. Então você começa o que você paga aqui. Então você vai encontrar on-line que você pode pagar uma reputada empresa talvez $ 100 por mês para sua própria máquina virtual, ou seu próprio servidor virtual privada, que é um outro termo para isso. Ou você pode encontrar alguma mosca pela noite onde você pagar US $ 5,99 por mês para sua própria máquina virtual. Mas as probabilidades são que você não tem quase tanto o desempenho disponível para você, porque elas foram exagerar-lo assim, do que você faria com o maior nível de serviço ou de melhor fornecedor. Então o que isso realmente significa para nós? Então deixe-me ir a este. Eu estou indo para ir para aws.amazon.com. Só porque eles têm um bom leque de opções. Mas estes mesmos ensinamentos aplicam-se a um Toda monte de outros fornecedores de nuvem. Infelizmente, é muitas vezes mais comercialização falar do que qualquer coisa. E esta continua a mudar. Então você vai a um site como este. E isso realmente não faz dizer-lhe muita coisa. E mesmo que eu, como eu olhar para isso, não realmente sabe o que qualquer uma dessas coisas necessariamente fazer até que eu mergulhar. Mas vamos começar do lado esquerdo, Compute. E eu vou clique isto. E agora a Amazon tem um francamente esmagadora número de serviços nos dias de hoje. Mas a Amazon EC2 é talvez o mais simples. Amazon EC2 criará para nós exatamente a imagem que vimos há pouco. É assim que eles fazem um monte de seu dinheiro na nuvem. Aparentemente, Netflix e outros estão na nuvem com eles. Isso tudo é tipicamente marketing falar fofo. Então, o que eu quero fazer é ir para Pricing-- ou melhor, vamos para Instâncias primeiro apenas para pintar uma imagem deste. Então, isso vai variar de acordo com fornecedor. E nós não precisamos ficar muito profundamente em as ervas daninhas aqui de como tudo isso funciona. Mas a forma como Amazon, por exemplo, aluga-lhe uma máquina virtual ou um servidor na nuvem é que eles têm este tipo de nomes engraçados, como t2.nano, o que significa pequeno, ou t2.large, o que significa que grande. Cada um deles dá-lhe tanto um ou dois CPUs virtuais. Por que é uma CPU virtual? Bem, a máquina física pode ter 64 ou mais CPUs reais. Mas, novamente, através de software, eles criam a ilusão que uma máquina que pode ser dividiram a vários usuários. Assim, podemos pensar nisso como ter um CPU Intel ou dois. créditos de CPU por hour-- eu iria tem que ler a cópia fina sobre o que isso realmente significa. Isso significa que a quantidade da máquina você pode usar por hora vis-a-vis outros clientes nesse hardware. Aqui é o quanto de memória RAM ou memória que você get-- quer metade de um gigabyte, ou 500 megabytes ou 1 gigabyte, ou 2. E, em seguida, o armazenamento refere-se a apenas que tipo de discos que lhe dão. Há armazenamento diferente tecnologias que eles oferecem. Mas o mais interessante do que isso em seguida, pode ser o preço. Então, se você é o CTO ou um engenheiro que não pretende executar um servidor na sua escritório, por qualquer motivo, e é demasiado complicado ou caro comprar servidores e co-localizá-los e pagar o aluguel em algum espaço gaiola física somewhere-- você só quer sentar em seu laptop tarde da noite, digitar suas informações de cartão de crédito, e alugar servidores no cloud-- bem, podemos fazê-lo aqui. Eu estou indo para ir para baixo a-- Linux é um sistema operacional popular. E vamos ter uma noção das coisas. Whoops-- muito grande. Então, vamos olhar para o seu menor máquina virtual, que parece ter, para os nossos propósitos, um CPU e 500 megabytes de memória RAM. Isso é muito pequena. Mas, francamente, servidores web não o fazem precisa fazer tudo o que muito. Você tem melhores características em seu laptop. Mas você não precisa aqueles Ficha estes dias para as coisas. Você vai pagar R $ 0,0065 por hora. Então vamos ver. Se há 24 horas em um dia, e estamos pagando esse tanto por hora, que vai custar US $ 0,15 para alugar que nomeadamente servidor na nuvem. E isso é só por um dia. Se fizermos isso 365-- $ 57 a alugar esse servidor particular. Por isso soa super barato. Isso também é super baixo desempenho. Então, nós, para os cursos de ensino aqui, tendem usar Acho t2.smalls ou t2.mediums. E nós podemos ter algumas centenas usuários, alguns milhares de usuários, total. É bastante modesto. Então, vamos ver o que isso custaria. Então, se eu fizer isso vezes custo 24 horas vezes 365, este $ 225. E para os cursos Eu ensino, geralmente executar dois de tudo, por redundância e também para o desempenho. Assim, poderíamos gastar, portanto, US $ 500 para os servidores que pode precisar por ano. Agora, se você precisar de mais performance-- vamos dar uma olhada em memória. Nós conversamos sobre a memória um pouco. E se você precisar de mais memory-- e 64 gigabytes é o número que eu mantido mentioning-- isso é quase US $ 1 por hora. E você pode muito rapidamente ver onde este goes-- assim 24 horas vezes 365. Portanto, agora é US $ 8.000 por ano para um servidor decente. Então, em algum momento, não há este ponto de inflexão onde agora nós poderia gastar US $ 6.000 provavelmente, e comprar uma máquina como essa e amortizar seu custo ao longo talvez dois, três anos, a vida útil da máquina. Mas o que pode empurrá-lo em favorecer ou desfavor de transação uma máquina na nuvem como este? Mais uma vez, esta é comparável, provavelmente, a um desses servidores Dell vimos retratado um pouco atrás. AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, isso é uma enorme vantagem. Porque não estamos comprando o máquina, não temos para unbox-lo. Não temos para levantá-la. Não temos a ligá-lo em nosso rack. Não temos a ligá-lo. Nós não têm de pagar a conta de energia elétrica. Não temos de virar o ar condicionado ligado. Quando um disco rígido morre, não temos para conduzir em no meio da noite para fixar isso. Não temos para configurar o monitoramento. Não temos a-- a lista continua e na de todas as coisas físicas você não precisa fazer por causa da "nuvem". E para ficar claro, a computação em nuvem é este termo muito usado em demasia. É realmente significa apenas pagar alguém outra para executar servidores para você, ou alugar o espaço em servidores de outra pessoa. Assim, o termo "cloud computing" é nova. A ideia é décadas de idade. Então, isso é muito convincente. E o que mais você recebe? Bem, você também terá a capacidade de fazer tudo em um laptop em casa. Em outras palavras, todos os fotos que eu estava apenas drawing-- e não foi há muito tempo que, mesmo Eu estava rastejando em um andar servidor conectando os cabos para cada uma das linhas que você vê, e atualizar o operacional sistemas, e as mudanças de unidades ao redor. Há um monte de fisicalidade para tudo isso. Mas o que é bonito sobre Virtual máquinas, como o nome tipo de sugere, agora não são baseados na web as interfaces em que se você quiser o equivalente de uma linha a partir deste servidor para outro, basta digitar, tipo, tipo, clique e arraste, clique em Enviar e voila, você tê-lo prendido acima virtualmente. Porque tudo é feito no software. E a razão é feito em software é novamente porque temos tanta RAM e assim muito CPU disponível para nós nos dias de hoje, embora todos esse material leva tempo, é mais lento para executar as coisas no software do que hardware, assim como é mais lento para usar uma mecânica dispositivo como um disco rígido de RAM, algo puramente eletrônico. Nós temos tantos recursos disponível para nós. Nós, seres humanos são uma espécie de invariavelmente lenta. E agora as máquinas podem fazer muito mais por unidade de tempo. Nós temos essas habilidades para fazer as coisas virtualmente. E eu vou dizer para cursos Eu ensino, por exemplo, aqui, temos cerca de talvez uma dúzia ou de modo total de máquinas virtuais assim sendo executado em um dado tempo fazendo coisas front-end, fazendo de volta o material final. Temos todo o nosso armazenamento. Assim, qualquer vídeos, inclusive coisas como esta que estamos filmando, vamos acabar colocando em nuvem. Amazon tem serviços chamados Amazon S3, o seu serviço de armazenamento simples, que é apenas como espaço em disco na nuvem. Eles têm algo Chamado CloudFront, que é o serviço CDN, um conteúdo serviço de rede de distribuição, que significa eles tomam todos os seus arquivos e para você automagicamente replicá-lo ao redor do mundo. Assim, eles não fazê-lo preventivamente. Mas a primeira vez que alguém na Índia solicita o arquivo, eles vão potencialmente cache-lo localmente. Pela primeira vez na China, o primeira vez no Brasil que acontece, eles vão começar a armazenar em cache-lo localmente. E você não tem que fazer nada disso. E por isso é tão incrivelmente convincente nos dias de hoje para mover as coisas na nuvem. Porque você tem essa capacidade, literalmente, para seres humanos não têm de fazer quase tanto trabalho. E você literalmente não precisa de tantos os seres humanos fazer estes trabalhos anymore-- "ops", ou funções operacionais, mais. Você realmente só precisa promotores e menos engenheiros que podem apenas fazer coisas virtualmente. Na verdade, apenas para dar -lhe um sentido a isso, deixe-me ir para a fixação de preços para um outro produto aqui. Vamos ver algo como CDN S3. Portanto, este é essencialmente um disco rígido virtual na nuvem. E se desloque-se para pricing-- por isso é $ 0,007 por gigabyte. E that's-- como vamos fazer isso? Eu acho que é por mês. Então, se isso é por month-- ou por dia? Dan, é este por dia? Este é por mês, OK. Então, se isso é por month-- desculpe, é o US $ 0,03 por mês. Há 12 meses do ano. Assim, a quantidade de dados pode você armazenar na nuvem? Um gigabyte não é enorme, mas eu não sei, como 1 terabyte, assim como 1.000 desses. Isso não é tanto assim. É US $ 368 para armazenar um terabyte de dados em nuvem da Amazon. Então, quais são alguns dos as soluções de compromisso, então? Não podem todos ser bom. Nada que falamos hoje é espécie de sem um catch ou um custo. Então, o que é ruim sobre a movimentação tudo para a nuvem? AUDIÊNCIA: Segurança. DAVID MALAN: OK, o que você quer dizer? AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, claro. E você realmente quer alguns engenheiros aleatórios no Amazon que você nunca vai encontrar tendo acesso físico aos computadores, e se eles realmente queria, o acesso virtual? E mesmo que em teoria software-- bem, A criptografia pode absolutamente protegê-lo contra isso. Então, se o que você está armazenar em seus servidores encrypted-- é uma preocupação menor. Mas assim que um ser humano tem física acesso a uma máquina, criptografia de lado, todas as apostas são uma espécie de off. Você pode saber de outros tempos que os PCs, especialmente, mesmo se você tivesse essas coisas chamados de "senhas do BIOS," eram quando seu desktop arrancado, você será solicitado com uma senha que não tem nada a ver com Windows, você pode normalmente basta abrir o chassi do máquina, encontrar minúsculos pinos, e usar algo chamado um jumper e basta ligar esses dois fios para cerca de um segundo, completando assim um circuito. E que iria eliminar a senha. Então, quando você tem acesso físico a um dispositivo, você pode fazer coisas assim. Você pode remover o disco rígido. Você pode ter acesso a ele dessa forma. E assim é por isso que, em caso do Dropbox, por exemplo, é um pouco preocupante que não só eles tem os dados, mesmo que seja criptografado, eles também têm a chave. Outras preocupações? AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, é muito true-- os Googles, as maçãs, as Microsofts do mundo. E, de fato, há quanto tempo você teve o seu iPhone para? Sim, mais ou menos. AUDIÊNCIA: [inaudível] DAVID MALAN: Eu sinto muito? Você está entre aqueles que tem um iPhone, certo? AUDIÊNCIA: Sim. DAVID MALAN: Quanto tempo você já teve o seu iPhone? AUDIÊNCIA: [inaudível] DAVID MALAN: OK, então A Apple literalmente sabe onde você esteve a cada hora de o dia durante os últimos cinco anos. AUDIÊNCIA: [inaudível] DAVID MALAN: Qual é um recurso maravilhoso. AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, mas trade-off com certeza. AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, é muito fácil. AUDIÊNCIA: [inaudível] DAVID MALAN: Outras desvantagens? AUDIÊNCIA: [inaudível] DAVID MALAN: Absolutely-- tecnologicamente, economicamente, é muito atraente para tipo de ganhar estas economias de escala e mover tudo em o chamado nuvem. Mas você provavelmente não quer ir com alguns dos maiores peixes, as amazonas, o Googles, o Microsofts-- Rackspace é bastante big-- e outros poucos, e não necessariamente voar por pessoas noite para quem é muito fácil de fazer este tipo de técnica hoje em dia. E isso é para quem pode pagar US $ 5,99 por mês para. Mas você certamente vai obter o que você paga. Quando você diz que [inaudível], que é quando coisas como estas cinco noves vir para cima, segundo o qual mesmo se tecnologicamente não podemos garantir 99.999, vamos construir em algum tipo da pena ao contrato de modo que, se isso acontecer, pelo menos, há algum custo para nós, o fornecedor. E isso é o que você faria normalmente ser levá-los a concordar. AUDIÊNCIA: [inaudível] DAVID MALAN: E o uma espécie de bênção é que, mesmo quando ir para baixo, para instância, ou mesmo algumas empresas, a realidade é Amazon, por exemplo, tem tantos clientes danado, clientes bem conhecidos, que operam a partir de determinados centros de dados que quando algo realmente der errado, como atos de Deus e tempo e tal, se há qualquer tipo de forro de prata, é que você está em muito boa companhia. Seu site pode estar offline. Mas assim é como a metade de a internet popular. E por isso é sem dúvida um pouco mais palatável para os seus clientes se for mais de uma internet coisa que uma coisa acme.com. Mas isso é um pouco de uma fraude. Assim, em termos de outras coisas para olhar, apenas para que não descartam outros, se você vai para Microsoft Azure, eles ter ambos Linux e coisas do Windows que é comparável ao da Amazon. Se você vai para o Google Compute Engine, eles têm algo semelhante também. E só para completar estas ofertas de nuvem, Eu vou fazer menção de uma outra coisa. Este é um site popular que é representante de uma classe de tecnologias. Os Acabamos de falar sobre, Amazon, seria IAAS, Infraestrutura como serviço, onde você tipo de hardware físico como um serviço. Há SAAS. Na verdade, deixe-me anotar estes para baixo. Infra-estrutura IAAS-- Como um serviço, SaaS e PAAS, que são siglas extremamente confusas que descrevem três diferentes tipos de coisas. E as próprias siglas realmente não importa. Este é todo o material nuvem que acabamos falando, o material nível inferior, o virtualização de hardware e armazenamento no assim chamado nuvem, seja Amazon, Microsoft, Google ou outro. Software como um serviço-- todos nós tipo de usar este. Se você usa o Google Apps para o Gmail ou o calendário, qualquer um destes web- aplicações que 10 anos atrás, teria ícones dupla clicado nosso desktop, software como serviço é agora realmente aplicação web. E plataforma como um Serviço tipo de depende. E um exemplo que eu vou te dar aqui no contexto da nuvem computing-- há uma empresa que é bastante populares nos dias de hoje, Heroku. E eles são um serviço, uma plataforma, se quiserem, que roda em cima do infra-estrutura da Amazon. E eles apenas torná-lo ainda mais fácil para os desenvolvedores e engenheiros para obter aplicações web-based on-line. É uma dor, inicialmente, para usar Amazon Web Services e outras coisas. Porque você realmente tem conhecer e compreender sobre bancos de dados e servidores web e balanceadores de carga e todas as coisas Acabei de falar sobre. Porque toda a Amazon tem feito não é escondido esses desafios de design. Eles acabaram virtualizado-los e movê-los em um navegador, em software em vez de hardware. Mas empresas como a Heroku e outros prestadores de PaaS, plataforma como serviço, eles usam esses fundamentos barebone que nós acabamos de falar, e mais fácil de construir usar o software em cima dela de modo que, se você deseja obter um web- candidatura on-line nos dias de hoje, você certamente tem que sabe como programar. Você precisa saber Java ou Python ou PHP ou Ruby ou um monte de outras línguas. Mas você também precisa de um lugar para colocá-lo. E nós conversamos antes sobre recebendo uma empresa de hospedagem. Isso é uma espécie de como meados dos anos 2000 abordagem para a obtenção de algo online. Hoje em dia você pode, em vez pagar alguém como Heroku alguns dólares por mês. E, essencialmente, uma vez que você feito alguma configuração inicial, para atualizar seu site, você basta digitar um comando em uma janela. E qualquer código que você escreveu aqui em seu laptop imediatamente é distribuído para qualquer número de servidores na nuvem. E Heroku se encarrega de toda a complexidade. Eles imaginam todo o banco de dados material, todo o balanceamento de carga, todas as dores de cabeça que temos apenas escrito na placa, e ocultar tudo isso para você. E, em troca, você só pagá-los um pouco mais. Então você tem essas infra-estruturas como um serviço, plataformas como um serviço, e, em seguida, software como um serviço. É, mais uma vez, este abstração ou camadas. Dúvidas sobre a nuvem ou construção da própria infra-estrutura? Tudo bem, isso era muito. Por que não podemos ir em frente e levar a nossa pausa de 15 minutos aqui. Vamos voltar com alguns novos conceitos e um pouco de hands-on oportunidades antes da noite acabou.