이 포스팅은 GCP Fundamentals 시리즈 3 편 중 1 번째 글 입니다.
목차
학습 목표
- Google 클라우드 플랫폼의 이점에 대해 이해하기.
- 위치, 데이터 센터, 지역 및 구역을 포함한 Google 네트워크 인프라의 구성요소를 정의하기.
- 서비스형 인프라(IaaS)와 서비스형 플랫폼(PaaS) 비교하기
Google Cloud Platform
GCP는 총 4가지의 주요 서비스를 제공한다.
- Computing
- Storage
- Bigdata
- Machine Learning
먼저 Computing과 Starage의 관점에서 진행해 본다. 클라우드 서비스를 사용하는 것은 애플리케이션과 데이터 관점에서 매우 좋은 툴이다. 클라우드를 사용하게 되면 인프라를 구축하는데 드는 매우 다양한 잡일로 부터 해방된다. 앞으로 아래에 적힌 것들에 대해 집중적으로 알아보자.
- GCP란?
- 어떻게 구성되어 있는가?
- 왜 GCP인가?
What is Cloud Computing?
말만 많이 들었지 사실 어떠한 특성을 기반으로 클라우드 컴퓨팅이라 부르는지 몰랐기 떄문에 정확한 정의를 이해할 필요가 있다.
클라우드 컴퓨팅은 이 다섯 가지 중요한 특성을 가진 정보 기술(IT)을 사용하는 방법이다.
- on-demand 또는 self-service 방식으로 컴퓨팅 리소스를 확보한다.
- 이 때, 인간의 개입이 필요 없이 Computing power, storage, network를 얻을 수 있다면 된다.
- 원하는 곳에서 인터넷을 통해 이러한 리소스에 접근이 가능하다.
- 리소스 제공자는 큰 pool을 가지고 있고, 이것들을 고객에 할당한다.
- 할당 과정에서 고객들은 자원의 정확한 물리적 위치에 대해 알거나 신경쓸 필요가 없다.
- 자원은 탄력적이다.
- 더 많은 자원이 필요하다면 쉽게 얻을 수 있다. 적은 자원이 필요하면 이를 줄일 수도 있다.
- 고객은 사용하는 것, 또는 예약한 것에 대해서만 돈을 지불한다.
발전 과정
왜 요즘 클라우드가 그렇게 중요한 걸까? 이유를 이해하기 위해서는 역사를 살펴봐야 한다. 클라우드 컴퓨팅을 향한 첫번째 wave는 it 업체들이 수십년 동안 해온 colocation 방법이다. 기존에 인프라를 구축하기 위해서는 땅을 빌리고, 그곳에 데이터 센터를 건설해야 했다. 이로부터 발생하는 비용은 부동산이 지배적이기 때문에 자본이 집중되는 단점이 있었다. 이러한 이유로 부터 colocation 제공 업체로 부터 물리적인 공간을 임대받게 되면 보다 유연한 사용이 가능하다.
- Colocation이란?
- 서버, 하드웨어 및 기타 장비를 위한 물리적 공간을 임대한다.
- 장비는 사용자가 가져오는 것.
- 현재 하드웨어에 만족한다면, colocation은 가장 좋은 선택이다.
이후, 2000년대의 첫 10년 동안 효율성 필요성으로 인해 가상화를 사용하게 되었다. 가상화란 한 대의 서버가 여러대의 서버를 운영하는 것처럼 사용할 수 있게 하는 기술을 말한다. 가상화는 자원을 더 효율적으로 사용할 수 있게 해준다. 하지만 여전히 사용자는 인프라를 구입하고, 유지해야 한다는 문제가 발생한다. 어느정도의 리소스가 필요한지, 언제 필요한지를 예상하고, 끊임없이 작동시켜야 한다.
약 10년 전 구글은 가상화 모델의 한계 때문에, 충분히 빠르게 움직일 수 없다는 것을 깨달았다. 그래서 구글은 자동화된 서비스로 만들어진 자동화되고 탄력적인 클라우드, 즉 컨테이너 기반 아키텍처로 전환했다. 컨테이너에 대해서는 추후에 다시 설명하겠다.
- 데이터 센터란?
- 데이터 센터는 서버 컴퓨터와 네트워크 회선 등을 제공하는 건물이나 시설을 말한다. 서버 호텔이라고도 부른다. 데이터 센터는 인터넷의 보급과 함께 폭발적으로 성장하기 시작했다.
GCP computing architectures
아키텍쳐는 크게 3가지로 구분된다. Infra a a Service(IaaS), Platform as a Service(PaaS), Service as a Service(SaaS)가 그것이다. 차례차례 알아보자.
먼저, IaaS는 기존의 데이터 센터에서 익숙한 방식으로 구성된 컴퓨팅 자원, 스토리지, 네트워크를 제공하는 방향이다. 즉, 할당된 서버 자체의 비용을 지불한다.
두번째로 PaaS 방식은, 사용자가 작성하는 애플리케이션 코드 자체를 인프라 액세서를 제공하는 라이브러리에 바인딩하는 것을 말한다. 즉, 코드를 작성하고, 이를 자원을 알아서 분배해주는 라이브러리와 연결하면 알아서 이를 관리해주는 것이다. 이런 방법을 사용하면 프로그래머는 오직 애플리케이션 코드를 작성하는데 집중할 수 있다.
마지막으로 SaaS는 구글이 제공하는 Gmail, Docs, Drive 같은 최종 사용자에게 제공되는 서비스를 말한다. 이런 서비스 자체를 사용자가 구매, 혹은 구독하여 사용하는 것을 SaaS라 한다.
Google Network
구글의 네트워크망은 지구상에서 가장 큰 네트워크이다. 약 세계 인터넷 트래픽의 40%를 차지한다. 이 네트워크는 사용자들에게 가능한 한 가장 높은 처리량, 그리고 낮은 latency를 감안하여 고안되었다. 인터넷 사용자가 Google 리소스로 트래픽을 전송할 경우, 구글은 가장 낮은 latency를 가지는 Edge Network에서 사용자 요청에 응답한다.
GCP Regions and Zones
그렇다면 어떻게 GCP가 구성되어 있는지 알아보자. 가장 낮은 level인 Zone부터 시작하자. zone은 GCP 리소스의 배포 영역이다. 예를 들어, Compute Engine을 사용하여 GCP에서 가상 컴퓨터를 실행한다면, 내가 지정한 zone에서 실행된다. 그렇다면 이 zone을 설정하는 것은 GCP 데이터 센터에 할당되는 물리적 기기를 의미할까? 엄밀히 말하면 틀렸다. 하나의 zone은 물리적 단위로 나눠져있지 않다. 물리적 단위로 나눠질 수도 있겠지만, 기본적인 설계는 논리적 단위로 구성되어 있다. 즉, 여러 다른 지역에 위치한 물리적 서버를 묶어서 하나의 zone이라 명명지을 수 있다는 것. 하지만 이 zone의 이름이 어떤 특정 지역을 나타내는 것처럼 되어 있는 이유는 그 논리적 그룹을 묶는 경계가 있기 때문이다. 이 그룹을 region이라 하며, 이 기준은 해당 구역 사이에서 빠른 네트워크 연결성을 가지느냐에 따라 달려있다. region 내에서 네트워크 대기시간은 보통 왕복 5밀리초 정도 이다.
zone은 region 내의 single failure domain으로 생각한다. 즉, 어떤 프로그램을 배포하는데 있어서 최소 단위가 zone이라는 것. 장애가 없는 애플리케이션을 구축한다고 생각해보자. 예상치 못한 문제에 대해 보호하기 위해 우리는 여러 zone에 내 프로그램을 배포할 수 있다.
또한 Multi region역시 가능하다. 전체 region 자체가 자연재해와 같은 문제가 발생했을 때를 대비하여 만들어진 개념이다. Google Cloud Storage와 같은 서비스는 적어도 지리적으로 두 개 이상의 region에 저장되어 있다.
Environmental Responsibility
이러한 가상화 기술에 대해서 설명했지만, 기본적으로 이러한 가상화 기술을 물리적 인프라를 기반으로 구축된다. 이러한 점에서 여전히 모든 데이터 센터에서 돌아가는 서버는 방대한 양의 에너지를 사용중이다. 기존 데이터 센터는 모든 전 세계 전력의 약 2%를 사용하고 있다. 구글은 이러한 데이터 센터를 가능한 한 효율적으로 운영하기 위해 노력한다. 구글의 데이터 센터는 자원 효율 향상과 폐기물 저감을 위한 표준인 ISO 14001 인증을 처음으로 달성했다.
핀란드에 하미나에 있는 구글 데이터 센터는 해수를 사용하여 에너지 사용을 줄이고 있다. 풍력, 태양 에너지도 적극적으로 사용하여 100% 탄소 중립을 향해 나아가고 있다.
Customer friendly pricing
~흠..~ 구글은 IaaS에 속하는 Google Compute Engine에 대해 초당 청구서를 발송한 최초 클라우드 업체이다. 이렇게 세분화된 비용 청구를 통해 큰 비용 절감 효과를 가져왔다. 또한 자동으로 적용되는 지속적인 할인을 제공한다. 특히, 한 달에 25% 이상 인스턴스를 실행하면 컴퓨팅 엔진이 해당 인스턴스에 대해 사용하는 매 분마다 자동으로 할인을 제공한다. 컴퓨팅 엔진 사용자 지정 가상 시스템 유형을 사용하면 해당 애플리케이션에 맞게 가상 시스템을 미세 조정할 수 있으며, 이를 통해 워크로드에 대한 가격을 조정할 수 있다.
Open APIs
이런 좋은 점 때문에 workload를 cloud로 전환할 생각을 하지만, 이 때문에 업체에 종속될까봐 전환하는 것을 두려워 한다. 하지만 구글은 우리 제품을 사용했다가, 맘에 안들면 이를 다른 곳에서 실행하기 쉽도록 기능을 제공한다.
먼저, GCP 제품은 open source 제품과 호환된다. 예를 들어 Cloud Bigtable이 있다. 데이터 베이스 제품인 Bigtable은 오픈 소스 데이터 베이스인 Apache HBase의 인터페이스를 제공하여 코드 이동이 간편하도록 한다. 두번째로, Cloud Dataproc은 오픈 소스 빅데이터 환경인 Hadoop을 관리 서비스로 제공한다.
이와 같이 구글은 오픈 소스 생태계를 구축하여 구글 이외의 옵션을 제공한다. tensorflow, kubernetes, stackdriver와 같은 모든 서비스는 이러한 상호 운영성을 고려하여 제작되었다.
Why Choose GCP?
Google Cloud Platform을 사용하면 웹, 모바일, 분석 및 백엔드 솔루션에 대한 컴퓨팅, 스토리지, 빅데이터, 머신러닝 및 애플리케이션 서비스 중에서 선택할 수 있다. 글로벌하고 비용 효율적이며 오픈 소스 친화적이며 보안을 위해 설계되었다.
요약해 보자. Google Cloud Platform의 제품 및 서비스는 컴퓨팅, 스토리지, 빅 데이터, 머신러닝, 네트워킹, 운영 및 툴로 광범위하게 분류할 수 있다. 이제 부터는 해당 서비스를 이해하고, 어떠한 상황에 어떤 제품을 적시적소에 이용하는 것이 좋은지 공부하게 될 것이다.
Multi-layered security approach
구글은 10억 명 이상의 사용자를 가진 7개의 서비스를 가지고 있기 때문에, 보안은 항상 구글 직원들의 마음에 달려있다고 장담할 수 있다. 보안을 위한 설계가 널리 보급되어 있으며, 인프라 전반에 걸쳐 GCP 및 Google 서비스가 실행되고 있다. 아래쪽에서 시작하여 위로 이동하면서 고객의 데이터를 안전하게 유지하기 위해 구글이 진행하는 과정에 대해 알아보자.
구글 데이터 센터의 서버 보드와 네트워킹 장비는 모두 구글이 맞춤 설계한 것이다. 구글은 또한 현재 서버와 주변기기 모두에 배포되고 있는 타이탄이라는 하드웨어 보안 칩을 포함하여 맞춤형 칩을 설계하고 있다. Google 서버 컴퓨터는 암호화 서명을 사용하여 올바른 소프트웨어를 부팅하고 있는지 확인한다.
구글은 여러 계층의 물리적 보안 보호를 통합한 자체 데이터 센터를 설계하고 구축한다. 이러한 데이터 센터에 대한 액세스는 Google 직원 중 극소수에 불과하다. 구글의 인프라는 암호화 개인 정보 보호와 네트워크상의 데이터라고 불리는 원격 프로시저에 대한 무결성을 제공합니다. 이것이 구글 서비스들이 서로 통신하는 방법입니다.
인프라는 데이터 센터 간에 전송 중인 PC 트래픽을 자동으로 암호화한다. 보통 최종 사용자에게 구글 로그인 페이지로 나타나는 구글 중앙 아이덴티티 서비스는 단순한 사용자 이름과 비밀번호를 요구하는 것 이상의 역할을 한다. 또한 사용자가 과거에 동일한 장치 또는 유사한 위치에서 로그인했는지 여부와 같은 위험 요소에 기초한 추가 정보를 사용자에게 지능적으로 제공한다.
Budgets and Billing
어떻게 하면 비용 절감을 할 수 있을까? 좋긴 좋은데. GCP는 예산 및 알림, 청구서 발송, 보고서 및 할당량 등 4가지 툴을 제공한다.
먼저 예산 및 경고에 대해 살펴보자. 계정별 또는 GCP 프로젝트별로 예산을 정의할 수 있다. 고정으로 할 수도 있고, 다른 수치를 기반으로 설정할 수도 있다. 예를 들어 전원 지출 금액의 백분율이다. 비용이 예산 한계에 도달하면 알림을 생성한다. 예를 들어, 예산 제한액이 20,000달러이고 경고가 90%로 설정되어 있으면 지출액이 18,000달러에 도달하면 알림 알림이 수신된다. 경고는 일반적으로 50%, 90% 및 100%로 설정됩니다. 그러나 사용자 정의도 가능하다.
청구서 내보내기를 통해 BigQuery 데이터 세트 또는 클라우드 스토리지 버킷과 같이 더 자세한 분석을 위해 검색하기 쉬운 곳에 자세한 청구 정보를 저장할 수 있다.
보고서는 GCP 콘솔의 시각적 도구로서 지출 내역을 모니터링할 수 있다.
또한 GCP는 할당량을 구현하여 계정 소유자와 GCP 커뮤니티 전체를 보호한다. 할당량은 오류 또는 악의적인 공격으로 인한 리소스 과소비 방지를 위해 설계되었다. 할당량에는 두 가지 유형이 있다: Rate quota 및 Allocation quota. 두 가지 모두 GCP 프로젝트 수준에서 적용된다. 특정 시간 후 할당량을 재설정한다. 예를 들어, 기본적으로 Kubernetes Engine 서비스는 100초마다 각 GCP 프로젝트에서 API로 1000개의 호출 할당량을 설정한다. 100초 후 제한값이 재설정됩니다. 반면에 Allocation quota은 프로젝트에서 가질 수 있는 리소스 수를 제어한다. 예를 들어, 기본적으로 각 GCP 프로젝트에는 할당량이 있어 5개 이하의 Virtual Private Cloud 네트워크만 사용할 수 있다. 모든 프로젝트는 동일한 할당량으로 시작되지만 Google Cloud 지원에서 증가하도록 요청하여 일부 프로젝트를 변경할 수 있다.