Google Firebase로 레고블럭 조립하기 - IO Extended 2016

57
Google Firebase 레고블럭 조립하기 2016.06.19 말랑스튜디오 최치웅

Transcript of Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Page 1: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Google Firebase

레고블럭조립하기

2016.06.19

말랑스튜디오 최치웅

Page 2: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Speaker

최치웅

2006.03 ~ 2008.05

2008.06 ~ 2010.12

2011.01 ~ 2011.12

2012.01 ~ 2014.01

2014.02 ~ 현재

㈜ 모빌탑

㈜ 네이블커뮤니케이션즈

㈜ 말랑스튜디오

㈜ 삼성전자

㈜ 말랑스튜디오

Page 3: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Alarm

Social Dating

Study

Schedule

Transportation

Period Tracker

Diary

Community

말랑스튜디오는 다양한 분야의 생활 밀착형

모바일 앱 서비스를 통해 국내 및 해외 시장

을 선도하고 있습니다.

전세계 2,400만 명의 이용자를 보유한 알람 앱

알람몬을 비롯 여성 필수앱 원스,데이팅 SNS

1km, 다이어트앱 다이어터 등을 운영 중입니다.

말랑스튜디오는 여러분야에서 사용될 수 있는

앱 환경을 만들어 시너지 효과를 창출,

보다 많은 유저들이 효율적인 라이프-로그를

누릴 수 있도록 노력할 것입니다.

Mobile Time Share.

스마트폰 Life Style 필수 앱. 하루 종일 말랑 Life!

Page 4: Google Firebase로 레고블럭 조립하기 - IO Extended 2016
Page 5: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Firebase가 확장되어 Android, iOS, 모바일 웹 개발을 위한 통합 앱 플랫폼으로 거듭납니다.

Google은 개발자 여러분이 더 빠르게 앱을 개발하고, 앱의 품질을 향상하고, 사용자를 확보하여 참여시키고, 앱에서 수익을 창출하는 데 도움이

되는 새 도구들을 추가했습니다. 뿐만 아니라, 이 모든 것을 하나로 묶어 한 눈에 살펴볼 수 있는, 완전히 새로운 분석용 제품을 출시합니다.

1

2

3

사용하기 쉬운 개발도구

다양한 플랫폼 지원

통합된 개발 환경.

사용하기 쉽고 잘 문서화되어 있으며 직관적인 API는 개발자의 개발 업무를 즐겁게 해줍니다.

iOS용으로 개발하든, 웹이나 Android용으로 개발하든, 저희가 지원해 드리겠습니다.

Firebase는 하나의 SDK, 하나의 콘솔이 존재하며, 개발 가이드나 API를 참조할 때 찾아봐야할 개발자 사이트도 한 곳으로 통합되어 있습니다. 어떤 기능이든 조합해서 원하는 것을 만들고, 각 기능들 사이 데이터 흐름을 한 눈에 살펴보고, 더 많은 것들을 더 빠르게 수행할 수 있습니다.

[출처] Google Developers Korea Blog

Page 6: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Why Firebase

Page 7: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

높아진 시장 기준시장 수준이 올라가면서

서비스에 필요한 개발 사이즈도 점점 증가

늘어나는 개발 기간

빠르게 변하는시장 대응의 어려움

작은 Team

스타트업 특성 상 적은 수의 팀원

Page 8: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

FOCUS핵심에만 집중하기

핵심 기술외의 작업들은 적절한 외부 서비스를 찾아 적용하기

• Crash Reporting

• Analytics

• Deep Link, etc.

• Auth

• Notification

• Storage

• CDN

• Database, etc.

Page 9: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

서비스 본질에 집중Firebase 도입으로 개발 기간을 단축시켜 빠르게 시장 진입 후 유저 반응 관찰

Page 10: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Firebase’s Features

Page 11: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Test Lab

Crash Reporting

Remote Config

Storage

Hosting

Authentication

Realtime Database

Cloud Messaging

Invites

Adwords

App Indexing

Notification

Dynamic Links

Admob

Analytics

DEVELOP GROW EARN

BASIC

Page 12: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Test Lab

Crash Reporting

Remote Config

Storage

Hosting

Authentication

Realtime Database

Cloud Messaging

Invites

Adwords

App Indexing

Notification

Dynamic Links

Admob

Analytics

DEVELOP GROW EARN

BASIC

Page 13: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

AnalyticsFirebase의 핵심 기능 → 다른 Feature들을 위한 base역할을 함

