SlideShare uma empresa Scribd logo
1 de 66
Go After 4 Years in Production
Travis Reeder - Co-Founder and CTO of Iron.io
InfoQ.com: News & Community Site
• 750,000 unique visitors/month
• Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
• Post content from our QCon conferences
• News 15-20 / week
• Articles 3-4 / week
• Presentations (videos) 12-15 / week
• Interviews 2-3 / week
• Books 1 / month
Watch the video with slide
synchronization on InfoQ.com!
http://www.infoq.com/presentations
/go-iron-production
Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
Presented at QCon San Francisco
www.qconsf.com
Part 1:
In the Beginning
6 Years Ago
We started a consulting company.
Built software for smart hardware companies (IoT).
Had to collect, process and report on large, constant streams of data.
DIY job processing.
5 Years Ago
We built our own multi-tenant, job processing system on the cloud.
It enabled us to develop projects faster and with less maintenance.
Good for us, good for our customers.
4 Years Ago
“There must be other developers that have the same problem???”
So we released our new service to the public:
Houston, We Have a Problem
We wrote it in Ruby.
Ruby was
Ruby for our API
We tried to keep CPU usage < 50% across our servers.
When it increased beyond that, we’d launch more servers to keep it around 50%.
This is fine if you don’t mind spending money.
What Amazon thought of us
The Bigger Problem - Traffic Spikes
Traffic spikes caused CPU levels to spike.
At some threshold above 50% CPU, a server would spike up to 100%.
100% == unresponsive
Load balancer removes server from pool.
Load distributed to remaining servers.
Dominoes
More load on remaining machines => more servers unresponsive => more servers
taken offline. => repeat...
Colossal Clusterf**k
Colossal Clusterf**k Visualized
When your API goes down
What To Do? What To Do?
1) Spend more money for extra capacity
2) Rewrite it
Part 2:
Choosing Go
Choosing a Language
We looked at other scripting languages with better performance than Ruby (wasn’t
hard).
We looked at Java and derivatives like Scala and Clojure
We looked at Go.
Why We Chose Go
● Concurrency being a fundamental part of the language
● Standard library had almost everything we needed
● It’s terse
● It’s compiled
● It compiles fast
● It runs fast
● Google is behind it
● It’s fun (like Ruby)
Concurrency in Go
2 Main Concurrency Features:
Goroutines and Channels
A goroutine is like a super light weight thread.
Running hundreds of thousands of goroutines is no problem (unlike threads).
You don’t need to think much about them (unlike threads).
Goroutines are multiplexed onto threads behind the scenes.
Goroutines
Easy to use:
To run function in a goroutine:
Goroutines
func hello(name string) {
fmt.Println("Hello", name)
}
go hello("Travis")
Channels
Channels allow you to communicate between goroutines.
Without having to worry about synchronization (locks, deadlocks, etc).
Channels
c := make(chan string)
go hello("Travis", c)
for i := 0; i < 5; i++ {
fmt.Printf("You say: %qn", <-c) // receive
}
func hello(name string, c chan string) {
for i := 0; ; i++ {
c <- fmt.Sprintf("Hello %s %d", name, i) // send
}
}
Quote - Rob Pike - 2011
“We realized that the kind of software we build at Google is not
always served well by the languages we had available. Robert
Griesemer, Ken Thompson, and myself decided to make a
language that would be very good for writing the kinds of
programs we write at Google.”
Why not X?
I got asked a lot: “why didn’t you use language X”?
Why not Python?
Seems logical coming from Ruby, but:
● Not compiled (more error prone)
● Indentation based code (more error prone)
● Not as fast as Go
Go vs Python Benchmark
Why not Node?
JavaScript
When people tell me to use Node
JavaScript V8 is actually very fast
But it’s still JavaScript.
Why not Java (or a derivative)?
After many, many years of using Java, I didn’t want to go back to the JVM.
Go was more interesting and exciting.
Even though Java is still faster.
Go vs Java Benchmark
Why not Ruby?
Some people asked why we didn’t just try to optimize Ruby.
I’m sure we could have done a lot better had we not used Rails.
But even so, there’s no comparison:
Go vs Ruby
It Was a Risky Decision
● New technology, not proven
● There wasn’t a big community
● There wasn’t a lot of open source projects
● There weren’t any success stories of production usage
● We weren’t sure if we could hire top talent
● We were one of the first companies to publicly say we were using it
● We were the first company to post a Go job
● It wasn’t even at a 1.0 release
When we told our investors we wanted to rewrite in Go
Replaced API with Go
Exact same API.
Exact same functionality.
We went from 30
servers to 2
30 Servers to 2
The 2nd one was just for redundancy.
We were barely utilizing the machines (barely registered CPU).
We never had a colossal CF again.
When you reduce your server count by 10x
Part 3:
4 Years Later
Performance
Performance has been stellar.
We still only run a few servers for each of our API clusters… after 4 years of growth!
Go has never been our bottleneck, it’s always something else (ie: database).
Memory
No virtual machine - starts fast and small.
IronMQ starts up in 6.5MB of resident memory including configuration, making
connections, etc.
Four years in, we’ve never had a memory leak or problems related to memory.
Reliability
Hard to quantify, but…
Our Go applications are very robust.
Rarely have a failure/crash that wasn’t related to some external problem.
Code tends to be cleaner and higher quality.
Strict compiler.
Do a lot with a small amount of code.
Deployment
Go compiles into a single, static binary file.
Deployment is simply putting that file on a server and starting it up.
No dependencies required.
No runtime required.
Binary is small. (IronMQ is ~6MB)
Rolling Back
Since it’s a single binary, you just stop the process and start the previous binary.
No need to worry about dependencies changing.
Language and Tooling
Keeps getting better and better.
Better garbage collection.
Better tools (for debugging, etc).
More open source libraries.
Talent
When we first started, there were very few people that knew the language.
We didn’t know if we’d be able to hire anybody!
But people really want to work with Go.
The caliber of talent that want to work for Iron.io is amazing.
When I think about Go
Part 4:
The Growth of Go
6 Years Old
6 years and 6 days ago, the Go project was released. - Nov. 10, 2009
3.5 years ago, Go 1.0 was released. - March 28, 2012
Trends
Trends
Community
Production Usage
4 years ago, nobody was using it in production (except maybe Google… and us).
Today, almost every startup I talk to is using it in some way or another.
And a lot of the big guys are using it now too.
Who’s Using Go Now?
Thousands of engineers writing Go code.
Millions of lines of Go source in the Google codebase.
High-profile and/or open source projects:
● Kubernetes
● Vitess.io
● Google Data Saver
● The unannounced Vanadium project - https://v.io/ - source code here: https:
//github.com/vanadium
Who’s Using Go Now?
Contributing to compilation and runtime for the Go language.
Looking to expose more Intel platform features through Go libraries.
Prototyping cloud ecosystem projects using Go.
Hosting Golang training workshops for Women In Technology.
Who’s Using Go Now?
Replaced entire HTTP serving infrastructure with a Go stack.
> 100B requests per day.
~ 1.15M queries per second.
Who’s Using Go Now?
Docker and all the Docker tools are written entirely in Go.
Docker announced at GoSF:
Who’s Using Go Now?
#2 language (#1 being Ruby).
Services using Go:
● Dashboard metrics
● System metrics
● Logging system
● ‘git push heroku master’: The ssh server behind this is written in Go.
● Postgres server monitoring
“We're an infrastructure company and Go lends itself well to writing infrastructure
code.” -- Edward Mueller
Who’s Using Go Now?
Who’s Using Go Now?
Server-side is 100% Go.
Including real-time chat service.
> 50M active users.
13 billion minutes/month.
Conclusion
We took a risk and it paid off.
We love the language, and it’s loved us back.
Usage is growing super fast.
A lot of companies are already using it for critical parts of their production systems.
Conclusion
2 years ago I wrote: “Is Go the next gen language we’ve been waiting for? It’s a bit too
early to say, but it’s certainly off to a good start.“
Today: Yes it is. Go IS the language for the cloud.
If you’re writing API’s or infrastructure, it should be at the top of your list.
Is Go the new Java? It’s a bit too early to say, but it’s certainly off to a good start.
Thanks!
Travis Reeder
@treeder
travis@iron.io
Watch the video with slide synchronization on
InfoQ.com!
http://www.infoq.com/presentations/go-iron-
production

