구글 클라우드데이 @판교 세미나

세미나 내용

  • 빅데이터 분석과 머신러닝 그리고 파이어베이스에 대해 해당 분야 전문가 분들이 게임개발과 테크개발에 도움이 되는 내용을 세션으로 전달할 예정

13:00-14:00 등록 및 입장

1번째 세션. 누구나 할 수 있는 “빅데이타 분석 및 머신러닝 시스템 아키텍쳐” 조대협님 (구글 클라우드 엔지니어)

  • 시작은 구글 클라우드 사용자 그룹의 광고와 함께..
  • 티를 얻었다.

###

  • 소프트웨어 개발 트랜드
  • IT 내부 인프라 업무자동화로 시작하였다. 그러다가 인터넷이 나오면서 오픈소스로 내용들이 공유되기 시작함. 그러다 스타트업들이 많이 나오면서 오픈소스가 너무 많아졌다.
  • 생존을 위한 전략 - 빨리 만들어야하고, 잘 만들어야한다. 그럼 데이터를 잘 봐야한다.
  • 스타트업은 개발자 리소스가 절대적으로 부족한데 혼자서 모든 작업을 해야한다.
  • 빅데이터와 머신러닝을 민주화의 관점에서 볼것이다.(예전에는 자본을 가진사람만 할수 있엇는데 클라우드서비스가 나오면서 모두가 할수있게되엇다.)
  • 오라클 벤더 -> 하둡 오픈소스(스파크,하둡,재플린 등…) - 개발은 안하고 삽질 하둡 까는데 6개월(클라스터 안정까지..) -> 그래서 구글이 나왔다.(클라우드 서비스)
  • 클라우드 기반의 데이터 분석은 1000억개의 데이터를 라이크를 처리하는데 30초정도 걸리고 20달러가 든다.
  • 이게 옛날에는 엄청 복잡한 작업(4시간정도)가 걸렸는데 요즘에는 클라우드로 금방 처리한다.
  • case study
    • 모바일 앱 개발 N사, 게임사, 반도체사, VD사업부
    • 빅데이터와 머신러닝은 밥그릇싸움.
  • 실시간 분석
    • 삼성 갤럭시 노트7 SNS 반응 실시간 분석(5시간 - 코딩4시간, 대쉬보드 1시간) 만들어서 30초 단위의 분석 가능
    • 일반 엔지니어 혼자 하루만에 개발가능, 400달러 정도 비용 소모
  • 게임데이터 분석
    • 어떤방법으로 분석할것이냐?
  • 빅데이터 분석은 데이타를 분석하는게 목표입니다.
  • 오픈소스가지고 예술하지 말자.
  • 클라우드의 스케일과 매니지드 서비슬르 이용해 본질에 집중하자(자기가 만드는 것보다 좋다.)
  • 빨리 피드백을 받아서 그다음 서비스의 운영을 어떻게 할것인가에 중점을 둬라
  • 머신러닝의 기본원리는 학습시키는것
  • 고양이, 개를 학습시키고 이미지를 넣어서 이건 무엇인가?를 추출하는 것.
  • 머신러닝의 종류
    • 지도학습 - 결과를 학습시키고 추출
    • 비지도 학습 - 학습 안시키고 데이터의 인사이트를 예측할때 사용
    • 강화 학습 - 컴퓨터에게 플레이 시키면서 잘하면 상주고 못하면 벌주고로 학습
    • 기본 개념 - 선을 긋는 것
      • 그래프에서 선을 긋는데 최대한 공통의 데이타를 통과하는 선을 찾는 작업(가장 많은 데이터를 지나는 선)
      • 머신러닝이란 사람과 닮아가는 것.
        • 뉴런 네트워크 - 옛날에는 인기가 없는 학문 (현대에는 Hinton 교수의 랩에서 뉴럴 네트워크를 딥 뉴럴 네트워크 (딥러닝))
        • MOOC에서 배울수있다. 자격증도 준다.
      • 텐서플로우를 사용해서 머신러닝을 만들어라.(수학식은 몰라도 되 만들어놓은 함수를 쓰자!)
      • Google Vision API, Speech API
      • 머신러닝의 알고리즘에 집중하지말고 그냥 만들어진것을 잘 가져다 쓸 생각만 하자
      • 그럼 어떻게 잘 가져다 쓸것인가?(아이디어가 없다.)
        • Elex - 게임 채팅
        • Airbnb
        • Video Intelligent API
        • api.ai (챗봇) - 일주일만 공부하면 만들수잇다.
      • 만드는 케이스
        • 일본의 TV 아이돌 인식 개인 개발자 & Tensorflow Model (1500명의 아이돌에 라벨을 다 붙이고 직접 학습시킴)
        • 오이 분류기 개인 개발자
        • 일본의 중고차 거래 사이트
        • AXA (보험회사) - 7~10%의 사람들이 위험을 일으킨다. 이것을 분석함
      • 모델을 만들때 발생하는 문제
        • CSV로 주세요.(머신러닝 학습데이타가 필요한데 CSV로 달라) - 3일정도걸림… 오래걸린다.
        • 빅데이타기반의 머신러닝의 핵심은 반복이다.(여러번 데이타를 넣어서 결과를 여러번 도출해야한다. 피드백이 빨라야한다.)
        • 데이터 정제하는 시간을 많이들여야한다.(쓰레기 데이터를 분리해줘야함)
      • 왠만한 알고리즘과 모델은 오픈소스로 공개되어있다. -> 모델과 알고리즘 밖을 고민해라
      • 데이타 수집부터 빅데이타 분석, 학습까지 전체를 하나의 파이프라인으로 통합.
      • 구글의 TPU는 일반 것 보다 15배에서 30배 빠르다.
    • 빅데이터를 할때 그냥 쫄지말고 해라 (수학 몰라도되, 해쉬테이블을 생각해라.)

