Google 애널리틱스와 통합

Google 애널리틱스 플랫폼을 사용하면 다양한 기기와 환경에서 비즈니스와 사용자의 상호작용을 측정할 수 있으며, 이러한 사용자 상호작용을 수집, 저장, 처리, 보고하기 위한 모든 컴퓨팅 리소스 또한 플랫폼에서 이용할 수 있습니다.

애널리틱스 수집은 클라이언트와 서버 측 모두에서 수행될 수 있습니다. Google 애널리틱스는 Google 애널리틱스로 데이터를 보내는 데 사용할 수 있는 간편한 API와 SDK를 제공합니다. Google은 이와 더불어 App Engine 애플리케이션에서 서버 측 애널리틱스를 Google 애널리틱스로 간편하게 보내는 데 사용할 수 있는 코드도 개발했습니다.

클라이언트 측 애널리틱스 수집

수집 API와 SDK를 사용하여 사용자가 콘텐츠 및 마케팅 이니셔티브와 어떻게 상호작용하는지 측정할 수 있습니다. 구현한 후에는 Google 애널리틱스 내에서 또는 Reporting API를 통해 사용자 상호작용 데이터를 확인할 수 있습니다. 클라이언트 측 애널리틱스 수집에 대한 자세한 내용은 아래에서 클라이언트 유형에 맞는 링크를 선택하여 확인하세요.

  • 웹 추적(analytics.js) - 사용자와 웹사이트 또는 웹 애플리케이션의 상호작용을 측정합니다.
  • Android - 사용자와 Android 애플리케이션의 상호작용을 측정합니다.
  • iOS - 사용자와 iOS 애플리케이션의 상호작용을 측정합니다.
  • 측정 프로토콜 - 모든 환경에서 사용자 상호작용을 측정하는 저수준 프로토콜입니다.

App Engine 서버 측 애널리틱스 수집

App Engine에 애플리케이션의 이벤트 로깅 메커니즘이 마련되어 있기는 하지만 Google 애널리틱스에서 특정 서버 측 이벤트를 추적하는 것이 더 유리할 수 있습니다. 몇 가지 이점은 다음과 같습니다.

  • 이전 데이터 분석 - App Engine을 사용하면 로그 파일의 최대 일수 또는 크기를 구성할 수 있습니다. 이 기간이 경과하면 해당 로그 파일에 더 이상 액세스할 수 없습니다. Google 애널리틱스에서 이벤트 추적을 사용하면 훨씬 더 긴 기간 동안의 과거 이벤트를 확인할 수 있습니다.
  • 주요 이벤트 추적 - 애플리케이션의 다양한 구성요소가 데이터를 기록하므로, 로그 파일이 장황해질 수 있습니다. 이벤트 추적을 사용하면 모니터링하려는 주요 이벤트를 선별하고 일부 추가 메타데이터와 함께 추적할 수 있습니다.
  • 강력한 사용자 인터페이스 - Google 애널리틱스가 제공하는 다채로운 사용자 인터페이스를 활용하여 서버 측 이벤트를 시각화하고 보고하고 내보낼 수 있습니다.

아래 샘플 소스 코드를 App Engine 애플리케이션에 통합하면 이러한 작업을 간편하게 수행할 수 있습니다. 이 접근 방식에 대한 자세한 내용은 Google 애널리틱스 개발자 가이드의 이벤트 추적을 참조하세요.

샘플 소스 코드

import com.google.appengine.api.urlfetch.URLFetchService;
import com.google.appengine.api.urlfetch.URLFetchServiceFactory;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.http.client.utils.URIBuilder;

@SuppressWarnings("serial")
// With @WebServlet annotation the webapp/WEB-INF/web.xml is no longer required.
@WebServlet(
    name = "analytics",
    description = "Analytics: Send Analytics Event to Google Analytics",
    urlPatterns = "/analytics"
)
public class AnalyticsServlet extends HttpServlet {

  @Override
  public void doGet(HttpServletRequest req, HttpServletResponse resp)
      throws IOException, ServletException {
    String trackingId = System.getenv("GA_TRACKING_ID");
    URIBuilder builder = new URIBuilder();
    builder
        .setScheme("http")
        .setHost("www.google-analytics.com")
        .setPath("/collect")
        .addParameter("v", "1") // API Version.
        .addParameter("tid", trackingId) // Tracking ID / Property ID.
        // Anonymous Client Identifier. Ideally, this should be a UUID that
        // is associated with particular user, device, or browser instance.
        .addParameter("cid", "555")
        .addParameter("t", "event") // Event hit type.
        .addParameter("ec", "example") // Event category.
        .addParameter("ea", "test action"); // Event action.
    URI uri = null;
    try {
      uri = builder.build();
    } catch (URISyntaxException e) {
      throw new ServletException("Problem building URI", e);
    }
    URLFetchService fetcher = URLFetchServiceFactory.getURLFetchService();
    URL url = uri.toURL();
    fetcher.fetch(url);
    resp.getWriter().println("Event tracked.");
  }
}