Discovery's Massive Workspace Migration Fuels Innovation and Collaboration - Build What's Next
Blog

Discovery’s Massive Workspace Migration Fuels Innovation and Collaboration

3836

Of your peers have already read this article.

1:30 Minutes

The most insightful time you'll spend today!

To deliver exceptional content and lead the media and entertainment industry, Discovery leverages SADA's expertise as a Google Workspace premier partner to mass migrate petabytes of data from legacy collaboration systems with minimal disruption!

In the past two decades, Discovery has moved from a purely cable business based in the U.S. to a global media and entertainment powerhouse. Like many other businesses in the industry, we’ve had to adjust to the unique shifts in people’s behaviors and preferences, almost all of which result from the rise in streaming.

We have always been consumer-obsessed at Discovery, with a corporate culture built on the desire to entertain and inspire people of all ages and backgrounds with exceptional content. As we’ve grown, we have also learned just how important it is to be staff-obsessed, giving our employees the best possible experiences so they can continue to innovate and deliver the world-class content our customers expect.

In 2019, we decided one way to fuel innovation and collaboration among employees was to bring in Google Workspace. Selected for its intuitive, easy-to-use, and constantly evolving tools, Google Workspace enables teams to seamlessly create, connect, and collaborate anywhere, anytime.

Given the scope of our ambitions, and recognizing the challenges of migrating 16,500 global employees to a new collaboration solution, we worked with Google Cloud premier partner SADA to get the job done.

Change management amid a massive migration

We began the move to Google Workspace by migrating our document storage system from a legacy cloud provider to Google Drive. This included 86 million items amounting to about two petabytes of data migrated with minimal disruptions. A few months later we completed our move to Google Workspace by migrating 1.2 million calendar invites and 20,800 mail accounts, including thousands of collaborative inboxes and delegated accounts.

In addition to the technical support and Google Workspace expertise that SADA provided, they also partnered with our project team on the change management strategy. Despite challenges presented by the COVID-19 pandemic, our training team and SADA were able to offer outstanding educational opportunities to assist our workforce in the transition and to get the most out of Google Workspace.  This included collaborating on over 240 global webinars in seven languages.   

Discovering the power of transformative tools

Discovery has many types of end users, from finance professionals and marketing teams to producers and content developers. The fact that Google Workspace has been well-received across the company is a testament to the power of the solution.

Many of our teams have taken advantage of collaborative Gmail accounts and shared drives, providing them with a centralized location to seamlessly communicate and work together on team-focused projects. Our internal communications team is especially happy with the real-time collaborative editing experience within Docs as they work on company-wide emails, announcements, and other projects. 

These collaboration tools have allowed us to stay agile amid global lockdowns and will continue to do so as we adapt to a more flexible working environment.

The value of partnership

While we were comfortable with our legacy collaboration suite, one of the biggest benefits of switching to Google Workspace has been Google Cloud’s and SADA’s partnership. They provide us with regular updates on product roadmaps, upcoming features, and more.

This is just the beginning as we plan to grow, deliver new content, and lead the media and entertainment industry with the help of these two great partners and their solutions.

To learn more about Discovery’s journey with Google Workspace, read the full case study.

How-to

In sync for better efficiency: Effective collaboration strategies for distributed workforces

3192

Of your peers have already read this article.

2:30 Minutes

The most insightful time you'll spend today!

The key to making collaboration scalable is choosing the right method and tool for the task assigned. With that in mind, here are some ways to get the most out of same-time and staggered-time collaboration in your organization.

Workplace collaboration continues to evolve as hybrid work expands its footprint. While both “same-time” and “staggered-time” (or asynchronous) collaboration modes each have their place in the hybrid work environment, organizations and teams sometimes overuse one mode over another. That’s probably because in-person meetings or collaborating in real time have been the default for many organizations, leading to a “same-time” bias, even as new tools make working across time zones and locations seamless. Ultimately, the key for making collaboration scalable and to support employee wellbeing is choosing the right method and tool for the task at hand. With that in mind, here are some ways to get the most out of same-time and staggered-time collaboration in your organization.