14:30-15:00 500개의 테이블을 혼자서 통합해서 분석해보자 “빅쿼리와 아파치 에어플로우를 이용한 빅데이타 분석 시스템 구축하기” 최유석-나무기술 (나무기술 클라우드 엔지니어)

  • 블레이드 앤 소울의 데이터를 활용함.
  • 빅데이터 분석, 자신이 데이터분석을 한것을 소개한다.
  • 일반적으로 빅데이터 분석 과정은 원천 데이터가 있고 이 데이터를 처리해야하는 요건에 따라서 실시간 배치 처리를 통해 데이터를 저장 -> 저장된 데이터를 처리 -> 대쉬보드에 뛰워줌-> 활용
  • 빅데이터 분석 아키텍처 (사진)
  • 보통 하둡을 기반으로하는데 문제점은 데이터를 분석하는데 걸리는 시간보다 시스템을 설치 관리 운영하는데 많은시간이 들어간다.
  • 해결. 클라우드 기반의 데이터분석 파이프라인을 구축하자.
  • NoOps, Cloud Scale Infrastructure
  • 발표 프로젝트를 할때 대략 3주정도 걸림(파이썬 거의 몰랏고 인프라 처음 사용해봄) - 좀 알면 1주일 정도 걸릴것이다.
    • Data Studio와 Datalab -> 데이터 시각화
  • 구조
    • Log Data -> 데이터 파이프라인 구성(Cloud SQL ->(embulk사용) GCE -> Cloud Storage -> BigQuery(빅데이터 분석 성능)) -> Reporting Services(시각화 서비스)
    • AirFlow(자동화 처리에 사용됨)

15:00-15:30 전세계 어디라도 빠르게 서비스가 가능한 “구글 클라우드 네트워크를 이용한 네트워크 가속” 이준호 (락플레이스 클라우드 엔지니어)

$(whoami)

  • GCP Network under the hood
  • 퍼블릭 클라우드 = 수많은 서비스들
    • AWS, AZURE, GCP … 수많은 서비스들이 있다.
    • 수많은 서비스들의 성능에서 네트워크가 많은 영향을 끼친다.
    • 빅쿼리는 쿼리를 날리기전에 데이터가 스토리지에 올라와있어야한다.(처리할 데이터들이 리프노드에 올라와있어야한다.)
    • 이 과정에서 충분한 대역폭이 확보가 안된다면 실제 쿼리를 수행하는 시간이 매우 오래걸린다.(데이터 전송이 느려진다.)
    • 네트워크는 모든 서비스의 기본이다.
  • GCP Network = Google Network (사진)
  • 구글 네트워킹 구성 요소
    • 에스프레소
    • B4
    • Andromeda - 네트워킹 스택(장치) 구글에서는 일반적으로 스위칭 하드웨어를 사용하는게 아니라 VM을 사용한다.
    • Jupiter
  • VPC = Global Network (가장 큰 논리적인 컴퓨팅 개념)
    • VPC 하나만 만들면 전 세계 리전과 연결되서 추가 설정이 필요없다.
    • 하나의 서브넷이 리전을 컨트롤하기때문에 네트워크를 구성할때 매우 심플해진다.
    • VPC를 여러개 만들어도 연동되는 서비스를 제공한다.
    • GCP를 이용하면 내 자원에 접근할때 골머리썩을일이 없다.
    • GCP 네트워크 성능 결정 요소
      • 인스턴스 크기, 네트워크 티어, 로드 밸런싱(사용 유무에 따라 성능이 달라진다.-> 보통 다른 서비스는 붙이면 느려진다.), + 알수없는 무언가..
      • 인스턴스 크기 1vCpu = 2Gbps
        • vm하나가 가질수있는 대역폭의 한계가 있는데 GCP는 VM자체의 대역폭이 크기때문에 다른 서비스들보다 높은 성능을 사용할수 있다.
      • 로드 밸런싱
        • GFEs(Google Front Ends) - 추천사항
        • Maglev - 모든 포트의 사용가능(특정포트를 무조건 써야할때 쓰면된다.)

