Google Cloud Next ’19 참관기 (1부)

Google Cloud Next란 2015년부터 매년 미국 샌프란시스코의 모스콘 센터를 중심으로 열리는 Google의 행사입니다. 또다른 행사 Google I/O에 비하면 Google 클라우드 제품에 특화된 행사라고 할 수 있습니다. Google 클라우드 제품에 대한 소개와 고객의 성공 사례를 소개하는데, 서버, 빅 데이터, 머신 러닝, G Suite 등 백엔드 중심으로 진행됩니다. 올해는 4월 9월부터 11일까지 3일간 진행되었습니다.

 

목차

  1. Google Cloud Next ‘19
  2. 도착 당일
  3. 오전 키노트
  4. Building Game AI for Better User Experiences (DeNA)
  5. Uncovering Clinical Insights From Unstructured EMR Data to Improve Patient Outcomes
  6. Plaid’s Journey to Global Large-Scale Real-Time Analytics With Google BigQuery
  7. Data Processing in Google Cloud: Hadoop, Spark, and Dataflow

 

Google Cloud Next ‘19

그림 1. Thomas Kurian의 키노트 발표 (출처: Google Cloud Next 홈페이지)

 

이번 Google Cloud Next ‘19의 주제는 다음과 같이 3가지로 요약할 수 있습니다. 

  1. 멀티 클라우드 시대
    • 고가용성을 위해, 다수의 클라우드를 동시 운영하는것이 대세
    • 예를 들면 온프레미스 서버, Amazon AWS, Google Cloud Platform을 함께 사용
    • Google은 멀티 클라우드 간 마이그레이션 및 관리 도구 Anthos에 힘을 쏟는 중
  2. 클라우드 데이터웨어하우스(DW) 시대
    • 장비 유지보수 부담 없고 속도는 더 빠른 Google의 BigQuery와 같은 클라우드 DW가 대세 
    • 개인정보, 보안 등 고객사가 고민하는 부분에 대해 DLP 기능 등을 통해 빠르게 보완 중
    • Google 스프레드시트, Data Catalog, BigQuery BI Engine, Cloud AutoML Tables, Cloud Data Fusion 등 모든 데이터가 BigQuery로 통합되도록 Google 클라우드 제품이 구성되는 중
  3. 머신 러닝의 시대
    • BigQuery ML과 Cloud AutoML로 쉬워진 머신 러닝 적용
    • 자연어 처리, 영상 인식 등의 일반적인 머신 러닝은 Google이 기본 제공
    • AI 전문가 없이도 Google 머신 러닝 제품을 사용하면 쉽게 제품화 가능

 

이번 행사에서 발표된 고객 사례 중 주요 사례는 다음과 같습니다. 

  1. LG CNS – 공장 생산라인 제품 검수 자동화
    • Cloud AutoML 도입하여 인력 부담은 줄면서도 생산성과 퀄리티는 향상됨
  2. DeNA  – 인공지능과 대전, 덱 자동 편성
    • 사람처럼 대전하는 NPC를 만들어, 초보자들의 PVP에 대한 부담이 줄어듬 
    • 복잡한 덱 편성을 AI를 통해 지원하여, 유저의 게임 플레이 경험을 향상시킴
    • Cloud ML의 뛰어난 성능으로 게임 기능에 AI의 도입이 쉬워짐
  3. 넷마블 – 어뷰징 탐지
    • Google의 컨설팅을 받아 어뷰징 탐지에 Cloud ML을 도입
      1. 훨씬 많은 수의 어뷰징 유저를 제재 할 수 있게 됨
      2. 어뷰징 신고 건수가 줄어듬
    • Google과의 파트너십 강화 및 산학협력 등을 통해 머신 러닝에 대규모 투자 중
      1. 밸런스 및 테스트 자동화, 광고 사기 감지, 광고 수익률 예측 등에 대해 연구 중
      2. AI 사용을 모든 비즈니스로 확대 예정

 

