Apcera Case Study: The selection of the Go language
Upcoming SlideShare
Loading in...5

Apcera Case Study: The selection of the Go language



This is from a presentation at GoCon Japan on April 13th, 2013.

This is from a presentation at GoCon Japan on April 13th, 2013.



Total Views
Views on SlideShare
Embed Views



12 Embeds 2,263

https://twitter.com 1326
http://takuan-osho.hatenablog.com 900
http://www.linkedin.com 25
https://www.rebelmouse.com 3
http://moderation.local 2
https://duckduckgo.com&_=1370865260157 HTTP 1
http://tweetedtimes.com 1
http://lingr.com 1
https://web.tweetdeck.com 1
http://lohjankisaveikot.fi 1
https://abs.twimg.com 1
http://translate.googleusercontent.com 1



Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • @raine0 Most of the code referenced in the talk is now Open Source. https://github.com/apcera/gnatsd
    Are you sure you want to
    Your message goes here
  • @meyerkp Not split stacks, what I meant was the notion of stack based storage auto-promoting to the heap on certain conditions, which is something Go does transparently. In C, was a bit of a struggle.
    Are you sure you want to
    Your message goes here
  • @steven_shaw Go has the attractiveness of being quick to learn, and being able to draw from a talent pool of Java, C++, Python and Ruby developers. Haskell presents challenges there IMO.
    Are you sure you want to
    Your message goes here
  • Go's a fine choice. I wonder if anyone considered the Glorious GHC?
    Are you sure you want to
    Your message goes here
  • Wrote your own map implementation, HTTP server, loggin library, SQL drivers and ORM? Sounds great, wouldn't you consider contribute (with at least a subset) back go Go project?
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Apcera Case Study: The selection of the Go language Apcera Case Study: The selection of the Go language Presentation Transcript

  • + apcera next generation cloud platform A Case Study: The Selection of Go at ApceraGo Conference JapanApril 13, 2013
  • Quick About Derek CollisonDesigned and Built CloudFoundry Founded March 2012Former Google, VMware, TIBCO San Francisco, CADistributed Systems Building Next Generation Cloud PlatformFounder of Apcera, Inc. Investors Kleiner Perkins@derekcollison Andreesen Horowitzderek@apcera.com True Ventures Data Collective @apcera www.apcera.com
  • How did we get here?
  • CloudFoundryBuilt using RubyRuby the “Good” Great Language Easy Development Synchronous programming modelRuby the “Not so Good” Dependency Management Deployment Issues No builtin Eventing Model Lacks good support for Concurrency
  • EventMachineEventing in RubyAsynchronous IO, Timers, etc.EM + Fibers, CF process scalability model Fragile ComplexC++ code base, limited community supportComplex code baseCritical to process design patterns for CloudFoundryContributed to Dependency management issues
  • I still <3 Ruby
  • Choices for Apcera?
  • Apcera Choice CriteriaGood platform support (Linux, Windows, Mac, SmartOs)Good dependency model, preferred builtinGood support for Concurrency primitivesGood support for Large Scale Distributed SystemsCustomer neutral Not Java Not .Net
  • Go vs Node.js
  • Node.jsGood V8 runtime from Google Evented system by design Javascript based All programmers will know Javascript.Not so Good Runtime Dependency Based on Javascript Function scoping Callback Spaghetti Dependency via external NPM (NPM is good)
  • GoGood Designed by amazing team: Rob Pike, Ken Thompson, Robert Griesemer Synchronous programming model Concurrency is a first class citizen Static executables - No dependencies (Except ARCH) Google Goodies - Builtin Testing, Docs, Benchmarks, Flags, etc. Good platform supportNot so Good New Language New Standard Libraries Immature GC and Scheduler Google starting to kill off projects, would Go be on that list?
  • Team selected Go in 15 minutes
  • Never once questioned decision
  • Go DeeperGo Routines and Channels Well thought out concurrency primitives, based on variant of CSP. Can take advantage of Multi-Core (GOMAXPROCS)Statically Typed, compiled language Inference Interfaces - Again well thought out design Compiles fastEasy to learn - Don’t need a large talent poolDecent Standard Library - IO, FS, Network, HTTP, JsonGC, but Go has real STACKS!
  • Why I Would Choose Go?Stacks This is a big deal Relieves pressure from the GC Gives back power to the developer I spent 3+ months designing this in C in the 90s Go also allows interior pointers in structs to also relieve pressureStatically linked executables Deployment is “scp binary <target>”Easy to learn Scale teams with Java, C++, Ruby or Python experience Small Standard library, also easy to pick up in a week or so
  • Go Stacks?Why should you really care?Relieves pressure on GC Performance Stability - GC pausesMove from GC to stack easily, no GC hitYet, can auto-promote What do you mean?
  • My First Go Program
  • Not all Roses, there are issues
  • Not all RosesImport model lacks support for versioning import “github.com/apcera/nats” - Which version do you get? We test for version constraints in pkg that importsCrypto is not production ready Proclaimed by a Go developer We built our own high performance mappings to OpenSSLStatic executables break when linking Being Fixed in 1.1 I believeString <-> Byte causes copiesGarbage Collector and Scheduler still young.
  • Not all Roses - Cont’dLogging library We wrote our own - Designed by former Twitter Ops team memberSQL Lack of error promotion and error handling Designed our own Enterprise grade ORM + driversHTTP Server I think everyone has written their own by nowMaps are slow Being fixed in 1.1 I believe We wrote our own high performance ones for Go NATS server
  • There are more.. BUT..
  • Go was right choice for Apcera
  • More will make same decision!
  • Go SummaryGreat Systems language from GoogleConcurrency is first class citizenTesting, Docs, Benchmarks are builtinStandard library is fairly complete and good enoughEasy to Learn - Go to www.golang.orgStatic ExecutablesStacks - You will thank me later.And Most Important Great velocity as Go moves from 1.0 -> 1.1 and beyond
  • Thank You!ありがとう
  • Questions?
  • apceranext generation cloud platformwww.apcera.cominfo@apcera.com