Making same-time collaboration more valuable

Historically, many organizations have valued same-time interactions for the fast, direct exchange of information and feedback. They also bring teams together and build human connections. While all these outcomes are powerful and important, same-time collaboration also has some drawbacks — especially in a hybrid environment.

First, same-time interactions can be difficult to arrange. Coordinating schedules requires advanced planning, especially when employees are distributed across time zones or working outside of traditional business hours. Second, back-to-back scheduling can contribute to meeting fatigue. In our recently commissioned global hybrid work survey with Economist Impact, 72% of respondents acknowledged that virtual meetings improve inclusion and participation. At the same time, 68% said there are too many virtual meetings in general, suggesting that even though employees value same-time collaboration, they want it in moderation.


To address these challenges, organizations should consider the collaboration scenarios in which same-time interactions can make the greatest impact. It’s particularly useful when consensus or immediate action is needed, as in briefings, decision-making, and crisis management.

For effective same-time collaboration in a hybrid environment, your employees need tools that help them coordinate real-time interactions and minimize time spent switching apps and context. With Google Workspace, teams can create and access a shared agenda or Google Doc inside a Google Calendar invite, helping align expectations and goals before, during, and after scheduled same-time work sessions. And, the more integrated your collaboration tools are, the easier it is for employees to get right to work when inspiration strikes or a quick decision is needed. For example, team members can initiate spontaneous work sessions by starting a Google Meet directly from Docs, Sheets, or Slides.

Additionally, consider how you can bring real-world collaboration activities into virtual environments to enhance same-time collaboration for distributed teams. For instance, digital whiteboard tools, like Jamboard and Miro in Google Meet, allow people to brainstorm, ideate, and problem-solve in real time from anywhere. Interactive solutions like these empower employees to work together in new ways.

Expanding what’s possible with staggered-time collaboration

Widespread adoption of hybrid work has prompted organizations to turn more frequently to staggered-time collaboration — where team members are free to share and respond to information in their own time. A key benefit of staggered collaboration is improving the experience and wellbeing of employees — specifically, by promoting participation across the team and support for flexible work habits. Allowing team members to engage when they’re most productive, or when it doesn’t interfere with their scheduled focus time, supports their wellbeing. It can also help employees feel heard, valued, and empowered. Staggered-time collaboration can also give team members who may feel uncomfortable or vulnerable speaking up in real time, or who just need time to think about their feedback, a more inviting way to share their perspectives.

Staggered-time collaboration can enhance a range of collaboration scenarios, including assigning tasks and action items, knowledge- and resource-sharing, brainstorming, and giving feedback. To make these interactions successful, employees need secure, intuitive tools that give them the information they need to do their jobs from anywhere, at any time. For example, in Spaces, team members can initiate and take part in group chat threads devoted to project- and topic-based discussions, as well as access files and tasks, to stay in the loop whenever they’re able to participate. For people working on a task or project at varied times, creating a dynamic, single source of truth makes all the difference.

When collaborating on shared documents, a feature like smart canvas enables teammates to assign tasks, build checklists, and share files using @-mentions for easy information access. Meanwhile, automated, built-in summaries in Docs help the team get up to speed without losing focus. Features like these help everyone stay on the same page (literally), even if they’re contributing to a project at different times.

Auto-generated summaries in Docs, driven by Google AI


Flexibility and collaboration are not mutually exclusive

Helping people know which tasks call for real-time collaboration and which tasks are better done on their own time is critical for sustaining productivity and wellbeing in a hybrid work world. Employees who are empowered to work in ways that complement their needs, preferences, and schedules typically reward their organization for that flexibility. As Holger Reisinger, Paul Sephton, and Dane Fetterer wrote for the Harvard Business Review, “When leaders give employees the freedom to choose where and when they work, it signals they trust them to do the job they were hired to do. The data shows that that trust is then paid back…at a very high rate, building a tight-knit culture of inclusivity and belonging.”

When you create team norms around same-time and staggered-time collaboration, you can help your employees stay productive and connected — to each other and the broader organization. And by giving them tools that support seamless, secure collaboration experiences from anywhere, the impact on productivity, employee wellbeing, and morale can be transformational.

