SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
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)
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
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
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

Weitere ähnliche Inhalte

Was ist angesagt?

Continuously delivered scalable geoservies
Continuously delivered scalable geoserviesContinuously delivered scalable geoservies
Continuously delivered scalable geoserviesDaniel Fenton
 
Analyzing and processing FInancial Market Data on AWS with Kinesis - AWS Pop ...
Analyzing and processing FInancial Market Data on AWS with Kinesis - AWS Pop ...Analyzing and processing FInancial Market Data on AWS with Kinesis - AWS Pop ...
Analyzing and processing FInancial Market Data on AWS with Kinesis - AWS Pop ...Florian Benz
 
Serverless Architecture GCP In Production
Serverless Architecture GCP In ProductionServerless Architecture GCP In Production
Serverless Architecture GCP In ProductionOliver Fierro
 
Firebase Cloud Functions: a quick overview
Firebase Cloud Functions: a quick overviewFirebase Cloud Functions: a quick overview
Firebase Cloud Functions: a quick overviewJoseph Lust
 
My graduation project on Opsschool ('the elephant')
My graduation project on Opsschool ('the elephant')My graduation project on Opsschool ('the elephant')
My graduation project on Opsschool ('the elephant')Liora Kamil
 
GraphQL API on a Serverless Environment
GraphQL API on a Serverless EnvironmentGraphQL API on a Serverless Environment
GraphQL API on a Serverless EnvironmentItai Yaffe
 
Serverless Apps on Google Cloud: more dev, less ops
Serverless Apps on Google Cloud:  more dev, less opsServerless Apps on Google Cloud:  more dev, less ops
Serverless Apps on Google Cloud: more dev, less opsJoseph Lust
 
Going Serverless with AWS Lambda at ReportGarden
Going Serverless with AWS Lambda at ReportGardenGoing Serverless with AWS Lambda at ReportGarden
Going Serverless with AWS Lambda at ReportGardenJay Gandhi
 
Owain Perry (Just Giving) - Continuous Delivery of Windows Micro-Services in ...
Owain Perry (Just Giving) - Continuous Delivery of Windows Micro-Services in ...Owain Perry (Just Giving) - Continuous Delivery of Windows Micro-Services in ...
Owain Perry (Just Giving) - Continuous Delivery of Windows Micro-Services in ...Outlyer
 
Real Time Visibility with Flink
Real Time Visibility with FlinkReal Time Visibility with Flink
Real Time Visibility with FlinkRafi Aroch
 
Михаил Максимов ( Software engineer, DataArt. AWS certified Solution Architect)
Михаил Максимов ( Software engineer, DataArt. AWS certified Solution Architect)Михаил Максимов ( Software engineer, DataArt. AWS certified Solution Architect)
Михаил Максимов ( Software engineer, DataArt. AWS certified Solution Architect)DataArt
 
Brendon Foxen (Channel 4) - Speeding up Software Delivery at Channel 4
Brendon Foxen (Channel 4) - Speeding up Software Delivery at Channel 4Brendon Foxen (Channel 4) - Speeding up Software Delivery at Channel 4
Brendon Foxen (Channel 4) - Speeding up Software Delivery at Channel 4Outlyer
 
Serverless, oui mais pour quels usages ?
Serverless, oui mais pour quels usages ?Serverless, oui mais pour quels usages ?
Serverless, oui mais pour quels usages ?VMware Tanzu
 
App Services - Connecting the dots of Web Mobile and Integration_published
App Services - Connecting the dots of Web Mobile and Integration_publishedApp Services - Connecting the dots of Web Mobile and Integration_published
App Services - Connecting the dots of Web Mobile and Integration_publishedWagner Silveira
 
TechTalk Webinar Series - Getting Started with Apache OpenWhisk
TechTalk Webinar Series - Getting Started with Apache OpenWhiskTechTalk Webinar Series - Getting Started with Apache OpenWhisk
TechTalk Webinar Series - Getting Started with Apache OpenWhiskJanakiram MSV
 

Was ist angesagt? (20)

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

Ähnlich wie Making Wallstreet talk with GO (GO India Conference 2015)

Tuenti Release Workflow
Tuenti Release WorkflowTuenti Release Workflow
Tuenti Release WorkflowTuenti
 
Make It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version ControlMake It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version Controlindiver
 
stackconf 2021 | Prometheus in 2021 and beyond
stackconf 2021 | Prometheus in 2021 and beyondstackconf 2021 | Prometheus in 2021 and beyond
stackconf 2021 | Prometheus in 2021 and beyondNETWAYS
 
Transitioning Groupon to Node.js - EmpireJS 2014
Transitioning Groupon to Node.js - EmpireJS 2014Transitioning Groupon to Node.js - EmpireJS 2014
Transitioning Groupon to Node.js - EmpireJS 2014Sean McCullough
 
Que nos espera a los ALM Dudes para el 2013?
Que nos espera a los ALM Dudes para el 2013?Que nos espera a los ALM Dudes para el 2013?
Que nos espera a los ALM Dudes para el 2013?Bruno Capuano
 