Mais conteúdo relacionado

Mais procurados

Running Through Typescript
Running Through TypescriptRunning Through Typescript
Running Through TypescriptNikhil Wanpal
 
How Node.js Will Change Your Team
How Node.js Will Change Your TeamHow Node.js Will Change Your Team
How Node.js Will Change Your TeamJeff Dickey
 
Coding with golang
Coding with golangCoding with golang
Coding with golangHannahMoss14
 
Remix Your Language Tooling (JSConf.eu 2012)
Remix Your Language Tooling (JSConf.eu 2012)Remix Your Language Tooling (JSConf.eu 2012)
Remix Your Language Tooling (JSConf.eu 2012)lennartkats
 
From Config Management Sucks to #cfgmgmtlove
From Config Management Sucks to #cfgmgmtlove From Config Management Sucks to #cfgmgmtlove
From Config Management Sucks to #cfgmgmtlove Kris Buytaert
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloudlennartkats
 
OpenOffice Application with Python
OpenOffice Application with PythonOpenOffice Application with Python
OpenOffice Application with Pythonimacat .
 
Extract Method Refactoring Workshop (2016)
Extract Method Refactoring Workshop (2016)Extract Method Refactoring Workshop (2016)
Extract Method Refactoring Workshop (2016)Peter Kofler
 