How-to

Learn to Easily Administer Multi-cluster Kubernetes Environs: Part 4 KRM Series

5579

Of your peers have already read this article.

4:00 Minutes

The most insightful time you'll spend today!

Operating in multi-cluster environs involves challenges. If your teams are looking to administer multiple clusters in a single go while keeping them secure, or deploy and monitor apps running across multiple clusters, refer the part 4 of KRM series.

This is part 4 in a multi-part series about the Kubernetes Resource Model. See parts 12, and 3 to learn more. 

Kubernetes clusters can scale. Open-source Kubernetes supports up to 5,000 Nodes, and GKE supports up to 15,000 Nodes. But scaling out a single cluster can only get you so far: if your cluster’s control plane goes down, your entire platform goes down; if the Cloud region running your cluster has a service interruption, so does your app. 

Many organizations choose, instead, to operate multiple Kubernetes clusters. Besides availability, there are lots of reasons to consider multi-cluster, such as allocating a cluster to each development team, splitting workloads between cloud and on-prem, or providing burst capability for traffic spikes. 

But operating a multi-cluster platform comes with its own challenges. How to consistently administer many clusters at once? How to keep the clusters secure? How to deploy and monitor applications running across multiple clusters? How to seamlessly fail over from one region to another?

This post introduces a few tools that can help platform teams more easily administer a multi-cluster Kubernetes environment. 

The platform base layer, with Config Sync 

In the last post, we explored how thoughtful platform abstractions can help reduce toil for app developers- including for a multi-cluster environment, where automation such as CI/CD handles all interactions with the staging and production clusters. But equally important is the platform base layer, the Kubernetes resources and configuration that are shared across services. Your platform base layer might consist of Namespacesrole-based access control, and shared workloads like Prometheus

Platform abstractions depend on the existence of these base-layer resources. And so does the security and stability of your platform as a whole. It’s important that these resources not only get deployed, but also stay put. CI/CD is great for deploying resources, but what about making sure resources stay deployed? What if a Kubernetes Namespace gets deleted? Or a Prometheus StatefulSet is modified? 

Kubernetes’ job is to ensure that the cluster’s actual state matches the desired state. But sometimes, the “desired” state isn’t desired at all – it’s a developer who mistakenly modified a resource, or a bad actor that’s gained access into the system. For this reason, a platform base layer needs more than a one-and-done CI/CD pipeline. A tool called Config Sync can help with this. 

Config Sync is a Google Cloud product that can sync Kubernetes resources from a Git repository to one or more GKE or Anthos clusters. Unlike CI/CD tools like Cloud Build, Config Sync watches your clusters constantly, making sure that the intended resource state in the cluster always matches what’s in Git. Config Sync is designed primarily for base-layer resources like namespaces and RBAC. In this way, Config Sync is complementary to, not a replacement for, CI/CD. 

Configs
Source: Config Sync documentation

Config Sync runs in a Pod inside your Kubernetes cluster, watching your Git config repo for changes, and also watching the cluster itself for any divergence from your desired state in Git. If any configuration drift is detected from what’s stored in Git, Config Sync will update the API Server accordingly. 

You can point multiple Config Sync deployments at the same Git repo, allowing you to manage the base-layer platform resources for multiple clusters using the same source of truth. And by using Git as the landing zone for config, you can benefit from some of the GitOps principles we discussed in part 2, including the ability to audit and roll back configuration changes.

Let’s walk through an example of how to manage base-layer resources with Config Sync. 

The Cymbal Bank platform consists of four GKE clusters: admin, dev, staging, and prod. We can install Config Sync on all four clusters using the gcloud tool or the Google Cloud Console, pointing all four clusters at a single Git repository, called cymbalbank-policy. Note that this repo is separate from the application source and config repos, and is managed by the platform team. From the Console, we can see that all four clusters are synced to the same commit of the cymbalbank-policy repo. 

anthos config

Now, let’s say that the Cymbal Bank platform team wants to limit the amount of CPU and memory resources each application team can request for their service. Kubernetes ResourceQuotas help impose these limits, and prevent unexpected Pod evictions.