사용자가 서비스를 사용하는 방식을 측정/분석하고 참여율을 높이기 위한 도구

BASIC

Page 14: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

AnalyticsFirebase의 핵심 기능 → 다른 Feature들을 위한 base역할을 함

사용자가 서비스를 사용하는 방식을 측정/분석하고 참여율을 높이기 위한 도구

1

2

3

4

Free!

간단한 구현

커스텀 이벤트

예쁜 대시보드

Page 15: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

AnalyticsFirebase의 핵심 기능 → 다른 Feature들을 위한 base역할을 함

사용자가 서비스를 사용하는 방식을 측정/분석하고 참여율을 높이기 위한 도구

• Just add the Firebase SDK to your new or existing app, and

data collection begins automatically.1

2

3

4

간단한 구현

Free!

커스텀 이벤트

예쁜 대시보드

Page 16: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

AnalyticsFirebase의 핵심 기능 → 다른 Feature들을 위한 base역할을 함

사용자가 서비스를 사용하는 방식을 측정/분석하고 참여율을 높이기 위한 도구

• If your app needs to collect additional data, you can log up to 500

different Analytics Event types in your app. There is no limit on the

total volume of events your app logs.

1

2

3

4

간단한 구현

Free!

커스텀 이벤트

예쁜 대시보드

• Automatically collected events

first_open

in_app_purchase

user_engagement

session_start

app_update

app_remove

os_update

app_clear_data, etc.

Page 17: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

AnalyticsFirebase의 핵심 기능 → 다른 Feature들을 위한 base역할을 함

사용자가 서비스를 사용하는 방식을 측정/분석하고 참여율을 높이기 위한 도구

+ Quick!

1

2

3

4

간단한 구현

Free!

커스텀 이벤트

예쁜 대시보드

Page 18: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

AnalyticsFirebase의 핵심 기능 → 다른 Feature들을 위한 base역할을 함

사용자가 서비스를 사용하는 방식을 측정/분석하고 참여율을 높이기 위한 도구

GA보다는 쉬운,

여전히 복잡한

but,

ex. Custom parameters are not represented directly in your Analytics reports, but they can be used as filters in audience definitions that can be applied to every report. Custom parameters are also included in data exported to BigQuery if your app is linked to a BigQuery project.

Page 19: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Crash Reporting서비스 상태를 파악하고 서비스 retention에 큰 영향을 줄 수 있는

crash 발생 시 빠른 대응을 할 수 있도록 개발자들을 돕기 위한 기능

DEVELOP

Page 20: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Crash Reporting서비스 retention에 큰 영향을 줄 수 있는 crash

: 서비스 상태를 파악하고 crash 발생 시 빠른 대응을 할 수 있도록 개발자들을 돕기 위한 기능

1

2

3

Free!

간단한 구현

예쁜 대시보드

Page 21: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Crash Reporting서비스 retention에 큰 영향을 줄 수 있는 crash

: 서비스 상태를 파악하고 crash 발생 시 빠른 대응을 할 수 있도록 개발자들을 돕기 위한 기능

• (Android) Add the dependency for Crash Reporting

to your app-level build.gradle file:

compile 'com.google.firebase:firebase-crash:9.0.2'

• (iOS) Add the dependency for Firebase Crash

Reporting to your podfile:

pod 'Firebase/Crash'

1

2

3

Free!

간단한 구현

예쁜 대시보드

Page 22: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Crash Reporting서비스 retention에 큰 영향을 줄 수 있는 crash

: 서비스 상태를 파악하고 crash 발생 시 빠른 대응을 할 수 있도록 개발자들을 돕기 위한 기능

+ Analytics에서 자동으로 이벤트 제공

1

2

3

Free!

간단한 구현

예쁜 대시보드

Page 23: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Crash Reporting서비스 retention에 큰 영향을 줄 수 있는 crash

: 서비스 상태를 파악하고 crash 발생 시 빠른 대응을 할 수 있도록 개발자들을 돕기 위한 기능

1

2

3

Beta 버전

Slow

추가 기능 부족

• Known issues : Multiple processes

Report

Answer

• (Android) 무조건 Crash reporting 용으로 process를 fork함

Page 24: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Crash Reporting서비스 retention에 큰 영향을 줄 수 있는 crash

: 서비스 상태를 파악하고 crash 발생 시 빠른 대응을 할 수 있도록 개발자들을 돕기 위한 기능

1

2

3

Slow

추가 기능 부족

Beta 버전

