Apache Superset과 BigQuery 연동하기

오픈 소스 BI툴인 아파치 슈퍼셋은 에어비엔비에서 제작 후 오픈 소스로 공개했다. 타블러 같은 BI툴의 오픈 소스 버전이라고 생각하면 된다.

아파치 라이센스 2.0을 사용하기 때문에 상업적인 사용 및 독자적인 특허권 및 상용 서비스 등도 가능하다.  수정시에도 소스 코드 공개 의무가 없지만 해당 S/W 사용했고 수정했음을 외부에 밝혀야 한다.

아파치 슈퍼셋의 장점은?

  • 자체 개발없이 빠르게 외부에 시각화 대시보드를 제공할 수 있다.
  • 사용 BI 툴 수준의 시각화 기능 지원
  • 대부분의 DB 커넥터 연결을 지원
    • 빅쿼리 실제 연결되는지 테스트 완료
  • 유저 권한 관리 지원
    • 외부 회사에 제공시에 필요함

아파치 슈퍼셋의 단점은?

  • 여러가지 라이브러리가 복잡하게 얿혀있어 소스를 수정하려면 경험많은 개발자가 필요하다.
    • 프론트엔드는 react 프레임워크 경험자가 필요
  • 모바일 앱을 통해 대시보드 뷰어는 그냥 따로 개발해야 한다.

Superset 설치

