파이어 베이스

정승호·2022년 7월 11일
0

Firebase란?

  • 구글(GOOGLE)이 소유하고 있는 모바일 애플리케이션 개발 플랫폼
  • “앱을 개발, 개선, 키워갈 수 있는” 도구 모음(toolset)

개발하기

인증(Authentication): 사용자 로그인 및 ID 관리

파이어베이스 인증(Firebase Authentication)은 사용자의 로그인과 ID 관리를 담당합니다. 이 제품은 파이어베이스의 다른 제품들을 적절하게 설정하기 위해서 필수적인데, 특히 사용자들의 데이터에 대한 액세스(access)를 제한하고 싶을 때 중요합니다.

페이스북, 트위터, 구글, 깃허브 등 다양한 서비스의 ID를 파이어베이스 인증 한 군데에서 관리할 수 있다는 것입니다.

인증(Authentication) 제품은 철저한 보안 규정을 활용해서 원본 데이터에 대한 액세스를 제어하고 있으며, 이들 세 가지 제품(실시간 데이터베이스, 파이어스토어, 클라우드 스토리지)과도 원활하게 작동합니다. 이를 통해서 클라이언트(단말)는 여러분이 허용하는 방식으로만 데이터에 액세스 할 수 있으며, 위 그림에 있는 물범과 같은 비극적인 상황을 피할 수 있습니다. 인증을 이용해서 앱에 로그인 한 사용자들은 자동적으로 인증 토큰(token, 식별자)을 여러분에게 제공하게 되며, 여러분은 누가 어떤 데이터를 읽고 쓸 수 있는지를 정해놓은 규칙 안에서 토큰을 사용할 수 있습니다. 따라서 여러분의 앱에서 사용자의 개인 데이터를 저장하는 경우라면, 파이어베이스 인증을 활용해서 보안 규칙들을 만들고 액세스를 적절하게 제한하는 것이 좋습니다. 그리고 그렇게 만든 규칙들이 다소 느슨하게 보인다면, 파이어베이스가 친절히 알려주기도 합니다.
“개인 정보”에 대해서 잘 몰라서는 안 됩니다. 여러분은 그게 무엇인지 충분히 파악할 수 있고, 잘 모르는 걸 자랑처럼 말해서도 안 됩니다. 파이어베이스의 보안 규칙들을 활용하세요.

클라우드 함수(Cloud Functions): 서버 없이 이벤트 위주로 동작하는 백엔드

클라우드 함수(Cloud Functions)도 또 하나의 구글 클라우드 제품으로, 다른 파이어베이스 제품은 물론이고, 클라우드 제품들과도 원활하게 작동합니다. 클라우드 함수를 위한 파이어베이스의 SDK를 활용하면, 여러분은 구글의 “서버리스(serverless, 서버가 필요 없는 환경)” 인프라 위에서 실행되는 코드를 작성하고 배포할 수 있습니다. 구글의 서버리스 인프라는 파이어베이스의 다른 제품들로부터 발생하는 이벤트에 대해서 자동으로 응답합니다. 맞습니다, 그래서 서버리스입니다!

