Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Accelerate Go development with Bazel

micnncim
October 28, 2019

Accelerate Go development with Bazel

micnncim

October 28, 2019
Tweet

More Decks by micnncim

Other Decks in Programming

Transcript

  1. Accelerate Go development
    with Bazel
    Go Conference 2019 Autumn
    @micnncim

    View Slide

  2. @micnncim
    University Student / B4
    Merpay ← AbemaTV ← Gunosy

    View Slide

  3. View Slide

  4. View Slide

  5. Ad
    Software Design 2020 1

    View Slide


  6. Attention
    Bazel Go

    View Slide

  7. Bazel need for Go

    View Slide

  8. Use cases of Go
    Microservices
    Protobuf (Protocol Bu ers)
    GoMock Thrift
    Kubernetes, Istio,

    View Slide

  9. Hard points
    Monorepo
    Protobuf
    go build

    View Slide

  10. Monorepo
    ッ 1,000
    ッ 1 2 2,000
    ッ Make le 1,000 go build
    ッ local
    CI

    View Slide

  11. View Slide

  12. Protobuf
    VCS
    Docker

    View Slide

  13. View Slide

  14. Bazel

    View Slide

  15. Bazel 1.0.0 Release
    2019/10/10

    View Slide

  16. Overview
    ッ Google OSS multi-language
    ッ Starlark Python

    ッ Buck (Facebook), Pants (Twitter)

    View Slide

  17. View Slide

  18. Fast


    ッ Remote Caching

    View Slide

  19. Reproducible
    ッ Sandbox /

    ッ Go protoc kubectl

    ッ local, CI, ,

    View Slide

  20. View Slide

  21. View Slide

  22. View Slide

  23. How does Bazel work?
    1. Loading phase: BUILD
    ッ Bazel WORKSPACE
    BUILD
    ッ Starlark

    View Slide

  24. How does Bazel work?
    2. Analysis phase: DAG (directed acyclic
    graph) action graph
    action : run gcc on hello.c and get hello.o
    aciton graph Bazel
    track

    View Slide

  25. How does Bazel work?
    3. Execution phase: build action

    View Slide

  26. Use cases
    Google, Uber, Dropbox, Pinterest, Stripe,
    Microservices with Monorepo
    Kubernetes, Envoy, Protobuf, Tensor ow, Angular,
    Google OSS Bazel

    View Slide

  27. Bazel

    Go

    View Slide

  28. Monorepo


    ッ bazel build //

    View Slide

  29. Rebuild by go build
    go version: go1.13 darwin/amd64

    View Slide

  30. Rebuild by bazel build
    bazel version: 0.28.1

    View Slide

  31. Protobuf
    ッ protoc
    ッ Bazel Sandbox
    VCS
    ッ GoMock

    View Slide


  32. View Slide

  33. Practice

    View Slide

  34. Practice
    ッ Go protoc
    ッ Gazelle (BUILD )
    ッ .bazelrc ( )
    ッ Bazelisk (Bazel )
    ッ nogo (Go Bazel )

    View Slide

  35. Gazelle
    bazelbuild/bazel-gazelle
    Go BUILD
    Go

    View Slide

  36. .bazelrc
    Bazel 100
    .bazelrc

    View Slide

  37. View Slide

  38. Bazelisk
    bazelbuild/bazelisk
    .bazelversion
    Bazel
    (OS, Arch) Bazel

    View Slide

  39. View Slide

  40. nogo
    bazelbuild/rules_go
    Go Analyzer

    View Slide

  41. View Slide

  42. Bazel in OSS

    View Slide

  43. in OSS
    ッ Kubernetes kazel
    ッ Istio Bazel go build

    View Slide

  44. View Slide

  45. View Slide

  46. THANK YOU!
    @micnncim

    View Slide