Home [SRE] Ch02. The Production Environment at Google, from the Viewpoint of an SRE
Post
Cancel

[SRE] Ch02. The Production Environment at Google, from the Viewpoint of an SRE

Hardware

  • 구글의 대부분의 컴퓨터 자원은 구글이 전원 공급, 냉각 기능, 네트워크 및 컴퓨터 하드웨어 등을 모두 직접 디자인한 데이터센터에 있음
  • Machine
    • 하드웨어 (or VM) 을 의미
  • Server
    • 서비스를 구현하는 소프트웨어를 의미

image

  • 구글 데이터센터의 Toplogy
    • 수십 대의 머신이 랙에 장착되어있음
    • 랙은 일렬로 늘어서 있음
    • 하나 또는 여러 랙이 클러스터를 구성
    • 데이터 센터 선물 내에는 여러 개의 클러스터가 있음
    • 근거리의 여러 DC 건물이 모여 캠퍼스를 이룸

Hardware를 조율하는 시스템 소프트웨어

머신 관리하기

image

  • Borg
    • Large-scale cluster management at Google with Borg
      • https://research.google/pubs/pub43438/
      • Kubernetes의 전신
    • Apache Mesos와 유사한 분산 클러스터 운영 시스템
    • 해당 시스템을 이용해서 머신을 관리함
      • BNS (Borg Naming Service), 리소스 할당 등등..

Storage

image

  1. 가장 낮은 D 계층은 클러스터 내의 거의 모든 머신이 실행하는 파일 서버.
  2. D 계층 위의 ColossusGFS(Google File System)의 후속 제품으로서 전통적인 파일 시스템처렁 동작하며 복제와 암호화까지 지원
  3. DB와 유사한 서비스들
    1. Bigtable : 페타바이트 크기의 DB를 처리할 수 있는 NoSQL. 데이터가 분산되어 영구적으로 저장됨. Eventually Consistent 한 DB
    2. Spanner : 실시간 일관성이 있어야 하는 곳에 SQL 인터페이스 제공
    3. 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/
This post is licensed under CC BY 4.0 by the author.

[데이터 중심 애플리케이션 설계] Ch1. Reliable, Scalable, and Maintainable Applications

[SRE] Ch03. Embracing Risk