Is there a future for devops ?
Is there a future for devops ?Is there a future for devops ?
Is there a future for devops ?Kris Buytaert
 
Why Python In Entertainment Industry?
Why Python In Entertainment Industry?Why Python In Entertainment Industry?
Why Python In Entertainment Industry?Shuen-Huei Guan
 
Elixir + GraphQL = Absinthe 2019.04.10
Elixir + GraphQL = Absinthe 2019.04.10Elixir + GraphQL = Absinthe 2019.04.10
Elixir + GraphQL = Absinthe 2019.04.10Alexander Knowles
 
Auth of restful_api
Auth of restful_apiAuth of restful_api
Auth of restful_apiTun-Yu Chang
 
Integrated Language Definition Testing: Enabling Test-Driven Language Develop...
Integrated Language Definition Testing: Enabling Test-Driven Language Develop...Integrated Language Definition Testing: Enabling Test-Driven Language Develop...
Integrated Language Definition Testing: Enabling Test-Driven Language Develop...lennartkats
 
Coding Dojo: Functional Calisthenics (2016)
Coding Dojo: Functional Calisthenics (2016)Coding Dojo: Functional Calisthenics (2016)
Coding Dojo: Functional Calisthenics (2016)Peter Kofler
 
Coding Dojo: Bank OCR Outside-In (2015)
Coding Dojo: Bank OCR Outside-In (2015)Coding Dojo: Bank OCR Outside-In (2015)
Coding Dojo: Bank OCR Outside-In (2015)Peter Kofler
 
Coding Dojo: Roman Numerals (2014)
Coding Dojo: Roman Numerals (2014)Coding Dojo: Roman Numerals (2014)
Coding Dojo: Roman Numerals (2014)Peter Kofler
 
Linked Data voor developers - PiLOD congres 25 juni
Linked Data voor developers - PiLOD congres 25 juniLinked Data voor developers - PiLOD congres 25 juni
Linked Data voor developers - PiLOD congres 25 juniDimitri van Hees
 
End to-end apps with type script
End to-end apps with type scriptEnd to-end apps with type script
End to-end apps with type scriptGil Fink
 

Mais procurados (19)

Pipeline as Code
Pipeline as CodePipeline as Code
Pipeline as Code
 
Running Through Typescript
Running Through TypescriptRunning Through Typescript
Running Through Typescript
 
How Node.js Will Change Your Team
How Node.js Will Change Your TeamHow Node.js Will Change Your Team
How Node.js Will Change Your Team
 
Coding with golang
Coding with golangCoding with golang
Coding with golang
 
Remix Your Language Tooling (JSConf.eu 2012)
Remix Your Language Tooling (JSConf.eu 2012)Remix Your Language Tooling (JSConf.eu 2012)
Remix Your Language Tooling (JSConf.eu 2012)
 
From Config Management Sucks to #cfgmgmtlove
From Config Management Sucks to #cfgmgmtlove From Config Management Sucks to #cfgmgmtlove
From Config Management Sucks to #cfgmgmtlove
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloud
 
OpenOffice Application with Python
OpenOffice Application with PythonOpenOffice Application with Python
OpenOffice Application with Python
 
Extract Method Refactoring Workshop (2016)
Extract Method Refactoring Workshop (2016)Extract Method Refactoring Workshop (2016)
Extract Method Refactoring Workshop (2016)
 
Is there a future for devops ?
Is there a future for devops ?Is there a future for devops ?
Is there a future for devops ?
 
