모바일 앱 백엔드 서비스

이 문서에서는 Google Cloud를 사용하여 모바일 백엔드 서비스를 빌드, 연결, 테스트, 모니터링하는 방법을 설명합니다. 코드 샘플과 샘플 앱 링크는 각 설계 패턴을 따릅니다.

대부분의 모바일 앱과 게임에는 여러 사용자 간의 데이터 공유 및 처리, 또는 대용량 파일 저장과 같이 기기에서만 수행할 수 없는 작업을 위해 백엔드 서비스가 필요합니다. 게임과 관련된 백엔드 서비스에 대한 자세한 내용은 클라우드 게임 인프라 개요를 참조하세요.

설계 패턴 선택

모바일 앱용 백엔드 서비스 빌드는 웹 기반 서비스와 비슷하지만 몇 가지 추가적인 요구사항이 있습니다.

  • 기기 내 데이터 스토리지 제한
  • 여러 기기 간에 데이터 동기화
  • 오프라인 사례를 정상적으로 처리
  • 알림 및 메시지 보내기
  • 배터리 소모 최소화

다음 설계 패턴에서는 Google Cloud를 사용하여 이러한 요구사항을 해결하는 백엔드 서비스를 만드는 다양한 방법을 보여줍니다. 자세한 내용을 보려면 패턴을 선택하여 패턴의 세부 설명으로 이동하세요.

Firebase 설계 패턴 Firebase와 App Engine 설계 패턴 Firebase와 App Engine 가변형 환경 설계 패턴 App Engine 표준 환경과 Endpoints 설계 패턴 Compute Engine 설계 패턴

처음 패턴 3개는 2단계 아키텍처인 Firebase를 사용합니다. 이 아키텍처에서는 모바일 앱과 Firebase 모두 데이터를 직접 조작합니다. 이로 인해 보안 및 데이터 검증이 처리되는 방식에 중요한 차이점이 발생합니다.

마지막 패턴 두 개와 같은 기존의 3단계 모델에서는 모바일 앱과 백엔드 서비스 간에 통신 레이어가 있습니다. 일반적으로 이 레이어에 인증 및 데이터 유효성 검사 코드를 씁니다.

Firebase에서는 명령형 코드를 작성하지 않고 Firebase 웹 UI에서 선언적 규칙으로 인증 및 유효성 검사를 지정할 수 있습니다. 자세한 내용은 Firebase 문서의 Firebase 인증을 참조하세요.

또한 이러한 설계 패턴은 완전 관리형 플랫폼인 Firebase에서 완전 비관리형 플랫폼인 Compute Engine으로 전환됩니다. 관리형 플랫폼에서 Google은 업그레이드 및 자동 확장과 같은 작업을 처리하지만 구성에 몇 가지 제한이 있습니다. 비관리형 플랫폼에서는 서버 구성을 완전히 제어할 수 있지만 관리 작업을 직접 처리해야 합니다.

다음 표에서 설계 패턴의 차이점을 자세히 확인할 수 있습니다.

기능 Firebase Firebase 및 App Engine 표준 환경 Firebase 및 App Engine 가변형 환경 App Engine 표준 환경 및 Cloud Endpoints Compute Engine 및 REST/gRPC
자동 용량 확장 예 예 예 예 자동 확장 처리를 구성하는 경우
자동 실시간 데이터 동기화 예 예 예

자동 서버 유지관리 예 예 예 예

백엔드 로직

예 예 예 예
네이티브 바이너리를 호출하고 파일 시스템에 기록하거나 다른 시스템 호출 수행

예

예
데이터 스토리지 예 예 예 다른 Google Cloud 서비스를 추가하는 경우 다른 Google Cloud 서비스를 추가하는 경우
파일 스토리지 예
예
예
예
Cloud Storage를 사용하는 경우
예
Cloud Storage를 사용하는 경우
쉬운 사용자 인증 예 예 예 OAuth 2.0

모바일 백엔드 서비스 언어 지원 해당 사항 없음 App Engine 문서 참조 Endpoints Frameworks 문서 참조 모두
푸시 알림 등의 메시지 및 알림 예
예
예
   