Google Cloud Next ‘19에 직접 참가하고 느낀 바는 다음과 같습니다. 

  1. Google 클라우드에 대한 전세계 사용자의 관심도를 알 수 있었음
    • 샌프란시스코 시내 곳곳에 보이는 Next ‘19 현수막
    • 시내를 가득 매우는 참가자들
    • 거대한 규모의 기업 엑스포
    • Google 클라우드를 직접 사용하고 있다는 점에서 기술 리더라는 자부심도 생김
  2. Google의 제품화 과정
    • 고객 사례를 듣고 불편점을 개선하여 다른 고객들도 비슷한 기능을 쉽게 개발 가능하게 일반화하여 제품화
  3. 모든 건 $ – Google 클라우드의 철저한 과금 정책
    • 돈만 내면 모든게 쉽게 다 됨
  4. 빅 데이터 + 머신 러닝은 큰 회사만의 경쟁력
    • 많은 데이터와 많은 컴퓨팅 파워가 필요하며, 이를 위해서는 상당한 비용이 발생
    • 어뷰징 탐지 등은 작은 회사에서 구현하는 것은 쉽지 않을 것으로 보임

 

그림 2. 샌프란시스코 시내의 Next ‘19 현수막

 

도착 당일

체크인이 가능한 시간 전에 숙소에 도착했기 때문에 방황을 해야 했습니다. 샌프란시스코 최고의 인기 명소인 피셔맨스 워프에서 점심식사를 했습니다. 해안가를 따라 재퍼슨 거리를 중심으로 많은 레스토랑과 가게들이 줄지어 있는 곳입니다. 

 

그림 3. 샌프란시스코 공항에서 숙소까지

 

호텔에 체크인을 하고 짐을 풀어둔 뒤에 Cloud Next ‘19 참가자 카드를 미리 수령하기 위해 행사장을 방문했습니다. 그리고 Google 샌프란시스코 오피스를 방문하여 APAC 참가자 리셉션에 참석했습니다. 

 

그림 4. Next ‘19의 메인 이벤트가 열리는 모스콘 센터

 

오전 키노트

행사 첫날, 컨퍼런스 홀에 도착했을 때는 이미 만석인 상태여서 별도로 마련된 회의실에서 스크린을 통해 키노트를 시청하게 되었습니다. 키노트의 첫번째 주제는 Google 클라우드의 현황에 대한 소개였습니다. GCP 전용의 태평양 광 케이블, 대서양 광 케이블이 개통되어 운영 중이거나 공사 중이었습니다. 그리고 2020년에 GCP 서울 리전이 오픈될 예정입니다. 

 

그림 5. 구글 전용의 해저 광 케이블 현황 (출처: 구글 클라우드 블로그)

 

두번째 주제는 Anthos에 대한 내용이었습니다. Anthos는 GKE 기반 멀티클라우드 마이그레이션 및 관리 도구입니다. GKE란 Google Kubernetes Engine의 약자이며, Docker와 같은 컨테이너 관리 엔진입니다. 프라이빗 클라우드와 GCP 간의 마이그레이션 뿐만 아니라 Amazon AWS, Microsoft Azure 등 다양한 클라우드 간의 마이그레이션을 지원하기 위해 준비 중입니다. 

따라서, 개발자는 한번만 개발하면 어떤 클라우드에서든지 서버를 복제하여 운영할 수 있게 됩니다. 다시 말하면 컨테이너 이미지만 있으면 그것이 어디서든 실행될 수 있게 되는 것입니다. 따라서 하이브리드 클라우드도 쉽게 구축할 수 있게 됩니다. 하이브리드 클라우드란 온프레미스 환경의 프라이빗 클라우드와 GCP와 같은 퍼블릭 클라우드를 혼용하는 구성을 말합니다. 

GKE On-Prem는 말그대로 직접 운영하고 있는 서버에서 컨테이너를 관리하는 도구입니다. 일반적으로 VMware과 같은 프라이빗 클라우드 위에 컨테이너를 올리게 됩니다. 다시 말하면 GKE를 GCP 환경 뿐만 아니라 온프레미스 환경에서도 이용할 수 있게 됩니다. 

Anthos Migrate는 현재 베타 상태이며, GKE가 아닌 서버들을 GKE로 쉽게 마이그레이션 할 수 있도록 도와주는 도구입니다. 

 

그림 6. Anthos의 개념도 (출처: Google Cloud 홈페이지)

 