사람들이 “서버리스”라고 말한다고 해서, 서버가 없다는 걸 뜻하지는 않습니다. 서버리스 백엔드 아키텍처(architecture, 시스템 구성)에서도 여전히 서버들은 존재하지만, 우리가 그것을 알지 못할 뿐입니다. 우리는 전통적인 (서버로 가득 찬)아키텍처에서 요구되는 프로비저닝(provisioning, 리소스를 할당하고 계획하는 것), 유지보수, 규모 확장, 또는 데브옵스(DevOps, 소프트웨어 개발과 운영을 통합하는 것) 등을 할 필요가 없습니다. 우리는 그저 코드를 작성하고 배포하기만 하면 되고, 그러면 나머지 일들은 구글이 알아서 해줍니다.
클라우드 함수는 파이어베이스 전체 제품군 중에서도 우리가 실제로 백엔드 코드를 작성할 수 있게 해주는 제품입니다. 제 생각에 특정한 유형의 코드는 프론트엔드가 아니라 백엔드의 잘 통제된 환경에서 실행되는 것이 좋습니다. 그리고 우리는 백엔드에서 일하는 개발자들에게도 일자리를 주어야 합니다. 제가 앞서 말했던 것처럼 말입니다.
클라우드 함수로 할 수 있는 일들은 엄청나게 많습니다. 저는 이걸 한 가지 개념으로 요약해보려 합니다. 즉 데이터베이스, 스토리지, 인증 등 파이어베이스는 제품들 내에서 데이터가 변경될 때 이벤트를 발생시키며, 여러분이 클라우드 함수에 배포한 코드가 이런 이벤트에 대응해서 실행됩니다.
숀은 클라우드 함수를 활용해서 사용자들이 자신의 계정을 삭제했을 때 데이터베이스와 스토리지가 자동적으로 지워지도록 하고 있습니다. 이는 어떠한 상황에서도 사용자의 프라이버시는 보호되어야 하기 때문이고, 사용하지도 않는 데이터를 저장하고 있다가 끔찍한 낭패를 볼 수도 있기 때문입니다. 그레타는 클라우드 함수를 이용해서 게임의 로직(logic, 소프트웨어의 연산 논리)을 실행시키는 것과 점수를 계산하는 일을 안전한 백엔드에서 실행하고 있습니다. 왜냐하면 그런 중요한 작업을 전부 프론트엔드에서 구현했다가는 해커들이 그녀가 만든 게임을 리버스 엔지니어링(reverse engineering, 완성된 제품의 개발 과정을 역으로 추적하여 작동 원리나 데이터 등을 파악하는 일)해서 부정행위를 시도할 수 있다는 걸 알고 있기 때문입니다.

클라우드 스토리지(Cloud Storage): 거대하게 확장할 수 있는 파일 스토리지

클라우드 스토리지(Cloud Storage)는 대규모로 확장할 수 있는 파일 스토리지를 제공합니다. 이것 역시 기술적으로는 파이어베이스가 아니라 구글 클라우드의 제품입니다. 파이어베이스용 클라우드 스토리지를 이용하면, 여러분의 앱에서 클라이언트 SDK를 사용해서 클라우드 스토리지의 “버킷(bucket)”에 파일을 직접 업로드하고 다운로드도 할 수 있습니다.

그레타의 게임에서는 클라우드 스토리지를 활용해서 사람들이 게임 속에 자신들의 아바타를 만들어서 올릴 수 있습니다. 숀의 소셜 네트워크에서는 사람들이 각자의 사진을 서로 공유할 수 있게 해줍니다. 두 사람 모두 저장 공간이 모자랄 것을 걱정하지 않아도 됩니다. 왜냐하면 클라우드 스토리지는 용량을 엑사바이트(exabyte, 1060바이트)까지 확장할 수 있기 때문입니다.

파이어베이스 호스팅(Firebase Hosting): 전 세계를 대상으로 한 웹 호스팅

파이어베이스 호스팅(Firebase Hosting)은 안전한 콘텐츠 전송 네트워크(CDN)이며, 전 세계에 서비스할 수 있는 웹 호스팅을 기반으로 하고 있습니다. 이 서비스는 사용자들에게 가까운 곳에 있는 서버를 활용해서 (HTML, CSS, 자바스크립트, 이미지 등의) 정적인 콘텐츠를 빠르게 전송하는데 아주 좋습니다. 또한 도메인 여부와는 관계없이, 프로비저닝 된 SSL 인증서로 빠르게 설정 작업을 수행할 수 있습니다. 아무런 비용 없이 말입니다.
파이어베이스 호스팅은 파이어베이스의 나머지 제품들과 통합될 수 있는 중요한 지점이 하나 있는데, 그것이 바로 클라우드 함수입니다. 파이어베이스 호스팅을 활용하면, HTTP 기반의 요청이나 응답을 대신 수행하게 할 수 있습니다. 그리고 더 좋은 것은 이걸 적절하게 설정해놓기만 하면 그런 함수들을 통해서 나오는 응답들을 캐싱(caching, 요청이 많은 정보를 사용자와 가까운 곳에 보관해 놓고, 이후에도 동일한 요청이 있을 경우에 빠르게 결과를 제공하는 것)할 수 있다는 것입니다. 레스트풀(RESTful, 정보를 간단하게 전송하기 위한 기법) API를 만들 수 있는 아주 훌륭한 방법입니다.