플랫폼 지원 iOS, Android, 웹 iOS, Android, 웹 iOS, Android, 웹 iOS, Android, 웹 iOS, Android, 웹
샌드박스 내에서 실행되는 코드 필요

해당 사항 없음

예

예

SSL 필요

예

예

Firebase

Firebase는 자동 데이터 동기화, 인증 서비스, 메시지, 파일 스토리지, 분석 등을 제공하는 iOS, Android, 웹 앱을 빌드하기 위한 완전 관리형 플랫폼입니다. Firebase는 모바일 백엔드 서비스를 빌드하거나 프로토타입을 만드는 효율적인 방법입니다.

Firebase

추천 대상:

  • Firebase 실시간 데이터베이스 및 Firebase 저장소의 파일에 JSON 데이터를 저장하여 기기 내 데이터 저장 제한
  • Firebase 클라우드 메시징으로 알림 보내기
  • 여러 기기 간에 자동 실시간 데이터 동기화
  • 오프라인 사례를 정상적으로 처리
  • 다양한 ID 공급업체를 통해 사용자 인증
  • 백엔드 서비스의 신속한 개발

추천하지 않는 대상:

  • 동기화된 데이터를 수정하기 위해 백엔드 서비스가 필요한 앱

Firebase 시작하기

Firebase를 시작하는 방법

Firebase 코드 샘플

Firebase를 사용하는 샘플 앱

Firebase 및 App Engine 표준 환경

App Engine 표준 환경은 호스팅 환경을 모니터링, 업데이트, 확장하는 앱 플랫폼이므로 모바일 백엔드 서비스 코드를 작성하기만 하면 됩니다.

앱에서 사용자 데이터를 처리하거나 이벤트를 조정해야 하는 경우, App Engine 표준 환경으로 Firebase를 확장하여 실시간 자동 데이터 동기화의 이점을 활용할 수 있습니다.

Firebase 및 App Engine

추천 대상:

  • 동기화된 데이터를 수정하기 위해 백엔드 서비스가 필요한 Firebase 앱
  • Firebase 데이터를 처리하거나 분석하기 위해 주기적으로 실행되는 백엔드 서비스

추천하지 않는 대상:

  • 네이티브 바이너리를 호출하고 파일 시스템에 기록하거나 다른 시스템 호출을 수행하는 백엔드 서비스
  • Firebase로의 지속적인 연결. App Engine 표준 환경은 2분 후 소켓 연결을 회수합니다.

Firebase 및 App Engine 가변형 환경

App Engine 표준 환경과 마찬가지로 App Engine 가변형 환경은 호스팅 환경을 모니터링, 업데이트, 확장하는 앱 플랫폼이므로 모바일 백엔드 서비스 코드를 작성하기만 하면 됩니다.

가변형 환경은 개발자가 구성할 수 있는 Docker 컨테이너 내에서 백엔드 서비스를 실행한다는 점이 다릅니다. 즉, 네이티브 바이너리를 호출하고 파일 시스템에 기록하고 다른 시스템 호출을 수행할 수 있습니다.

앱에서 사용자 데이터를 처리하거나 이벤트를 조정해야 하는 경우, App Engine 샌드박스 내에서 코드를 실행할 필요 없이 App Engine 가변형 환경으로 Firebase를 확장하여 실시간 자동 데이터 동기화 이점을 활용할 수 있습니다.

Firebase 및 App Engine 가변형 환경

추천 대상:

  • 동기화된 데이터를 수정하기 위해 백엔드 서비스가 필요한 Firebase 앱으로 해당 서비스에 App Engine 표준 환경에서 지원하지 않는 커스텀 서버 구성 또는 타사 라이브러리가 필요한 경우
  • 데이터 변경 알림 수신을 위해 Firebase 연결을 지속해야 하는 백엔드 서비스. 가변형 환경은 24시간 동안 연결을 유지할 수 있습니다.

Firebase 및 App Engine 가변형 환경을 사용하여 모바일 앱 빌드

이 가이드에서는 Firebase를 사용하여 백엔드 데이터 저장, 실시간 동기화, 사용자 이벤트 로깅 기능을 갖춘 모바일 앱을 작성하는 방법을 보여줍니다. App Engine 가변형 환경에서 실행되는 자바 서블릿은 Firebase에 저장된 새로운 사용자 로그를 리슨 및 처리합니다.