15:30-16:00 휴식시간

16:00-16:30 복잡한 계정 관리는 그만 “계정관리와 권한 통제를 통한 효과적인 클라우드 거버넌스 구축하기” 정명훈 (구글 클라우드 엔지니어)

Google Cloud 계정, 권한 및 조직관리

  • 프론트 엔드가 치고나갈때 백앤드에서는 그 사람들을 어덯게 관리할것인가?
  • 누군가가 나의 리소스를 필요로 할때 자동으로 승인과 거절을 해주는 것.
  • 누가(who), 어떤 자원을(which resource) 무엇을(What) 할수 있는지 검사(permission)
  • Authentication 너 누구냐?
    • 누구에게 얼마만큼의 자원을 할당할때 그 누구를 식별하는게 매우 중요하다.
  • Authorization
    • 누구인지 식별을 하엿을때 무슨 권한이 잇는지 확인해주는것
  • 조직이 커지고 시스템이 복잡해지면 관리자가 모든것을 관리하는것을 원하지 않는다.(네트워크는 네트워크만, 스토리지는 스토리지만)
    • 세부적인 관리가 가능한지(옵션을 줄수잇는지)
    • 조직이 작다면 한국에서 개별적으로 관리가 가능하지만 중앙집중식관리를 할려면 동일한 규칙을 만들어서 모든 조직에게 전파해야해
    • 조직관리와 클라우드서비스를 하다보면 빌링문제가 발생한다.
  • 사람이 하는 실수의 범위는 적지만 프로그램을 사용했을때 피해가 발생하면 범위가 매우 큼.

  • 위의 주제를 구글은 어떻게 관리를 하는가?
    • GCP IAM으로 관리.
    • 사용자 계정 - 구글 메일 계정
    • 서비스 계정 - 애플리케이션 또는 VM(Compute Engine)이 사용하는 계정

    • GCP IAM의 권한 관리 (Authorization)
      • 서비스를 배포할때 각 역활에 맞는 Role에 permission을 담아서 사용자들에게 부여한다.
      • Role은 3가지 종류가 있다.
    • 보안에서 가장 중요한것은 필요한 권한을 필요한 사람한테만 주는 것.

    • Cross Project Networking(XPN)
      • 부서가 여러개면 여러 프로젝트관의 네트워크를 공유할 일이 생긴다.
    • Best Practice
      • 중앙집중식 관리를 할 수 있으면 하는게 좋다.(규모가 클때..)
      • 애플리케이션 코드에 API Key 포함하지 않도록
      • 인증 보안 강화(2 factor인증)
      • 유저에게 직접 권한을 부여하지 말고 Group단위로 적용하는게 낫다.

16:30-17:00 믿고 쓰는 “파이어베이스를 이용한 모바일 앱 개발” 최재원 (엔비티 소프트웨어 엔지니어)

