
Portuguese: 
A arquitetura originalmente se parecia com isso [br]-- basicamente tínhamos uma máquina
que estávamos alugando dessa companhia--[br]Não vou falar o nome deles, são ruins.
Vou tentar citar apenas empresas que eu gosto.
Mas, estávamos alugando uma máquina [br]e rodávamos isso. Isso era todo o Reddit.
Também estávamos rodando post quiz [br]nessa outra máquina e era isso.
Não tínhamos nenhum cache complicado. [br]Só usava em tabelas hash de memória.
O banco de dados tinha uma estrutura que [br]podia ser adivinhada facilmente.
Tínhamos uma tabela para links, [br]uma para votos, e uma para usuários.
Foi assim que começamos. Não tínhamos [br]muita coisa no Reddit.
Não tínhamos comentários por um bom tempo[br]e os links e tabelas de votos
eram basicamente como as[br]que representei nessa aula.
Elas tinham pontuação, título, URL. [br]O voto tinha um ID extenso, uma direção.
O usuário tinha um nome e uma senha.
Perceba que eu não disse o hash da senha--[br]Na verdade, eu a salvava
e contei a vocês aquela história de [br]como tive problemas ao fazer isso.
Nós fazíamos muitas conexões--isso durou [br]provavelmente uns 6 meses.
Após 6 meses, contratamos alguns caras[br]--na verdade, fundimos nossa empresa
com outra chamada Infogami e isso [br]nos trouxe o engenheiro Aaron Swartz
e contratamos Chris Slowe [br]que estava fazendo PHD na época.

English: 
The architecture originally looked something like this
--we basically had one machine
that we were renting from this company--I'm not even
going to mention their name, they're so bad.
I'll try to only mention companies I like.
But we are renting one machine and let's 
basically ran this, and this is all of Reddit.
We're also running post quiz on this 
machine and that was it.
We didn't have any fancy caching. 
I just used in-memory hash tables.
The database had a fairly guessable structure.
We had a table for links, we had a table for votes, 
and a table for users.
That may have been it to begin with. 
There wasn't a whole lot to Reddit.
We didn't have any comments for a long while, 
and the links and votes tables
were basically kind of as I represented them in this lecture.
These had things like score, title, URL. 
Vote basically had a length ID, a direction.
User had a name and a password.
Notice I didn't say password hash--
I actually stored the password
and told you that story how I'd gotten 
trouble as a result of doing that.
We actually did a lot of joins--this lasted 
probably about for 6 months or so.
After 6 months, we hired a couple guys
--well, we kind of merged our company
with another company called Infogami 
and that brought us another engineer
named Aaron Swartz and we hired Chris Slowe 
who was doing a PHD at the time.

Japanese: 
ではRedditのアーキテクチャについて説明します
名前は伏せますが[br]初めにマシンを1台レンタルした会社は最悪でした
いい会社のことだけ話しますね
ともかく そのマシンがRedditのすべてでした
そのマシンでPostgreSQLを動作させ
またインメモリハッシュテーブルを使っていました
データベースは十分推測可能な構造で
テーブルはリンク用と投票用と[br]ユーザ用のものがありました
最初はそれくらいでしたね
長いこと投稿はありませんでした
リンクと投票のテーブルにはスコアとタイトルと
URLがあり[br]投票にはIDとディレクションが必要で
ユーザは名前とパスワードを持っていました
私はパスワードを保存していたのですが
それがしばしばトラブルを招いたのです
私たちは半年くらい結合を繰り返していました
その後スタッフを2人雇いました
Infogamiという会社と合併して
アーロン･スワーツとクリス･スロウを迎えたのです