Page 25: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Crash Reporting서비스 retention에 큰 영향을 줄 수 있는 crash

: 서비스 상태를 파악하고 crash 발생 시 빠른 대응을 할 수 있도록 개발자들을 돕기 위한 기능

cf. Closing 기능

Share 기능

Note 기능

1

2

3 추가 기능 부족

Beta 버전

Slow

Page 26: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Authentication사용자 인증 작업을 최소화시키고

손쉽게 유저를 관리할 수 있는 대시보드 제공

DEVELOP

Page 27: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Authentication사용자 인증 작업 최소화

1

2

3

4

Free!

간단한 구현

예쁜 대시보드

인증서버 필요없음

Page 28: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Authentication사용자 인증 작업 최소화

1

2

3

4

Free!

간단한 구현

예쁜 대시보드

인증서버 필요없음

mAuth = FirebaseAuth.getInstance();

AuthCredential credential = TwitterAuthProvider.getCredential(session.getAuthToken().token,session.getAuthToken().secret);

mAuth.signInWithCredential(credential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {

@Overridepublic void onComplete(@NonNull Task<AuthResult> task) {

if (!task.isSuccessful()) {Log.w(TAG, "signInWithCredential", task.getException());Toast.makeText(TwitterLoginActivity.this, "Authentication failed.",

Toast.LENGTH_SHORT).show();}

}});

• Twitter Auth Example Android

Page 29: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Authentication사용자 인증 작업 최소화

1

2

3

4

Free!

간단한 구현

예쁜 대시보드

인증서버 필요없음

• Twitter Auth Example iOS

FIRAuthCredential *credential =[FIRTwitterAuthProvider credentialWithToken:session.authToken

secret:session.authTokenSecret];

[[FIRAuth auth] signInWithCredential:credentialcompletion:^(FIRUser *user, NSError *error) {// ...

}];

Page 30: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Authentication사용자 인증 작업 최소화

1

2

3

4

Free!

간단한 구현

예쁜 대시보드

인증서버 필요없음

Page 31: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Authentication사용자 인증 작업 최소화

1

2

3

4

Free!

간단한 구현

예쁜 대시보드

인증서버 필요없음

Page 32: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

1

2

한정적 템플릿

타 Provider 구현 어려움

Authentication사용자 인증 작업 최소화

Page 33: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

1

2

한정적 템플릿

타 Provider 구현 어려움

Authentication사용자 인증 작업 최소화

Email facebook google

twitter github anomynous

지원되지 않는 Login Provider의

경우 구현하기 까다로움

Page 34: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Dynamic Links유저가 사용하고 있는 플랫폼, 상황에 따라 사용자 경험을 달리하여

서비스에 대한 만족도를 극대화 할 수 있도록 돕기 위한 기능

GROW

Page 35: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Dynamic Links유저가 사용하고 있는 플랫폼, 상황에 따라 사용자 경험을 달리하여

서비스에 대한 만족도를 극대화 할 수 있도록 돕기 위한 기능

1

2

3

4

Free!

간단한 구현

예쁜 대시보드

Analytics 연계분석

Page 36: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Dynamic Links유저가 사용하고 있는 플랫폼, 상황에 따라 사용자 경험을 달리하여

서비스에 대한 만족도를 극대화 할 수 있도록 돕기 위한 기능

1

2

3

4

Free!

간단한 구현

예쁜 대시보드

Analytics 연계분석

• (Android) Firebase to your Android project. Add the dependency

for Firebase Dynamic Links to your app-level build.gradle file:

compile 'com.google.firebase:firebase-invites:9.0.2'

• (iOS) Add Firebase to your iOS project. Include the following

pod in your Podfile:

pod 'Firebase/DynamicLinks'

Page 37: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Dynamic Links유저가 사용하고 있는 플랫폼, 상황에 따라 사용자 경험을 달리하여

서비스에 대한 만족도를 극대화 할 수 있도록 돕기 위한 기능

1

2

3

4

Free!

간단한 구현

예쁜 대시보드

Analytics 연계분석

Page 38: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Dynamic Links유저가 사용하고 있는 플랫폼, 상황에 따라 사용자 경험을 달리하여

서비스에 대한 만족도를 극대화 할 수 있도록 돕기 위한 기능

1

2

3

4

Free!

간단한 구현

예쁜 대시보드

Analytics 연계분석

Page 39: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Dynamic Links유저가 사용하고 있는 플랫폼, 상황에 따라 사용자 경험을 달리하여

서비스에 대한 만족도를 극대화 할 수 있도록 돕기 위한 기능