vmware에서 ubuntu 20.04 버전을 이용하 설치 과정을 테스트해보았다. 설치 과정은 슈퍼셋 홈페이지(https://superset.incubator.apache.org/installation.html)를 참고하였다. 문서와 틀린점은 ubuntu 20.04의 기본 패키지 서버에서 설치할 수 있는 파이썬 버전 3을 사용한다는 점이다.

슈퍼셋에 필요한 기본 패키지를 먼저 설치한다.

sudo apt-get install build-essential libssl-dev libffi-dev libsasl2-dev libldap2-dev

파이썬 관련 패키지를 설치한다. 파이썬 가상환경을 제공하는 virtualenv 내부에 Superset를 설치하는 것이 좋다.

sudo apt-get install python3-pip, python3-venv
sudo pip3 install virtualenv

다음 커맨드를 입력을 통해 파이썬 virtualenv를 만들고 활성화 할 수 있다.

sudo python3 -m venv venv
. venv/bin/activate

이 예제에서는 빅쿼리와의 연동을 테스트하는게 목적이다. deactivate 커맨드를 입력하여 virtualenv를 비활성화한다. 좌측에 (venv) 표시가 사라지는 것을 확인할 수 있다.

이제 Superset 패키지를 설치한다.

sudo pip3 install apache-superset

Superset db를 초기화하고 서버를 실행한다.

sudo superset db upgrade

어드민 계정을 생성한다. 어드민으로 사용한 정보와 암호를 입력하면 된다.

sudo superset fab create-admin

예제 데이터를 생성한 후 슈퍼셋 권한과 역할 정보 생성을 위한 init 커맨드를 입력한다.

sudo superset load_examples
sudo superset init

이제 슈퍼셋 실행에 준비가 모두 완료되었다. 다음 커맨드를 입력하여 슈퍼셋 서버를 시작한다

sudo superset run -p 8088 --with-threads --reload --debugger

웹브라우저를 실행한 후 127.0.0.1:8080을 통해 슈퍼셋 웹페이지에 들어갈 수 있다. 전에 생성해둔 어드민 계정 정보를 입력하여 로그인한다.

예제 데이터를 이용하여 만들어진 각종 도표를 확인할 수 있다.

BigQuery 차트 출력

슈퍼셋에서 빅쿼리 데이타에 접근할려면 추가 패키지를 설치해야 한다.

sudo pip3 install pybigquery

이제 커넥터 패키지가 설치되었으니 연결한 빅쿼리 정보를 추가해야 한다. Superset의 Sources > Databases 메뉴를 선택한다.

GCP 사이트에서 접근할 빅쿼리의 프로젝트 아이디를 복사해온다. 그리고 SQL Alchemy URI에 입력한다.

빅쿼리에 접근하려면 해당 빅쿼리에 접근 권한을 허용한 GCP 서비스어카운트 json 파일이 필요하다. GCP 사이트에서 다운로드 받으면 다음과 같은 속성을 확인할 수 있다.

Extra 속성에는 다음을 입력한다.

{
"metadata_params": {},
"engine_params": {},
"metadata_cache_timeout": {},
"schemas_allowed_for_csv_upload": []
}

그리고 Secure Exter 항목에 다음 서비스어카운트 json 파일에 담긴 모든 내용을 복사한후 credentials_info 속성에 추가한다.

{
  "credentials_info" : {
    "type": "...",
    "project_id": "...",
     ....
    "client_x509_cert_url": "..."
  }
}

화면 하단의 Save 버튼을 클릭하여 저장하면 다음과 같이 데이터베이스 소스에 빅쿼리 커넥터가 추가된 것을 확인할 수 있다.

이제 빅쿼리 테이블에 접근하여 데이터를 출력하는 대시보드를 추가해보자. Superset 메뉴중 Dashboards를 선택한 후 화면 우측에 + 버튼을 클릭한다.

대시보드 이름을 이력하고 Owners를 어드민 유저로 선택한 후 Save 버튼을 클릭한다.

빅쿼리 정보에 접근하려면 접근할 테이블 정보를 추가해야 한다. Superset 메뉴 Sources > Tables를 선택한다.

화면 우측 + 버튼을 클릭하여 테이블 정보를 입력한다

Database 속성을 선택해서 빅쿼리 데이터베이스 소스를 선택한다. 그리고 Table Name에 접근할 테이블 이름을 입력한 후 Save 버튼을 클릭한다. 테이블 이름은 {BIGQUERY_DATASET}.{BIGQUERY_TABLE_NAME} 형식을 가진다.

대시보드에 해당 테이블 정보를 출력하려면 미리 차트 정보를 생성해야 한다. Superset 메뉴 Charts를 선택한후 화면 오른쪽 + 버튼을 클릭한다.

데이타소스를 바로 전에 생성한 테이블 정보로 선택한다.

그리고 Choose a visualization type 메뉴를 통해 표시하고 싶은 차트 방식 선택한다(이 글에서는 Line Chart를 선택) 그리고 Create new chart 버튼을 클릭한다.

이제 해당 테이블을 대상으로 어떻게 차트 정보를 출력할지 편집할 수 있다. Superset이 상용 BI툴과 견줄 수 잇는 부분중의 하나가 이런 비주얼한 편집 기능이다.

화면 좌측의 Run Query를 통해 결과를 확인해가며 원하는대로 차트가 출력되는지 확인해 가면 편집할 수 있다. Save 버튼을 클릭하여 차트 정보를 저장한다.

이제 대시보드에 차트를 추가해보자. Dashboards 메뉴에서 생서한 대시보드를 선택한다. 그리고 Edit dashboar 버튼을 클릭한다.

Your charts & filter 메뉴를 선택한다.

좀전에 추가한 차트인 daily step이 표시되는 것을 확인할 수 있다. 해당 표를 클릭 후 드래그하여 대시보드에 배치한다.

마무리

Superset에서 빅쿼리 테이블과의 연동이 이상없이 동작하는 것을 확인했다. 이 글은 빅쿼리와 연동을 확인하려는 것으로 파이썬 virtualenv를 사용하지 않았고 Superset 서버도 데몬 형태로 실행하지 않았다는 점에 주의하기 바란다.

빅쿼리 파티셔닝과 클러스터링에 대한 이해

빅쿼리는 대용량 데이터 처리를 위해 데이터를 일별로 분리해서 분할 저장하는 파티셔닝 기능을 제공한다. 파티셔닝은 테이블에 파티션 데코레이터를 지정해서 UTC 타임존 기준 원하는 날짜 혹은 데이터 생성 날짜로 데이터를 분할 저장하는 기법이다. 데이터가 날짜 범위로 분할되어 저장하기 때문에 쿼리 요청시 분할 날짜를 이용하여 처리 대상 데이터의 범위를 줄일 수 있는 장점을 가진다.

하지만 파티셔닝은 일기준으로만 데이터가 분할되기 때문에 클러스터링 기능을 통해 특정 필드 기준으로 데이터를 분할 저장하게 할 수도 있다. 클러스터링은 데이터의 특정 필드값(최대4개)을 기준으로 데이터를 정렬한 후 최적화된 크기로 각 파티션안에서 또다시 저장소를 분리하여 저장한다. 날짜를 기준으로 분할되지 않고 특정 필드값을 기준으로 정렬되기 때문에 좀더 유연하게 쿼리의 처리 대상이 되는 데이터의 범위를 줄일 수 있게 된다.

하지만 파티셔닝과 클러스터링이 적용되지 않더라도 크게 걱정하지는 말자. 빅쿼리는 같은 쿼리문의 결과에 대해서는 24시간 가량 캐시가 되고 캐시가 된 쿼리 결과를 다시 요청할때는 비용이 추가로 발생하지 않는다. 또한 테라바이트 수준의 데이터에 대해서도 쿼리 속도가 1~2초 가량 밖에 걸리지 않기 때문에 성능 문제도 없다.

파티셔닝

파티셔닝은 하나의 테이블을 파티션이라는 단위로 분할하여 저장한다. 데이터 변환기는 테이블을 일별로 나눠서 저장하게 되어 쿼리에서 읽는 범위를 줄여서 쿼리의 성능을 높일 수 있다. BigQuery는 테이블을 수집 시간 기준일이나 지정한 시간 기준일로 나눌 수 있다. 데이터를 처리시 BigQuery 테이블 대상을 지정할때 다음과 같이 테이블명 뒤에 수집 시간 날짜를 포함한 것을 볼 수 있다.

fast-archive-274910:dw_datadriver.googlefitness_tbl_bd_datasets$20020519

위와 같이 파티션 데코레이터 지정을 하면 특정 날짜를 기준으로 데이터를 분할해서 저장할 수 있다. 만약 파티션 데코레이션 지정을 하지 않고 다음과 같이 저장할 테이블 대상을 지정한다면 데이터가 생성되는 시점의 시간을 기준으로 데이터가 분할되므로 여러날의 데이터를 처리해도 무조건 처리 시점의 날짜 기준 파티션에 데이터가 모두 추가된다.

fast-archive-274910:dw_datadriver.googlefitness_tbl_bd_datasets

파티션을 나눈 테이블을 적용한 데이터 변환기에 의해 생성된 테이블의 정보는 다음과 같다.

데이터 변환기 소스코드 살펴보기-파티셔닝테이블.png

이때 분할 기준은 일(Day)로 지정되어 있고 분할 입력란이 수집 날짜 기준으로 파티셔닝 되어 있다는 표시인 _PARTITIONTIME 으로 지정되 있는 것을 볼 수 있다. 테이블명에 수집날짜을 20200522로 지정했으므로 _PARTITIONTIME 역시 2020년 5월 22일로 저장되어 있을 것이다. 빅쿼리에서 다음 쿼리를 실행해보자

SELECT DATE(_PARTITIONTIME) as date, * FROM `fast-archive-274910.dw_datadriver.googlefitness_tbl_bd_datasets`;

면 각 열의 수집 시간이 모두 2002년 5월 19일로 되어 있는 것을 확인할 수 있다.

데이터 변환기 소스코드 살펴보기-파티션시간쿼리결과.png

이후 이렇게 수집된 날짜의 정보인 _PARTITIONTIME 을 기준으로 쿼리를 요청하면 쿼리에서 읽는 범위를 제한할 수 있기 때문에 계속 데이터가 추가되더라도 데이터베이스의 전체적인 성능이 저하되지 않게 된다. 파티셔닝 기능을 쓰지 않거나 검색 쿼리에 _PARTITIONTIME을 지정하지 않으면 전체 테이블에 대해 조회가 일어나므로 서비스 사용 비용이 늘어날 것이므로 주의가 필요하다.

예를 들어 다음과 같이 전체 테이블을 대상으로 쿼리를 요청한 후 화면 하단의 실행정보 탭을 살펴보자. 다음과 같이 쿼리가 1.3MB의 데이터를 대상으로 입력과 출력 모두 5,546개의 행의 정보를 처리한 것을 볼 수 있다.

빅쿼리 파티셔닝의 원리-파티셔닝쿼리1.png

하지만 다음과 같이 _PARTITIONTIME으로 조건을 걸면 869.2KB를 대상으로 3652개 행의 정보만을 처리하는 것을 확인할 수 있다.

빅쿼리 파티셔닝의 원리-파티셔닝쿼리2.png

따라서 데이터 분석을 위해 테이블 정보에 접근할때 최대한 파티셔닝 처리를 되게끔 주의하면서 사용해야 한다. 이 책의 예제에서는 UTC기준의 데이터를 한국 기준 타임존으로 모두 변환해서 출력하기 때문에 파티셔닝이 적용되는 쿼리를 사용하고 있지는 않다. 하지만 특정 기간 동안의 결과가 보여주는 리포트를 추가로 만든다면 파티셔닝을 적용하여 성능을 올릴 수 있을 것이다.

클러스터링

파티션을 나눈 테이블을 만들고 클러스터링을 설정한 테이블의 정보는 다음과 같다. 맨 아래를 살펴보면 클러스터링 기준에 user_id 필드값이 포함된 것을 볼 수 있다. 만약 여러면의 데이터가 들어온다면 앞서 설명한 파티셔닝을 이용해서는 원하는 유저별로 데이터 처리 대상을 줄일 수 없다. 이때 클러스터링 필드를 사용해서 유저 아이디별로 데이터 처리 대상을 분할할 수 있다.

클러스터링테이블3234.png

다음 쿼리문을 통해 파티셔닝이 적용되는 쿼리를 살펴보자.

SELECT * FROM `fast-archive-274910.dw_datadriver.rescuetime_tbl_bd_data` WHERE DATE(_PARTITIONTIME) = "2020-04-16"

다음과 같이 전체 행 866개중 396행을 대상으로 30.4KB 만의 데이터를 대상으로 쿼리 처리가 발생한 것을 볼 수 있다.

빅쿼리 파티셔닝과 클러스터링-클러스터링처리테스트1111.png

그럼 이제 클러스터링 필드로 설정된 user_id를 조건으로 쿼리를 실행해보자. 현재 이 테이블에는 미리 여러명의 user_id를 가진 데이터를 입력해 둔 상태이다

SELECT * FROM `fast-archive-274910.dw_datadriver.rescuetime_tbl_bd_data` WHERE user_id = "leeteam"

역시 866행중 433행을을 대상으로 47.9KB 데이터에 대한 쿼리 처리가 발생한 것을 볼 수 있다.

빅쿼리 파티셔닝과 클러스터링-클러스터링테스트2222.png

이렇게 파티션 날짜 기준뿐만 아니라 클러스터링을 이용하면 특정 필드값을 대상으로도 비용을 아낄 수 있는 쿼리를 요청할 수 있게 된다.

쿼리 효율성 테스트하기

구글 클라우드 플랫폼 웹사이트에서 쿼리를 요청하면 쿼리가 처리하는 데이터의 크기를 알 수 있다. 이를 그건로 쿼리의 효율성과 비용을 예상해볼 수 있다. 다만 빅쿼리는 캐시 기능이 있어서 같은 문장의 쿼리를 중복 요청하면 쿼리를 실행하지 않고 기존의 캐시되어 있는 결과를 보여주기 때문에 효율성 체크를 위해서는 캐싱 옵션을 해제하고 테스트해야 한다.

01. 쿼리 편집기에서 쿼리 설정 메뉴를 클릭한다.

빅쿼리 파티셔닝과 클러스터링-쿼리 옵션 수정.png

02. 리소스 관리 영역에서 “캐시 처리된 결과 사용” 을 체크해제 한후 “저장” 버튼을 클릭한다.

빅쿼리 파티셔닝과 클러스터링-캐시해제.png

이제 캐싱된 쿼리 결과를 사용하지 않는다. 해당 옵션은 웹페이지의 쿼리 편집기에서 캐시를 해주기 때문에 다른 곳에는 영향을 주지 않는다.

03. 테스트할 쿼리를 입려한다. 쿼리 입력시 오른쪽에 “실행 시 이쿼리가 XKB를 처리합니다” 라는 문구가 등장한다. 이 문자은 쿼리 실행전에 데이터 처리의 양을 예측해주는 기능이다. 실제 과금되는 데이터 처리량은 쿼리 후 결과를 보고 분석하는 것이 정확하다.

빅쿼리 파티셔닝과 클러스터링-예상비용.png

04. 쿼리를 요청하면 쿼리 완료 문자열 오른쪽에 처리시간과 처리된 데이터 용량이 출력된다. 그리고 실행 세부정보 탭에는 몇행의 데이터가 처리 대상에 포함되었는지 확인할 수 있다. 이 용량과 행의 수를 테이블의 전체 데이터양과 행의 수와 비교해서 얼마나 효율적으로 처리되었는지 확인할 수 있다.

빅쿼리 파티셔닝과 클러스터링-쿼리효율성확인하기.png

사용자 인증 파일 만들기

구글에서 제공하는 수많은 API를 사용하기 위해서는 사용자 인증 정보가 필요하다. 구글 피트니스에 저장되는 정보는 개인 정보이기 때문에 OAuth 클라이언트 ID 인증 방식을 사용해야 한다. 그리고 구글 클라우드 플랫폼의 API(클라우드 스토리지, 클라우드 데이터플로우)를 사용하기 위해서는 서비스 어카운트를 이용한 인증 방식을 사용해야 한다.

API 호출을 위한 인증 방식 소개

OAuth 인증

프로그램에서 사용자 데이터에 엑세스할 수 있도록 사용자 동의를 요청하는 방식의 인증 방식이다. 예를 들어 구글 피트니스 앱을 통해 수집된 개인 정보는 각 개인별 계정에 데이터가 저장된다. 따라서 구글 피트니스 API를 통해 이렇게 저장된 각 개인 계정의 정보에 접근하기 위해서 해당 인증 방식을 이용해야 한다.

해당 인증 방식으로 구글 피트니스 API를 호출하게 되면 사용자에게 로그인 과정과 프로그램이 접근하는 데이터의 범위와 사용 여부 동의를 요청한다. 이과정을 거쳐야 프로그램이 API를 사용할 수 있게 된다. 이 방식을 사용하기 위해서는 GCP 프로젝트, 클라이언트 ID, 클라이언트 시크릿 정보등이 들어 있는 client_secret.json 파일을 다운로드 받아서 프로그램에 포함 시켜야 한다.

서비스 계정 인증

서비스 계정을 사용하여 인증을 사용하는 방식이다. 우리가 만들 프로그램은 구글피트니스와 레스큐타임의 데이터를 가져와서 구글 클라우드 스토리지에 파일 형태로 저장해야 한디. 이때 서비스 계정 키 인증 정보를 이용해야 구글 클라우드 스토리지 접근 권한을 얻을 수 있게 된다. 이렇게 내가만든 프로그램과 구글측 서버간의 통신사이의 인증을 할때는 개인 사용자 계정을 이용하는 대신 서비스 계정 키를 만들때 생성되는 서비스 계정을 사용해야 한다.

OAuth 클라이언트 키 만들기

구글 피트니스에 저장되는 정보는 개인 정보이기 때문에 Fitness API를 호출하기 위해서는 OAuth 인증을 거쳐야 한다. 이를 위해서는 미리 OAuth 클라이언트 ID를 만들어야 한다.

1. 구글 클라우드 플랫폼 메뉴에서 API 및 서비스 > 사용자 인증 정보 메뉴로 이동한다. 그리고 화면 우측의 “사용자 인증 정보 만들기” 버튼을 클릭한 후 OAuth 클라이언트 ID 메뉴를 클릭한다.

미밴드 데이터의 수집과 저장-credentials-3.png

2. 어플리케이션 유형을 기타로 선택하고 클라이언트 ID 식별을 위한 이름을 입력한다.

미밴드 데이터의 수집과 저장-create-crendential-id-1.png

3. 생성 버튼을 클릭하면 OAuth 클라이언트 ID 생성이 완료된다.

미밴드 데이터의 수집과 저장333.png

4. 생성된 ID 정보를 프로그램에서 사용하기 위해서는 인증 정보가 담기 json 파일을 다운로드 받아야 한다. 클라이언트 ID 리스트에서 우측 다운로드 버튼을 눌러서 json 파일을 다운로드 받는다. 이 파일은 앞으로 설명할 구글피트니스 데이터를 가져오는 프로그램 구동시에 인증을 위해 사용할 것이다.

구글피트니스 데이터의 수집과 저장-다운로드.png

서비스 어카운트 키 생성

클라우드 스토리지, 클라우드 데이터플로우 API를 사용하려면 구글 클라우드 플랫폼에 접근이 가능한 서비스 어카운트를 생성 해야 한다.

1. 구글 클라우드 플랫폼 메뉴에서 IAM 및 관리자 > 서비스 계정 메뉴로 이동한다. 그리고 화면 우측의 “서비스 계정 만들기” 버튼을 클릭한다.

사용자 인증 파일 만들기-서비스계정생성.png

2. 서비스 계정 이름에 서비스 계정 식별을 위한 계정 이름을 입력한 후 만들기 버튼을 클릭한다.

사용자 인증 파일 만들기-서비스계정만들기정보입력.png

3. 만들기 버튼을 클릭하면 서비스 계정에 권한을 선택하는 화면이 등장한다. 역할 선택을 클릭한 후 프로젝트 > 소유자로 역할을 설정한 후 “계속” 버튼을 클릭한다.

564.957x564.957px
486.96x486.96px

4. 완료 버튼을 눌러 계정 생성을 완료한다.

522.993x522.993px

5. 계정이 생성되면 다음과 같이 서비스 계정 메뉴에 새로운 계정이 추가된 것을 확인할 수 있다. 방금 생성했던 서비스 계정의 우측의 작업 메뉴를 클릭한 후 “키 만들기” 버튼을 클릭하여 서비스 계정 키 만들기를 진행한다.

사용자 인증 파일 만들기-키생성하기.png

6. 키 유형을 JSON으로 선택하고 만들기 버튼을 클릭하면 서비스 계정 키 파일 다운로드가 시작된다. 이 파일은 앞으로 설명할 프로그램에서 구글 클라우드 플랫폼 API 호출 인증을 위해 사용할 것이다.

사용자 인증 파일 만들기-서비스계정키다운로드1.png

구글 클라우드 플랫폼 설정

우리는 데이터 분석 파이프라인을 구글 클라우드 플랫폼(이하 GCP)을 이용한다. GCP를 이용하려면 먼저 계정을 생성해야 한다.

GCP는 유료 서비스지만 처음 가입하면 12개월 기한으로 300달러의 무료 크레딧을 준다. 300달러면 1년 동안 이 책에서 제작할 데이터 분석 서비스를 무료로 이용할 수 있다.

먼저 https://cloud.google.com에 접속한다. 그리고 무료로 사용해보기 버튼을 클릭한다.

실습 환경 만들기-GCP무료로사용해보기.png

국가를 선택하고 서비스 약관과 이메일 업데이트 체크 박스를 클릭한다. 그리고 동의 및 계속하기 버튼을 클릭한다.

실습 환경 만들기-GCP1-2단계.png

계정유형을 개인과 사업자중 하나를 선택하고 주소정보를 입력한다.

실습 환경 만들기-2-2단계-1.png

결제수단에 신용카드 정보를 입력하고 무료 평가판 시작하기 버튼을 클릭해서 서비스 가입을 완료한다.

실습 환경 만들기-GCP2-2-2.png
실습 환경 만들기-GCP생성완료.png

서비스 가입을 완료 했으면 우리가 데이터 분석 파이프라인을 구축할 GCP 프로젝트를 생성해야 한다. 화면 상단의 프로젝트 선택 버튼을 클릭한후 새 프로젝트 버튼을 클릭한다.

Image-GCP프로젝트생성-1.png

프로젝트 이름에 datadriver를 입력한다. 프로젝트 ID는 우측에 수정 버튼을 클릭하여 변경할 수 있다. 프로젝트 ID가 다른 프로젝트와 겹치지 않으면 프로젝트 이름과 동일하게 설정되는데 다음과 같이 랜덤하게 생성되는 값을 사용하기를 권장한다.

Image-gcp-new-project.png

다음과 같이 프로젝트 생성중이라는 팝어이 뜨고 몇분이 지나면 프로젝트 생성이 완료된다.

실습 환경 만들기2222.png

마지막으로 우측 상단에 나오는 계정 활성화 버튼을 클릭한후 업그레이트 버튼 클릭을 하면 GCP의 모든 기능을 사용할 수 있도록 설정한다.

실습 환경 만들기-complete-1.png
Gcp-completed-2.png

클라우드 SDK 설치

클라우드 SDK는 구글 클라우드 플랫폼의 제품 및 서비스를 위한 명령줄 인터페이스를 제공한다. 로컬 컴퓨터에서 구글 클라우드 플랫폼의 각종 서비스에 접근하기 위해서는 SDK를 설치하고 로그인 과정을 거쳐야 한다.

1. 원도우용 Cloud SDK(https://cloud.google.com/sdk/?hl=ko) 설치 파일인 다운로드 받는다. 그리고 다운로드 받은 GoogleCloudSDKInstaller.exe를 실행하여 설치를 시작한다.

실습 환경 만들기-install-sdk.png

2. 설치가 완료되면 다음과 같이 개발에 사용할 구글 클라우드 플랫폼 계정을 여부를 물어본다. y를 입력하면 브라우저창이 자동으로 열린다. 앞서 생성한 구글 클라우드 플랫폼 계정을 선택 후 로그인한다.

실습 환경 만들기-sdk-setup-1.png

만약 사용 계정을 잘못 선택한 경우 gcloud auth login 명령을 통해 개발에 사용할 구글 클라우드 플랫폼 계정을 다시 선택할 수 있다.

gcloud auth login

3. 계정에 로그인하면 사용할 프로젝트를 선택하라는 창이 뜬다. 앞서 생성했던 프로젝트의 아이디의 번호를 입력한다.

실습 환경 만들기-sdk-setup-33.png

 만약 사용 프로젝트 아이디를 잘못 선택한 경우 gcloud config set project 명령을 통해 사용할 다시 설정할 수 있다.

gcloud config set project thinking-league-238017

4. 그리고 커맨드라인에 gcloud auth application-default login 명령을 입력하고 현재 사용하고 있는 구글 클라우드 플랫폼 계정을 선택한다. 이 과정을 거치면 개발 도중에 어카운트 파일을 복사하는 과정없이 서비스 권한을 얻어 API를 사용할 수 있게 해준다.

gcloud auth application-default login
실습 환경 만들기-ddddd1.png

이제 구글 클라우드 플랫폼의 리소스들에 접근할 권한을 가지게 되었다. gcloud config list를 통해 설정 여부를 확인한다.

gcloud config list
실습 환경 만들기-gconfig-list.png

마지막으로 어느 위치에서나 콘솔창에서 gcloud 커맨드를 사용하기 위해서 Cloud SDK가 설치된 폴더를 PATH에 추가한다. 위에서 설명한 Java SDK의 bin폴더를 추가하듯이 Cloud SDK 폴더를 PATH에 추가하여 어디서든 커맨드를 사용할 수 있도록 할 수 있다.

Gcloud SDK 패스 등록 1.png
Cloud SDK 패스 등록 2.png

인스톨러로 설치 기본 설치 폴더에 위치는 다음과 같다. PATH에 자신이 설치한 SDK 위치를 추가한다.

C:\Users\maaya\AppData\Local\Google\Cloud SDK