Skip to main content

Chapter 8. Release Engineering

  • Machine: A piece of hardware (or perhaps a VM)
  • Server: A piece of software that implements a service

Градация: machine in rack-unit,rack,row,cluster(logical),dc,campus(eg. availability zone)

Сеть: Jupiter(фабрика коммутаторов с bandwidth ~1.3 Пб/с).

Build

Для сборки используется использует Blaze - это алиас для Bazel

Пример конфигурационного файла `BUILD`
package(default_visibility = ["//visibility:public"])

cc_library(
name = "hello-lib",
srcs = ["hello-lib.cc"],
hdrs = ["hello-lib.h"],
)

cc_binary(
name = "hello-world",
srcs = ["hello-world.cc"],
deps = [":hello-lib"],
)

cc_test(
name = "hello-success_test",
srcs = ["hello-world.cc"],
deps = [":hello-lib"],
)

cc_test(
name = "hello-fail_test",
srcs = ["hello-fail.cc"],
deps = [":hello-lib"],
)

filegroup(
name = "srcs",
srcs = glob(["**"]),
)

Packages - MPM

Используется Midas (MPM) - внутренний менеджер пакетов google.

Артефакты тегируются версией релиза и дополнительно окружением назначения (dev, canary, production)

Rapid

Местный CI/CD инструмент:

rapid

Deployment

Rapid в простых случаях, при прохождении тестов (push on green) может развернуть новый релиз в production окружение.

В других случаях используется Sisyphus - фреймворк на python который принимает решения об развертывании.

Key Insights

Symlinks
note

Empty