Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
なぜ Go はマイクロサービスのための言語なのか - Why Go is a language...
Search
Kohei
July 13, 2019
Technology
8.3k
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
2k
Other Decks in Technology
See All in Technology
なぜ東京にいる私が、新潟の技術コミュニティを運営するのか by 八雲慎之助
yakumo
0
220
続・ソフトウェアアーキテクトのための意思決定術: Decision Readiness, Revisited — When AI Changes the Economics of Software Architecture
snoozer05
PRO
9
2.7k
「いつか使う」の「いつか」は来ない 〜AI駆動開発における「作らない」判断について〜
ikki0006
0
150
現場を動かすAIエージェント#2_製造業現場でのAI活用から見た、ハマる罠と実践知
kintotechdev
2
190
Kiro 入門 (1 つのエージェントを、どの画面からでも) | 目指せ Kiro マスター 01
inariku
PRO
5
1.1k
Sinatra on PicoRuby ローカルでセルフホスト
bash0c7
0
110
試験勉強はGrokBotでやれ
maigo999
0
110
慶應義塾大学 AI実践05 論文執筆の仕組み化
keio_smilab
PRO
7
3.7k
cdkd (CDK Direct)
gotok365
4
270
バックオフィスに染み出すTypeScript ── clasp で安全に仕組みを作る
nealle
1
180
「AIチャットからもできないの?」と言われたら ~業務アプリをMCP対応するときの認証・認可の勘所
oidfj
0
130
内製アプリとClaudeスキルのセキュリティチェック、 Backlogの課題で回しています。
ayaka_egaaa
0
150
Featured
See All Featured
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
390
Optimizing for Happiness
mojombo
378
71k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
Balancing Empowerment & Direction
lara
6
1.4k
Accessibility Awareness
sabderemane
1
290
Odyssey Design
rkendrick25
PRO
2
930
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
530
Everyday Curiosity
cassininazir
0
390
ラッコキーワード サービス紹介資料
rakko
5
5.7M
The Limits of Empathy - UXLibs8
cassininazir
2
770
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