파이어베이스를 이용한 모바일 앱 개발

  • 파이어베이스를 사용한 배경, 목적
    • 케쉬 슬라이드말고 다른 앱은 무엇이 잇는가?
      • 작년까지는 힘들었따. (케쉬슬라이드 올인)
      • 한달에 한번씩 새로운 앱을 출시하자. - 알록(aLock), 1초 미세먼지, 퀴즈포텐..
    • 파이어 베이스의 주요기능들을 사용하였다.(처음부터 전부 사용은 안하고 앱을 출시할때마다 조금씩 추가)
    • 파이어베이스는 종량제라도 기능갯수에따라 요금이 다르다.
    • 파이어베이스를 이용하면 숙련형 개발자는 로그인은 2일이면 될것이다. 개발시간이 빨라진다.
    • 애널리틱스 : 이벤트
      • 이 앱이 런칭됬을때 어떤기능을 주로 사용하였는지 추적할때 사용한다.
      • 여러가지 설정이 있다.(데일리, 위크, 먼뜨)
      • 쌓이는 데이터를 빅쿼리 원시데이터 쌓인다. 그래서 빅데이터로 분석도 가능함.
      • 사용자 속성(중요함)
        • 설정에서 나이 나라 코드 같은곳을 설정해놓으면 쓸대가 많다.
        • 설정에 따라 디펜던씨가 걸려서 각 나라마다 따로따로 뷰를 보여줄수있고 특정사용자한테 다른 기능들을 보여줄수있다.
      • 디버그뷰
        • 등록만하면 애널리틱스 로그가 실시간으로 올라온다.(데이터가 잘들어오는지 확인가능)
      • 스트림뷰
        • 지금부터 15분동안 접속한 사용자의 수를 추적가능 (실질적 사용자 수, 어떤 계정으로 가입한 사용자인지?)
      • 유입경로
        • 친구초대, 회원가입 채널별 비교, 게임하고 공유하고 완료까지, 마켓 설치 후 최초 가입자 수 등등 추적가능
    • 원격구성(Remote Config)
      • 나라별, 사용자별로 분기를 나누어서 관리 가능
      • 앱 업데이트시 fetch time을 개발자가 컨트롤 가능(앱 업데이트 시 fetch time을 0값으로 호출해야한다.)
    • 클라우드 메시징(FCM)
      • 주제에 대해 사용자 속성이나 여러가지 토픽을 등록해두면 푸쉬를할때 타겟팅이 가능하다.(남자만, 서울사는 사람만..)
    • 인증 - 로그인관련된것
      • 이메일, 전화, 구글, 트위터, 깃허브, 익명 가입 등등…
      • token expire time은 1시간(설정 불가능)
      • firebase auth를 사용할때 리얼타임디비를 사용하면 1시간안에 토큰을 무조건 얻어야한다.
        • 메뉴얼 상으로는 토큰이 갱신된다고 하지만 실질적으로 리얼타임디비를 사용하지않을때는 콜백을 주지않는다.
    • 실시간데이터베이스(realTime Database)
      • 시간 보정값
      • 호스팅 - 정적인 페이지 사용할대 많이 사용함.(설치가 안됫을때는 스토어로 설치 됫으면 App Launcher)
        • 예전에는 서버개발자에게 요청했지만 일이 많을경우 우선순위에 밀려서 개발기간이 늦어졋다
        • 하지만 파이어베이스를 이용하면 안드로이드나, IOS개발자가 직접 개발가능
      • 스토리지
        • 느리다. 개인적사용도 비추
      • 성능 모니터링
        • 앱이 출시되고나서 앱에서 쓰는 API 들을 파이어베이스에서 추적 가능
        • 실질적 응답시간을 계산해서 제공해줌
        • 통신사, 와이파이등 조금 세분화로 나누어져 있어서 성능이 느려진 부분을 분석할때 좋다.
    • 단점
      • 파이어베이스 상태
        • 실질적으로 스테이터스가 중요하다. 파이어베이스에서 장애가 나면 알려줘야하는데 한국에서는 제공이 안되서 스테이터스에 직접 들어가서 확인해야한다.
  • 빅데이터를 통한 기능 추가 보다 1주일 단위의 많이 사용한 기능의 피드백을 통해 기능 개발 우선 순위를 두고 개발을 한다.
  • 파이어베이스를 사용할때 최대한 로드를 리무브를 하지말고 데이터를 얻고싶을때는 업데이트를 사용해라!
  • 3천개 이상을 한 노드에 담지마라.

17:00-17:30 쾌속 개발을 위한 “서버리스 환경에서의 서비스 개발” 최명근 (구글 클라우드 엔지니어)

  • NoOps환경
  • DevOps
    • 옛날에는 개발팀과 운영팀이 나누어져있었다.
    • 개발과 운영을 합친 개념.
    • NoOps(노옵스)
      • No Operations / Serverless Operations
      • 실제 서버가 없는 환경은 아니지만 서버의 부담을 최대한 줄이는 환경
      • 가장 쉽게 생각나는 방법은 Managed Service
        • 운영팀 대신에 환경 자체가 매니징 해주는 시스템(클라우드가 대행)
        • 최근에는 서버 하드웨어는 클라우드를 사용하지만 미들웨어는 운영해야함
        • 매니지드 시스템은 미들웨어까지 클라우드가 관리를 해주는 것. - 운영부담의 최소화
    • 앱 엔진
      • 상위 레벨에서의 모니터링 툴을 지원한다. (Stackdriver)
    • Firebase
      • 백엔드 에이전시 시스템
    • Cloud Function
      • 이벤트 응답 트리거(함수단위)
      • 특정 함수 단위만 사용가능( 서버의 모든것을 대체X)
      • Node.js

Comments