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 Features and Case Studies
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ian Lewis
April 21, 2015
Technology
0
160
Go Features and Case Studies
Ian Lewis
April 21, 2015
Tweet
Share
More Decks by Ian Lewis
See All by Ian Lewis
Kubernetes Security Best Practices
ianlewis
38
26k
The Enemy Within: Running untrusted code in Kubernetes
ianlewis
0
1.4k
The Enemy Within: Running untrusted code with gVisor
ianlewis
4
1.3k
KubeCon EU Runtime Track Recap
ianlewis
3
1.7k
コンテナによるNoOpsオートメーション
ianlewis
2
190
Google Kubernetes Engine 概要 & アップデート @ GCPUG Kansai Summit Day 2018
ianlewis
2
970
Extending Kubernetes with Custom Resources and Operator Frameworks
ianlewis
10
3.9k
Kubernetesのセキュリティのベストプラクティス
ianlewis
12
17k
Scheduling and Resource Management in Kubernetes
ianlewis
2
1.4k
Other Decks in Technology
See All in Technology
AI駆動開発を事業のコアに置く
tasukuonizawa
1
200
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
AI駆動PjMの理想像 と現在地 -実践例を添えて-
masahiro_okamura
1
120
変化するコーディングエージェントとの現実的な付き合い方 〜Cursor安定択説と、ツールに依存しない「資産」〜
empitsu
4
1.4k
学生・新卒・ジュニアから目指すSRE
hiroyaonoe
2
620
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
230
20260208_第66回 コンピュータビジョン勉強会
keiichiito1978
0
140
20260204_Midosuji_Tech
takuyay0ne
1
160
Bedrock PolicyでAmazon Bedrock Guardrails利用を強制してみた
yuu551
0
240
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
240
Webhook best practices for rock solid and resilient deployments
glaforge
1
290
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3.9k
Featured
See All Featured
Crafting Experiences
bethany
1
49
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
SEO for Brand Visibility & Recognition
aleyda
0
4.2k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
4 Signs Your Business is Dying
shpigford
187
22k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
100
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
430
AI: The stuff that nobody shows you
jnunemaker
PRO
2
260
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.2k
Transcript
Go言語の可能性と開発事例 QCon Tokyo 2015
Ian Lewis Developer Advocate Google Cloud Platform google.com/+IanLewis-hoge @IanMLewis
Go! Image © Takuya Ueda. Licensed under CC BY 3.0.
Image © Renée French. Licensed under CC BY 3.0. Go(lang)
• Developed at Google • Created to address problems: ◦ Speed of Software Development ◦ Cumbersome Type Systems ◦ Multiple Cores/Concurrency
Features Image © Takuya Ueda. Licensed under CC BY 3.0.
Image © Renée French. Licensed under CC BY 3.0. Features
• Compiles to static binary native code • Garbage collector • Strongly typed (types inferred) • Goroutines • Channels • Structs/Interfaces
Static Binary
Image © Renée French. Licensed under CC BY 3.0. Static
Binary • All Code Needed is Bundled • Avoids Problems with Linking at Runtime • Allows for *very* simple deployment
Garbage Collection Image © Takuya Ueda. Licensed under CC BY
3.0.
Image © Renée French. Licensed under CC BY 3.0. Garbage
Collection • Mark and Sweep in 1.1 • Concurrent Mark and Sweep • Hybrid Mark and Sweep/Concurrent in 1.4 • Concurrent Garbage Collector in 1.5
Type Inference Image © Takuya Ueda. Licensed under CC BY
3.0.
Image © Renée French. Licensed under CC BY 3.0. Type
Inference int hoge = 123; // NO!! int fuga = MyFunc(); hoge := 123; // GOOD!! fuga := MyFunc();
Goroutines Image © Takuya Ueda. Licensed under CC BY 3.0.
Image © Renée French. Licensed under CC BY 3.0. Goroutines
• Concurrent Function • Light Weight Process • Runs on Multiple Cores • Easy to Write
Image © Renée French. Licensed under CC BY 3.0. Goroutines
func MyFunc() { resp, err := http.Get("http://google.com/") } go MyFunc() // Concurrent!!!
Image © Renée French. Licensed under CC BY 3.0. Goroutines
func main() { go MyFunc() // NONO!! // Program will exit to early }
Channels Image © Takuya Ueda. Licensed under CC BY 3.0.
Image © Renée French. Licensed under CC BY 3.0. Channels
• Like a Queue • Used to Communicate Between Goroutines • Allows for Blocking Operations
Image © Renée French. Licensed under CC BY 3.0. Channels
func MyFunc(done chan int) { resp, err := http.Get("http://google.com/") done <- 1 }
Image © Renée French. Licensed under CC BY 3.0. Channels
func main() { done := make(chan int) go MyFunc(done) <-done // GOOD!!! }
Interfaces Image © Takuya Ueda. Licensed under CC BY 3.0.
Image © Renée French. Licensed under CC BY 3.0. Interfaces
type Writer interface { Write(p []byte) (n int, err error) }
Image © Renée French. Licensed under CC BY 3.0. Interfaces
type MyWriter struct {} func (w MyWriter) Write(p []byte) (n int, e error) { ... }
Examples Image © Takuya Ueda. Licensed under CC BY 3.0.
Vitess Image © Takuya Ueda. Licensed under CC BY 3.0.
Image © Renée French. Licensed under CC BY 3.0. Vitess
• Used at Youtube • Sharding MySQL Servers • Serving all YouTube DB traffic since 2011 • http://vitess.io/
Image © Renée French. Licensed under CC BY 3.0.
Image © 2015 Google. Licensed under CC BY 4.0.
Docker Image © Takuya Ueda. Licensed under CC BY 3.0.
Image © Renée French. Licensed under CC BY 3.0. Docker
• Container Engine • Includes HTTP API Server • Provides Image Packaging Format
Image © Renée French. Licensed under CC BY 3.0.
CoreOS Image © Takuya Ueda. Licensed under CC BY 3.0.
Image © Renée French. Licensed under CC BY 3.0. etcd
• Distributed Key-Value Store • Used for Storing Cluster State/Config • Implements RAFT Protocol
Image © Renée French. Licensed under CC BY 3.0.
Image © Renée French. Licensed under CC BY 3.0. rocket
• Container Runner • Supports Docker Containers • Supports Pods
Image © Renée French. Licensed under CC BY 3.0.
Kubernetes Image © Takuya Ueda. Licensed under CC BY 3.0.
Image © Renée French. Licensed under CC BY 3.0. Kubernetes
• Container Cluster Manager • Manages a Distributed Cluster • Supports Pods • Provides HTTP API
Image © Renée French. Licensed under CC BY 3.0.
Join Us! Image © Takuya Ueda. Licensed under CC BY
3.0.
None
Image © Renée French. Licensed under CC BY 3.0. GoCon
2015 Summer • Biggest Go Event in Japan!! • 2015/06/20 (Sat) • Registration starts 2015/05/01
http://gocon.connpass.com/
Thank You! QCon Tokyo 2015 Ian Lewis Developer Advocate Google
Cloud Platform google.com/+IanLewis-hoge @IanMLewis