App Engine 및 Endpoints

App Engine 표준 환경용 Endpoints Frameworks는 App Engine 앱의 API, 클라이언트 라이브러리, 검색 문서를 생성합니다. Endpoints를 사용하면 App Engine과의 통신을 처리할 래퍼를 작성할 필요가 없습니다. Endpoints에 의해 생성된 클라이언트 라이브러리를 사용하여 모바일 앱에서 직접 API를 호출할 수 있습니다.

App Engine에서 Endpoints를 사용하면 호스팅 환경을 모니터링, 업데이트, 확장하는 앱 플랫폼을 사용할 수 있습니다.

App Engine 및 Endpoints

추천 대상:

  • 앱이 직접 백엔드 서비스를 호출하는 데 사용할 수 있는 클라이언트 라이브러리를 자동으로 생성
  • 파일을 Cloud Storage로 이동하여 기기 내 스토리지 축소

추천하지 않는 대상:

  • 기기 간에 자동 실시간 데이터 동기화가 필요한 앱
  • 커스텀 서버 또는 타사 라이브러리가 필요한 백엔드 서비스
  • Endpoints에서 필요한 SSL을 지원하지 않는 시스템

Hello Endpoints

간단한 메시지를 보내는 샘플 앱 Hello Endpoints를 빌드하는 방법을 보여주는 일련의 시작 가이드입니다. 백엔드 서비스는 App Engine에 구현되고 Endpoints를 사용해 모바일 앱에 노출됩니다.

Tic Tac Toe

App Engine에서 실행되는 백엔드 서비스를 호출하여 간단한 게임을 만드는 방법을 보여주는 샘플 앱입니다. Tic Tac Toe 백엔드 서비스는 자바로 구현됩니다.

Compute Engine, REST 또는 gRPC

Compute Engine을 사용하면 Google 인프라에서 가상 머신을 만들고 실행할 수 있습니다. 개발자에게는 서버에 대한 관리자 권한과 구성에 대한 완전한 제어 권한이 있습니다. 즉, 개발자가 업데이트와 유지관리를 책임집니다.

Compute Engine 및 REST

Compute Engine 인스턴스에 연결하는 데 사용되는 주요 프로토콜은 REST와 gRPC의 두 가지입니다. REST는 비교적 널리 알려진 프로토콜입니다. gRPC는 상대적으로 최신 프로토콜이며 전송 방식이 더 효율적이어서 배터리 소모를 최소화하고 보안을 강화할 수 있습니다. REST 및 gRPC에 대한 자세한 내용은 커스텀 백엔드 서비스에 앱 연결을 참조하세요.

추천 대상:

  • 온프레미스 서버 또는 가상 머신에서 실행 중인 기존 백엔드 서비스 이식
  • 커스텀 서버 또는 타사 라이브러리가 필요한 백엔드 서비스

추천하지 않는 대상:

  • 기기 간에 자동 실시간 데이터 동기화가 필요한 앱
  • 자동 유지관리. 개발자가 서버를 직접 관리하고 업그레이드해야 합니다.
  • 자동 확장. 개발자가 직접 자동 확장 처리를 구성하고 관리해야 합니다.

모바일 앱에서 Compute Engine 및 REST 사용

REST를 사용하여 모바일 앱을 Compute Engine에 호스팅되는 백엔드 서비스에 연결하는 엔드 투 엔드 샘플입니다. 샘플 앱인 Stickynotes는 생성된 이미지를 반환하여 응답하는 서비스에 텍스트를 전송합니다.

Stickynotes 샘플은 REST 및 gRPC 버전 모두에서 사용할 수 있으므로 두 프로토콜을 비교할 수 있습니다.

모바일 앱에서 Compute Engine 및 gRPC 사용

gRPC 및 프로토콜 버퍼를 사용하여 모바일 앱을 Compute Engine에 호스팅되는 백엔드 서비스에 연결하는 엔드 투 엔드 샘플입니다. 샘플 앱인 Stickynotes는 생성된 이미지를 반환하여 응답하는 서비스에 텍스트를 전송합니다.

Stickynotes 샘플은 REST 및 gRPC 버전 모두에서 사용할 수 있으므로 두 프로토콜을 비교할 수 있습니다.