Policy repo

The platform team can define a set of ResourceQuotas for each application namespace. They can also scope the resources to only be applied to a subset of clusters – for instance, to the production cluster only. (If no cluster name selector is specified, Config Sync will deploy the resource to all clusters by default.)

  apiVersion: v1
kind: ResourceQuota
metadata:
  name: production-quota
  namespace: frontend
  annotations:
    configsync.gke.io/cluster-name-selector: cymbal-prod
spec:
  hard:
    cpu: 700m
    memory: 512Mi

From here, the platform team can commit the resources to the cymbalbank-policy repo, and Config Sync, always watching the policy repo, will deploy the resources to the production cluster:

  NAMESPACE                      NAME                  AGE     REQUEST                                                                                                                               LIMIT
balancereader                  production-quota      6m56s   cpu: 300m/700m, memory: 612Mi/512Mi

If a developer tries to delete one of the ResourceQuotas, Config Sync will block the request, helping to ensure that these base-layer resources stay put.  

  error: You must be logged in to the server (admission webhook "v1.admission-webhook.configsync.gke.io" denied the request: requester is not authorized to delete managed resources)

In this way, Config Sync can help platform teams ensure the stability of that platform base-layer, as well as ensure resource consistency across multiple clusters at once. This, in turn, can help organizations mitigate the complexity of adding new clusters to their environment.  

Enforce policies on Kubernetes resources

Config Sync is a powerful tool on its own, and can work with any Kubernetes resource that your cluster recognizes. This includes Custom Resource Definitions (CRDs) installed with add-ons like Anthos Service Mesh

But Config Sync, by default, doesn’t have an idea of “good or bad” Kubernetes resources. It will deploy whatever resources land in Git, even resources that might pose a security risk to your organization. Security is an essential feature of any developer platform, and when it comes to Kubernetes, it’s important to think about security from the initial software design stages, and set up your clusters with security best-practices in mind.   

But it’s just as important to think about security at deploy-time. Who and what can access your clusters? What kinds of Kubernetes resources – and fields within those resources- are allowed? These decisions will depend on lots of factors, including the kinds of data your application deals with, and any industry-specific regulations. 

One common security use case for KRM is the need to monitor incoming Kubernetes resources, whether they’re coming in through kubectl, CI/CD, or Config Sync. But if you have multiple clusters, your Kubernetes environment has multiple API Servers, and therefore multiple entry points.  

A Google tool called Policy Controller can help automate resource monitoring across multiple clusters. Policy Controller is a Kubernetes admission controller that can accept or reject incoming resources based on custom policies you define. Policy Controller is based on the OpenPolicyAgent Gatekeeper project, and it allows you to define policies, or “Constraints,” as KRM. This means you can deploy them using Config Sync, via Git. Once deployed, Policy Controller uses your Constraints as a set of rules to evaluate all incoming KRM, rejecting resources that fall out of compliance.  

Let’s walk through an example. Say that the Cymbal Bank security team wants to ensure that no code in development is accessible to the public. Kubernetes Services of type LoadBalancer expose public IP addresses by default, so the platform team wants to define a PolicyController constraint that blocks Services of that type on the development GKE cluster.

example

To do this, the platform team can define a Policy Controller Constraint as KRM. This Constraint uses a Constraint Template, provided through the pre-installed Constraint Template library. The ConstraintTemplate defines the logic of the policy itself, and the Constraint makes the template concrete, populating any variables needed to execute the policy logic. Here, we’re also adding a Config Sync cluster name annotation, to scope this resource to apply only to the development cluster.

  apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sNoExternalServices
metadata:
  name: dev-no-ext-services
  annotations:
    configsync.gke.io/cluster-name-selector: cymbal-dev
spec:
  internalCIDRs: []

The platform team can then commit the resource to the cymbalbank-policy repo, and Config Sync will deploy the resource to the development cluster. 