Spanish: 
La aquitectura originalmente lucía así:
Básicamente teníamos una máquina[br]que rentábamos de esta empresa
--ni siquiera mencionaré su nombre,[br]son muy malos.
Trataré de mencionar solamente[br]empresas que me agraden.
Pero estábamos rentando una máquina
que nos permitía ejecutar esto,[br]y eso era todo de Reddit.
También ejecutábamos PostgreSQL[br]en esta máquina y eso era todo.
Ni siquiera teníamos un modo[br]de almacenar caché muy sofisticado.
Sólo usábamos tablas hash en la memoria.
La base de datos tenía una estructura[br]bastante predecible.
Teníamos una tabla para links,
una tabla para votos,
y una tabla para usuarios.
Eso pudo haber sido para empezar.
No había mucho en Reddit.[br]No hubo ningún comentario en mucho tiempo.
Y los links y las tablas de votos
eran básicamente de la forma[br]en que los representé en esta lección.
Tenían cosas como puntaje, título, URL.
Los votos tenían básicamente[br]un ID de link, una dirección.
Un usuario tenía un nombre y un password.
Nota que no dije password hash.
Efectivamente, almacenábamos el password
y te conté esa historia de cómo[br]me metí en problemas por hacer eso.
Hicimos una gran cantidad de joins.
Esto duró probablemente[br]unos 6 meses o algo así.
Luego de 6 meses,[br]contratamos un par de chicos
--bueno, hicimos una especie de fusión[br]de nuestra empresa con otra empresa
llamada Infogami
y eso nos trajo otro ingeniero[br]llamado Aaron Swartz,
y contratamos a Chris Slowe,[br]que estaba haciendo un PhD en ese tiempo.

English: 
So the four of us--me, Alexis, Aaron and Chris--
worked on Reddit then.
And the first change that Aaron and I made together was
we reroute Reddit from Lisp to Python.
And then at about the same time, we pulled 
the database out of that one machine
and put it on the second machine, 
and so now we had two machines
with this hosting company--our app server and our DB.
And the switch from Lisp to Python 
was kind of performance agnostic.
Lisp was a faster language but our 
rewrite of Python was better,
so the code actually run at about the same speed.
Going from one machine to two machines gave us something on the order of 4x speed improvement.
Remember how I talked in the last lecture about 
separation of services--separating our app server
from our database gave us a tremendous 
speed improvement because these two
pieces of software run totally different
--use computers in a totally different way.
That was the first architecture change we made.
I think we upgraded this machine once or twice 
to like a more beefy machine.
At the time we are still plagued by downtime, 
whether it was our Lisp or a Python program,
it would occasionally just crash and we'd have to get notified--more often I'd just get called.

Japanese: 
私とアレクシスとアーロンとクリスの4人になりました
アーロンと私でまず最初にしたのは
LISPからPythonへの移行でした
それとほぼ同時に[br]データベースをマシンから取り出し
2台目のマシンに移行しました
ホストに2台のサーバが入ったのです
このLISPからPythonへの移行が大変でした
LISPは速いのですがPythonは更によく
ほぼ同じ速さでコードが動きました
1台から2台のマシンに移行すると[br]4倍のスピードになるのです
私の前の講義を思い出してください　APサーバと
データベースを分けると[br]処理速度が格段に上がると言いましたね
別々に動く2つのソフトを[br]別々のマシンで動かせるからです
これが最初の変更でした
マシンは1～2度アップグレードしました
それでもまだダウンタイムに悩まされていました
時々わけもなくクラッシュするので[br]私はよく呼び出されました

Spanish: 
Entonces, nosotros cuatro[br]--yo, Alexis, Aaron y Chris--
trabajábamos en Reddit.
Y el primer cambio que Aaron y yo[br]hicimos en conjunto
fue re-direccionar Reddit[br]desde Lisp a Python.
Y luego, casi al mismo tiempo, sacamos[br]la base de datos de esa única máquina
y la pusimos en una segunda máquina.
Así que ahora teníamos dos máquinas[br]con esta empresa de alojamiento web,
nuestro servidor de aplicaciones[br]y nuestra base de datos.
Y el cambio de Lisp a Python,[br]fue un tipo de desempeño agnóstico.
Lisp era un lenguaje más rápido,
pero nuestra reescritura[br]de Python era mejor,
así que realmente el código[br]se ejecutaba a la misma velocidad.
Aumentar de una máquina a dos,
nos dió una mejora[br]del orden de 4x en velocidad.
Recuerda cómo hablé en la última lección[br]acerca de la separación de servicios:
separar nuestro servidor de aplicaciones[br]de nuestra base de datos,
nos dió una tremenda[br]mejora en velocidad,
dado que estas dos piezas de software
se ejecutan en forma totalmente distinta,
usan computadores de una manera[br]totalmente diferente.
Ese fue el primer cambio[br]en la aquitectura que hicimos.
Pienso que actualizamos esta máquina[br]una o dos veces, a una máquina más entera.
En ese tiempo todavía teníamos[br]una plaga de inactividad,
ya fuese nuestro Lisp[br]o un programa en Python,
ocasionalmente fallaba[br]y teníamos que ser notificados.
Frecuentemente sólo recibía una llamada.
Revisaría el sitio,[br]o alguien más me llamaría