선택한 디자인 패턴에 관계없이 앱의 모바일 플랫폼 아키텍처 가이드도 확인해야 합니다. 예를 들어 Android 개발자 문서에서 앱 아키텍처 가이드를 확인하세요.

모바일 백엔드 서비스 빌드

Google은 Google Cloud 서비스와 통합하는 백엔드 서비스를 빌드하기 위해 사용할 수 있는 다양한 도구와 서비스를 제공합니다.

Android 스튜디오

Android 스튜디오IntelliJ IDEA를 기반으로 하는 Android 앱 개발용 공식 IDE이며 린트 도구, Gradle 기반 빌드 시스템, 코드 템플릿과 같은 추가 기능을 제공합니다.

또한 Android 스튜디오에는 Google Cloud 서비스와 Firebase를 앱에 통합하는 기능이 기본 제공됩니다. 자세한 내용은 Android 스튜디오용 도구를 참조하세요.

iOS용 Google API

Google은 CocoaPods를 사용하여 여러 iOS용 API 및 SDK를 배포합니다. CocoaPods는 Swift 및 Objective-C Cocoa 프로젝트의 오픈소스 종속 항목 관리자로서, Xcode로 작업 시 새 SDK를 설치 또는 업데이트하는 데 사용됩니다.

Cloud SDK

Cloud SDK에는 Google Cloud에서 리소스를 만들고 관리할 수 있는 도구와 라이브러리가 포함됩니다.

Cloud Source Repositories

Cloud Source Repositories는 Google Cloud에 호스팅되는 모든 기능을 갖춘 Git 저장소입니다.

Google Cloud Console에서 만드는 각 프로젝트에는 연결된 Cloud Source Repositories가 있습니다. 이 저장소를 App Engine 및 Compute Engine에서 실행되는 서비스를 포함하여 앱 또는 서비스의 공동 개발을 위해 사용할 수 있습니다.

Cloud Debugger를 사용하는 경우 앱 런타임 중에 Cloud Source Repositories 및 Cloud Console의 관련 도구를 사용하여 디버깅 정보와 코드를 함께 볼 수 있습니다.

Cloud Debugger

앱을 중지하거나 느리게 할 필요 없이 Debugger를 사용하여 모든 코드 위치에서 자바 앱의 상태를 검사할 수 있습니다. 앱의 프로덕션 및 스테이징 인스턴스 모두에서 Debugger를 사용할 수 있습니다.

다음과 함께 Debugger를 사용할 수 있습니다.

모바일 백엔드 서비스에 앱 연결

백엔드 서비스를 빌드한 후에는 모바일 앱의 인스턴스와의 통신을 설정해야 합니다.

Firebase에 앱 연결

백엔드 서비스가 Firebase를 사용하는 경우 모바일 앱을 Firebase에 연결하는 프로세스는 다음과 같습니다.

  • Firebase 계정을 만듭니다.
  • Firebase에서 앱 URL을 가져옵니다.
  • 클라이언트 라이브러리를 앱에 가져옵니다. iOS, Android, 웹 앱, REST에서 사용할 수 있습니다.
  • 앱 URL을 참조하여 앱에서 라이브러리를 호출합니다.

구체적인 과정에 대한 자세한 내용은 Firebase 문서의 시작 가이드를 참조하세요.

커스텀 백엔드 서비스에 앱 연결

모바일 앱에서 백엔드 서비스를 호출하는 데 사용할 수 있는 몇 가지 프로토콜이 있습니다. Google Cloud에서 일반적으로 사용되는 프로토콜은 REST, Endpoints, gRPC입니다.

REST

REST는 HTTP 요청을 사용하여 데이터를 게시, 읽기, 삭제하는 네트워크가 연결된 앱을 위한 아키텍처입니다. 빌드하는 백엔드 서비스에 앱이 액세스하기 위해 호출할 수 있는 Compute Engine, App Engine 표준 환경, App Engine 가변형 환경 인스턴스에서 REST API를 빌드할 수 있습니다.

Google Cloud에서 RESTful 서비스를 빌드하기 위한 일반적인 도구는 다음과 같습니다.

