Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
MicroServices and MonoRepo
Search
Hiroaki Egashira
August 06, 2019
Programming
2
1.3k
MicroServices and MonoRepo
Golangのマイクロサービスをmono repositoryでBazelを利用して管理する方法についてお話しました。
Hiroaki Egashira
August 06, 2019
Tweet
Share
More Decks by Hiroaki Egashira
See All by Hiroaki Egashira
レコメンドへの大規模アクセスを支えるGo製サーバーの裏側
_hiro511
7
3.7k
WinTicketにおける リアルタイム性と高負荷を考慮したアーキテクチャ/WinTicket Architecture
_hiro511
4
3.3k
WinTicketにおけるライブ配信システムの実現
_hiro511
2
800
Other Decks in Programming
See All in Programming
タイムゾーンの奥地は思ったよりも闇深いかもしれない
suguruooki
1
790
スモールスタートで始めるためのLambda×モノリス(Lambdalith)
akihisaikeda
2
310
新しいPHP拡張モジュールインストール方法「PHP Installer for Extensions (PIE)」を使ってみよう!
cocoeyes02
0
440
Laravel × Clean Architecture
bumptakayuki
PRO
0
130
ComposeでWebアプリを作る技術
tbsten
0
120
監視 やばい
syossan27
12
10k
API for docs
soutaro
3
1.5k
Lambda(Python)の リファクタリングが好きなんです
komakichi
4
230
PHPバージョンアップから始めるOSSコントリビュート / how2oss-contribute
dmnlk
1
1.1k
Fiber Scheduler vs. General-Purpose Parallel Client
hayaokimura
1
240
Enterprise Web App. Development (1): Build Tool Training Ver. 5
knakagawa
1
120
Vibe Coding の話をしよう
schroneko
12
3.4k
Featured
See All Featured
Site-Speed That Sticks
csswizardry
6
510
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
Done Done
chrislema
184
16k
A better future with KSS
kneath
239
17k
GraphQLの誤解/rethinking-graphql
sonatard
71
10k
For a Future-Friendly Web
brad_frost
177
9.7k
GitHub's CSS Performance
jonrohan
1030
460k
A designer walks into a library…
pauljervisheath
205
24k
Making the Leap to Tech Lead
cromwellryan
133
9.2k
It's Worth the Effort
3n
184
28k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Transcript
ُؕؠٞئ٭لتכ .POP3FQP $"54 $ZCFS"HFOU *OD )JSPBLJ&HBTIJSB娡㱳◽
娡㱳◽)JSPBLJ&HBTIJSB 䇗僖劔䌋⚡炘ئؕف٭ؙ٭ةؘ٤ع⪌炘 $"54 8JO5JDLFUفشؠؙ٤غطشؠٛ٭غ IJSP @IJSP
8JO5JDLFU ˝ ؛٤ٚؕ٤琂魸䤷烨ئؕع ˝ 侇ꝴ䤷烨⯈頇⪌⺎耆 ˝ ⪒㎁⚡㕙סٚؕه何⥼鿥⟓ ˝ "CFNB57ס琂魸زٔ٤ؾٜכ鵽Ⳃ
ُؕؠٞئ٭لت َٝةعٛלֹיױ־
.VMUJQMF3FQPTJUPSJFT WT .POP3FQPTJUPSZ
.POP3FQPTJUPSZ ˝ (PPHMF 'BDFCPPL 5XJUUFS⺱喋 ˝ ❣㰆畘杼ب٤وٜמך׀ ˝ ┉鞉䓪סֵ㚺催 ˝
ؤ٭غס⪦僗כ⫋⮵榫ֿ㳊佄 ˝ 㛻׀םٛنؒؠذٛ٤ءֿ㳊佄 חסَٝةعٛךخ٭تؤ٭غ畘杼
.POP3FQPTJUPSZ ˝ .VMUJQMF3FQPTJUPSJFTס㕙⺬ 邾丗סَٝةعٛמ㚺催ⱶֻיյ㚺催鱮׳סֿꪫ⠠ ❣㰆꞊➟ب٤وٜמך׀
.POP3FQPTJUPSZ ˝ (PPHMF 'BDFCPPL 5XJUUFS⺱喋 ˝ ❣㰆畘杼ب٤وٜמך׀ ˝ ┉鞉䓪סֵ㚺催 ˝
ؤ٭غס⪦僗כ⫋⮵榫ֿ㳊佄 ˝ 㛻׀םٛنؒؠذٛ٤ءֿ㳊佄 חסَٝةعٛךخ٭تؤ٭غ畘杼
.POP3FQPTJUPSZ ˝ 邾丗סُؕؠٞئ٭لتמ㚺催ⱶֻכ׀ؓعِشؠםؤِشعך⺎耆 ˝ ف٭ة٘٤畘杼㳊佄 ┉鞉䓪סֵ㚺催
.POP3FQPTJUPSZ ˝ (PPHMF 'BDFCPPL 5XJUUFS⺱喋 ˝ ❣㰆畘杼ب٤وٜמך׀ ˝ ┉鞉䓪סֵ㚺催 ˝
ؤ٭غס⪦僗כ⫋⮵榫ֿ㳊佄 ˝ 㛻׀םٛنؒؠذٛ٤ءֿ㳊佄 חסَٝةعٛךخ٭تؤ٭غ畘杼
لٜغכطتعⲖ曍荁ׂגַ
#B[FM ˝ (P 1SPUPDPM#VFS $ +"7" "OESPJE J04 םל喋չם銧鏤מ㵚䑴 ˝
䑒釐ם甙䢥דׄلٜغ٬طتعסך鵭ַ ˝ تآ٭ٚهٜ ˝ 䦡䍖⺎耆 لٜغ٬طتعبتطّ
(PMBOHXJUI#B[FM ˝ #B[FMסؕ٤تع٭ٜ CSFXJOTUBMMCB[FM ˝ 803,41"$&نٜؒؕס⛼䡗 㛙鼧ס❣㰆꞊➟םל鋗鳭 ˝ #6*-%نٜؒؕ⛼䡗 لٜغ亠嫎炐גס
(B[FMMF⮵榫י舅Ⳃ榟䡗ך׀
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"$& SVMFT@HP (B[FMMF
load("@bazel_gazelle//:def.bzl", "gazelle") # gazelle:prefix github.com/hiro511/golang-bazel gazelle(name = “gazelle”) #6*-%CB[FM
$ tree . !"" BUILD.bazel !"" WORKSPACE #"" cmd #""
main.go $ bazel run //:gazelle (B[FMMF
$ 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 ̚舅Ⳃ榟䡗
$ 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 فؕػٜٛ٭ٜ
㛙鼧❣㰆꞊➟ ˝ HPNPE (PQLHMPDLنٜؒؕ־❣㰆قشآ٭ة鱮ײ 803,41"$&نٜؒؕמ傴׀鱮׳ HB[FMMFVQEBUFSFQPTGSPN@MFHPNPE HB[FMMFVQEBUFSFQPTGSPN@MF(PQLHMPDL (P.PEVMFTכEFQמ㵚䑴
1SPUPDPM#VFS ˝ HPMBOHQSPUPCVGכHPHPQSPUPמ㵚䑴 ˝ #6*-%CB[FMמٜ٭ٜ鴑鋗דׄ (P銧鏤סؤ٭غ榟䡗⺎耆
ٛٓ٭ع؞ٔشبٖ ˝ ꝧ氦縖$*םלךلٜغؓؗعوشع⪦僗ך׀ ˝ لٜغ냕鵭ך׀ ˝ ؞ٔشبٖفشؠؙ٤غ OHJOY 8FC%"7NPEVMF
#B[FM3FNPUF$BDIF (PPHMF$MPVE4UPSBHF لٜغؓؗعوشعٛٓ٭عמ؞ٔشبٖ⺎耆
ױכ״ ˝ .POP3FQPTJUPSZ ❣㰆畘杼ֿب٤وٜյ┉鞉䓪ֵֿյؤ٭غס⪦僗٬⫋⮵榫ֿ㳊佄 ˝ #B[FM لٜغ٬طتعص٭ٜյ❣㰆꞊➟杼鉮י㲔产סך鵭ַ (B[FMMF⮵榫י(PMBOHסخ٭تؤ٭غסلٜغٜ٭ٜ舅Ⳃ榟䡗⺎耆 (P.PEVMFTEFQס錃㲊אסױױ✳ֻ 1SPUPDPM#VFSס(PMBOHؤ٤قٜؕ⺎耆
ٛٓ٭ع؞ٔشبٖךلٜغؓؗعوشع⪦僗⺎耆
ֵֿכַׇֹױג