게임을 위한 Google
백엔드 게임 개발자를 위한 Firebase의 새로운 점은 무엇인가요?
안녕하세요, 여러분
온라인 영상에 참여해주셔서 감사합니다
본 영상에 있는 제목이
백엔드 게임 개발자를 위한 Firebase의 새로운 점이었지만
내용을 살짝 미리 말씀드리자면
Cloud Firestore에 대해 다룰 거예요
Cloud Firestore이 무엇인지 왜 중요한지 그리고
데이터베이스 엔지니어가 왜 그렇게 신나하는지도 알게 되겠죠
여러분도 들어보셨겠지만
Firebase에는 많은 도구가 있어서 게임을 작동시키는데
편리하게 사용할 수 있어요
여기에 있는 기본적인 개념은
이렇게 지루한 인프라에 손을 보면 어떨까라는 거였죠
다른 때에도 유용하게 쓰일 수 있는데요
예를 들어, 게임을 재미있게 만드는 것 같은 거죠
아시다시피, 중요한 부분이잖아요
Firebase 인증과 같은 서비스를 제공하고 있는데요
이를 통하여 사용자들이 다양한 제공자로부터
게임에 로그인하는 게 쉬워졌죠
Firebase 호스팅도 있어요
웹사이트가 제대로 작동되도록 하는 걸
손쉽고 빠르게 할 수 있게 하는 개념을 기반으로 두고 있어요
기본값으로 SSL인 글로벌 CDN와
다른 모든 것들에서 말이죠
유용한 예시를 하나 말씀드리자면 게임에 관련하여 유일하게 소유하고 있는
마케팅 사이트에서 호스트가 정말로 빨리 작동되게 할 수 있죠
Cloud 스토리지는 강력하지만 단순한 서비스예요
큰 2진법 오브젝트를 저장하는데 말이죠
이는 사용자가 생성한 콘텐츠가 될 수 있는데요
스크린샷이나 영상 또는 여러분이 제공한 콘텐츠일 수 있어요
사후 설치 게임 데이터와 같은 거요
Firebase를 위한 Cloud 함수들이 있어요
이를 이용하면 백엔드 코드에
서버를 둘 필요가 없이 작동할 수 있어요
그리고 Cloud에서 데이터 저장을 위한 데이터베이스가 있어요
이제, 실시간 데이터베이스는
많은 개발자들이 이미 들어보신 거죠
Firebase 주력 상품이었어요
예전에는 독립적으로 운영되는 거였죠
지금도 좋은 제품이에요
사용자가 한 기기의 값을 바꿀 때 서버에 있는 SDK 자동적으로
해당 값을 받는 모든 다른 기기에서
그러한 변경사항을 업데이트한다는 개념을 기반으로 두고 있어요
여기서 강조할 점은 실시간이라는 건
개임 개발자들이 생각하는 것과는
약간 다른 걸 뜻한다는 거예요
몇 백 밀리세컨드 대기가 있죠
그러니 1인칭 슈팅 게임에는 적합하지 않아요
그렇지만 빙고 게임과 같은 경우에는 사용될 수 있어요
사실, 여기에 흥미로운 점이 있어요
실시간 데이터베이스는 Loteria를 위해 사용되었어요
Google Doodle처럼 작동되는 빙고와 같은 게임이에요
12개국이 넘는 국가에서 Google 첫 페이지에서 작동되는 건데요
실시간 데이터베이스로 대전표가 만들어져요
정사각형들을 맞추면서
실시간으로 경쟁자의 움직임을 보여줘서
승리자를 선언하는 거죠
이러한 게임에서 멋진 점은
플레이어의 수가 말 그대로 하룻밤에 0명에서 수백 명이 된다는 거예요
Google 첫 페이지에 표시하였을 때 말이죠
Google에 트래픽이 많다는 게 발견되었죠, 누가 알았겠어요?
실시간 데이터베이스는 모든 트래픽을 처리했어요
그 누구도 엔지니어한테 항의 전화를 하거나 어떠한 일도 없었죠
사실, 굉장히 좋은 블로그 게시글이 있는데요
이를 엔지니어 팀이 어떻게 처리했는지를 상세히 다루고 있어요
더 많은 정보를 원하시면 이를 읽어보시길 바랍니다
굉장히 좋죠
그렇지만 대다수의 현지 앱과 웹 개발자에게는
다음 세대의 실시간 데이터베이스를 소개 드리는데요
Cloud Firebase라는 제품이죠
대체로 많은 호평을 받은 제품이에요
지금까지 C+나 Unity에서 클라이언트 라이브러리가 없다는 걸 빼고는 말이죠
몇 주 전에 Alpha 출시로
이용 가능하게 되었다는 걸 알렸을 때까지 말이에요
잠시만 Alpha 태그에 대해서 좀 더 설명드릴게요
이게 중요한 부분이라서요
지금 몇 분들은 이에 대해 굉장히 기대하고 있으실 텐데요
여러분이 만든 복합 색인을 만들어서 사용하고 있거나
가지고 있을 수 있죠
데이터베이스에 큰 관심이 없으신 분들은
그냥 좋은 소식이라는 것으로만
생각하실 수 있죠
그러면 이는 정확히 어떤 걸 의미하는 걸까요?
그리고 왜 중요한 걸까요?
이제부터 설명드리겠습니다
실시간 데이터베이스와 같은 Cloud Firestore는
NoSQL 데이터베이스로 알려진 데이터베이스의 일부예요
이러한 정의에 대해 좀 더 단순하게
정의를 내리자면
기존의 데이터베이스에 대해서 생각해보세요
테이블이 여러 개가 있고, 거기에는
매우 구조적으로 된 데이터 유형이 저장되어 있어요
SQL이라고 불리는 쿼리 언어를 이용해서
데이터 조각들을 결합시킬 수 있죠
그리고 여기서 꽤 멋진 것들도 많이 할 수 있잖아요, 그렇죠?
모든 종류의 다양한 테이블에서
다양한 데이터 조각들을 합치거나
계산된 데이터 조각들을 합칠 수 있죠
꽤 유용하지만, 성능은
꽤 변동이 심할 수 있어요
해당 쿼리는 시간이 오래 걸리거나 짧게 걸릴 수도 있어요
소유하고 있는 데이터의 양과 설정된 방식 그리고
무슨 종류의 쿼리를 요청하는 지에 따라 다르죠
지금 NoSQL 데이터베이스는
몇 가지 방식에서 달라요
한 가지는 데이터에 관련해서
좀 더 편리하게 된 경향이 있어요
공식적으로, 이는 무계획적이라고 알려져 있죠
그리고 이건 종종 좋은 일로 보이는데요
이를 이용하여 개발자들은 기존의 데이터에
훨씬 더 빨리 반복할 수 있게 되었죠
모든 기존의 기록에 일일이 변경사항을 다시 채우는 일에 대해
걱정할 필요가 없이 말이죠
또한 유사하지만 완전히 동일하지는 않은 방식으로
데이터를 저장할 수 있기도 하고요
여기에 제가 몇 가지 글자들을 저장했어요
같은 무리로 함께 말이죠
그리고 유사하게 보이죠
하지만 마법사에 철자 교본이라는 단어를 추가하고
싸움에 함성이라는 단어를 넣고
도둑에 자물쇠를 따는 물건을 넣어도
데이터베이스에서 구조가 정확하지 않다고
알려주지는 않을 거예요
글자마다 파악하면서 말이죠
그냥 이렇게 처리하는 거예요
그렇지만 NoSQL 데이터베이스에서의 가장 큰 차이점은
SQL이 없다는 거예요
쿼리가 훨씬 더 단순한 경향이 있죠
모든 데이터나 계산된 데이터를 함께
조합시키는 일을 할 필요가 없어요
즉, 이런 게 처음에 봤을 때 이상하거나
특이하다고 보일 수 있다는 거죠
똑같은 데이터의 복사본이 다양한 곳에 있는 것처럼 말이에요
여기서 특이한 점은 개념에 있는데요
여기서는 정상화된 데이터라고 불려요
이러한 점이 처음에는 기존의 SQL 개발자들을 놀라게 할 수 있어요
하지만 장기적으로 봤을 때, 정말로 멋진 균형이 생기게 되는 거예요
이러한 이상한 점을 가치있게 만드는 거죠
먼저, NoSQL 데이터베이스는 수평적으로 크기를 변경할 수 있어요
정말로 유용한 부분이죠
즉, 데이터가 점점 더 커질수록
더 많은 머신을 입력하면 되는 거예요
그러면 이렇게 다양한 머신 전체에 걸쳐서
데이터를 단순하게 제공하게 될 거예요
Cloud가 호스팅하는 환경에서는 굉장히 유용한 기능이죠
이에 관련하여 예시를 하나 말씀드리자면
Google Cloud Platform이에요 다수의 서버가 있는 곳이죠
데이터베이스가 필요할 때마다 작동시키기만 하면 돼요
데이터베이스는 간단하게 커지고 확장하는 거예요
일종의 화면 뒤에서 이렇게 다양한 서버에서 말이죠
여러분을 위해 이러한 작업을 하는 걸
알아차리지도 못한 채로 말이죠
이와는 반대로, 기존의 SQL 데이터베이스는
수직으로 크기를 변경하는 경향이 있어요
즉, 데이터 세트가 커질수록
더욱 큰 컴퓨터로 이를 호스팅할 필요가 생긴다는 거예요
그러면 문제가 될 수 있죠
한 가지로, 어느 시점에서
모든 데이터 세트를 작동시킬
거대한 컴퓨터가 없을 수 있어요
그리고 더 크고 더 빠른 컴퓨터로
변경할 때마다 일정한 정지 시간을
가져야 한다는 거예요
NoSQL 데이터베이스를 사용하면
성능이 더 낫다는 걸 자주 발견하실 거예요
사실, 저희가 자주 하는 말인데
Cloud Firestore 세계에서 쿼리 크기는
결과 세트의 규모이지
기존의 데이터 세트의 크기가 아니라고 해요
무슨 뜻일까요?
즉, 게임이 있는 상황이라고 칠게요
여러분은 사용자가 생성한 퍼즐을 Cloud Firestore에 저장하고 있죠
그리고 데이터베이스에 순위를 기반으로 하여 미국에서
가장 활동적인 레벨의 사용자 10명을 보여달라고 합니다
해당 쿼리를 처리하는데는 같은 시간이 걸릴 거예요
300개의 기록을 검색하거나 3억 개의 기록을 검색하거나 말이죠
기존의 데이터 세트의 크기에 상관없이
해당 쿼리를 처리하는 데는 동일한 시간이 걸릴 거예요
꽤 멋진 부분이죠
즉, 성능을 우려하여 데이터베이스의 구조를
재구성할 필요가 없다는 걸 뜻하니까요
게임이 점점 더 인기를 얻게 되면서 말이에요
몇 가지 다른 기능도 볼게요
Cloud Firestore이 작업을 즐겁게 만들어주는 부분이죠
먼저, 데이터 구조 모델이
작업하기에 좀 더 좋은 경향이 있어요
특히 실시간 데이터베이스나
다른 NoSQL에 비교해서 말이죠
모든 데이터가
문서와 모음에 저장될 거예요
이제, 문서를 생각해보면
문서는 중요한 값의 묶음을 포함하고 있죠
이러한 것들의 값은
배열에서 문자열까지 어떤 것이든 될 수 있어요
JSON에서 오브젝트를 찾으며 떠다닐 수도 있고
심지어 작은 양의 2진법 데이터일 수도 있죠
이러한 문서들은 1메가 바이트까지의 크기를 가질 수 있어요
따지고 보면 꽤 큰 거죠
주로 문자와 숫자들을 담고 있으며 JSON에 관련된 것들이니까요
이러한 문서들은 모음집에 저장됩니다
이는, 다들 예상하셨다시피 문서의 모음이죠
이러한 문서들은 종종
하위 모음으로 향하고 이는 다른 문서를 포함하는 거죠
그리고 다른 하위 모음으로 이끌면서
계속 진행될 수 있어요
여기서 주목해야 할 점은 모든 쿼리가 가볍다는 거예요
즉, 문서를 가져올 수 있는데
그 아래에 있는 모든 데이터가 같이 나오는 걸 걱정하지 않아도 된다는 거죠
그러니 데이터를 계급에 따라서 구조화할 수 있고
이는 꽤 논리적인 방식이에요
상단에 있는 문서들 중에서 하나를 사용자들이 요청할 때마다
수 많은 불필요한 데이터를 끌어내는 걸 걱정하지 않아도 되니까요
Cloud Firestore에는 정말로 강력한 오프라인 지원이
모든 클라이언트 라이브러리에 만들어져있어요
그래서 SDK에서 데이터를 자동적으로 캐시에 저장할 거예요
서버에서 가져올 때 말이죠
그러면 사용자가 비행기에 탑승을 한 상태이고
비행기 모드를 켰을 때도 여전히 모든 데이터에 접근할 수 있어요
기기에서 캐시에 저장되었으니까
계속 게임을 할 수 있는 거죠
쿼리와 오프라인 캐시에 저장된 데이터로 말이에요
게다가, 플레이어가 작성한 어떤 것이든
기기에서 줄지어 대기할 거예요
사용자가 온라인으로 돌아오자마자
데이터베이스로 전달될 것이고
기록된 순서대로 남겠죠
그래서 게임에 대한 어떠한 데이터도 손실되지 않을 거예요
Cloud Firestore에는 데이터를 한 번에 가져오는 간단한 지원 기능이 있죠
아마도 익숙한 기능이라고 여길 수도 있어요
기존의 데이터베이스를 사용하시던 분들에게 말이죠
많은 개발자들이 Cloud Firestore를 이렇게 사용하기 시작하지만
실시간 리스너를 추가할 수도 있어요
그러면 클라이언트가 바로 알림을 받을 수 있죠
문서의 값이 변경될 때에 말이에요
꽤 멋진 기능이지 않아요?
라이브러리에 알리는 거예요
해당 쿼리의 결과를 알고 싶다고 하는 거죠
그러면 Cloud Firestore에서 업데이트를 보내는 거예요
이러한 값이 바뀔 때 말이죠
즉, 새로고침과 같은 추가 작업을
하지 않아도 된다는 말이에요
새로운 데이터는 이용 가능할 때마다 나타날 것이고
이는 멀티플레이어 게임과 같은 상황에 적합해요
사용자의 차례에 왔을 때
게임 상태에 대한 업데이트를 받으니까 말이죠
Cloud Firestore에는 다중 지역 지원 기능도 있어요
즉, 데이터를 약간의 거리를 둔 채로
다양한 위치에 저장할 수 있다는 거죠
이는 확실성의 관점에서 봤을 때 꽤 유용한 기능이에요
예를 들어, 방사능이 있는 도마뱀이 있다고 칠게요
혹은 전체 도시가 오프라인이 되었다고 가정을 해볼게요
그런 경우에도 다른 지역에서
데이터를 접근할 수 있다는 거예요
하지만 동시에 굉장히 일관성이 있다는 거죠
즉, 다시 가져오는 데이터가
데이터의 가장 최근의 버전이고
어느 지역에서든지 클라이언트가 원래 핑을 했더라도
데이터베이스에 작성된 거예요
솔직히 말씀드릴게요
다중 지역 지원 기능을 가진 건
매우 일관성이 있기도 하지만
이런 놀라우면서도 어려운 문제가
화면 뒤에서 해결된 거예요
솔직히 말해서, 이러한 기능이 얼마나 멋진지
많은 분들이 잘 모르시는 것 같아요
그러니 제가 문제를 해결할 기능이 있다고 추천드리면 귀 기울여주세요
Cloud Firestore는 또한 원자 거래를 지원해요
여러분이 작업하는 동일한 데이터를
다른 클라이언트가 동시에 손대기를 원치 않는다면
이를 설명드릴 슬라이드는 없지만
이를 원하시는 분들이 있는 걸 알고 있어요
그래서 지금 말씀드리려고요
지금 게임에 관련해서 말씀드리고 있죠
항상 클라이언트를 믿을 수 있는 게 아니라는 걸 알고 있잖아요
이를 지원하는 Cloud 함수와 보안 규칙들이 있어요
보안 규칙들은 클라이언트의 요청을
거절하는 것들을 정의하는 규칙인데요
클라이언트에게 허용되지 않는 데이터를 요청하거나
여러분이 원치 않는 방식으로
데이터를 작성하려는 것일 수 있죠
하지만 좀 더 세부적으로 제어하길 원하신다면
Cloud 함수를 사용하시면 돼요
이는 무서버 함수로써
여러분이 제어하고 믿을 수 있는
환경에 있는 Cloud에서 작동해요
즉, 해당 기능이 모든 클라이언트에게
동일하게 적용되도록 할 수 있다는 거죠
더욱 중요한 건, 데이터베이스에서
변경하는 사항을 믿을 수 있다는 거예요
제가 Cloud Firestore에 대해서 많이 말씀드린 건 사실이지만
실시간으로 가능한 NoSQL 데이터베이스는
Cloud에 있다는 거예요
여러분이 이렇게 생각하실 수도 있어요
Firebase 실시간 데이터베이스와 Cloud에 있는 실시간 데이터베이스를
어떻게 비교해야 할지 말이에요
여기서 정리를 해드리자면
둘 중에 하나를 선택하셔야 할 필요는 없어요
같은 프로젝트 내에서 둘 다 사용하셔도 돼요
필요에 따라서 말이죠
그렇지만 두 가지를 비교하고 대조해보길 원하신다면
Cloud Firestore를 실시간 데이터베이스의
무거운 버전이라고 생각하시면 돼요
일반적으로 더욱 복잡한 데이터를 더 잘 처리할 수 있으니까요
이건 그냥 제 생각이긴 하지만
데이터 모델을 작업하는데 더 쉬운 것 같아요
더욱 강력한 쿼리 작업 기능을 가지고 있고요
거래가 좀 더 상세하죠
실시간 데이터베이스보다 크기를 더 잘 변경해요
더 나은 확실성을 위한 다중 지역 지원 기능도 있고요
실시간 데이터베이스가 더 나은 부분도 몇 가지가 있긴 해요
클라이언트가 북미에 위치하고 있거나
출석에 대한 내장 지원을 가지고 있으면 더욱 빠른 경향이 있어요
많은 개임 개발자들이 신경을 쓰는 부분이죠
친구들이 온라인인지 플레이어들이 알아내도록 하는 거요
이에 대한 해결책으로 Cloud Firestore이 있어요
하지만 원래 내장되어 있는 기능은 아니에요
그래서 실시간 데이터베이스에 있는 것보다
섬세하지 않을 수 있어요
또한 가격 책정 모델이 달라요
실시간 데이터베이스에서, 비용이
주로 데이터의 양에 기반되어 있어요
클라이언트로 보내고 받는 데이터 말이죠
Cloud Firestore의 비용은 주로
실행하는 운영체제에서 읽거나 작성하는 수에 기반하고 있어요
그래서 일반적으로 실시간 데이터베이스는
조금 더 비용 면에서 효율적이죠
많은 수의 작은 운영체제가 있는 경우에 말이죠
빙고나 포커와 같은 게임을 생각해보세요
클라이언트가 매우 빈번하게
작은 정보 조각들을 보내죠
콜, 가격 올리기 또는 B14과 같이요
Cloud Firestore가 좀 더 비용 효율적인 경향이 있어요
큰 운영 체제에서 더 작은 양을 가지고 있을 때 말이죠
비동기 그리기 게임을 생각해보세요
큰 JSON 데이터 덩어리를 보내는 거죠
이는 플레이어의 그림을 나타내며
심지어 차례를 기반으로 한 단어 혹은 체스 게임이 될 수 있어요
플레이어가 차례가 되었을 때 오래 생각하게 되는 게임 말이에요
많은 운영체제들이 작동하지 않고 있는 거죠
그렇지만 너무 비용에만 치우지지 않으셨으면 좋겠어요
Cloud Firestore에서 유용한 기능이
아주 많이 있으니까요
아시다시피, 엔지니어 작업 시간은 금전적으로도 비용이 들어요
10명의 추가 엔지니어 작업 시간이 필요하죠
서버 비용에서 18가지 작업을 처리하려면 말이죠
이는 효율적인 방식이 아니에요
엔지니어 작업 시간을 현명하게 사용해야 해요
엔지니어 분들은 입맛이 고급이기도 하고요
그러면 실생활에서 Cloud Firestore를 어떻게 사용할까요?
몇 가지 잠재적으로 현실적인 시나리오들을 보겠습니다
가장 단순한 사용의 예로
플레이어의 게임을 Cloud에 저장하는 것에 대해 보죠
사용자들은 다양한 기기에서 게임을 하길 원하죠
Cloud Firestore를 사용하면 손쉽게
게임 상태를 Cloud에 저장할 수 있어요
플레이어 상태를 문서에 작성하면 돼요
문서를 데이터베이스에 작성하고요
그리고 해당 값을 받는 다른 클라이언트에서
가장 최근 버전을 가져올 수 있고
플레이어의 진행 상황이 반영되도록 해요
플레이어가 어디에서나 게임을 하든지요
여기서 또 말씀드리고 싶은 건 Cloud Firestore에서
비용이 비교적 비싸지 않다는 거예요
실시간 데이터베이스에 비교해서요
그러니 몇 가지 버전을 저장할 수 있어요
플레이어가 열정적으로 고객 지원에
호출을 하는 경우에
게임에 문제가 있다고 하죠
여러분은 이전에 저장된 게임을 다시 복구시켜주면 되는 거예요
Cloud Firestore를 사용할 또 다른 경우는 게임 상태 공유예요
차례를 기반으로 한 단어 혹은 그림 게임을 생각해보세요
초급자인 클라이언트에게는 굉장히 쉬워요
참여하고 있는 게임에 열을 세우면 되니까요
그러면 플레이어의 차례가 되게 하려면
공유된 문서에 새로운 게임 상태를 기록하고
여기에 모든 적합한 플레이어들이
접근할 수 있도록 하는 거예요
그리고 유용한 실시간 리스너 덕택에
다른 플레이어의 클라이언트가 업데이트를 받을 수 있어요
게임 상태가 변경될 때 말이죠
그러면 자신의 차례인 걸 알 수 있어요
추가적인 보안을 필요로 하는 경우에
클라이언트가 직접 해당 문서를 업데이트하게 하는 대신에
Cloud 함수에 원하는 것을
전달하도록 할 수 있어요
기억하세요, 이는 무서버 함수이며
Cloud에 있습니다
그러면 Cloud 함수는 플레이어의 움직임을 승인할 수 있어요
모든 것들이 올바르게 작동되도록 말이죠
그리고 공유된 게임 상태를
업데이트하는 작업을 수행할 수 있죠
이는 다른 플레이어에게 보내져요
또한 Firebase Cloud Messaging과의
통합 기능 덕분에
다른 플레이어에게 알림을 보낼 수 있어요
당시에 앱을 열고 있는 상태가 아니더라도
자신의 차례가 되면 알림을 받을 수 있는 거예요
일일 임무가 또 다른 좋은 예시가 될 수 있겠네요
이러한 기능은 적절한 양의 콘텐츠가 있고
모든 클라이언트가 로그인 할 때마다 보낼 필요가 있을 때
유용할 수 있어요
롤플레잉 게임, 퍼즐 게임, 십자말풀이
그리도 일일 임무를 포함한 많은 게임들이 있죠
이러한 데이터가 쉽게 저장되고 제공될 수 있어요
Cloud Firestore를 통해서 말이죠
사용자가 생성한 콘텐츠도 좋은 사용 예가 될 수 있어요
영상이나 스크린캐스트와 같은 큰 2진법 오브젝트에서는
Cloud Storage를 사용하는 걸 권장드립니다
그렇지만 퍼즐 게임이나 플랫폼 게임을 생각해보세요
사용자가 자신의 레벨을 창조해나가는 게임이죠
이러한 경우에 데이터를 JSON 데이터로 저장할 거예요
이는 Cloud Firestore에서 문제없이 작동될 거예요
그리고 쿼리도 작동되게 할 수 있어요
순위로 분류된 북미에서 만들어진 모든 퍼즐을 찾는 것처럼요
혹은 가장 최신 퍼즐을 찾거나 특정한 인물이 만든
모든 퍼즐을 찾는 것도요
제가 생각하기에 가장 흥미로운 사용 예는
훨씬 더 크고 더욱 기반이 확고한 회사에 사용되는 거예요
Cloud Firestore를 전 세계에서 실시간으로
측정할 수 있는 캐시 레이어로서 최근 인프라의 상단에서 사용하는 거죠
잠시 항공사에 대해서 생각해볼게요
항공사들은 30년간 축적된 서버가 있죠
수 많은 비즈니스 논리가 있고요
그리고 규제순응도 내장되어 있어요
그러면 이러한 모든 것들을
새로운 NoSQL 데이터베이스에 한 번에 옮길 수 없겠죠?
하지만 동시에, 멋지고 현대적인 애플리케이션 인프라를 가지길 원할 거예요
수백 개의 쿼리를 처리할 수 있고
실시간 업데이트가 가능하며 유용한 오프라인 지원이 가능하고
모든 멋진 기능을 제공하는 걸 원치 않겠어요?
이러한 경우에 할 수 있는 건
기존의 데이터를 Cloud Firestore 인스턴스에 복사하는 거예요
이렇게 하여 클라이언트가 정말로 손쉽게
검색을 할 수 있어요 비행기표 가격을 찾거나
항공 상태 정보를 보거나 이와 관련된 걸 보는 거죠
실시간으로 업데이트를 받을 수도 있고요
기존의 서버가 중요한 일들을 처리할 수 있도록 두면서
비행기표 구매와 같은 거요
이런 것들은 여전히 기존의 서버를 거쳐야 할 거예요
지금 제가 설명하는 걸 보시는 분들은
아마도 항공사를 운영하고 있지는 않으실 것 같아요
하지만 트레이딩 카드 게임인 MMO를 가지고 있으시다면
혹은 수 많은 데이터가 있는 롤플레잉 게임을 가지고 있으시다면
게임플레이 균형 설정이나
플레이어 프로필 혹은 뭐든지 클라이언트가 정기적으로
읽기를 원하는 것들이 있을 거예요
다시 말씀드리지만, 많은 클라이언트가
지속적으로 서버에 접근을 하는 거예요
그러니 Cloud Firestore를 전면에 배치하는 걸 고려해보세요
아시겠죠?
클라이언트가 데이터에 쿼리 작업을 하고
이는 Cloud Firestore에 보내지는 거죠
기존의 서버가 중요한 일들을 처리하도록 두면서요
플레이어 거래나 사용자 구매같은 거요
자, 제가 지금까지 설명드린 걸 보시면
Cloud Firestore로 작업을 시작하는 게 기대되실 거예요
그렇지만 Alpha 라벨에 대해 말씀을 드리고 싶네요
Cloud Firestore 백엔드 서비스가
한 동안 제공되고 있었죠
그리고 실제 제품의 앱에서 사용되기도 하고요
이러한 새로운 클라이언트 라이브러리들은
매우 새롭고 아직까지 테스트를 많이 하지 못했어요
그러니 버그가 있을 수 있죠
몇 가지가 있을 거예요
몇 가지 고급 기능에서
Unity SDK가 없는 것도 알고 있어요
더욱 정교한 쿼리 일부가 아직 이용 가능하지 않고요
숫자 변형과 같은 것들도
아직 지원되지 않아요
다음 몇 달간은 API 측면에서 변화가 있을 것이라고
예상되고요
그러니 언젠가는 방식을 바꿔야 할 때가 올 거예요
클라이언트 라이브러리를 업데이트할 때 말이죠
그러니 이러한 새로운 라이브러리를
시도해보시길 권장드려요
게임 인프라에 어떻게 맞는지 보시고요
그리고 후기도 꼭 남겨주시길 바랍니다
전체 비즈니스를 Cloud Firestore 기반으로 옮기는 건
미뤄두시길 바랍니다 몇 달 정도는 더 있어야 할 거예요
이렇게 몇 가지 주의문으로 마무리하면서
소유하신 최신 게임에 Cloud Firestore를
사용하는 것에 대해 조금의 관심이라도 두게 되셨으면 좋겠네요
Cloud Firestore에 대한 더 많은 정보나
저희가 제공하는 다른 서비스에 대한 더 많은 정보를 보시려면
firebase.google.com/games에 가셔서 확인해보세요
언제나 그렇듯이, 시청해주셔서 감사해요