1

2

Shorten URL

Meta tag 수정 불가능

• Shorten URL 생성 가능한 API 제공 안함

• 기존 google URL shortener API 사용 시

iOS에서 동작이 원활하지 않음

Page 40: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Dynamic Links유저가 사용하고 있는 플랫폼, 상황에 따라 사용자 경험을 달리하여

서비스에 대한 만족도를 극대화 할 수 있도록 돕기 위한 기능

Meta tag 수정 불가능1

2

Shorten URL

Meta tag 수정 불가능

Page 41: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Notification사용자에게 적시에 적절한 내용의 메시지를 전송해

서비스 retention를 강화시키기 위한 기능

GROW

Page 42: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Notification사용자에게 적시에 적절한 내용의 메시지를 전송해 서비스 retention를 강화시키기 위한 기능

1

2

3

4

Free!

간단한 구현

예쁜 대시보드

자체 서버 필요 (X)

Page 43: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Notification사용자에게 적시에 적절한 내용의 메시지를 전송해 서비스 retention를 강화시키기 위한 기능

1

2

3

4

Free!

간단한 구현

예쁜 대시보드

자체 서버 필요 (X)

• (Android) Add one line of code to add the FCM dependency to

your app.

dependencies {compile ‘com.google.firebase:firebase-messaging:9.0.2’

}

• (iOS) Upload your APNs certificate to Firebase, and in the

podfile for your app, add the following line

pod 'Firebase/Messaging'

Page 44: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Notification사용자에게 적시에 적절한 내용의 메시지를 전송해 서비스 retention를 강화시키기 위한 기능

1

2

3

4

Free!

간단한 구현

예쁜 대시보드

자체 서버 필요 (X)

Page 45: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Notification사용자에게 적시에 적절한 내용의 메시지를 전송해 서비스 retention를 강화시키기 위한 기능

1

2

3

4

Free!

간단한 구현

예쁜 대시보드

자체 서버 필요 (X)

자체 서버 필요 없음(X) -> 푸시 운영 툴 제공

Page 46: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Notification사용자에게 적시에 적절한 내용의 메시지를 전송해 서비스 retention를 강화시키기 위한 기능

5

6

Analytics 연계분석

로컬 타임존 지원

• Analytics와 연계되는 Segment 지원

• 기본 통계를 Analytics를 통해 충실히 지원

Page 47: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Notification사용자에게 적시에 적절한 내용의 메시지를 전송해 서비스 retention를 강화시키기 위한 기능

• 전환 통계 역시 손쉽게 사용 가능

5

6

Analytics 연계분석

로컬 타임존 지원

Page 48: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Notification사용자에게 적시에 적절한 내용의 메시지를 전송해 서비스 retention를 강화시키기 위한 기능

• Flexible message scheduling

5

6

Analytics 연계분석

로컬 타임존 지원

: Deliver notifications (up to 2kb) immediately,

or at a future time in the client's local time

Page 49: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Notification사용자에게 적시에 적절한 내용의 메시지를 전송해 서비스 retention를 강화시키기 위한 기능

1

2

이미지 푸시 (X)

테스트 디바이스설정 불가능

cf. <OneSignal>

Page 50: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Notification사용자에게 적시에 적절한 내용의 메시지를 전송해 서비스 retention를 강화시키기 위한 기능

1

2

이미지 푸시 (X)

테스트 디바이스설정 불가능

Firebase

cf. Tapjoy

Page 51: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Why Firebase

Page 52: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Integrated

Firebase Analytics 를 중심으로

많은 feature들이 유기적으로 연동

매우 유연하고 강력한

서비스 운영환경 구축이 가능

데이터 수집/분석운영

개선

Page 53: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Conclusion

Page 54: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

레고블럭을 만드는 사람개발/운영 절차를 간소화 할 수 있는

서비스를 제공

최근 트렌드

모든 사람들이 레고블럭을

굳이 만들 필요가 없어짐

레고블럭을 조립하는 회사

End User가 겪고 있는 문제를 해결하고가치를 창출하는데 집중

Page 55: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

레고블럭을 조립하는 사람이 모여 있는 회사최대한 범용성 있고 좋은 레고 블록을 빠르게 모으고 조립해서

좋은 제품을 출시하여 사용자에게 다가가는 것이 목표

Page 56: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

안해도 되는 일은 굳이 하지 맙시다

Page 57: Google Firebase로 레고블럭 조립하기 - IO Extended 2016

Q&A