Why Python In Entertainment Industry?
Why Python In Entertainment Industry?Why Python In Entertainment Industry?
Why Python In Entertainment Industry?
 
Elixir + GraphQL = Absinthe 2019.04.10
Elixir + GraphQL = Absinthe 2019.04.10Elixir + GraphQL = Absinthe 2019.04.10
Elixir + GraphQL = Absinthe 2019.04.10
 
Auth of restful_api
Auth of restful_apiAuth of restful_api
Auth of restful_api
 
Integrated Language Definition Testing: Enabling Test-Driven Language Develop...
Integrated Language Definition Testing: Enabling Test-Driven Language Develop...Integrated Language Definition Testing: Enabling Test-Driven Language Develop...
Integrated Language Definition Testing: Enabling Test-Driven Language Develop...
 
Coding Dojo: Functional Calisthenics (2016)
Coding Dojo: Functional Calisthenics (2016)Coding Dojo: Functional Calisthenics (2016)
Coding Dojo: Functional Calisthenics (2016)
 
Coding Dojo: Bank OCR Outside-In (2015)
Coding Dojo: Bank OCR Outside-In (2015)Coding Dojo: Bank OCR Outside-In (2015)
Coding Dojo: Bank OCR Outside-In (2015)
 
Coding Dojo: Roman Numerals (2014)
Coding Dojo: Roman Numerals (2014)Coding Dojo: Roman Numerals (2014)
Coding Dojo: Roman Numerals (2014)
 
Linked Data voor developers - PiLOD congres 25 juni
Linked Data voor developers - PiLOD congres 25 juniLinked Data voor developers - PiLOD congres 25 juni
Linked Data voor developers - PiLOD congres 25 juni
 
End to-end apps with type script
End to-end apps with type scriptEnd to-end apps with type script
End to-end apps with type script
 

Semelhante a Beyond the Hype: 4 Years of Go in Production

Go After 4 Years in Production - QCon 2015
Go After 4 Years in Production - QCon 2015Go After 4 Years in Production - QCon 2015
Go After 4 Years in Production - QCon 2015Travis Reeder
 
Java And Community Support
Java And Community SupportJava And Community Support
Java And Community SupportWilliam Grosso
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go langAmal Mohan N
 
Google's Go Programming Language - Introduction
Google's Go Programming Language - Introduction Google's Go Programming Language - Introduction
Google's Go Programming Language - Introduction Ganesh Samarthyam
 
A First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageA First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageGanesh Samarthyam
 
The Ring programming language version 1.9 book - Part 6 of 210
The Ring programming language version 1.9 book - Part 6 of 210The Ring programming language version 1.9 book - Part 6 of 210
The Ring programming language version 1.9 book - Part 6 of 210Mahmoud Samir Fayed
 
How go makes us faster (May 2015)
How go makes us faster (May 2015)How go makes us faster (May 2015)
How go makes us faster (May 2015)Wilfried Schobeiri
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to GoSimon Hewitt
 
How to create/improve OSS product and its community (revised)
How to create/improve OSS product and its community (revised)How to create/improve OSS product and its community (revised)
How to create/improve OSS product and its community (revised)SATOSHI TAGOMORI
 
【Primer】WebApp release in 3 hours! Programming from scratch Rails course
【Primer】WebApp release in 3 hours! Programming from scratch Rails course【Primer】WebApp release in 3 hours! Programming from scratch Rails course
【Primer】WebApp release in 3 hours! Programming from scratch Rails courseDIVE INTO CODE Corp.
 
From hello world to goodbye code
From hello world to goodbye codeFrom hello world to goodbye code
From hello world to goodbye codeKim Moir
 
welcome to gopherlabs - why go (golang)?
welcome to gopherlabs - why go (golang)?welcome to gopherlabs - why go (golang)?
welcome to gopherlabs - why go (golang)?sangam biradar
 
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...GreeceJS
 
Geoscience and Microservices
Geoscience and Microservices Geoscience and Microservices
Geoscience and Microservices Matthew Gerring
 
The Ring programming language version 1.6 book - Part 6 of 189
The Ring programming language version 1.6 book - Part 6 of 189The Ring programming language version 1.6 book - Part 6 of 189
The Ring programming language version 1.6 book - Part 6 of 189Mahmoud Samir Fayed
 
The Ring programming language version 1.7 book - Part 89 of 196
The Ring programming language version 1.7 book - Part 89 of 196The Ring programming language version 1.7 book - Part 89 of 196
The Ring programming language version 1.7 book - Part 89 of 196Mahmoud Samir Fayed
 
