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

MicroServices and MonoRepo

MicroServices and MonoRepo

Golangのマイクロサービスをmono repositoryでBazelを利用して管理する方法についてお話しました。

Hiroaki Egashira

August 06, 2019
Tweet

More Decks by Hiroaki Egashira

Other Decks in Programming

Transcript

  1. ُؕؠٞئ٭لتכ .POP3FQP $"54 $ZCFS"HFOU *OD )JSPBLJ&HBTIJSB娡꯽㱳◽

  2. 娡꯽㱳◽)JSPBLJ&HBTIJSB 䇗僖劔䌋⚡炘ئؕف٭ؙ٭ةؘ٤ع⪌炘 $"54 8JO5JDLFUفشؠؙ٤غطشؠٛ٭غ IJSP @IJSP

  3. 8JO5JDLFU ˝ ؛٤ٚؕ٤琂魸䤷烨ئؕع ˝ 侇ꝴ䤷烨⯈؅頇⪌⺎耆 ˝ ⪒㎁⚡㕙סٚؕه何⥼؅鿥⟓ ˝ "CFNB57ס琂魸زٔ٤ؾٜכ鵽Ⳃ

  4. ُؕؠٞئ٭لت َٝةعٛלֹ׊יױ׌־

  5. .VMUJQMF3FQPTJUPSJFT WT .POP3FQPTJUPSZ

  6. .POP3FQPTJUPSZ ˝ (PPHMF 'BDFCPPL 5XJUUFS׵⺱喋 ˝ ❣㰆畘杼؅ب٤وٜמך׀׾ ˝ ┉鞉䓪סֵ׾㚺催 ˝

    ؤ٭غס⪦僗כ⫋⮵榫ֿ㳊佄 ˝ 㛻׀םٛنؒؠذٛ٤ءֿ㳊佄 חסَٝةعٛךخ٭تؤ٭غ؅畘杼
  7. .POP3FQPTJUPSZ ˝ .VMUJQMF3FQPTJUPSJFTס㕙⺬
 邾丗סَٝةعٛמ㚺催؅ⱶֻיյ㚺催؅⹦׽鱮׳סֿꪫ⠠ ❣㰆꞊➟؅ب٤وٜמך׀׾

  8. .POP3FQPTJUPSZ ˝ (PPHMF 'BDFCPPL 5XJUUFS׵⺱喋 ˝ ❣㰆畘杼؅ب٤وٜמך׀׾ ˝ ┉鞉䓪סֵ׾㚺催 ˝

    ؤ٭غס⪦僗כ⫋⮵榫ֿ㳊佄 ˝ 㛻׀םٛنؒؠذٛ٤ءֿ㳊佄 חסَٝةعٛךخ٭تؤ٭غ؅畘杼
  9. .POP3FQPTJUPSZ ˝ 邾丗סُؕؠٞئ٭لتמ㚺催؅ⱶֻ׾כ׀׵ؓعِشؠםؤِشعך⺎耆 ˝ ف٭ة٘٤畘杼׵㳊佄 ┉鞉䓪סֵ׾㚺催

  10. .POP3FQPTJUPSZ ˝ (PPHMF 'BDFCPPL 5XJUUFS׵⺱喋 ˝ ❣㰆畘杼؅ب٤وٜמך׀׾ ˝ ┉鞉䓪סֵ׾㚺催 ˝

    ؤ٭غס⪦僗כ⫋⮵榫ֿ㳊佄 ˝ 㛻׀םٛنؒؠذٛ٤ءֿ㳊佄 חסَٝةعٛךخ٭تؤ٭غ؅畘杼
  11. لٜغכطتع؅Ⲗ曍荁ׂ׊גַ

  12. #B[FM ˝ (P 1SPUPDPM#VFS $ +"7" "OESPJE J04 םל喋չם銧鏤מ㵚䑴 ˝

    䑒釐ם甙䢥דׄ؅لٜغ٬طتع׌׾סך鵭ַ ˝ تآ٭ٚهٜ ˝ 䦡䍖⺎耆 لٜغ٬طتعبتطّ
  13. (PMBOHXJUI#B[FM ˝ #B[FMסؕ٤تع٭ٜ CSFXJOTUBMMCB[FM
 ˝ 803,41"$&نٜؒؕס⛼䡗 㛙鼧ס❣㰆꞊➟םל؅鋗鳭׌׾
 ˝ #6*-%نٜؒؕ؅⛼䡗 لٜغ亠嫎؅炐׊ג׵ס

    (B[FMMF؅⮵榫׊י舅Ⳃ榟䡗ך׀׾
  14. load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "io_bazel_rules_go", urls = [ "https://storage.googleapis.com/bazel-mirror/github.com/bazelbuild/rules_go/releases/download/0.19.1/rules_go-0.19.1.tar.gz",

    "https://github.com/bazelbuild/rules_go/releases/download/0.19.1/rules_go-0.19.1.tar.gz", ], sha256 = "8df59f11fb697743cbb3f26cfb8750395f30471e9eabde0d174c3aebc7a1cd39", ) load("@io_bazel_rules_go//go:deps.bzl", "go_rules_dependencies", "go_register_toolchains") go_rules_dependencies() go_register_toolchains() http_archive( name = "bazel_gazelle", urls = [ "https://storage.googleapis.com/bazel-mirror/github.com/bazelbuild/bazel-gazelle/releases/download/0.18.1/bazel-gazelle-0.18.1.tar.gz", "https://github.com/bazelbuild/bazel-gazelle/releases/download/0.18.1/bazel-gazelle-0.18.1.tar.gz", ], sha256 = "be9296bfd64882e3c08e3283c58fcb461fa6dd3c171764fcc4cf322f60615a9b", ) load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies") gazelle_dependencies() 803,41"$& [email protected] (B[FMMF
  15. load("@bazel_gazelle//:def.bzl", "gazelle") # gazelle:prefix github.com/hiro511/golang-bazel gazelle(name = “gazelle”) #6*-%CB[FM

  16. $ tree . !"" BUILD.bazel !"" WORKSPACE #"" cmd #""

    main.go $ bazel run //:gazelle (B[FMMF
  17. $ tree . !"" BUILD.bazel !"" WORKSPACE #"" cmd !""

    BUILD.bazel #"" main.go $ cat cmd/BUILD.bazel load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["main.go"], importpath = "github.com/hiro511/golang-bazel/cmd", visibility = ["//visibility:public"], ) (B[FMMF ̚舅Ⳃ榟䡗׈׿׾
  18. $ cat cmd/BUILD.bazel load("@io_bazel_rules_go//go:def.bzl", “go_library”, “go_binary”) go_library( name = "go_default_library",

    srcs = ["main.go"], importpath = "github.com/hiro511/golang-bazel/cmd", visibility = ["//visibility:public"], ) go_binary( name = “hello", embed = [":go_default_library"], visibility = ["//visibility:public"], ) $ bazel run //cmd:hello INFO: Analyzed target //cmd:hello (1 packages loaded, 3 targets configured). INFO: Found 1 target... Target //cmd:hello up-to-date: bazel-bin/cmd/darwin_amd64_stripped/hello INFO: Elapsed time: 0.533s, Critical Path: 0.37s INFO: 2 processes: 2 darwin-sandbox. INFO: Build completed successfully, 5 total actions INFO: Build completed successfully, 5 total actions hello world 3VO فؕػٜٛ٭ٜ
  19. 㛙鼧❣㰆꞊➟ ˝ HPNPE (PQLHMPDLنٜؒؕ־׼❣㰆قشآ٭ة؅⹦׽鱮ײ
 803,41"$&نٜؒؕמ傴׀鱮׳
 
 HB[FMMFVQEBUFSFQPT[email protected]MFHPNPE
 HB[FMMFVQEBUFSFQPT[email protected]MF(PQLHMPDL (P.PEVMFTכEFQמ㵚䑴

  20. 1SPUPDPM#VFS ˝ HPMBOHQSPUPCVGכHPHPQSPUPמ㵚䑴 ˝ #6*-%CB[FMמٜ٭ٜ؅鴑鋗׌׾דׄ (P銧鏤סؤ٭غ榟䡗⺎耆

  21. ٛٓ٭ع؞ٔشبٖ ˝ ꝧ氦縖׷$*םלךلٜغؓؗعوشع؅⪦僗ך׀׾ ˝ لٜغ؅냕鵭⴫ך׀׾
 ˝ ؞ٔشبٖفشؠؙ٤غ OHJOY 8FC%"7NPEVMF 


    #B[FM3FNPUF$BDIF
 (PPHMF$MPVE4UPSBHF لٜغؓؗعوشع؅ٛٓ٭عמ؞ٔشبٖ⺎耆
  22. ױכ״ ˝ .POP3FQPTJUPSZ ❣㰆畘杼ֿب٤وٜյ┉鞉䓪ֵֿ׾յؤ٭غס⪦僗٬⫋⮵榫ֿ㳊佄 ˝ #B[FM لٜغ٬طتعص٭ٜյ❣㰆꞊➟؅杼鉮׊י㲔产׌׾סך鵭ַ
 (B[FMMF؅⮵榫׊י(PMBOHסخ٭تؤ٭غסلٜغٜ٭ٜ؅舅Ⳃ榟䡗⺎耆 (P.PEVMFT׷EFQס錃㲊؅אסױױ✳ֻ׾ 1SPUPDPM#VFSס(PMBOHؤ٤قٜؕ⺎耆

    ٛٓ٭ع؞ٔشبٖךلٜغؓؗعوشع؅⪦僗⺎耆 

  23. ֵ׽ֿכׇֹ׉ַױ׊ג