Stos technologiczny czeka żeby go dobrze wykorzystać.
Skala
Google dziś to jedna z największych firm na świecie ale wyrosło z małego startupu w 1998 roku. Obecnie Google ma miliardy użytkowników pozyskanych za pośrednictwem wyszukiwarki Google, YouTube, Gmaila oraz innych produktów i usług Google. Jak Google buduje te duże systemy?
Historia Google to historia rozwoju. Obecnie w Google jest ponad 800 000 maszyn. Według danych jeszcze z 2017 roku Google zindeksował 130 bilionów stron internetowych, przetwarzając dwadzieścia petabajtów danych generowanych przez użytkowników każdego dnia. A dziś, kto wie?
Google posiada i obsługuje centra danych na całym świecie - według ostatnich szacunków w sumie było 36 centrów danych. 19 z nich w Stanach Zjednoczonych, 12 w Europie, 3 w Azji oraz po jednym w Rosji i Ameryce Południowej. Przyszłe centra danych mogą obejmować Tajwan, Malezję, Litwę oraz Blythewood w Południowej Karolinie, gdzie Google podobno kupiło 466 akrów ziemi.
Technologia
Google używa wielu odwróconych serwerów proxy (reverse proxy) do kierowania wszelkich żądań klientów do odpowiedniego back-endowego serwera. Cała masa informacji, których przetwarzanie pochłania cenne moce tych serwerów jest cache’owana: buforowane są w szczególności wszystkie pliki miniatur obrazów (thumbnails), multimedia i najbardziej typowe zapytania.
Serwery są umieszczane w rackach, w standardowym kontenerze. Każdy kontener mieści do 1160 serwerów. Centrum danych składa się z setek takich komórek modułowych.
Od 1998 roku Google używa w 100% dostosowanego do siebie systemu RedHat Linux. Dostosowane przez Google zostały m.in. biblioteki glib, rpc, ipvs czy bootloader gPXE.
Trzy kluczowe elementy
Istnieją trzy podstawowe elementy oprogramowania Google: GFS (system plików Google), BigTable i algorytm MapReduce.
System plików Google (GFS II) to skalowalny, rozproszony system plików dla dużych aplikacji intensywnie korzystających z rozproszonych danych, zapewniający odporność na błędy podczas pracy na stosunkowo niedrogim, powszechnie dostępnym sprzęcie. GFS przechowuje dane na wielu serwerach i działa na prawie wszystkich komputerach. W architekturze GFS istnieją trzy podstawowe elementy: klienci, serwery główne i serwery typu chunk. Pojedynczy serwer główny i wiele serwerów typu chunk to pewna całość, do których dostęp ma wielu klientów.
Baza danych Google (BigTable) pozwala zapewnić pewną strukturę wszystkim tym danym. BigTable, który Google zaczął projektować jeszcze w 2004 roku, jest obecnie używany w ponad 70 projektach Google, w tym w Mapach Google, Google Earth, Bloggerze, Google Print, Orkucie i głównej wyszukiwarce.
No i wreszcie MapReduce, który pozwala firmie na zrobienie czegoś użytecznego z tymi wszystkimi danymi. I tak na przykład algorytm MapReduce może sprawdzić, ile razy dane słowo pojawia się w indeksie wyszukiwania Google, dostarczyć listę stron internetowych, na których pojawia się to słowo czy też stworzyć listę wszystkich witryn sieci Web, które prowadzą do określonej strony.
Zbuduj własne Google
Okazuje się więc, że zdolny programista może – oczywiście jest tu pewna umowność ;-) - zbudować własne Google, korzystając z otwartych źródeł, które pasują do stosu technologicznego Google. Może to być na przykład taki zestaw: CentOS, HDFS (bo jest wysoce skalowalny i może zaakceptować awarię węzła bez utraty danych), HBase, Hadoop, MapReduce i Job Tracker.