백엔드 서비스에서 REST를 사용하는 방법을 보여주는 샘플 코드는 Compute Engine, REST 또는 gRPC를 참조하세요.

REST를 사용하여 Firebase와 통신할 수도 있습니다. 자세한 내용은 Firebase 문서의 Firebase 데이터베이스 REST API를 참조하세요.

Endpoints 프레임워크

Endpoints Frameworks는 App Engine 앱을 위한 API와 클라이언트 라이브러리를 생성합니다. Endpoints Frameworks를 사용하면 App Engine과의 통신을 처리하는 래퍼를 작성할 필요가 없습니다. 생성된 클라이언트 라이브러리를 사용하면 모바일 앱에서 직접 API를 호출할 수 있습니다.

Endpoints Frameworks에는 SSL이 필요하며 App Engine에서 실행되는 앱에서만 작동합니다.

백엔드 서비스에서 Endpoints Frameworks를 사용하는 방법을 보여주는 샘플 코드는 App Engine 및 Endpoints를 참조하세요.

gRPC

gRPC 프레임워크를 사용하면 모바일 앱에서 백엔드 서비스의 메서드를 로컬 객체의 경우와 같이 직접 호출할 수 있습니다.

gRPC는 양방향 스트리밍, 흐름 제어, 헤더 압축, 단일 TCP 연결을 통해 요청을 다중화하는 기능을 제공하는 HTTP/2 표준을 사용합니다. gRPC를 사용하여 모바일 앱의 대역폭 효율성을 높이고 Google Cloud에서 실행 중인 백엔드 서비스와 앱 간의 지연 시간을 줄일 수 있습니다.

gRPC의 모든 지원 언어를 사용하여 gRPC 클라이언트와 서버를 작성할 수 있습니다. 예를 들어 Go, Python 또는 Ruby의 클라이언트를 사용하여 자바로 gRPC 서버를 만들 수 있습니다.

백엔드 서비스에서 gRPC를 사용하는 방법을 보여주는 샘플 코드는 Compute Engine, REST 또는 gRPC를 참조하세요.

앱에 알림 보내기

알림은 대부분의 모바일 앱에서 중요한 기능입니다. 알림을 사용하면 앱이 사용자의 기기에 열려 있는지 여부와 관계없이 사용자와 통신할 수 있습니다.

Firebase 클라우드 메시징

Firebase 클라우드 메시징(FCM)은 앱을 실행하는 클라이언트 기기에 메시지와 알림을 안정적으로 전송할 수 있는 교차 플랫폼 메시징 솔루션입니다.

FCM을 사용하면 다음이 가능합니다.

  • 단일 기기인지, 기기 그룹인지, 주제를 구독한 기기인지에 따라 3가지 방법으로 클라이언트 앱에 메시지를 배포합니다.
  • 최대 2KB의 알림, 최대 4KB의 데이터 페이로드를 전송하고 알림과 데이터 페이로드가 모두 포함된 메시지를 보낼 수 있습니다.
  • FCM의 안정적이고 배터리 효율적인 연결 채널을 통해 확인, 채팅, 기타 메시지를 기기에서 서버로 다시 보낼 수 있습니다.

FCM을 사용하여 알림 보내기를 시작하려면 다음을 참조하세요.

Firebase 알림

Firebase 클라우드 메시징 및 FCM SDK를 기반으로 빌드된 Firebase 알림은 앱을 실행하는 클라이언트 기기에 메시지를 보낼 때 사용할 수 있는 그래픽 콘솔을 제공합니다.

모바일 백엔드 서비스 테스트

모바일 앱 생성 시 직면하는 난관 중 하나는 가능한 모든 기기 구성에서 앱을 테스트하는 것입니다. Google Cloud는 실제 기기 및 가상 기기 모두에서 모바일 앱을 테스트할 수 있는 도구와 백엔드 서비스의 보안 및 성능을 테스트할 수 있는 도구를 제공합니다.

테스트 백엔드 서비스와 호환되도록 모바일 앱을 구성하여 테스트로 인한 부작용이 프로덕션 환경에 영향을 미치지 않게 할 수도 있습니다. 자세한 내용은 Firebase 문서의 다양한 환경 지원을 참조하세요.

Firebase Test Lab