Portuguese: 
Então, nós quatro - Eu, Alexis, Aaron e Chris[br]-- trabalhamos no Reddit.
A primeira mudança que Aaron[br]e eu fizemos juntos foi mudar
o Reddit de Lisp para Python.
Então, na mesma época, tiramos o banco [br]de dados daquela máquina
e o colocamos em outra, agora [br]totalizando duas máquinas
nesta companhia de hospedagem [br]--nosso servidor de aplicativos e nosso BD.
A mudança de Lisp para Python foi [br]agnóstica em termos de performance.
Lisp era a língua mais rápida, [br]porém a reescrita do Python era melhor.
Então, o código rodava na mesma velocidade.
Sair de uma máquina para duas nos deu [br]uma melhora na ordem de 4x mais velocidade.
Lembro-me de ter falado, na última aula,[br]sobre separação de serviços--separar o servidor app
do nosso banco de dados nos deu um tremendo [br]aumento de velocidade,
porque esses dois componentes-- usam o computador [br]de formas totalmente diferentes.
Essa foi a primeira mudança [br]de arquitetura que fizemos.
Acho que atualizamos essa máquina [br]uma ou duas vezes para uma mais potente.
À época, ainda éramos prejudicados por apagões, [br]não sei se por causa do Lisp ou do Python,
ocasionalmente ele caía e tínhamos que ser notificados-- na maioria das vezes me ligavam
Eu verificava o site ou alguém me ligava e falava que o site estava fora do ar e eu o trazia de volta.
Existem tantas maneiras de evitar esse cenário.
Isso me faz estremecer quando penso [br]em quanto tempo e estresse gastei

English: 
I would check the site or somebody would call me 
to tell me the site was down and I'd bring it back up.
There's so many easy ways to avoid this scenario.
It makes me cringe when I think about how much 
time and stress I spent on
not knowing whether our website was running.
The way we do it now is we use a 
piece of software called Supervise,
which we integrated shortly thereafter. Basically what supervise does is that it watches a program.
It runs a program, and if that program crashes, 
it restarts it.
And that's really a nice setup to have, and we actually got to the point where we'd run
two Python programs on one machine and 
then we had a little mini load balancer
kind of running on that machine as well that would 
send traffic to both of these Pythons
and if one of them died, Supervisor bring it back up.
And so unless the whole machine died--luckily, 
it never actually happened to us.
On the website would stay running. At that time, we still 
only had one database machine.
We were very lucky, and we're very lucky that 
neither of these machines ever died
Because if you lost this machine, the website would 
have been down until we could get a new one,
and our hosting provider was very slow--it would've 
been very difficult.
And if we had lost this one, our database machine, 
we would've lost the data--like forever.
We weren't doing good backups back then and 
it was really fortunate that Reddit turned into a

Spanish: 
para decirme que el sitio estaba caído,[br]y yo lo levantaría de nuevo.
Existen tantas formas sencillas[br]de evitar esta situación.
Me estremece el pensar[br]en todo el tiempo y estrés que pasé
sin saber si es que nuestro sitio[br]se estaba ejecutando o no.
La forma en que lo hacemos ahora es[br]mediante un software llamado Supervise,
que integramos poco tiempo después.
Básicamente lo que hace Supervise[br]es observar un programa.
Ejecuta un programa,[br]y si ese programa falla, lo reinicia.
Y esa es una excelente configuración.
Realmente llegamos al punto
en que ejecutaríamos dos programas[br]Python en una sola máquina
y teníamos un mini balanceador[br]de carga pequeñito
ejecutándose en esa máquina también[br]que enviaría el tráfico a ambos Pythons
y si uno de ellos muere,[br]Supervise lo vuelve a levantar.
Y así, a menos que la máquina[br]completa mueriese,
lo que afortunadamente nunca nos sucedió,
el sitio web seguiría ejecutándose.
En ese tiempo, todavía teníamos[br]una sola máquina de base de datos.
Fuimos muy afortunados,[br]de que ninguna de las máquinas muriera
ya que si perdíamos esta máquina,
el sitio web hubiese estado caído[br]hasta que pudiéramos obtener una nueva,
y nuestro proveedor de alojamiento web[br]era muy lento --habría sido muy difícil.
Y si perdíamos ésta,[br]nuestra máquina de base de datos,
perdíamos nuestros datos[br]--para siempre.
No estábamos haciendo[br]buenos respaldos en ese tiempo,
fue realmente una suerte[br]que Reddit se hiciera popular,

