Hardware
- 구글의 대부분의 컴퓨터 자원은 구글이 전원 공급, 냉각 기능, 네트워크 및 컴퓨터 하드웨어 등을
모두 직접 디자인한 데이터센터
에 있음 - Machine
- 하드웨어 (or VM) 을 의미
- Server
- 서비스를 구현하는 소프트웨어를 의미
- 구글 데이터센터의 Toplogy
- 수십 대의 머신이 랙에 장착되어있음
- 랙은 일렬로 늘어서 있음
- 하나 또는 여러 랙이 클러스터를 구성
- 데이터 센터 선물 내에는 여러 개의 클러스터가 있음
- 근거리의 여러 DC 건물이 모여 캠퍼스를 이룸
Hardware를 조율하는 시스템 소프트웨어
머신 관리하기
- Borg
Large-scale cluster management at Google with Borg
- https://research.google/pubs/pub43438/
- Kubernetes의 전신
- Apache Mesos와 유사한 분산 클러스터 운영 시스템
- 해당 시스템을 이용해서 머신을 관리함
- BNS (Borg Naming Service), 리소스 할당 등등..
Storage
- 가장 낮은
D 계층
은 클러스터 내의 거의 모든 머신이 실행하는 파일 서버. - D 계층 위의
Colossus
는 GFS(Google File System)의 후속 제품으로서 전통적인 파일 시스템처렁 동작하며 복제와 암호화까지 지원 - DB와 유사한 서비스들
- Bigtable : 페타바이트 크기의 DB를 처리할 수 있는 NoSQL. 데이터가 분산되어 영구적으로 저장됨. Eventually Consistent 한 DB
- Spanner : 실시간 일관성이 있어야 하는 곳에 SQL 인터페이스 제공
- Blobstore : 대량의 비정형 데이터를 저장할 수 있음
Networking
Bandwidth Enforcer
(BwE)- 가용 대역폭을 관리해서 평균 가용 대역폭을 극대화 함
GSLB
(Global Software Load Balancer)- DNS 요청에 대한 지역 로드밸런싱 수행
- 사용자 서비스 수준에서의 로드밸런싱 수행
- RPC 수준에서의 로드밸런싱
기타 시스템 소프트웨어
잠금 서비스
- Chubby
- 분산 Lock 시스템으로 분산된 서버들 사이에서 발생할 수 있는 자원 공유 문제 해결
- Paxos 프로토콜 사용
- Consensus Algorithm
- RAFT
모니터링과 알림
- Borgmon
모니터링
하는 서버들로부터 다양한 지표들을 수집
소프트웨어 인프라스트럭쳐
구글의 소프트웨어 아키텍처는 하드웨어 인프라를 최대한 효과적으로 활용할 수 있도록 디자인됨.
- Stubby
- 내부
RPC 통신
을 위해 만든 시스템 - 오픈 소스로 gRPC를 만듬
- RPC (Remote Procedure Call)
- RPC 간의 데이터 전송은 Protocl Buffers 를 이용함.
- Protobufs 는 Apache의 Thrift와 유사
- Protobufs 는 XML 을 이용해 구조화된 데이터를 직렬화하는 방식에 비해 더 많은 장점을 제공.
- 사용하기 더 쉽고, 크기가 3~10배 더 작고, 20~100배 더 빠르고 명료함
- 내부
Reference
- https://sre.google/sre-book/table-of-contents/