머신러닝 키트(ML Kit): 일반적인 머신러닝(ML) 작업을 위한 SDK

파이어베이스의 머신러닝 키트(ML Kit)는, 여러분이 ML에 대해서 전혀 모른다고 하더라도 구글이 갖고 있는 머신러닝에 대한 풍부한 지식들을 활용할 수 있게 해줍니다. 이게 저에게는 너무나도 좋은 점인데, 제가 ML에 대해서 아무것도 모르기 때문입니다. 그런데도 저는 ML 키트와 제가 가진 기기의 카메라를 활용함으로써 텍스트를 인식하고, 얼굴을 인식하고, 랜드마크(주요 지형지물)도 인식할 수 있는 능력을 갖게 되었습니다. 아무리 성능이 좋은 휴대기기라고 해도, 전화기만으로는 처리할 수 없는 이런 어마어마한 일들을 해낼 수 있는 것입니다. 그러니 ML에 대해서 훨씬 더 잘 알고 있는 분들이라면 텐서플로(TensorFlow, 머신러닝을 위한 오픈소스 플랫폼)로 만든 더욱 복잡한 모델도 업로드 할 수 있습니다. 파이어베이스는 머신러닝 제품들을 위한 완전한 “연방”이 될 것입니다.

실시간 데이터베이스(Realtime Database): 클라우드에 호스팅 된 실시간의 비관계형(NoSQL) 데이터베이스

클라우드 파이어스토어(Cloud Firestore): 클라우드에 호스팅 된 실시간의 비 관계형(NoSQL) 데이터베이스

파이어베이스의 실시간 데이터베이스(Realtime Database)와 클라우드 파이어스토어(Cloud Firestore)는 데이터베이스 서비스를 제공합니다. 저는 두 개의 제품 모두를 ‘클라우드에 호스팅 된 실시간의 비관계형(NoSQL) 데이터베이스’라고 적어 놓았습니다. 이들 제품에는 각자의 강점과 약점들이 있습니다. 그렇기 때문에 여러분에게 어느 것이 더 적합한지를 알아내려면 약간의 조사를 하는 것이 좋습니다. 힌트를 드리자면, 클라우드 파이어스토어를 먼저 살펴보시기 바랍니다. 왜냐하면 여러분이 원하는 걸 더 많이 해결해 줄 가능성이 크고, 또한 확장성도 아주 좋습니다. 여러분의 앱이 어떠한가에 따라서 둘 중 하나를 사용할 수도 있고, 두 개를 함께 사용할 수도 있습니다.
그리고 파이어스토어는 기술적으로 보자면 파이어베이스의 제품이 아닌 구글 클라우드(Google Cloud)의 제품이라는 점에 주목할 필요가 있습니다. 그런데 왜 파이어베이스와 함께 묶어서 설명을 하고 있을까요? 파이어베이스가 모바일 앱에서 파이어스토어를 사용할 수 있는 SDK를 제공하고 있기 때문입니다. 그래서 우리는 (파이어스토어의) 데이터를 직접 액세스 할 수 있게 해주고, 미들웨어라는 성가신 구성요소를 없앨 수 있습니다. 여기에서 설명하는 다른 제품들도 구글 클라우드와 비슷한 관계인 것들이 있는데, 해당하는 경우에 대해서는 앞으로 설명하면서 언급하도록 하겠습니다.
이들 데이터베이스에서 정말로 특별한 점은 데이터베이스가 변경이 되었을 때 그 데이터들을 “실시간”으로 업데이트해준다는 것입니다. 우리는 클라이언트(단말) SDK를 사용해서 앱에서 사용하고자 하는 데이터가 있는 위치에 “리스너(listener, 요청을 받는 부분)”를 설정할 수 있습니다. 그러면 변경 사실이 감지될 때마다 리스너가 그 사실을 자동으로 알 수 있습니다. 따라서 관심을 두고 있는 데이터를 폴링(poll, 주기적으로 확인하는 것)할 필요 없이, 앱을 언제나 최신 상태로 보여줄 수 있습니다.

