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.1k
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.2k
WinTicketにおける リアルタイム性と高負荷を考慮したアーキテクチャ/WinTicket Architecture
_hiro511
4
2.9k
WinTicketにおけるライブ配信システムの実現
_hiro511
2
700
Other Decks in Programming
See All in Programming
品質とスピードを両立: TypeScriptの柔軟な型システムをバックエンドで活用する
kosui
8
2.2k
Designing for tomorrow's programming workflows
honnibal
PRO
2
110
Open Source Swift Workshop - Foundation and first party libraries
ikesyo
0
1.1k
Doctrine ORMでValue Objectを扱う方法4選 #phpstudy / 4 ways to handle Value Objects with Doctrine ORM
77web
4
110
どうしてこうなった命名集 ~🔥編~ / OOC 2024 LT
pictiny
5
3.9k
#phpcon_odawara オープン・クローズドなテストフィクスチャを求めて / open closed test fixtures
77web
3
210
二郎系ラーメンのコールで学ぶ AST 解析
memory1994
PRO
7
1.6k
CA.swift19 恋するAIアプリ開発の裏側
oskmr
0
330
データアナリストが行うDatabricksを活用したETLの自動化事例
shinoa
0
250
Javaエンジニアのための Nodejs/Nuxt3入門
hidekatsu_izuno
0
270
Rails と人魚の話/rails-and-mermaid
sanfrecce_osaka
0
100
プールにゆこう
irof
2
120
Featured
See All Featured
Scaling GitHub
holman
457
140k
Art, The Web, and Tiny UX
lynnandtonic
288
19k
Navigating Team Friction
lara
177
13k
No one is an island. Learnings from fostering a developers community.
thoeni
14
2.1k
Why You Should Never Use an ORM
jnunemaker
PRO
50
8.6k
Fashionably flexible responsive web design (full day workshop)
malarkey
397
65k
GraphQLとの向き合い方2022年版
quramy
30
12k
Web development in the modern age
philhawksworth
201
10k
Embracing the Ebb and Flow
colly
78
4.1k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
75
41k
Web Components: a chance to create the future
zenorocha
304
41k
Into the Great Unknown - MozCon
thekraken
10
980
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ؤ٤قٜؕ⺎耆
ٛٓ٭ع؞ٔشبٖךلٜغؓؗعوشع⪦僗⺎耆
ֵֿכַׇֹױג