세번째 주제는 Cloud Run과 Cloud Build에 대한 내용이었습니다. Cloud Run은 Docker와 같은 컨테이너를 서버리스 환경에서 운영할 수 있는 서비스이며, Kubernetes 위에서 Knative 기반으로 동작합니다. 따라서 코드만 올리면 별도의 서버 세팅 없이 웹 서버를 운영할 수 있고, 오토 스케일링도 가능하므로 트래픽 증가에 쉽게 대응할 수 있습니다. Cloud Build는 Jenkins와 같은 빌드 툴이 GCP에서 서비스로 제공되는 것입니다.

또한 이 외에도 Google은 Confluent, MongoDB, Elastic, Redis Labs, Influx Data 등과 같은 오픈소스 회사와 파트너십을 통해 협업을 하여, 수많은 오픈소스 제품들을 구글 클라우드상에서 쉽게 사용할 수 있도록 하고 있습니다. 오픈소스 서버를 직접 구축하고 운영하는 비용을 줄여, 기존 오픈소스 사용자들도 쉽게 GCP 서비스로 옮길 수 있도록 하는 것이 Google의 계획인 것으로 보입니다

 

Building Game AI for Better User Experiences (DeNA)

팔레스 호텔로 장소를 옮겨서 DeNA의 “Building Game AI for Better User Experiences” 세션에 참석했습니다. DeNA는 역전 오셀로니아란 게임에 Cloud ML을 도입한 사례를 발표했습니다. 

 

그림 7. 팔레스 호텔과 세션 장소

 

역전 오셀로니아에 AI의 도입이 필요했던 이유는 복잡한 게임 시스템으로 때문이었습니다. 게임의 복잡한 시스템은 초심자가 게임을 즐기는 것이 어렵게 만들었습니다. 초심자에게 가장 큰 장벽 중 하나는 복잡한 덱 편성이었습니다. 16개 슬롯으로 구성된 덱에 캐릭터를 적절히 배치하는 것은 초심자에게 너무 어려웠습니다. 또한 초심자들은 상위 플레이어와 격차가 과도하게 커서 PVP 컨텐츠를 즐기기도 어려웠습니다. 

또한, 매주 2~3개의 신규 캐릭터와 그에 따른 다양한 스킬이 업데이트 되었는데, 이와 관련하여 게임의 운영에도 큰 애로가 있었습니다. 일반적인 로직으로는 효율적으로 덱 편성을 자동화 할 수 없었고, 밸런스 붕괴가 없는지 체크하는 것은 불가능에 가까웠습니다. 

그림 8. 게임의 덱과 캐릭터 (출처: 발표 자료)

 

이런 문제를 해결하기 위해 DeNA는 AI 덱 추천 시스템과 AI 대전(PVE) 두가지 기능에 AI를 도입하였습니다. 유저가 갖고 있는 캐릭터를 이용해 효과적인 덱 편성을 추천하게 되면서 초심자들의 승률이 올라간 것을 확인할 수 있었습니다. 또한 AI 대전을 통해 초심자들의 PVP에 대한 부담을 덜어주면서 실제 사람을 상대하는 것과 유사한 느낌을 줄 수 있었습니다. 

AI 덱 추천 시스템은 상위 랭크 유저의 덱 편성 로그를 BigQuery에 수집하여 어소시에이션 분석, 클러스터링 분석을 통해 어소시에이션 룰 마스터 데이터를 산출합니다. 게임 유저는 AI 덱 추천 시스템에서 리더 캐릭터를 선택한 뒤에, 이 리더 캐릭터를 베이스 캐릭터로 함께 배치하면 좋은 캐릭터를 추천받습니다. 다시 캐릭터를 선택하면 이 캐릭터를 베이스 캐릭터로 하여 동일한 과정을 반복하고 이 과정을 마치면 추천 덱이 완성됩니다. 

 

그림 9. AI 덱 추천 시스템의 아키텍쳐 (출처: 발표 자료)

 

AI 배틀 시스템은 약 9개월 간의 배틀 로그를 기반으로 구축되었습니다. 이 게임은 4 x 4 형태의 덱, 6 x 6 형태의 맵, 턴 방식의 플레이로 구성되므로 바둑의 기보와 유사한 배틀 로그를 수집할 수 있었습니다. 이 데이터를 이용해 딥 러닝을 수행했습니다. 

