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 инструмент:

Deployment
Rapid в простых случаях, при прохождении тестов (push on green) может развернуть новый релиз в production окружение.
В других случаях используется Sisyphus - фреймворк на python который принимает решения об развертывании.
Key Insights
Symlinks
- How Embracing Continuous Release Reduced Change Complexity, USENIX Release Engineering Summit West 2014, [Dic14] - Maintaining Consistency in a Massively Parallel Environment, USENIX Configura‐ tion Management Summit 2013, [McN13]
 - The 10 Commandments of Release Engineering, 2nd International Workshop on Release Engineering 2014, [McN14b]
 - Distributing Software in a Massively Parallel Environment, LISA 2014, [McN14c]
 
note
Empty