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
なぜ Go はマイクロサービスのための言語なのか - Why Go is a language...
Search
Kohei
July 13, 2019
Technology
8.2k
11
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
なぜ Go はマイクロサービスのための言語なのか - Why Go is a language for microservices
Kohei
July 13, 2019
More Decks by Kohei
See All by Kohei
Cacoo with Microservices
cohhei
0
1.9k
Other Decks in Technology
See All in Technology
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
170
Agent Skills設計で柔軟性と硬さのバランスが難しい話
nassy20
0
140
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
2k
2026 TECHFRESH 畢業分享會 - 開發日常大解密!從領域驅動到企業級上線
line_developers_tw
PRO
0
1.3k
GitHub Copilot app最速の発信の裏側
tomokusaba
1
190
【Cyber-sec+】経営層を"動かす"ための考え方
hssh2_bin
0
200
2026TECHFRESH畢業分享會 - 葬送的通靈師:化系統與用戶雜訊成行動訊號
line_developers_tw
PRO
0
1.3k
AIはどのように 組織のアジリティを変えるのか?
junki
4
1k
SteampipeとExcel Power QueryでAWS構成定義書の作成を自動化する
jhashimoto
0
160
【Snowflake Summit 2026 Recap!!】Snowflake Summit Deep Dive: Security & Governance
civitaspo
1
270
秘密度ラベル初心者が第1歩でつまづかないための「設計・運用」ポイント
seafay
PRO
0
210
Claude Codeをどのように キャッチアップしているか
oikon48
13
8.6k
Featured
See All Featured
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
Abbi's Birthday
coloredviolet
2
8.1k
WENDY [Excerpt]
tessaabrams
11
38k
Utilizing Notion as your number one productivity tool
mfonobong
4
320
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
950
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
600
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Git: the NoSQL Database
bkeepers
PRO
432
67k
We Are The Robots
honzajavorek
0
250
How to Ace a Technical Interview
jacobian
281
24k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
210
Transcript
ͳͥ Go ϚΠΫϩαʔϏεͷͨΊͷݴޠͳͷ͔ Kohei Kimura Software Engineer at Nulab Inc.
@cohhei
☝ࠓҰ൪ݴ͍͍ͨ͜ͱ☝
εϙϯαʔηογϣϯͰ ͋Γ·ͤΜ ※ͪΌΜͱϓϩϙʔβϧॻ͖·ͨ͠ɻ΄Ίͯɻ
SIerɺࠃΫϥυϕϯμʔΛܦͯ20181݄ Nulab ೖࣾ Cacoo νʔϜͷόοΫΤϯυΤϯδχΞ ։ൃݴޠ ΄΅ ≡, ·Εʹ Java,
Node.js ొஃ࣮ Kubernetes Meetup Tokyo #14 CloudNative Days Fukuoka 2019 AWS Summit Osaka Kohei Kimura @cohhei
ΫϥυωΠςΟϒͬͯ·͔͢ʁ
ΫϥυωΠςΟϒͱ εέʔϥϒϧͳΞϓϦέʔγϣϯΛߏங͓Αͼ࣮ߦ͢ΔͨΊͷٕज़ͷ૯শ දతͳٕज़: ίϯςφɺαʔϏεϝογϡɺϚΠΫϩαʔϏεɺ ΠϛϡʔλϒϧΠϯϑϥετϥΫνϟɺએݴܕAPI ճ෮ੑʢresilientʣɺཧ͢͠͞ʢmanageableʣɺՄ؍ଌੑ ʢobservableʣ͕ಘΒΕΔ
ίϯςφɺCI/CDɺΦʔέετϨʔ γϣϯ… ͑ɺαʔϏεϓϩΩγɾϝογϡɾ σΟεΧόϦʔͰͬͱʁ ಓͷΓ͍…
None
ΫϥυωΠςΟϒপ
https://www.youtube.com/watch?v=1qVj1vXbuX0 ෳࡶɺ ॲཧͷݪ࢝ੑɺҰ؏ੑͷ͠͞ ཧίετͷ૿େ
ࠓͷɿ ͍͍ͧ
None
Go ͕ Google Ͱੜ·ΕͨܦҢ ແͷϋʔυΣΞɺແͷιϑτΣΞ Լ͕Γଓ͚Δ։ൃޮʹର߅͢Δ
"Go was designed by and for people who write —and
read and debug and maintain—large software systems." Rob Pike, Go at Google
ͳͥ Go ϚΠΫϩαʔϏεͷͨΊͷݴޠͳͷ͔ https://blog.docker.com/2019/02/weve-got-❤%EF%B8%8F-for-our-first-batch-of-dockercon-speakers/ ཧ༝: ΫϥυωΠςΟϒͱͷ ૬ੑ͕ʮΓΑ͔ʯ γϯάϧόΠφϦɺߴͳϏϧυɺলϝϞϦ
Docker and Go
FROM golang:1.7.3 WORKDIR /go/src/github.com/alexellis/href-counter/ RUN go get -d -v golang.org/x/net/html
COPY app.go . RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app . FROM alpine:latest RUN apk --no-cache add ca-certificates WORKDIR /root/ COPY --from=0 /go/src/github.com/alexellis/href-counter/app . CMD ["./app"] ΈΜͳ͍͖ͩ͢ multi-stage builds
FROM golang:1.7.3 WORKDIR /go/src/github.com/alexellis/href-counter/ RUN go get -d -v golang.org/x/net/html
COPY app.go . RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app . FROM alpine:latest RUN apk --no-cache add ca-certificates WORKDIR /root/ COPY --from=0 /go/src/github.com/alexellis/href-counter/app . CMD ["./app"] ΈΜͳ͍͖ͩ͢ multi-stage builds Ϗϧυ༻ͷεςʔδ
FROM golang:1.7.3 WORKDIR /go/src/github.com/alexellis/href-counter/ RUN go get -d -v golang.org/x/net/html
COPY app.go . RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app . FROM alpine:latest RUN apk --no-cache add ca-certificates WORKDIR /root/ COPY --from=0 /go/src/github.com/alexellis/href-counter/app . CMD ["./app"] ΈΜͳ͍͖ͩ͢ multi-stage builds ࣮ߦ༻ͷεςʔδ Go Πϯετʔϧ͞Ε͍ͯͳ͍ Ϗϧυ༻ͷεςʔδ͔Β ϑΝΠϧΛίϐʔ
Observability and Go
Clients Server Side ࡶͳ Microservices Ͳ͜ͰԿ͕͓͖ͯΔ͔ Θ͔Βͳ͍
Observability Metrics Trasing Logging
None
Ұ൪͡Ίʹ͖ͯΔ͎ʙʂ (” ՞ਊ ՞)”řŐŖŘ!!
https://zipkin.apache.org
Observability Metrics Trasing Logging
None
https://prometheus.io/
(” ՞ਊ ՞)”řŐŖŘ!! https://prometheus.io/
https://prometheus.io/docs/guides/go-application/
ʢΞϓϦଆʣಋೖ͕؆୯ Έ͕Ͱ͖ΕՃɾߋ৽ൺֱత؆୯ πʔϧΛऔΓೖΕΔ͜ͱͰϕετϓϥΫςΟεΛ ͱΓ͜Ή
gRPC and Go
ΦʔϓϯιʔεͷRPCϑϨʔϜϫʔΫ RPC = Remote Procedure Call ΠϯλʔϑΣʔεΛ Protocol Buffers Ͱࣗಈੜ
ҟͳΔݴޠͰ༻Մೳ HTTP/2 ํετϦʔϛϯά
Protocol Buffers Ͱఆٛ → ίʔυੜΛ࣮ߦ → ΫϥΠΞϯτͱαʔόʔͷΠϯλʔ ϑΣʔεɺܕͷίʔυ͕ੜ
ৄ͘͠ @vvvatanabe ʹฉ͍͍ͯͩ͘͞
ʹ͓͚Δ Proto ϑΝΠϧͱੜͨ͠ίʔυͷཧ
Protofiles Git repositories Generated code Generate Webhook git push origin
develop/ beta/master Protocol Buffers ϑΝΠϧ୯ҰͷϦϙδτϦͰཧ ϑΝΠϧ͕ߋ৽͞ΕΔͱ → Jenkins ্Ͱ Java ͱ Go ͷίʔυੜ → ଞϓϩδΣΫτ dep ensure ͳͲͰऔಘ Protofilesͱੜ͞ΕͨίʔυͷϒϥϯνҰக Other applications Generated code
·ͱΊ
͍͍ͧ
͍͍ͧ ͍͞͝ʹ
Diagram ΦϯϥΠϯ௨͠ͳ͕Βڞಉฤू ͦͷͰࢿྉ࡞ ը໘ڞ༗ෆཁ ݴޠͰΘΓʹ͍͘͜ͱਤͰઆ໌
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ ݟ͔͚ͨΒ͔͚͍ͯͩ͘͞ɻ Kohei Kimura Software Engineer at Nulab Inc. @cohhei