The Ring programming language version 1.2 book - Part 4 of 84
The Ring programming language version 1.2 book - Part 4 of 84The Ring programming language version 1.2 book - Part 4 of 84
The Ring programming language version 1.2 book - Part 4 of 84Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 99 of 212
The Ring programming language version 1.10 book - Part 99 of 212The Ring programming language version 1.10 book - Part 99 of 212
The Ring programming language version 1.10 book - Part 99 of 212Mahmoud Samir Fayed
 

Semelhante a Beyond the Hype: 4 Years of Go in Production (20)

Go After 4 Years in Production - QCon 2015
Go After 4 Years in Production - QCon 2015Go After 4 Years in Production - QCon 2015
Go After 4 Years in Production - QCon 2015
 
Java And Community Support
Java And Community SupportJava And Community Support
Java And Community Support
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go lang
 
Google's Go Programming Language - Introduction
Google's Go Programming Language - Introduction Google's Go Programming Language - Introduction
Google's Go Programming Language - Introduction
 
A First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageA First Look at Google's Go Programming Language
A First Look at Google's Go Programming Language
 
The Ring programming language version 1.9 book - Part 6 of 210
The Ring programming language version 1.9 book - Part 6 of 210The Ring programming language version 1.9 book - Part 6 of 210
The Ring programming language version 1.9 book - Part 6 of 210
 
How go makes us faster (May 2015)
How go makes us faster (May 2015)How go makes us faster (May 2015)
How go makes us faster (May 2015)
 
Ice dec05-04-wan leung
Ice dec05-04-wan leungIce dec05-04-wan leung
Ice dec05-04-wan leung
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
 
How to create/improve OSS product and its community (revised)
How to create/improve OSS product and its community (revised)How to create/improve OSS product and its community (revised)
How to create/improve OSS product and its community (revised)
 
【Primer】WebApp release in 3 hours! Programming from scratch Rails course
【Primer】WebApp release in 3 hours! Programming from scratch Rails course【Primer】WebApp release in 3 hours! Programming from scratch Rails course
【Primer】WebApp release in 3 hours! Programming from scratch Rails course
 
From hello world to goodbye code
From hello world to goodbye codeFrom hello world to goodbye code
From hello world to goodbye code
 
welcome to gopherlabs - why go (golang)?
welcome to gopherlabs - why go (golang)?welcome to gopherlabs - why go (golang)?
welcome to gopherlabs - why go (golang)?
 
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
 
Geoscience and Microservices
Geoscience and Microservices Geoscience and Microservices
Geoscience and Microservices
 
The Ring programming language version 1.6 book - Part 6 of 189
The Ring programming language version 1.6 book - Part 6 of 189The Ring programming language version 1.6 book - Part 6 of 189
The Ring programming language version 1.6 book - Part 6 of 189
 
Why Go Lang?
Why Go Lang?Why Go Lang?
Why Go Lang?
 
The Ring programming language version 1.7 book - Part 89 of 196
The Ring programming language version 1.7 book - Part 89 of 196The Ring programming language version 1.7 book - Part 89 of 196
The Ring programming language version 1.7 book - Part 89 of 196
 
The Ring programming language version 1.2 book - Part 4 of 84
The Ring programming language version 1.2 book - Part 4 of 84The Ring programming language version 1.2 book - Part 4 of 84
The Ring programming language version 1.2 book - Part 4 of 84
 
The Ring programming language version 1.10 book - Part 99 of 212
The Ring programming language version 1.10 book - Part 99 of 212The Ring programming language version 1.10 book - Part 99 of 212
The Ring programming language version 1.10 book - Part 99 of 212
 

Mais de C4Media

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoC4Media
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileC4Media
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020C4Media
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsC4Media
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No KeeperC4Media
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like OwnersC4Media
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaC4Media
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideC4Media
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDC4Media
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine LearningC4Media
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at SpeedC4Media
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsC4Media
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsC4Media
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerC4Media
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleC4Media
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeC4Media
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereC4Media
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing ForC4Media
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data EngineeringC4Media
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreC4Media
 

Mais de C4Media (20)

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live Video
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy Mobile
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No Keeper
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like Owners
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate Guide
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CD
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine Learning
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at Speed
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep Systems
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.js
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly Compiler
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix Scale
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's Edge
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home Everywhere
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing For
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data Engineering
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
 