이와 같은 실시간 데이터를 이용해서, 우리의 친구인 그레타는 자신이 만드는 게임의 사용자 순위표를 모든 사람들이 실시간으로 확인할 수 있게 만들고 있습니다. 숀은 이걸 활용해서 자신의 소셜 네트워크에 있는 친구들이 서로 메시지를 주고받을 수 있게 해줍니다. 채팅 앱은 언제나 부족하기 때문입니다.

개선하기

테스트 랩(Test Lab): 클라우드에 호스팅 된 기기에서 다양한 규모로 앱 테스트를 자동화

파이어베이스의 테스트 랩(Test Lab)은 여러분의 앱을 여러 환경에서 테스트해볼 수 있게 하기 위해서, 다양한 종류의 iOS와 안드로이드 기기, 그리고 가상의 안드로이드 기기들까지도 사용할 수 있게 해줍니다. 여러분이 모바일 앱을 만들고 있다면, 아마 여러분의 책상 위에는 개발과 테스트를 위해서 최소한 1개의 기기가 놓여 있을 겁니다. 그러나 이 1대의 기기만으로는 수많은 사용자들이 사용하고 있는 환경을 절대로 대표할 수 없습니다. 모바일 기기들은 크기도 천차만별이고, 제조사들도 아주 많으며, 거기에서 동작하는 OS의 버전들도 제각각입니다. 이런 수많은 기기들을 전부 구입해서 유지하는 데에만 해도 엄청나게 많은 시간과 비용이 소요되며, 그걸 일일이 테스트하는 것도 마찬가지입니다.

테스트 랩은 여러분의 앱이 설치될 실제의 물리적인 기기들을 엄청나게 많이 호스팅함으로써 이런 문제를 해결하고 있습니다. 그러면 우리는 그 환경에서 각각의 테스트 도구들(안드로이드: 에스프레소(Espresso), iOS: XCTest)을 실행시키면 됩니다. 테스트 랩에서는 또한 추가적인 코딩을 하지 않고도 완전히 자동화된 테스트를 수행할 수 있기 때문에, 우리들 중에서 정말로 게으른 사람들에게 제격이라고 할 수 있습니다. (사실 우리들 전부 그렇지 않나요?)

비정상 종료 분석(Crashlytics): 앱이 비정상 종료되는 현상에 대한 명확한 판단과 조치

파이어베이스의 비정상 종료 분석(Crashlytics)은 이 분야에서는 세계 최고의 분석 툴입니다. 정말이지 최고입니다. 제가 왜 굳이 그 내용을 설명해야 하는지도 잘 모르겠습니다. 이건 언제나 최고였습니다. 그냥 쓰십시오. 심지어 분석 도구와 연동되어 있기 때문에, 앱의 비정상 종료가 사용자들이 앱을 사용하는 방식에 어떤 영향을 미치는지도(아마 삭제하겠죠) 알아낼 수 있습니다.

성능 모니터링(Performance Monitoring): 앱의 성능 이슈와 관련한 통찰력 확보