Portuguese: 
por não saber se nosso website estava no ar.
O que fazemos agora é utilizar [br]um software chamado Supervise,
o qual integramos logo após. Basicamente [br]o que ele faz é observar um programa.
Ele roda um programa e caso [br]o programa falhe, ele o reinicia.
É uma ferramenta bem legal, [br]e nós chegamos ao ponto de rodar
dois programas Python em uma máquina; tínhamos, então, um pequeno balanceador de carga
rodando naquela máquina que dividia essa carga entre esses dois programas em Python.
Se um morresse, o Supervisor o traria de volta.
A menos que a máquina morresse[br]--felizmente isso nunca aconteceu conosco.
Então, o site continuaria funcionando. Naquela época, tínhamos apenas um banco de dados.
Tivemos muita sorte, e muito sortudos [br]por nenhuma dessas máquinas morrerem
Porque se perdêssemos uma, o site ficaria fora do ar [br]até que pudéssemos comprar outra,
e nosso provedor era muito devagar--teria sido muito difícil.
Se tivéssemos perdido essa, o banco de dados, [br]teríamos perdido os dados--para sempre.
Não estávamos fazendo bons backups naquela época[br]e foi, de fato, uma sorte o Reddit se tornar
uma coisa popular, e é muito legal [br]o fato de ainda termos aquilo arquivado.
Foi por pura sorte não perdemos nada [br]porque você irá perder máquinas.
Máquinas morrem o tempo todo. Isso é fato sabido.

Japanese: 
サイトがダウンしては直すの繰り返しだったのです
これを回避する方法はたくさんあります
当時のストレスと時間の浪費を思うとうんざりします
動くかどうかはらはらしていました
今はSuperviseというソフトで検証しています
基本的にプログラムを監視し検証するソフトです
プログラムがクラッシュしていれば再始動してくれます
これはすばらしい進歩でした　そして次に
1つのマシンで2つのPythonを動かし[br]ロードバランサとしました
2つのPythonにトラフィックを送り[br]マシンを同等に動かすのです
どちらかが動かなくなったら[br]Superviseが始動してくれます
両方同時に故障しなかったのは幸運でした
データベース用のマシンはまだ1台でした
マシンが一度も壊れなかったのも とても幸運でした
次のマシンが手に入るまでサイトが停止するからです
ただプロバイダが遅いのは痛手でした
マシンを失ったら中のデータも[br]永久に失っていたでしょう
当時はバックアップが不完全だったので[br]Redditの人気も出て

English: 
popular thing, and it's really cool that 
we still have those archived
as a result of luck that we didn't lose those 
because you will lose machines.
Machines die all the time. This is kind of a fact of life.
I mean you're running these machines around 
the clock, high load, hard disk can fell,
memory can fell--there's lots of things that can go wrong
if you use a machine constantly on high load.

Portuguese: 
Quero dizer que, se você estiver rodando essas máquinas 24 horas, em carga máxima, o HD pode morrer,
a memória pode queimar - muitas coisas podem dar errado
se você usa uma máquina sobrecarregada constantemente.
Você está rodando essas máquinas [br]o tempo todo, carga alta, o disco falha,
a memória falha--existem inúmeras [br]coisas que podem dar errado
se você usar uma máquina constantemente [br]na sua capacidade máxima.

Japanese: 
昔のアーカイブがあるのも幸運なことです
でもマシンは壊れることを忘れないでください
人生の教訓にしてください
24時間高負荷で動かすので[br]ハードディスクが壊れるのです
メモリも消えます　高負荷をかけて動かし続けると
様々な不具合が起きるので十分気をつけましょう

Spanish: 
es genial que aún tengamos eso archivado.
Fue un resultado de la fortuna[br]que no las perdiéramos,
porque perderás máquinas.
Las máquinas mueren todo el tiempo.[br]Es un hecho de la vida.
Me refiero a que si tienes ejecutando[br]estas máquinas todo el día,
alta carga, el disco duro puede fallar,[br]la memoria puede fallar--
hay muchas cosas que pueden salir mal.
Si usas una máquina[br]constantemente en alta carga.