상위 플레이어의 배틀 로그를 통해 DQN, CNN 학습을 수행하였습니다. 입력 데이터는 (1) 최대 HP, 남은 HP, 턴수와 같은 캐릭터 상태 (2) 공격력, 스킬, 리더 여부와 같은 캐릭터 정보 (3) 선택 가능한 행동 (4) 흑/백 배치, 특수 발판 정보, 기믹과 같은 국면 정보가 있으며, 출력 데이터는 플레이어가 어느 발판에 말을 두었는지가 되었습니다. 

 

그림 10. GCP를 이용한 AI 배틀 시스템의 아키텍처 (출처: 구글 클라우드 일본 블로그)

 

이 시스템을 실제 게임 유저를 대상으로 서비스할 때는 AI 배틀 시스템의 부하로 인해 어려움을 겪었습니다. 이를 Google 클라우드의 오토스케일링 기능을 이용해 해결하였고, 1초 미만의 평균 레이턴시를 도출할 수 있었습니다. 

그러나 AI 배틀 시스템의 응답이 매우 늦어져 유저가 병목을 경험하는 경우가 발생하였습니다. 그 원인을 조사하여 오토스케일링의 웜업 중 타임아웃 로그가 자주 찍히는 것을 확인하였습니다. 이에 백업 노드를 추가하여 메인 클러스터에서 5초 내 응답이 없으면, 백업 클러스터에 다시 질의하고 이에 대해서도 응답이 없으면 “다시 시도해주세요”라는 메시지를 반환하도록 변경했습니다. 그리고 약 20개로 적정 수준의 백업 노드를 유지하면서 이런 증상은 완전히 해소되었습니다. 

AI 덱 추천 시스템을 도입한 결과 초심자의 승률이 5% 올라갔습니다. AI 배틀 시스템은 이번 발표 직전에 도입된 기능이어서 매출 또는 리텐션 등 비즈니스 성과에 어떤 영향이 있는지는 파악되지 않은 상태입니다. 

Google에서는 DeNA의 사례를 보고 다른 게임 회사들도 Cloud ML을 빨리 적용할 수 있도록 아래와 같은 새로운 피쳐를 업데이트했다고 밝혔습니다. 

  • 커스텀 컨테이너: TensorFlow, Scikit-learn 외에 다른 프레임워크도 이용 가능
  • 에측 전/후 Python 코드 실행: 게임에서 라이브 서비스에 적용하기 쉽도록 Python 코드를 트리거로 실행할 수 있게 함
  • 예측 서버 스펙 선택: 서버의 과부하를 방지

 

그림 11. Cloud ML의 신규 피처 소개

 

참고로 Google에서는 ASL(Advanced Solutions Lab) 프로그램을 운영하고 있습니다. 이는 Google 엔지니어가 머신 러닝에 대한 교육과 컨설팅을 제공하는 프로그램으로 DeNA는 2017년 5월에 4주 간의 프로그램을 진행하였고, 이를 통해 시행착오에 따르는 비용을 감소시킬 수 있었습니다. 

 

그림 12. Google의 머신 러닝 멤버 (출처: 구글 클라우드 일본 블로그 유튜브)

 

Uncovering Clinical Insights From Unstructured EMR Data to Improve Patient Outcomes

점심식사는 예르바 부에나 가든스에서 했습니다. Google은 공원 하나를 통째로 빌려서 도시락 나눠주고 자유롭게 식사를 할 수 있도록 하였습니다. 

 

그림 13. 예르바 부에나 가든스에서 점심식사를 즐기고 있는 사람들

 

다음으로 참석한 세션은 Rush 대학의 시카고 병원 내 의료 센터에서 근무하는 분이 발표하였습니다. 시카고 병원은 GCP를 활용하여 환자의 진단결과의 품질을 높이기 위한 의료정보 시스템을 구축하였습니다. 이 시스템은 

