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