Google searches annually • 65 billion downloads of apps from its Google Play store. • More than 1 billion people are using the Chrome browser on mobile devices every month. • 200 million people per month are using its online photo service, Google Photos.
Google engineer Working on problems with SPEED AND SCALE is a challenge. Engineers keep raising the bar on the tools and infrastructure. Google Culture: • Collaboration and co-development • Sharing between products and teams (tools, libraries, services) • Engineers have autonomy. • Agile/Scrum, daily stand-up meetings
read requests Billions * Number of builds 800k Build output 2+ petabytes Test cases run 75+ million *(800K QPS daily peak) Source: Google Internal Data
versioning - One source of truth • Extensive code sharing and reuse • Collaboration across teams • Simplified dependency management • Large scale refactoring • Flexible team boundaries & code ownership • Code visibility
its own version control system called: Piper Sync workspace Write code Code Review Commit Read/Write Access per folder Code Quality & Syntax Check (by humans and by tooling) Create personal copy Auto Rollback if needed MANDATORY A single code tree, with fast access to the code through tooling. All types of code languages. Everyone, works in Trunk. - Branches are for releases.
build systems? Well code has a lot of dependencies and you don’t want to compile and link these all manually. The steps of a general build system: 1. Loading 2. Analysis 3. Execution by build system
Google has its own continuous build & test system. Remember, at Google we develop everything at HEAD in the repo. Endless CPU, Cross User Caching, because of Cloud Computing.
system, if you work with teams. Google’s build system, is now available open source. Google has been working on this for more than 10 years. Now you can benefit from this. https://bazel.build/ • Scalable: Bazel helps you scale your organization, codebase and Continuous Integration system. It handles codebases of any size, in multiple repositories or a huge monorepo. • Platform independent: Works on Cloud or On Premise. • Any language: Build and test Java, C++, Android, iOS, Go and a wide variety of other language platforms (via extensions).
write a BUILD file. The rule (in this case Java), tells Bazel to build a .jar file and a wrapper shell script (both named after the target). 2. To build you will run from the command-line bazel build or bazel test 3. It will build all source files: See: https://github.com/bazelbuild/examples/ 1.Write BUILD file java_binary( name = "ProjectRunner", srcs = glob(["src/main/java/com/example/*.java"]), ) 2.Execute on CLI: $ bazel build :ProjectRunner INFO: Found 1 target... Target //:ProjectRunner up-to-date: bazel-bin/ProjectRunner.jar bazel-bin/ProjectRunner INFO: Elapsed time: 1.021s, Critical Path: 0.83s
• Docker is a popular software container platform. • Containers are a way to package software in a format that can run isolated on a shared operating system.
Ops Team Number of running jobs • The key to efficiently manage systems • Enabled Google to grow our fleet of applications 10x faster than we grow our Ops team
Borg 2004 2016 • It’s software that manages all production machines at Google and runs jobs (binaries) that engineers give it on them. • Borg ran pretty much everything inside the company, including Google Search, Gmail, Google Maps, Google Docs... • These binaries are run in a container environment. • When tasks die, they are automatically started up again, and they may run on a different machine.
whole data center as a single enormous computing resource. • Multiple container engines (Docker, rkt, Windows) • Cloud and bare-metal environments • Container Engine = Managed Kubernetes in Google Cloud Kubernetes (Container Orchestration) https://kubernetes.io
unique contributors Top 0.001% of all GitHub Projects 4000+ External Projects Based on Kubernetes Companies Contributing Supported by a broad ecosystem of partners, offering you cloud provider flexibility:
to Google Container Engine clusters, scale them to handle increased traffic, and continuously deploy to provide application updates. Kubernetes Kickstart Training 20 September Eindhoven, 9:00 - 17:00 https://cloudplatformonline.com/EMEA-Kubernetes-Bootcamp-Eindhoven.html
monitoring services • Secure and monitor traffic for microservices and legacy services without requiring any changes to application code • An open platform with key contributions from Google, IBM, Lyft and others • Allows developers to authenticate and secure the communications between different applications using a TLS connection • Multi-environment and multi-platform, but Kubernetes first Istio (A Service Mesh) https://istio.io
container images, artifacts, DEB package into production cloud environments. • Project Asgard, started inside at Netflix, Google and others joined in • Deploy applications quickly, reliably and safely • Install on-prem, VM or Kubernetes • Includes a rich UI dashboard • Integrates seamlessly with your existing continuous integration (CI) workflows. Trigger pipelines from git, Jenkins, Travis CI, Docker registries, on a cron-like schedule, or even other pipelines. https://www.spinnaker.io Spinnaker (Continuous Delivery)
specialized job function that focuses on the reliability and maintainability of large systems. • SRE is also a mindset, and a set of engineering approaches to running better production systems • Google has SRE teams of site reliability engineers responsible for a service globally available.
explain how their engagement with the entire software lifecycle has enabled Google to build, deploy, monitor, and maintain some of the largest software systems in the world. Read the book online for free: https://landing.google.com/sre/book.html
the company’s open source projects under a single umbrella. The code of these projects will live on Github and Google’s self-hosted Git service, but this site functions as a central directory. It also provide a “look under the hood” of how Google does open source. https://opensource.google.com
requires a changes in the way of working. Think Big! Agile. Prototyping. But also Tooling. Building Software on Google Scale, use open source: • Open Source @ Google - https://opensource.google.com • Google Whitepapers - https://research.google.com • Bazel - https://bazel.build - Google’s Build & Test System • Bazel - Code Example: https://github.com/bazelbuild/examples • Kubernetes - https://kubernetes.io • Istio - https://istio.io • Spinnaker - https://www.spinnaker.io • SRE free O’Reilly ebook - https://landing.google.com/sre/book.html Building Software on Google Scale, contribute to open source! [email protected]