파이어베이스의 성능 모니터링(Performance Monitoring)은 HTTP 요청, 실행 시간, API를 사용하는 다른 코드 등을 측정함으로써 앱의 성능과 관련한 이슈에 대해서 사용자의 관점에서 살펴본 통찰력을 제시해 줍니다. 이 제품이 가진 마법은 몇 줄 이상의 코드를 작성하지 않고도 HTTP 요청과 실행 시간을 측정할 수 있다는 것이며, 그 결과는 파이어베이스의 콘솔에 표시됩니다. 몇 줄의 코드를 추가하면, 여러분의 앱에서 수행하고 있는 다른 작업에 걸리는 시간도 측정할 수 있습니다. 저는 사용자의 관점에서 바라보는 이러한 수치들이 아주 중요하다고 강조하고 싶습니다. 여러분은 와이파이 속도가 아주 빠른 네트워크 환경에서 속도가 빠른 기기를 사용해서 앱을 개발하고 있을 수도 있습니다. 이러한 환경은 전 세계의 사용자들이 마주하는 환경과 전혀 비슷하지도 않으며, 그들 대부분은 신호도 약한 무선 네트워크에서 저가의 기기를 사용하고 있습니다. 만약 여러분의 앱을 사용하는 사용자들이 실제로 마주하는 고통을 이해하고 싶다면, 녹슨 펜치로 코털을 뽑아 보시기 바랍니다. 그만큼 어려운 환경이라는 것을 깨달으셨다면, 이제 성능 모니터링 도구를 앱에 연동하고 파이어베이스의 콘솔을 통해서 나오는 결과를 연구하십시오. 세계의 여러 다양한 지역에서 다양한 네트워크와 다양한 버전의 OS가 탑재된 다양한 기기들을 사용하는 환경에서 여러분의 앱을 사용할 때 얼마나 문제가 많은지를 정확히 파악할 수 있을 것입니다. 그리고 여러분의 앱에서 가장 지연 현상이 심하게 벌어지는 부분이 어디인지를 파악해서, 어떤 부분에 최적화 작업을 집중해야 하는지를 결정할 수 있을 것입니다.

키워가기

분석(Analytics): 사용자들이 누구이며, 그들이 앱을 이용하는 방식을 이해

파이어베이스를 위한 구글 분석은 “키워가기” 그룹 중에서도 핵심이라고 할 수 있습니다. 사용자들에 대해서, 그리고 그들이 앱을 어떻게 이용하는지를 더욱 잘 알고 싶다면, 분석 도구가 그걸 여러분께 보여줄 것입니다. 여러분이 앱을 처음 출시한다면, 사용자 기반은 누가 될 것인지, 그들은 주로 어디에 살고 있을지, 그리고 그 앱을 어떻게 사용할지에 대해서 여러분은 막연한 생각을 갖고 있을 것입니다. 하지만 그런 생각들은 완전히 잘못된 것일 수도 있습니다! 그것이 맞는지를 확인하는 유일한 방법은 데이터를 수집하는 것이며, 바로 이 부분에서 분석 도구들이 도움을 주는 것입니다.

여기에서는 짧게 설명하고 있지만, 구글 분석이 파이어베이스에 도움을 주는 용도는 훨씬 더 많습니다. 그럼에도 가장 중요한 것은 “오디언스(audience, 대상 사용자 집단)”라는 개념입니다. 오디언스는 여러분이 만든 앱을 주로 사용하는 사람들이거나, 어떤 공통된 특징을 공유하고 있는 사람들이거나, 특정한 기기를 사용하는 사람들입니다. 여러분이 생각하는 오디언스의 특징들을 지정하면, 분석 도구가 여러분의 앱이 계속해서 생성하는 이벤트의 흐름을 분석함으로써 거기에 속하는 사용자들이 누구인지를 밝혀낼 것입니다. 이렇게 오디언스를 세분화한다는 개념은 아주 유용한 것입니다. 왜냐하면 “키워가기” 카테고리에 있는 파이어베이스의 다른 제품들을 통해서 그러한 오디언스를 타깃으로 설정할 수 있기 때문입니다. 이 글을 읽으면서 오디언스라는 개념을 머릿속에 잘 새겨 두시기 바랍니다. 그레타의 게임에서는 오디언스를 “레벨 10까지 마치고 인앱(in-app) 구매를 해본 사용자들”(핵심 사용자)라고 정의했습니다. 숀의 소셜 네트워크에서는 오디언스를 “나이는 18-24세 사이이며, 이 소셜 네트워크에서 최소한 50명의 친구들을 가진 사람들”(젊은 소셜 네트워크 사용자들)로 정의했습니다. 이러한 오디언스에 대한 개념이 일단 파이어베이스의 콘솔에서 정의되고, 그에 맞춰서 정확한 이벤트를 보낼 수 있게 앱이 업데이트 되고 나면, 이러한 오디언스에 해당하는 이용자들이 수집됩니다. 그러면 그레타와 숀은 해당하는 오디언스 사용자들의 정보를 바탕으로 그들이 관심을 가질 만한 내용을 제안할 수 있게 됩니다.