이를 위해 사용한 주요 GCP 제품은 Healthcare API, Dataflow, Pub/Sub, BigQuery, Cloud ML 등이 있습니다. Google의 Healthcare API는 다음과 같은 표준을 지원합니다. 

  • FHIR (Fast Healthcare Interoperability Resources)
    • 차세대 의료정보 표준안
    • 효율적 머신 러닝 처리를 위해 건강 데이터를 표준화
  • DICOM (Digital Imaging and Communications in Medicine)
    • 방사선과 영상관련 분야에서 대표로 사용하는 표준
    • 이 방식의 데이터를 머신 러닝 하기 위한 API 제공
  • HL7v2 (Health Level 7) 
    • 레거시 임상 시스템과 통합하려는 모든 어플의 필수적인 통신 방식
    • 이 방식의 메시지를 수집/전송하는 REST API 제공

 

그림 14. 시카고 병원의 사례 발표

 

Plaid’s Journey to Global Large-Scale Real-Time Analytics With Google BigQuery

KARTE 는 개인화에 중점을 둔 마케팅 툴입니다. 이 서비스는 수집 가능한 모든 데이터를 통해 개개인에게 가장 적절한 실시간 상품을 추천하는 등의 기능이 있습니다. KARTE를 만든 Plaid는 2015년부터 BiqQuery를 이용해 매월 60 PB의 데이터를 수집 및 처리하고 있습니다. 일반 유저를 대상으로 한 서비스에 BigQuery를 직접 사용하고 있으므로 실시간 응답이 중요하며 1초 미만의 응답이 요구됩니다. 

 

그림 15. Plaid의 사례 발표

 

BigQuery에서 실시간성을 끌어내기 위한 5가지 패턴은 다음과 같습니다. 

  • 복잡한 쿼리와 캐시
    • 복잡한 쿼리가 필요할 때는 캐시를 사용해야 합니다. 
  • ELT와 간단한 쿼리
    • 다음으로 ELT(Extract, Load, Transform) 후에 데이터 마트 같은 테이블을 만들어서 이 테이블을 조회해야 합니다. 유저 세그먼트는 열(row)에 포함시키는 등과 같은 방법으로  간단한 쿼리로 원하는 값을 반환받을 수 있어야 합니다. 이제 대세는 ETL이 아니라 ELT입니다. 기존의 추출 – 변환 – 적재 플로우 대신 추출한 데이터를 원본 그대로 적재하고 이후에 변환을 하는 방식입니다. 
  • 자주 업데이트 되는 데이터를 최소화
    • 자주 업데이트 되는 데이터는 배치로 처리해야 합니다. 
  • 낮은 레이턴시 구현을 위한 최적화
    • 일반 사용자에게 실시간성을 주기 위해 1초 내 응답이 필요할 때, BigQuery는 아무리 빨리 나와도 최소 3~5초 레이턴시가 있습니다. 따라서 Google Spanner 또는 BigTable 같은 매우 빠른 저장소에 복제(export)해야 합니다. 
  • 다이렉트 조인
    • 고객 데이터를 따로 전송받지 말고 BigQuery에 올린 뒤에 조인을 합니다. 법적 문제로 고객 데이터를 국내에 저장해야 하는 경우는 국내 리전의 Google 프로젝트를 메인으로 설정하고 다른 리전의 데이터를 조인해야 법적 문제를 피할 수 있습니다. 

 

그런데, BigQuery의 신규 피처로 Bigquery Storage API가 소개되었습니다. 이 API는 BigQuery의 데이터를 사용하는 것이 일반 DB의 데이터를 사용하는 것과 같이 빠르게 처리할 수 있게 해줍니다. 기존의 List API는 최대 20 MB/s의 속도였다면, 새로운 API는 최대 5,000 MB/s의 속도를 자랑합니다. Bigquery Storage API는 다음과 같은 기능을 제공합니다. 

  • 병렬 스트림
    • 병렬 스트림으로 동작하므로 읽기 속도가 매우 빠릅니다.
  • 다이나믹 샤딩
    • 클라이언트 속도에 맞춰서 병렬 개수를 조절하고 대기시키므로 대용량의 데이터를 읽을 때 구현 편리합니다.
  • 열(column) 프로젝션
    • 특정 열에 대해서만 조회할 수 있으므로 읽기 속도와 비용 절감에 유리합니다. 
  • 열(column) 필터링
    • 필터링은 SQL의 WHERE와 성격이 다르므로 AND 조건 검색 등은 불가합니다. 
  • 스냅샵 일관성(consisitency)
    • 데이터 가져오는 세션을 만든 순간, 테이블의 스냅샷이 보존되기 때문에, 그 스냅샷의 시점과 세션의 시점은 동일성이  보장됩니다. 예를 들면 1시간 전의 테이블에서 데이터를 가져올 수도 있습니다. 
  • 지원하는 프로그래밍 언어
    • 사용할 수 있는 언어는 Java, Python, Go입니다. 

 