From here, if an app developer tries to create an externally-accessible Kubernetes Service, Policy Controller will block the resource from being created.

  for: "constraint-ext-services/contacts-svc-lb.yaml": admission webhook "validation.gatekeeper.sh" denied the request: [denied by dev-no-ext-services] Creating services of type `LoadBalancer` without Internal annotation is not allowed

The platform team can define as many of these Constraints as they want, each defining a separate policy.

Writing custom policies 

The Policy Controller Constraint Template library provides a lot of functionality, from blocking privileged containers, to requiring certain resource labels, to preventing app teams from deploying into certain namespaces. But if you want to enforce custom logic on your organization’s KRM, you can do so by writing a custom Constraint Template. 

Constraint Templates are written in a query language called Rego. Rego was designed for policy rule evaluation, and it can introspect Kubernetes resource fields to make a conclusion as to whether the resource is allowed or not. 

For instance, let’s say that the platform team wants to limit the number of containers allowed inside a single application Pod. Too many containers per Pod can cause outage risks— when one container crashes, the entire Pod crashes.

developer

To enforce this policy, the platform team can define a Constraint Template, using the Rego language, that looks inside a resource to ensure that the number of containers per Pod is within the allowed limit: 

  apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
  name: k8slimitcontainersperpod
spec:
  crd:
    spec:
      names:
        kind: K8sLimitContainersPerPod
      validation:
        openAPIV3Schema:
          properties:
            allowedNumContainers:
              type: integer
  targets:
    - target: admission.k8s.gatekeeper.sh
      rego: |
        package k8slimitcontainersperpod
        numTemplateContainers := count(input.review.object.spec.template.spec.containers)
        numRunningContainers := count(input.review.object.spec.containers)
        containerLimit := input.parameters.allowedNumContainers
        template_containers_over_limit = true {
          numTemplateContainers > containerLimit
        }
        running_containers_over_limit = true {
          numRunningContainers > containerLimit
        }
        violation[{"msg": msg}] {
          template_containers_over_limit
          msg := sprintf("Number of containers in template (%v) exceeds the allowed limit (%v)", [numTemplateContainers, containerLimit])
        }
        violation[{"msg": msg}] {
          running_containers_over_limit
          msg := sprintf("Number of running containers (%v) exceeds the allowed limit (%v)", [numRunningContainers, containerLimit])
        }
Then, the platform team can define a concrete Constraint, using this Constraint Template, to set the number of allowed containers per Pod to 3: 
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sLimitContainersPerPod
metadata:
  name: limit-three-containers
spec:
  parameters:
    allowedNumContainers: 3

Finally, the platform team can push these resources to the cymbalbank-policy repo, and Config Sync will deploy the policy to all four clusters. If a developer tries to define a Kubernetes Deployment containing more containers per pod than what’s allowed, the resource will be blocked at deploy time: 

  Error from server ([limit-three-containers] Number of containers in template (4) exceeds the allowed limit (3)): error when creating "constraint-limit-containers/test-workload.yaml": admission webhook "validation.gatekeeper.sh" denied the request: [limit-three-containers] Number of containers in template (4) exceeds the allowed limit (3)

Custom Constraint Templates can give platform teams lots of flexibility in the types of policies they define and enforce in a Kubernetes environment. 

Integrating policy checks into CI/CD 

As we explored earlier, Config Sync and CI/CD are complementary tools. Config Sync works great for base-layer platform resources and policies, whereas CI/CD works well for application tests and deployment. 

But one pitfall of having two separate KRM deployment mechanisms is that app developers may not know that their resources are out of policy until they try to deploy them into production. This is especially true if some policies are scoped only to production, as we saw with the ResourceQuota example. Ideally, the platform team has a way to empower developers and code reviewers to know ahead of time whether new or modified resources are still in compliance. We can enable this use case by integrating policy checks into the existing Cymbal Bank CI/CD.

operator

Policy Controller operates, by default, as a Kubernetes Admission Controller running inside the cluster. But Policy Controller also provides a “standalone” mode, running inside a container, that can be used outside of a cluster, such as from inside a Cloud Build pipeline. 

In the example below, Cloud Build executes Policy Controller checks by getting the cymbalbank-app-config manifests, cloning the cymbalbank-policy resources, and using the “policy-controller-validate” container image to evaluate the app manifests against the policies. 

  steps:
- id: 'Render prod manifests'
  name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
  entrypoint: '/bin/sh'
  args: ['-c', 'mkdir hydrated-manifests && kubectl kustomize overlays/prod > hydrated-manifests/prod.yaml']
- id: 'Clone cymbalbank-policy repo'
  name: 'gcr.io/kpt-dev/kpt'
  entrypoint: '/bin/sh'
  args: ['-c', 'kpt pkg get https://github.com/$$GITHUB_USERNAME/cymbalbank-policy.git@main constraints
                  && kpt fn source constraints/ hydrated-manifests/ > hydrated-manifests/kpt-manifests.yaml']
  secretEnv: ['GITHUB_USERNAME']
- id: 'Validate prod manifests against policies'
  name: 'gcr.io/config-management-release/policy-controller-validate'
  args: ['--input', 'hydrated-manifests/kpt-manifests.yaml']
availableSecrets:
  secretManager:
  - versionName: projects/${PROJECT_ID}/secrets/github-username/versions/1 
    env: 'GITHUB_USERNAME'
timeout: '1200s' #timeout - 20 minutes

From here, an app developer or operator can know if their resources violate org-wide policies, by looking at the Cloud Build output for their Pull Request:  

  Status: Downloaded newer image for gcr.io/config-management-release/policy-controller-validate:latest
Error: Found 1 violations:
[1] Number of containers in template (4) exceeds the allowed limit (3)

By integrating policy checks into CI/CD, app development teams can understand whether their resources are in compliance, and platform teams add an additional layer of policy checks to the platform. 

Overall, Config Sync and Policy Controller can provide a powerful toolchain for standardizing base-layer config across a multi-cluster environment. Check out the Part 4 demo to try out each of these examples. 

And stay tuned for Part 5, where we’ll learn how to use KRM to manage cloud-hosted resources. 

8010

Of your peers have already watched this video.

2:51 Minutes

The most insightful time you'll spend today!

Case Study

Video: How Did GANT Get Products to Market in Just Three Months?

It was in 1949 that a Ukranian immigrant Berl Gantmacher launched–what was going to be an iconic shirt-making company–GANT in Connecticut, America.

Since then, the company has reinvented shirts every single day. Headquartered in Stockholm, Sweden, GANT operates in 70 countries.

In 2017, GANT wanted to launch a flagship store in London. It takes most companies a year to open a store, considering the amount of cross country collaboration and planning that’s needed for a store to take off.

In order to open the store in London, teams from three countries—Sweden, Portugal and the UK—needed to work together.

“Right away through the process, we moved forward as one team with one goal. With G Suite we have access to all information in one place and we collaborate on Hangout. A flagship store could be well over a year. Regent Street (London) was three months. A very, very different timeline. It’s been an amazing success for the company,” says Matthew Wood, Creative Director, GANT.

G Suite made it possible for the various teams from different countries to collaborate on a single platform and launch a flagship store in just three months—instead of a year.

6434

Of your peers have already watched this video.

1:40 Minutes

The most insightful time you'll spend today!

Case Study

How Haydenshapes Expanded its Business to 70 Countries With Real-Time Collaboration

Hayden Cox was only 15 years old when he broke his surfboard. And he was only 15 years old when he decided to make one.

That’s how Haydenshapes, Cox’s surfboard manufacturing company, took form. That was five years ago. Today, the company has manufacturing units in Los Angeles, Sydney, and Thailand and is selling surfboards in 70 countries around the world.

One of the major enablers that ensured Haydenshapes expanded its reach across continents—in just five years—is collaboration. For any company wanting to spread its wings and expand quickly to reach more customers, real-time collaboration is imperative.

That’s why Haydenshapes turned to Google Cloud’s G Suite to ensure its teams in Los Angeles, Sydney, and Thailand are working together towards the same goal in real-time. Its marketing, sales, and other business teams collaborated on Google Docs, Slides and Sheets to help the business grow across the world.

This, in turn, ensured that Cox could dedicate a significant amount of time in coming up with the next big idea and getting more products out to market quickly and cost-effectively.

 

Blog

Two Ways to Deploy SAP HANA System on Google Cloud

7900

Of your peers have already read this article.

4:00 Minutes

The most insightful time you'll spend today!

You can expand the benefits of SAP by migrating SAP S/4 HANA deployments to Google Cloud. But, did you know there are two different ways that includes a set of pros and cons for rehosting SAP HANA database on Google Cloud? Read more!

Many of the world’s leading companies run on SAP—and deploying it on Google Cloud extends the benefits of SAP even further. Migrating your current SAP S/4HANA deployment to Google Cloud—whether it resides on your company’s on-premises servers or another cloud service—provides your organization with a flexible virtualized architecture that lets you scale your environment to match your workloads, so you pay only for the compute and storage capacity you need at any given moment. Google Cloud includes built-in features, such as Compute Engine live migration and automatic restart, that minimize downtime for infrastructure maintenance. And it allows you to integrate your SAP data with multiple data sources and process it using Google Cloud technology such as BigQuery to drive data analytics.

SAP server-side architecture consists of two layers: the SAP HANA database, and the Netweaver application layer. In this blog post, we’ll look at the options and steps for moving the database layer to Google Cloud as a lift and shift or rehost, a straightforward approach that entails moving your current SAP environment unchanged onto Google Cloud.

Deploying an SAP HANA system on Google Cloud

Google Cloud offers SAP-certified virtual machines (VMs) optimized for SAP products, including SAP HANA and SAP HANA Enterprise Cloud, as well as dedicated servers for SAP HANA for environments greater than 12TB. (For a complete list of VM and hardware options, visit the Certified and Supported SAP HANA Hardware Directory.)

Before proceeding with a rehost migration to Google Cloud, your current (source) environment and Google Cloud (target) environments should meet these specifications:

Prerequisites:  

  • The configuration of the Google Cloud environment (i.e., VM  resources, SSD storage capacity) should be identical to that of the source environment. If the underlying hardware is different, however, you must use Option 2 for your migration, detailed below.
  • Both environments should be running the same operating system (SUSE or RHEL Linux).
  • The HANA version, instance number, and system ID (SID) should be identical.
  • Schema names must remain the same.
  • Establishing the network connection between the on-premises environment and Google Cloud will be required in this phase to support rehost of the SAP application.you can use Cloud VPN or Dedicated Interconnect. Learn more about Dedicated Interconnect and Cloud VPN.

Note: Depending on your internet connection and bandwidth requirements, we recommend using a Dedicated Interconnect over Cloud VPN for production environments. 

We offer a number of automated processes to accelerate your cloud journey. To deploy the SAP HANA system on Google Cloud, you can use the Google Cloud Deployment manager or Terraform and Ansible scripts available on GitHub with configuration file templates to define your installation. For more details, see the Google Cloud SAP HANA Planning Guide.

Note: To deploy SAP HANA on Google Cloud machine types that are certified by SAP for production, please review the Certification for SAP HANA on Google Cloud page. 

Moving an SAP HANA Database to Google Cloud

There are two different options you can use to rehost your SAP HANA database to Google Cloud, and each has pros and cons that you should consider when deciding on your approach.

Option 1: Asynchronous replication uses SAP’s built-in replication tool to provide continuous data replication from the source system (also known as the primary system) to the destination or secondary system—in this case residing on Google Cloud. It’s best for mission-critical applications for which minimum downtime is a high priority, and for large databases. In addition, the high level of automation means that the process requires less manual intervention. Here’s where you can learn more on HANA Asynchronous Replication.

Option 2: Backup and restore relies on SAP’s backup utility to create an image of the database that is then transferred to Google Cloud, where it is restored in the new environment. Downtime for this method varies by database size, so large databases may require more downtime via this method vs. asynchronous replication. It also involves more manual tasks. However, it requires fewer resources to perform, making it an attractive option for less urgent use cases. Here’s where you can learn more on SAP HANA database Backup and restore.

Migration options Pros and cons.jpg
Click to enlarge

How to migrate the SAP HANA database to Google Cloud using Asynchronous Replication

1 Asynchronous Replication.jpg
Click to enlarge
  1. Create and configure Dedicated Interconnect or Cloud VPN between the current environment and Google Cloud.
  2. Set up SAP HANA asynchronous replication. You can configure system replication using SAP HANA Cockpit, SAP HANA Studio, or hdbnsutil. See Setting Up SAP HANA System Replication in the SAP HANA Administration Guide.
  3. Be sure to use the same instance number and HANA SID in the template as the primary instance.
  4. Configure the Google Cloud instance as the secondary node for using HANA Asynchronous replication.
  5. Perform data validation once full data replication is completed to the SAP HANA database in Google Cloud. To learn more: HANA System Replication overview.  
  6. Perform an SAP HANA takeover on your standby database. This switches your active system from the current primary system onto the secondary system on Google Cloud. Once the takeover command runs, the system on Google Cloud becomes the new primary system.To learn more: HANA Takeover

How to migrate the SAP HANA database to Google Cloud using Backup and Restore

2 Backup and Restore.jpg
Click to enlarge
  1. Create a full backup of your SAP HANA database in your current environment.
  2. Create a new storage bucket in your Google Cloud environment. Visit Creating Storage Buckets in the Google Cloud Storage documentation. 
  3. Download and install gsutil onto the source environment and run it to upload the HANA backup to the Google Cloud storage bucket. To install gsutil utility on any computer or server, visit Install gsutil in the Google Cloud Storage documentation.
    Note: You can run parallel multi thread/multi processing in gsutil to copy large files more quickly.
  4. Recover the HANA database on Google Cloud using SAP’s RECOVER DATABASE statement. See RECOVER DATABASE Statement (Backup and Recovery) in the SAP HANA SQL Reference Guide for SAP HANA Platform.

Note: BackInt agent is an integrated SAP interface tool used for HANA database on Google Cloud.Backint agent for SAP HANA can be used to store and retrieve backups directly from Google Cloud Storage. It is supported and certified by SAP on Google Cloud. To learn more:  SAP HANA Backint Agent on Google Cloud. 

In summary, we recommend using Asynchronous Replication (Option 1) for mission-critical applications that require the lowest downtime window. For all other applications, we recommend Backup and Restore (Option 2), as this approach requires fewer resources. It’s also a great way to implement the backup and restore functionality on Google Cloud.

A rehost migration is the most straightforward path to getting your SAP on HANA system up and running on Google Cloud. And the sooner you migrate, the sooner you can take advantage of the many benefits Google Cloud brings to your SAP solution. For more information on the different migration options please review: SAP on Google Cloud: Migration strategies

Learn more about deploying SAP on Google Cloud. Technical resources can be found here.

More Relevant Stories for Your Company

Case Study

How This 70-Year Old Japanese Shoe-maker Uses Collaboration to Beat Competition

For over six decades now, ASICS, a Japanese footwear, and sports equipment provider—for some of the biggest names in the sporting world—has been in the business of making sport a part of people’s lives. From manufacturing basketball shoes in 1949, ASICS soon began to design sports shoes for Olympians. Headquartered

Case Study

How Randstad Creates Assessment Reports in Five Minutes with G Suite

For over five decades, Randstad has matched businesses worldwide with millions of temporary and permanent workers, creating long-lasting, successful working relationships. Today, the company operates a vast multinational recruitment network, with 35,000 employees applying HR expertise in markets from Norway to Malaysia, and more than 37 countries in-between. To give staff a

How-to

Are You Suffering from Spreadsheet Paralysis?

Today, within the four walls of your office there’s just one concern everyone has: What do the numbers say? The answer to that question almost always rests with you. If they get it wrong, everybody gets it wrong. But does it have to be so hard to get it right?

E-book

Forrester Report: Are You Listening to Your New-Age Cloud Workers?

Today’s modern workers are redefining organizations as we know it. They are no longer tied to a work desk or bound by geographies. And that’s how they ensure that your business is always-on, all the time, everywhere. This, in turn, points to the fact that today’s organizations need to ensure

SHOW MORE STORIES