예측(Predictions): 머신러닝을 적용하고 분석하여, 사용자들의 행동을 예측

파이어베이스 예측(Firebase Predictions)은 분석 도구가 수집한 데이터들을 기반으로 앱을 사용하는 사람들 중에서 누가 이탈할 가능성이 있는지(앱을 실행하지 않음), 그리고 누가 비용을 지출하는지(앱에서 돈을 씀)에 대한 예측을 수행합니다(이쯤 되면 별로 놀랍지 않습니다). 이탈하는 사용자와 돈을 쓰는 사용자라는 새로운 분류는 분석 도구에서 살펴본 오디언스와 비슷하지만, 다만 여러분이 따로 뭔가를 지정하지 않아도 사용자들이 두 군데에서 어디에 속하게 될지를 파악할 수 있습니다. 이것이 바로 머신러닝의 마법입니다! 이건 마치 <해리포터> 시리즈에 나오는 분류 모자(Sorting Hat)라고도 할 수 있는데, 다만 그 누구도 후플푸프(Hufflepuff)로 분류되고 싶은 사람들은 없겠지만 말입니다.

클라우드 메시징(Cloud Messaging): 사용자들에게 메시지와 알림 사항을 전송

분석과 예측 도구는 모두 흥미롭기는 하지만, 여러분의 앱에서 실제로 무언가를 해주는 것은 아닙니다. 하지만 파이어베이스의 “키워주기” 그룹에 속하는 다른 제품들과 함께 활용한다면, 진정으로 마법 같은 결과를 만들어낼 수 있습니다! 어떻게 그럴 수 있는지 함께 살펴보겠습니다. 파이어베이스의 클라우드 메시징(Cloud Messaging)을 이용하면, 여러분의 앱을 사용하는 사람들이나 앱에서 무언가 흥미로운 일이 생겼을 때 푸시(push) 메시지를 전달할 수 있습니다. 메시지를 전송하는 방법은 두 가지가 있습니다. 첫째, 백엔드에 코드를 작성해 놓고 여러분의 앱이 응답하기를 원하는 업데이트 사항(예: 대화방 알림 등)이 있을 경우에 앱으로 메시지를 날리는 것입니다. 둘째, 파이어베이스의 콘솔에 메시지를 작성해서 사용자들이 관심 있는 정보를 그들에게 날려주는 것입니다. 제가 요즘에 관심 있는 것은 바로 두 번째로, 사용자에게 직접 메시지를 보내는 것입니다. 메시징 도구를 활용할 수 있다면, 이러한 앱들이 분석 및 예측 도구와 연동되어 있기 때문에, 분석 도구로 파악한 특정한 오디언스나 예측 도구로 파악한 특정한 사용자 그룹에게 메시지를 보낼 수 있습니다. 그렇게 된다면 좀 더 관심을 보이고 클릭할 확률이 높은 사용자들을 여러분의 앱 안에 머물게 하면서 그들을 위해서 작성한 메시지를 보낼 수 있기 때문에 아주 유용하다고 할 수 있습니다. 적절한 콘텐츠로 특정한 그룹을 목표로 하는 것이 무작정 모든 사람들에게 메시지를 터트리는 것보다 더 낫습니다. 왜 그런지는 상당히 명확합니다. 만약 어떤 사람이 자기와는 별로 관련도 없는 푸시 메시지를 지나치게 많이 받는다면, 아마 그 사람의 표정은 아래 사진과 같을 것입니다.

인앱 메시징(In-App Messaging): 활성 사용자들에게 타깃 메시지를 연결