21o. RubyFloripa - Maintaining legacy Rails app and introducing Elixir
21o. RubyFloripa - Maintaining legacy Rails app and introducing Elixir21o. RubyFloripa - Maintaining legacy Rails app and introducing Elixir
21o. RubyFloripa - Maintaining legacy Rails app and introducing ElixirWeverton Timoteo
 
Ci of js and apex using jasmine, phantom js and drone io df14
Ci of js and apex using jasmine, phantom js and drone io   df14Ci of js and apex using jasmine, phantom js and drone io   df14
Ci of js and apex using jasmine, phantom js and drone io df14Kevin Poorman
 
GoLang - Why It Matters
GoLang -  Why It MattersGoLang -  Why It Matters
GoLang - Why It Mattersrahul
 
Performance and Abstractions
Performance and AbstractionsPerformance and Abstractions
Performance and AbstractionsMetosin Oy
 
Adding Real-time Features to PHP Applications
Adding Real-time Features to PHP ApplicationsAdding Real-time Features to PHP Applications
Adding Real-time Features to PHP ApplicationsRonny López
 
Testing API's: Tools & Tips & Tricks (Oh My!)
Testing API's: Tools & Tips & Tricks (Oh My!)Testing API's: Tools & Tips & Tricks (Oh My!)
Testing API's: Tools & Tips & Tricks (Oh My!)Ford Prior
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go langAmal Mohan N
 
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CD
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CDDevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CD
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CDDevOps_Fest
 
Enterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdfEnterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdfOrtus Solutions, Corp
 
Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?C4Media
 
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...Heiko Voigt
 
High Performance Systems in Go - GopherCon 2014
High Performance Systems in Go - GopherCon 2014High Performance Systems in Go - GopherCon 2014
High Performance Systems in Go - GopherCon 2014Derek Collison
 
Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 

Ähnlich wie Making Wallstreet talk with GO (GO India Conference 2015) (20)

Tuenti Release Workflow
Tuenti Release WorkflowTuenti Release Workflow
Tuenti Release Workflow
 
Make It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version ControlMake It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version Control
 
stackconf 2021 | Prometheus in 2021 and beyond
stackconf 2021 | Prometheus in 2021 and beyondstackconf 2021 | Prometheus in 2021 and beyond
stackconf 2021 | Prometheus in 2021 and beyond
 
Transitioning Groupon to Node.js - EmpireJS 2014
Transitioning Groupon to Node.js - EmpireJS 2014Transitioning Groupon to Node.js - EmpireJS 2014
Transitioning Groupon to Node.js - EmpireJS 2014
 
Que nos espera a los ALM Dudes para el 2013?
Que nos espera a los ALM Dudes para el 2013?Que nos espera a los ALM Dudes para el 2013?
Que nos espera a los ALM Dudes para el 2013?
 
21o. RubyFloripa - Maintaining legacy Rails app and introducing Elixir
21o. RubyFloripa - Maintaining legacy Rails app and introducing Elixir21o. RubyFloripa - Maintaining legacy Rails app and introducing Elixir
21o. RubyFloripa - Maintaining legacy Rails app and introducing Elixir
 
Ci of js and apex using jasmine, phantom js and drone io df14
Ci of js and apex using jasmine, phantom js and drone io   df14Ci of js and apex using jasmine, phantom js and drone io   df14
Ci of js and apex using jasmine, phantom js and drone io df14
 
GoLang - Why It Matters
GoLang -  Why It MattersGoLang -  Why It Matters
GoLang - Why It Matters
 
Performance and Abstractions
Performance and AbstractionsPerformance and Abstractions
Performance and Abstractions
 
Adding Real-time Features to PHP Applications
Adding Real-time Features to PHP ApplicationsAdding Real-time Features to PHP Applications
Adding Real-time Features to PHP Applications
 
Testing API's: Tools & Tips & Tricks (Oh My!)
Testing API's: Tools & Tips & Tricks (Oh My!)Testing API's: Tools & Tips & Tricks (Oh My!)
Testing API's: Tools & Tips & Tricks (Oh My!)
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go lang
 
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CD
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CDDevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CD
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CD
 
Enterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdfEnterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdf
 
Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?Go - A Key Language in Enterprise Application Development?
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 ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
 
Go at Skroutz
Go at SkroutzGo at Skroutz
Go at Skroutz
 
Intro to CakePHP
Intro to CakePHPIntro to CakePHP
Intro to CakePHP
 
High Performance Systems in Go - GopherCon 2014
High Performance Systems in Go - GopherCon 2014High Performance Systems in Go - GopherCon 2014
High Performance Systems in Go - GopherCon 2014
 
Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 

Mehr von Matthew Campbell

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

Mehr von Matthew Campbell (8)

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

Kürzlich hochgeladen

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
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
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 

Kürzlich hochgeladen (20)

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
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
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
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...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 

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)
  • 3.
  • 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
  • 23.
  • 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
  • 28.
  • 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! • mcampbell@hyperworks.nu