Firebase Test Lab은 클라우드 기반 인프라를 제공하여 Android 및 iOS 앱을 테스트할 수 있습니다. 한 번의 작업으로 광범위한 기기 유형과 구성을 적용하여 앱 테스트를 시작할 수 있습니다. 로그, 동영상, 스크린샷 등을 포함하는 테스트 결과는 Cloud Console 내 프로젝트에서 확인할 수 있습니다. 앱의 테스트 코드를 작성하지 않고도 Firebase Test Lab에서 앱을 자동으로 분석하고 오류를 찾아낼 수 있습니다.

Firebase Test Lab을 사용하여 가상 기기 또는 실제 기기에서 앱을 테스트할 수 있습니다. 각 기기 유형에 다양한 모델을 사용할 수 있습니다.

  • 가상 기기는 특정 휴대기기를 실제와 가깝게 가상 시뮬레이션합니다. 이러한 기기는 일정 예약 시 가용성이 가장 높으며 일상적인 개발 또는 연속 테스트에 가장 적합합니다.

  • 실제 기기는 Google 데이터 센터에서 설치하고 실행하는 실제 휴대기기입니다. 실제 기기 테스트는 출시 전 테스트에 가장 적합합니다. 가상 기기로 앱을 테스트할 때는 발생하지 않는 여러 가지 문제점을 발견할 수 있기 때문입니다.

Web Security Scanner

Web Security Scanner는 App Engine 웹 앱의 보안 취약점을 확인합니다. 앱을 크롤링하여 시작 URL 범위 내에 있는 모든 링크를 확인하고 최대한 많은 사용자 입력과 이벤트 핸들러 실행을 시도합니다.

Web Security Scanner는 현재 App Engine 표준 환경 인스턴스만 지원합니다. App Engine 가변형 환경, Compute Engine 또는 기타 Google Cloud 리소스에는 아직 사용 설정할 수 없습니다.

Cloud Trace

Cloud Trace는 App Engine 앱의 지연 시간 데이터를 수집하여 Cloud Console에 실시간에 가깝게 표시합니다.

Trace를 사용하면 앱이 사용자 또는 다른 앱으로부터 들어오는 요청을 처리하는 데 걸리는 시간과 요청 처리 시 RPC 호출과 같은 작업을 완료하는 데 걸리는 시간을 파악할 수 있습니다.

현재 Trace는 App Engine URI에 대한 요청의 엔드 투 엔드 지연 시간 데이터와 Datastore, URL Fetch, Memcache와 같은 App Engine 서비스에 대한 왕복 RPC 호출의 추가 데이터를 수집합니다.

모바일 백엔드 서비스 모니터링

백엔드 서비스를 실행하는 것은 시작에 불과합니다. 이제 서비스가 올바르게 작동하는지 모니터링해야 합니다.

표준 환경 및 가변형 환경을 위한 App Engine에서는 상태 모니터링이 자동으로 수행되며 필요에 따라 새로운 인스턴스를 가동합니다. 무응답 인스턴스를 교체하도록 Compute Engine의 자동 확장을 구성할 수도 있습니다.

Google Cloud는 로그를 수집 및 분석하는 도구와 앱이 지정된 범위를 벗어나 실행되는 경우에 알림을 보내도록 구성할 수 있는 모니터링 대시보드를 제공합니다.

Cloud Logging

Cloud Logging은 Google Cloud의 앱과 서비스에서 발생하는 로그를 수집하고 저장합니다. 사용 가능한 로그에서는 액세스할 수 있는 로그를 보여줍니다. 로그를 수집한 후에는 다음을 수행할 수 있습니다.

Cloud Monitoring

Monitoring은 사이트에 대한 대시보드와 알림을 제공합니다.

Cloud Console을 사용하여 Monitoring을 구성할 수 있으며 Cloud Monitoring API를 사용하여 모니터링 데이터를 검색하고 커스텀 측정항목을 만들 수 있습니다.

Monitoring을 사용하면 Google Cloud 서비스, 가상 머신, 일반적인 오픈소스 서버(예: MongoDB, Apache, Nginx, Elasticsearch 등)의 성능 측정항목을 검토할 수 있습니다.

다음 단계

  • 다른 Google Cloud 기능을 직접 사용해보세요. 가이드 살펴보기.