Último

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 

Último (20)

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 

Beyond the Hype: 4 Years of Go in Production

  • 1. Go After 4 Years in Production Travis Reeder - Co-Founder and CTO of Iron.io
  • 2. InfoQ.com: News & Community Site • 750,000 unique visitors/month • Published in 4 languages (English, Chinese, Japanese and Brazilian Portuguese) • Post content from our QCon conferences • News 15-20 / week • Articles 3-4 / week • Presentations (videos) 12-15 / week • Interviews 2-3 / week • Books 1 / month Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations /go-iron-production
  • 3. Purpose of QCon - to empower software development by facilitating the spread of knowledge and innovation Strategy - practitioner-driven conference designed for YOU: influencers of change and innovation in your teams - speakers and topics driving the evolution and innovation - connecting and catalyzing the influencers and innovators Highlights - attended by more than 12,000 delegates since 2007 - held in 9 cities worldwide Presented at QCon San Francisco www.qconsf.com
  • 4. Part 1: In the Beginning
  • 5. 6 Years Ago We started a consulting company. Built software for smart hardware companies (IoT). Had to collect, process and report on large, constant streams of data. DIY job processing.
  • 6. 5 Years Ago We built our own multi-tenant, job processing system on the cloud. It enabled us to develop projects faster and with less maintenance. Good for us, good for our customers.
  • 7. 4 Years Ago “There must be other developers that have the same problem???” So we released our new service to the public:
  • 8. Houston, We Have a Problem We wrote it in Ruby. Ruby was
  • 9. Ruby for our API We tried to keep CPU usage < 50% across our servers. When it increased beyond that, we’d launch more servers to keep it around 50%. This is fine if you don’t mind spending money.
  • 11. The Bigger Problem - Traffic Spikes Traffic spikes caused CPU levels to spike. At some threshold above 50% CPU, a server would spike up to 100%. 100% == unresponsive Load balancer removes server from pool. Load distributed to remaining servers.
  • 12. Dominoes More load on remaining machines => more servers unresponsive => more servers taken offline. => repeat... Colossal Clusterf**k
  • 14. When your API goes down
  • 15. What To Do? What To Do? 1) Spend more money for extra capacity 2) Rewrite it
  • 17. Choosing a Language We looked at other scripting languages with better performance than Ruby (wasn’t hard). We looked at Java and derivatives like Scala and Clojure We looked at Go.
  • 18. Why We Chose Go ● Concurrency being a fundamental part of the language ● Standard library had almost everything we needed ● It’s terse ● It’s compiled ● It compiles fast ● It runs fast ● Google is behind it ● It’s fun (like Ruby)
  • 19. Concurrency in Go 2 Main Concurrency Features: Goroutines and Channels
  • 20. A goroutine is like a super light weight thread. Running hundreds of thousands of goroutines is no problem (unlike threads). You don’t need to think much about them (unlike threads). Goroutines are multiplexed onto threads behind the scenes. Goroutines
  • 21. Easy to use: To run function in a goroutine: Goroutines func hello(name string) { fmt.Println("Hello", name) } go hello("Travis")
  • 22. Channels Channels allow you to communicate between goroutines. Without having to worry about synchronization (locks, deadlocks, etc).
  • 23. Channels c := make(chan string) go hello("Travis", c) for i := 0; i < 5; i++ { fmt.Printf("You say: %qn", <-c) // receive } func hello(name string, c chan string) { for i := 0; ; i++ { c <- fmt.Sprintf("Hello %s %d", name, i) // send } }
  • 24. Quote - Rob Pike - 2011 “We realized that the kind of software we build at Google is not always served well by the languages we had available. Robert Griesemer, Ken Thompson, and myself decided to make a language that would be very good for writing the kinds of programs we write at Google.”
  • 25. Why not X? I got asked a lot: “why didn’t you use language X”?
  • 26. Why not Python? Seems logical coming from Ruby, but: ● Not compiled (more error prone) ● Indentation based code (more error prone) ● Not as fast as Go
  • 27. Go vs Python Benchmark
  • 29. When people tell me to use Node
  • 30. JavaScript V8 is actually very fast But it’s still JavaScript.
  • 31. Why not Java (or a derivative)? After many, many years of using Java, I didn’t want to go back to the JVM. Go was more interesting and exciting. Even though Java is still faster.
  • 32. Go vs Java Benchmark
  • 33. Why not Ruby? Some people asked why we didn’t just try to optimize Ruby. I’m sure we could have done a lot better had we not used Rails. But even so, there’s no comparison:
  • 35. It Was a Risky Decision ● New technology, not proven ● There wasn’t a big community ● There wasn’t a lot of open source projects ● There weren’t any success stories of production usage ● We weren’t sure if we could hire top talent ● We were one of the first companies to publicly say we were using it ● We were the first company to post a Go job ● It wasn’t even at a 1.0 release
  • 36. When we told our investors we wanted to rewrite in Go
  • 37. Replaced API with Go Exact same API. Exact same functionality.
  • 38. We went from 30 servers to 2
  • 39. 30 Servers to 2 The 2nd one was just for redundancy. We were barely utilizing the machines (barely registered CPU). We never had a colossal CF again.
  • 40. When you reduce your server count by 10x
  • 42. Performance Performance has been stellar. We still only run a few servers for each of our API clusters… after 4 years of growth! Go has never been our bottleneck, it’s always something else (ie: database).
  • 43. Memory No virtual machine - starts fast and small. IronMQ starts up in 6.5MB of resident memory including configuration, making connections, etc. Four years in, we’ve never had a memory leak or problems related to memory.
  • 44. Reliability Hard to quantify, but… Our Go applications are very robust. Rarely have a failure/crash that wasn’t related to some external problem. Code tends to be cleaner and higher quality. Strict compiler. Do a lot with a small amount of code.
  • 45. Deployment Go compiles into a single, static binary file. Deployment is simply putting that file on a server and starting it up. No dependencies required. No runtime required. Binary is small. (IronMQ is ~6MB)
  • 46. Rolling Back Since it’s a single binary, you just stop the process and start the previous binary. No need to worry about dependencies changing.
  • 47. Language and Tooling Keeps getting better and better. Better garbage collection. Better tools (for debugging, etc). More open source libraries.
  • 48. Talent When we first started, there were very few people that knew the language. We didn’t know if we’d be able to hire anybody! But people really want to work with Go. The caliber of talent that want to work for Iron.io is amazing.
  • 49. When I think about Go
  • 51. 6 Years Old 6 years and 6 days ago, the Go project was released. - Nov. 10, 2009 3.5 years ago, Go 1.0 was released. - March 28, 2012
  • 55. Production Usage 4 years ago, nobody was using it in production (except maybe Google… and us). Today, almost every startup I talk to is using it in some way or another. And a lot of the big guys are using it now too.
  • 56. Who’s Using Go Now? Thousands of engineers writing Go code. Millions of lines of Go source in the Google codebase. High-profile and/or open source projects: ● Kubernetes ● Vitess.io ● Google Data Saver ● The unannounced Vanadium project - https://v.io/ - source code here: https: //github.com/vanadium
  • 57. Who’s Using Go Now? Contributing to compilation and runtime for the Go language. Looking to expose more Intel platform features through Go libraries. Prototyping cloud ecosystem projects using Go. Hosting Golang training workshops for Women In Technology.
  • 58. Who’s Using Go Now? Replaced entire HTTP serving infrastructure with a Go stack. > 100B requests per day. ~ 1.15M queries per second.
  • 59. Who’s Using Go Now? Docker and all the Docker tools are written entirely in Go. Docker announced at GoSF:
  • 60. Who’s Using Go Now? #2 language (#1 being Ruby). Services using Go: ● Dashboard metrics ● System metrics ● Logging system ● ‘git push heroku master’: The ssh server behind this is written in Go. ● Postgres server monitoring “We're an infrastructure company and Go lends itself well to writing infrastructure code.” -- Edward Mueller
  • 62. Who’s Using Go Now? Server-side is 100% Go. Including real-time chat service. > 50M active users. 13 billion minutes/month.
  • 63. Conclusion We took a risk and it paid off. We love the language, and it’s loved us back. Usage is growing super fast. A lot of companies are already using it for critical parts of their production systems.
  • 64. Conclusion 2 years ago I wrote: “Is Go the next gen language we’ve been waiting for? It’s a bit too early to say, but it’s certainly off to a good start.“ Today: Yes it is. Go IS the language for the cloud. If you’re writing API’s or infrastructure, it should be at the top of your list. Is Go the new Java? It’s a bit too early to say, but it’s certainly off to a good start.
  • 66. Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations/go-iron- production