Making WallStreet talk
with GO
Matthew Campbell
Who Am I
• New York / Bangkok
• Run GO Meetup in Bangkok
• bloomberg.com (Rails)
• gucci.com (Rails)
• Co founder ErrPlane (GO)
• Thomson Reuters Messenger (GO)
Making Wallstreet talk with GO (GO India Conference 2015)
What is this talk about?
• Running GO with a 300k users in production for
multiple years
• Monitoring Large scale GO Servers
• Remote teams and GO
Eikon Messenger
Eikon Messenger
• 300k Traders / Fund Managers
• Federation with 20+ Bank/Financial Networks
• Strict compliance rules in 100+ countries
• Global usage, largest in SE Asia
• Downtime == Lost Trades == Upset customers
Protocols
• XMPP (Most XEPS)
• SIP (Microsoft SIP)
• BOSH (http xmpp)
• Chatrooms
Team
• 80% remote team
• Development

New York/Canada/Portugal/Germany/Bangkok
• Ops London
• QA Bangkok
Remote Dev
• Daily Google Hangouts
• Pivotal Tracker
• Github pull request, code reviews
• Xmpp Chatroom, all day multi time zone
• Email group
Issues with GO
Missing Features
• Decent XML Dom Parser
• Regex with decent performance
• Serializing performance / allocations
• Better CGO integration
Garbage Collection
• Our single largest problem. Our app is latency
sensitive.
• We have automated test suite to detect garbage
collection problems
• Avoiding Heap allocations
• Managing Size of Heap
IO Latency
• Many Layers
• In process cache
• Local Redis instance on machine
• Mysql primary storage
• NSQ for delayed message queuing
IO Architecture
Clustered Redis
source: paperplanes.de
CGO Issues
• Libxml2 (Gokogiri) , PCRE (Perl Regex)
• Issues with to many Pthreads
• 1.4 broke a lot of C libraries, with stack moving
• Broke GDB for a while
• Faster sometimes, sometimes significantly
slower cause of thread dispatch
Following GO Libraries
• For the first year, we tracked all GO
dependencies
• We often time found bugs in upstream libraries
with our automated integration suite
• Over time this got to risky, and we chose to
freeze our GO Libraries
Tracking GO Lang
• PAINLESS !
• We track Go Lang official releases, within 2
weeks of each release we have gone to
production using the new compiler
• We have had a few integration tests break
during upgrades
• Only production code that broke, was in CGO ;(
Continuous Delivery
• Jenkins
• Integration level tests, that fire up a cluster of our
servers, and validates user level interactions at
protocol level. Including federating with several
open source messaging servers
• Unit tests for functional areas
Plugin Architecture
• Plugins are processes
• Go doesn’t support dynamic linking
• Plugins talk to main process via TCP
• Plugins can be run in process, but still use tcp,
to simulate exact same properties
Plugin Architecture
Metrics
• Annotate everything
• Us GO-Metrics
• Graphite / InfluxDb
Making Wallstreet talk with GO (GO India Conference 2015)
Single Points of Failure
• Mysql Multimaster
• Redis Master / Slave
• Sentinel for Mysql Failover
• Custom scripts + ETCD for Mysql Failover
Packaging
• RPMs
• FPM Ruby Gem
• Single binary + Configs
Managing Config
• ETCD vs Zookeeper
• Push
• Pull
Compliance
• NSQ
• Elastic Search
• Mysql
• C# process
Making Wallstreet talk with GO (GO India Conference 2015)
Upgrades
• In place upgrades
• Spawn a new process
• Pass file handles for TCP via a Named Pipe
• New process kills parent
What’s Next
• Multiple live datacenters, currently Hot/Cold
• Removal of all CGO Code
• Using GO Generate for config classes
Q & A
Contact
• Feel Free to email me any further questions
• We’re Hiring!
• mcampbell@hyperworks.nu

More Related Content

PDF
Cloud in your Cloud
PDF
DigitalOcean Microservices Talk Rocket Internet Conf '16
PDF
A novel building infrastructure as code
PDF
Geo-Trending Example
PPTX
Serverless Architectures
PPTX
Lieven Vandegaer from MEDIAGENIX - Orchestrating a video-on-demand pipeline w...
PDF
Total cloud immersion
PDF
Henrique Rodrigues (NotOnTheHighStreet.com) - Building a Future-Proof Infrast...
Cloud in your Cloud
DigitalOcean Microservices Talk Rocket Internet Conf '16
A novel building infrastructure as code
Geo-Trending Example
Serverless Architectures
Lieven Vandegaer from MEDIAGENIX - Orchestrating a video-on-demand pipeline w...
Total cloud immersion
Henrique Rodrigues (NotOnTheHighStreet.com) - Building a Future-Proof Infrast...

What's hot (20)

PPTX
Continuously delivered scalable geoservies
PDF
Analyzing and processing FInancial Market Data on AWS with Kinesis - AWS Pop ...
PDF
Serverless Architecture GCP In Production
PDF
Firebase Cloud Functions: a quick overview
PPTX
My graduation project on Opsschool ('the elephant')
PDF
GraphQL API on a Serverless Environment
PDF
Serverless Apps on Google Cloud: more dev, less ops
PPTX
Going Serverless with AWS Lambda at ReportGarden
PDF
CloudDesignPatterns
PDF
Owain Perry (Just Giving) - Continuous Delivery of Windows Micro-Services in ...
PPTX
Real Time Visibility with Flink
PPTX
Михаил Максимов ( Software engineer, DataArt. AWS certified Solution Architect)
PDF
Brendon Foxen (Channel 4) - Speeding up Software Delivery at Channel 4
KEY
Introduction to Rails
PPTX
Spangulumbraco
PDF
Serverless, oui mais pour quels usages ?
PPTX
App Services - Connecting the dots of Web Mobile and Integration_published
PDF
TechTalk Webinar Series - Getting Started with Apache OpenWhisk
PDF
Data Driven
PDF
Platform as a Service for Rapid Development
Continuously delivered scalable geoservies
Analyzing and processing FInancial Market Data on AWS with Kinesis - AWS Pop ...
Serverless Architecture GCP In Production
Firebase Cloud Functions: a quick overview
My graduation project on Opsschool ('the elephant')
GraphQL API on a Serverless Environment
Serverless Apps on Google Cloud: more dev, less ops
Going Serverless with AWS Lambda at ReportGarden
CloudDesignPatterns
Owain Perry (Just Giving) - Continuous Delivery of Windows Micro-Services in ...
Real Time Visibility with Flink
Михаил Максимов ( Software engineer, DataArt. AWS certified Solution Architect)
Brendon Foxen (Channel 4) - Speeding up Software Delivery at Channel 4
Introduction to Rails
Spangulumbraco
Serverless, oui mais pour quels usages ?
App Services - Connecting the dots of Web Mobile and Integration_published
TechTalk Webinar Series - Getting Started with Apache OpenWhisk
Data Driven
Platform as a Service for Rapid Development
Ad

Similar to Making Wallstreet talk with GO (GO India Conference 2015) (20)

PPTX
Tuenti Release Workflow
KEY
Make It Cooler: Using Decentralized Version Control
PDF
stackconf 2021 | Prometheus in 2021 and beyond
PDF
Transitioning Groupon to Node.js - EmpireJS 2014
PPTX
Que nos espera a los ALM Dudes para el 2013?
PPTX
21o. RubyFloripa - Maintaining legacy Rails app and introducing Elixir
PPTX
Ci of js and apex using jasmine, phantom js and drone io df14
PDF
GoLang - Why It Matters
PDF
Performance and Abstractions
PDF
Adding Real-time Features to PHP Applications
PPTX
Testing API's: Tools & Tips & Tricks (Oh My!)
PPTX
Introduction to go lang
PPTX
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CD
PDF
Enterprise Messaging with RabbitMQ.pdf
PDF
Go - A Key Language in Enterprise Application Development?
PPTX
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
PDF
Go at Skroutz
PDF
ITB2024 - Keynote Day 1 - Ortus Solutions.pdf
PDF
Intro to CakePHP
PDF
High Performance Systems in Go - GopherCon 2014
Tuenti Release Workflow
Make It Cooler: Using Decentralized Version Control
stackconf 2021 | Prometheus in 2021 and beyond
Transitioning Groupon to Node.js - EmpireJS 2014
Que nos espera a los ALM Dudes para el 2013?
21o. RubyFloripa - Maintaining legacy Rails app and introducing Elixir
Ci of js and apex using jasmine, phantom js and drone io df14
GoLang - Why It Matters
Performance and Abstractions
Adding Real-time Features to PHP Applications
Testing API's: Tools & Tips & Tricks (Oh My!)
Introduction to go lang
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CD
Enterprise Messaging with RabbitMQ.pdf
Go - A Key Language in Enterprise Application Development?
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
Go at Skroutz
ITB2024 - Keynote Day 1 - Ortus Solutions.pdf
Intro to CakePHP
High Performance Systems in Go - GopherCon 2014
Ad

More from Matthew Campbell (8)

PDF
Practical Plasma: Gaming. Upbit Developers conference 2018
PDF
Microservices Python bangkok
PDF
Intro to microservices GopherDay Taipei '17
PDF
Distributed Timeseries Database In Go (gophercon India 17)
PDF
Distributed scheduler hell (MicroXChg 2017 Berlin)
PDF
Breaking Prometheus (Promcon Berlin '16)
PDF
presentation-chaos-monkey
PDF
Intro to GO (Bangkok Launchpad 2014)
Practical Plasma: Gaming. Upbit Developers conference 2018
Microservices Python bangkok
Intro to microservices GopherDay Taipei '17
Distributed Timeseries Database In Go (gophercon India 17)
Distributed scheduler hell (MicroXChg 2017 Berlin)
Breaking Prometheus (Promcon Berlin '16)
presentation-chaos-monkey
Intro to GO (Bangkok Launchpad 2014)

Recently uploaded (20)

PDF
Getting started with AI Agents and Multi-Agent Systems
PPT
Module 1.ppt Iot fundamentals and Architecture
PDF
Architecture types and enterprise applications.pdf
PPTX
Benefits of Physical activity for teenagers.pptx
PDF
Getting Started with Data Integration: FME Form 101
PPTX
observCloud-Native Containerability and monitoring.pptx
PDF
DP Operators-handbook-extract for the Mautical Institute
PDF
STKI Israel Market Study 2025 version august
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PDF
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
PDF
August Patch Tuesday
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
A novel scalable deep ensemble learning framework for big data classification...
PDF
Zenith AI: Advanced Artificial Intelligence
PPTX
Modernising the Digital Integration Hub
PPTX
The various Industrial Revolutions .pptx
PPTX
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
PDF
A Late Bloomer's Guide to GenAI: Ethics, Bias, and Effective Prompting - Boha...
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
Getting started with AI Agents and Multi-Agent Systems
Module 1.ppt Iot fundamentals and Architecture
Architecture types and enterprise applications.pdf
Benefits of Physical activity for teenagers.pptx
Getting Started with Data Integration: FME Form 101
observCloud-Native Containerability and monitoring.pptx
DP Operators-handbook-extract for the Mautical Institute
STKI Israel Market Study 2025 version august
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
August Patch Tuesday
Assigned Numbers - 2025 - Bluetooth® Document
A novel scalable deep ensemble learning framework for big data classification...
Zenith AI: Advanced Artificial Intelligence
Modernising the Digital Integration Hub
The various Industrial Revolutions .pptx
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
A Late Bloomer's Guide to GenAI: Ethics, Bias, and Effective Prompting - Boha...
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
Univ-Connecticut-ChatGPT-Presentaion.pdf

Making Wallstreet talk with GO (GO India Conference 2015)

  • 1. Making WallStreet talk with GO Matthew Campbell
  • 2. Who Am I • New York / Bangkok • Run GO Meetup in Bangkok • bloomberg.com (Rails) • gucci.com (Rails) • Co founder ErrPlane (GO) • Thomson Reuters Messenger (GO)
  • 4. What is this talk about? • Running GO with a 300k users in production for multiple years • Monitoring Large scale GO Servers • Remote teams and GO
  • 6. Eikon Messenger • 300k Traders / Fund Managers • Federation with 20+ Bank/Financial Networks • Strict compliance rules in 100+ countries • Global usage, largest in SE Asia • Downtime == Lost Trades == Upset customers
  • 7. Protocols • XMPP (Most XEPS) • SIP (Microsoft SIP) • BOSH (http xmpp) • Chatrooms
  • 8. Team • 80% remote team • Development
 New York/Canada/Portugal/Germany/Bangkok • Ops London • QA Bangkok
  • 9. Remote Dev • Daily Google Hangouts • Pivotal Tracker • Github pull request, code reviews • Xmpp Chatroom, all day multi time zone • Email group
  • 11. Missing Features • Decent XML Dom Parser • Regex with decent performance • Serializing performance / allocations • Better CGO integration
  • 12. Garbage Collection • Our single largest problem. Our app is latency sensitive. • We have automated test suite to detect garbage collection problems • Avoiding Heap allocations • Managing Size of Heap
  • 13. IO Latency • Many Layers • In process cache • Local Redis instance on machine • Mysql primary storage • NSQ for delayed message queuing
  • 16. CGO Issues • Libxml2 (Gokogiri) , PCRE (Perl Regex) • Issues with to many Pthreads • 1.4 broke a lot of C libraries, with stack moving • Broke GDB for a while • Faster sometimes, sometimes significantly slower cause of thread dispatch
  • 17. Following GO Libraries • For the first year, we tracked all GO dependencies • We often time found bugs in upstream libraries with our automated integration suite • Over time this got to risky, and we chose to freeze our GO Libraries
  • 18. Tracking GO Lang • PAINLESS ! • We track Go Lang official releases, within 2 weeks of each release we have gone to production using the new compiler • We have had a few integration tests break during upgrades • Only production code that broke, was in CGO ;(
  • 19. Continuous Delivery • Jenkins • Integration level tests, that fire up a cluster of our servers, and validates user level interactions at protocol level. Including federating with several open source messaging servers • Unit tests for functional areas
  • 20. Plugin Architecture • Plugins are processes • Go doesn’t support dynamic linking • Plugins talk to main process via TCP • Plugins can be run in process, but still use tcp, to simulate exact same properties
  • 22. Metrics • Annotate everything • Us GO-Metrics • Graphite / InfluxDb
  • 24. Single Points of Failure • Mysql Multimaster • Redis Master / Slave • Sentinel for Mysql Failover • Custom scripts + ETCD for Mysql Failover
  • 25. Packaging • RPMs • FPM Ruby Gem • Single binary + Configs
  • 26. Managing Config • ETCD vs Zookeeper • Push • Pull
  • 27. Compliance • NSQ • Elastic Search • Mysql • C# process
  • 29. Upgrades • In place upgrades • Spawn a new process • Pass file handles for TCP via a Named Pipe • New process kills parent
  • 30. What’s Next • Multiple live datacenters, currently Hot/Cold • Removal of all CGO Code • Using GO Generate for config classes
  • 31. Q & A
  • 32. Contact • Feel Free to email me any further questions • We’re Hiring! • [email protected]