다만 몇가지 단점이 있습니다. 필터링은 SQL의 WHERE와 성격이 다르므로 AND 조건 검색 등은 불가합니다. 그리고 1TB 조회 당 1.1 달러의 비용이 발생합니다. 다만 정액제(flat rate) 이용 시 월 300 TB까지는 무료입니다. 

 

Data Processing in Google Cloud: Hadoop, Spark, and Dataflow

다음에 참석한 세션은 데이터 처리 제품에 대한 세션이었습니다. Dataflow, Dataproc와 함께 이를 활용한 Qubit의 개인화 프로젝트도 고객 사례로 함께 소개되었습니다. Dataproc는 Google 클라우드에서 제공하는 하둡, 스파크입니다. 이 세션에서 다음과 같은 새 피처가 소개되었습니다. 

  • Apache Beam Dataflow 
    • 콘솔에서 바로 조회할 수 있는 레이턴시와 랙에 대한 쉬운 모니터링
    • Python 코드로 스트리밍 잡을 실행할 수 있게 됨
    • Filnk 위에 올리는 Beam 성능 향상
  • Dataflow 서비스 품질 향상
    • 잡 생성 콘솔 UI 개편
    • ETL 템플릿 20개 이상 추가
    • 고속의 읽기 성능을 제공하는 BigQuery Storage API 추가
    • 각 워커에 공인 IP가 필요없게 됨
    • Dataflow의 보안 설정을 위한 VPC-SC 지원
    • 200 TB 이상의 데이터에 대한  조인 또는 그룹 등의 셔플 지원
  • Dataflow ML / AI 지원
    • Tensoflow Extended 지원
    • Kubeflow 파이프라인 통합
  • Dataflow Python SDK 피처 추가
    • BigTable 커넥터
    • Python 3 지원
    • Python 스트리밍
  • Google Cloud Dataproc  
    • 온프레미스 환경에서 운영하던 Hadoop, Spark를 Google 클라우드로 마이그레이션 가능

 

1부를 마치며

넓은 키노트 행사장에 빈자리가 없을 정도로 구글 클라우드에 대한 전세계의 관심이 뜨거웠습니다. 저도 그 열기를 함께 나누며 두근거리는 마음으로 세션을 들으며 많은 인사이트를 얻을 수 있었습니다.

DeNA 의 인게임 AI 서비스 도입 사례를 들으며 실무 지식과 경험을 습득 할 수 있었고, 의료관련 세션은 평소에 완전 무지했던 부분이었기에, 기술 활용에 대한 시야가 넓어졌습니다. 또한 빅쿼리 퍼포먼스 세션에선 저희가 빅쿼리를 사용하며 겪었던 고민과 해결방법을 다른 회사에서도 비슷하게 했던것을 알고 공감도 할 수 있었습니다. 그리고 이런 고객들의 공통적인 고민에 대한 해결책을 마련해주는 구글 클라우드 플랫폼 개발진의 민첩함에도 세삼 감탄하였습니다. 

샌프란시스코를 돌아다니며, Next 행사에 참가한 수만명의 사람들이 이 곳을 가득 메우고 있는 모습을 보면서, 구글 클라우드 플랫폼이 전 세계적인 트렌드임을 새삼 느꼈고, 우리 회사도 그 흐름에 동참하고 있다는 사실에 자부심을 갖게 되었습니다.

이어지는 2, 3일차엔 빅쿼리와 ML 관련으로 더욱 많은 세션이 있었습니다. 좀 더 특화된 내용들이 많이 나오니 구글 클라우드로 관련 직무를 하시는 분들이라면 더욱 즐겁게 읽으실 수 있을 것 같습니다. 소중한 기회를 준 회사에 감사하며 첫날 참관기를 마무리하겠습니다.