그레타는 아마도 핵심 사용자들에게 새로운 게임 아이템을 할인하고 있다는 소식을 알림 메시지로 알려줄 수 있을 것입니다. 그리고 숀은 아마도 소셜 네트워크 사용자들에게 알림 메시지를 보내서, 요즘 젊은 사람들이 많이 다니는 나이트클럽에 대해서 평가하고 서로 이야기도 나누게 만들 수 있을 것입니다. 두 경우 모두, 사람들은 좀 더 관심이 가는 메시지를 받아서 그에 대한 호응도 더욱 좋을 것이며, 스팸을 받아보는 사람들은 줄어들 것입니다. 이런 일은 모두 구글 분석의 도움을 받아서 가능한 것입니다. 파이어베이스 인앱 메시징(In-App Messaging)은 사용자들에게 맞춤화 된 타깃 메시지를 보여줘서 그들로 하여금 여러분이 만든 앱의 핵심 기능들을 사용해 볼 수 있도록 도와줍니다. 그럼 여러분은 궁금할 것입니다. “이게 클라우드 메시징과 뭐가 다른 거지?” (이렇게 물어 봐주셔서 감사합니다. 아직까지 주의 깊게 읽고 계셨군요!) 그 핵심적인 차이는 클라우드 메시징(FCM)의 메시지는 (파이어베이스 콘솔 등) 여러분이 제어하는 서버에서 오는 것이고, 인앱 메시징(FIAM)의 메시지는 앱 자체에서 온다는 것입니다(그러나 물론 콘솔에서 설정한 것입니다). 그리고 인앱 메시지는 사용자가 실제로 앱을 이용하는 동안 보이게 됩니다. 하지만 FCM과 FIAM은 모두 분석 및 예측 도구와 긴밀하게 연동되어 있다는 점에서는 비슷하다고 할 수 있습니다. FCM이 보내는 메시지는 타이밍이나 관련성이 비교적 적기 때문에 사용자가 관심 있는 것이 아닐 수도 있고, 아니면 실수로 메시지를 닫아버릴 수도 있습니다. 그리고 위 사진에서 보이는 여성이 푸시 메시지를 전혀 반가워하지 않는다는 게 보이시나요? FIAM을 이용하면, 인앱 메시지는 여러분이 정의하는 기준에도 맞고, 분석 도구와 예측 도구가 파악한 정확한 사용자들에게 정확한 시점에 전달됩니다.

원격 구성(Remote Config): 새로운 버전을 배포하지 않고도 앱의 설정을 바꾸고, 변경사항을 모니터링

예를 들자면, 그레타의 게임에서는 사용자들이 게임을 하면서 게임 내의 스토어에서 사용할 수 있는 가상의 화폐를 벌게 할 수 있고, FIAM 메시지를 활용해서 사용자들에게 이런 가상의 돈을 누가 벌었는지 알려줄 수 있을 것입니다. 그리고 숀의 소셜 네트워크에서는 사용자들이 한동안 앱을 사용해왔지만 아직까지 미처 발견하지 못했던 콘텐츠를 그들에게 알려줄 수 있을 것입니다. 파이어베이스의 원격 구성(Remote Config)을 이용하면, 앱을 업그레이드하지 않고도 여러분이 만든 앱의 동작이나 보이는 모습을 동적으로 변경할 수 있습니다. 원격 구성을 사용하는 일반적인 방식은 파이어베이스의 콘솔에서 설정과 관련한 다수의 매개변수(parameter)들을 정의하는 것입니다. 그 다음, 여러분의 앱이 SDK를 활용해서 해당하는 매개변수의 값(value)을 주기적으로 가져오고 필요에 따라서 사용하는 것입니다. 원격 구성이라는 것은 키(key)와 값(value)으로 짝을 이룬 거대한 설정값들이 클라우드에 호스팅 되어 있는 것이라고 생각할 수도 있습니다. 그러면 이게 마치 간단한 데이터베이스처럼 보일 수도 있는데, 계속 살펴보다 보면 처음에 생각했던 것보다도 할 수 있는 일이 훨씬 더 많다는 것을 알게 될 것입니다.

원격 구성이 진심으로 빛을 발하는 부분은 각각의 매개변수들에 대한 조건을 정의할 수 있다는 것입니다. 한 가지 유형의 조건을 사용하면 어떤 특정한 값을, 분석 도구가 찾아낸 특정한 오디언스 그룹에게 지정할 수 있습니다. 또 다른 유형의 조건을 사용하면, 예측 도구가 찾아낸 “이탈 그룹”이나 “소비 그룹”을 향해서 타깃을 지정할 수 있습니다. 이를 통해서 높은 가치를 가진 오디언스 그룹에게 프리미엄 서비스를 제공할 수도 있고, 아니면 이용률이 낮은 사용자들에게는 인센티브를 제공하는 등 여러분의 앱에서 유용한 기능들을 얼마든지 구현할 수 있습니다. 숀은 원격 구성을 활용해서 자신의 소셜 네트워크에서 특정한 사용자들에게 알려야 하는 기능을 적절하게 전달하고 있습니다.

A/B 테스팅(A/B Testing): 마케팅 방식과 사용 적합성 테스트를 수행해서 가장 좋은 결과가 무엇인지를 확인

그레타의 게임에서는 굳이 새로운 버전의 게임을 출시하지 않고도, 원격 구성을 이용해서 게임의 일부 난이도와 구성 등을 세밀하게 조정하고 있습니다. 파이어베이스의 A/B 테스팅(A/B Testing)은 분석 도구, 원격 구성, 그리고 클라우드 메시징 사이의 긴밀한 연동 관계를 더욱 강화시켜줍니다. 저는 여러분이 앱을 계속해서 수정하고 있다고 생각하는데, 그건 좋은 일입니다. 하지만 여러분이 자체적으로 연구를 수행하지 않는다면, 그러한 변경이 과연 도움이 될지 아니면 해가 될지에 대해서는 미리 알 수없을 것입니다. 만약 그런 연구의 기초가 되는 자료가 없다면, 우선은 직접 연구를 진행해서 어느 정도의 데이터를 모으는 것이 좋습니다. 만약 성공 여부를 판단할 수 있는 나름의 기준을 갖고 있다면, 파이어베이스의 A/B 테스팅을 이용해서 일부 사용자들을 대상으로 실험을 진행한 이후에 판단을 내릴 수 있습니다. 이렇게 하는 게 좋은 이유는, 무언가를 변경할 때 아무런 정보도 없이 결정을 내린다면, 사용자들은 다음 사진과 반응을 보일 수도 있기 때문입니다

파이어베이스의 동적 링크(Dynamic Link)는 “딥 링크(deep link, 서비스 내의 하위 페이지로 링크를 시키는 것)”라는 기존의 개념을 기반으로 만들어져 있는데, 이는 여러분의 앱을 특정한 화면이나 개인화된 사용자 경험으로 시작하게 만든다는 것입니다. 딥 링크는 사용자가 이미 앱을 설치한 경우에는 제대로 작동하지만, 먼저 설치해야 하는 경우라면 제대로 동작하지 않습니다. 이런 단점은 사용자로 하여금 앱을 설치하도록 유도하고 해당 링크는 살려 둠으로써 개선할 수 있습니다. 즉, 사용자가 동적 링크를 클릭했는데 해당 앱이 아직 설치되지 않았다면, 적절한 앱 스토어로 사용자를 안내해서 설치할 수 있게 하는 것이 좋습니다. 그런 다음에 사용자가 앱을 처음 실행하면, 해당 링크를 클릭했던 상황을 다시 복원해서 여러분이 원래 의도했던 경험으로 앱을 시작할 수 있게 만드는 것입니다. 그리고 동적 링크는 여러 플랫폼에서도 잘 동작하기 때문에, 안드로이드나 iOS, 웹 애플리케이션별로 별도의 링크를 만들 필요가 없습니다.

그레타는 동적 링크를 마케팅에 활용하고 있는데, 신규 사용자들이 처음으로 게임을 설치하는 링크를 눌렀을 때 게임 내에서 사용할 수 있는 무료 아이템을 얻을 수 있게 하는 것입니다. 그리고 숀은 동적 링크를 활용해서 그 링크가 어디에서 어떻게 공유되든 관계없이 사용자들이 그가 만든 소셜 네트워크에서 쉽게 공유할 수 있게 만들고 있습니다.

앱 인덱싱(App Indexing): 구글 검색과 연동하여 사용자들을 유지하는데 도움

0개의 댓글