SlideShare a Scribd company logo
What we do with Go
Marcel Lanz, engineer, proCentric AG
agenda
• how we started with Go
• RichClient/JVM Distribution
• Business Event Monitoring
• using Go, why Go is Fun
a few problems solved
• 2014 RichClient/JVM distribution (groupcache)
• 2014 Business Event Monitoring with time series (d3/cubism)
• 2014 Business Operation Monitor (ng)
• 2015 OCR Solution (omnipage, rewritten (old) C++ server)
how we started with Go
• Insurance Sector
• Windows “Servers”, MSSQL, Winddows File Servers,
ActiveDirectories…
• but JEE/JBoss Java AppServer
• eclipse RCP based RichClient, about 200 users
• multiple generations (32bit/64bit, old OCR 32bit Solution)
SOAPCaller
• “new” external SOAP Service
• Monitoring: no SOAP support
• external sensors via exit code and stdout
• *.bat, java app, Windows-Script… => why not Go
SOAPCaller
• SOAPCaller
• send SOAP request
• receive and parse SOAP response (parse XML)
• report via exit code & stdout
• => one exe-File, starts & runs in 200ms, simple deployment
network issues (1)
• new infrastructure (network and servers)
• RichClient App running on SMB Share
• ClassNotFound Exceptions in random order
• unreliable Network (L3 switches, ProxyARP issues)
network issues (2)
• “the network is slow”, “something is wrong”
• blocking Clients
• business processes unavailable / blocking
• printers unavailable 25% of the time => L3 Switches
RichClient/JVM distribution
• Windows SW distribution not yet available
• don’t run apps on “shares”
• distribute them to the client
• update, staging and multiple locations
Indexing Server
• walk over a given directory by configuration (JSON)
• read files into memory, SHA1 hash them and put them into a map
• combine configuration and the file index into a boot file
• provide the boot file over HTTP
What we do with Go
ClientStarter (1)
• ClientStarter.exe + server.json (JAVA Swing App, launch4j EXE)
• on every start
• download boot.json from Index Server
• synchronize index files locally
• boot the app
ClientStarter (2)
• a tuesday afternoon
• worked more or less in second try
• structs, JSON en-/decoding, filepath.Walk(), maps, “net/http”
Issues
• after a few hours, server crashed, dump in windows memory
allocation/management
• debug.WriteHeapDump(f.Fd())
• https://golang.org/issue/8119 (solved within 2 days)
• => switched to Windows 64Bit
What we do with Go
ClientStarter 2.0
• multiple remote locations (DE, IT, FR)
• staging, jre6
➡ GroupCache (github.com/golang/groupcache) (small patch for server
selection)
➡ expiring keys for boot.json => boot.json_20140701T165_
➡ took another afternoon (+ a bit more to polish)
➡ runs over a year without issues
What we do with Go
Business Event Monitoring with
time series
http://d3js.org
https://square.github.io/cubism
“A time series is a sequence of data points, typically consisting of successive
measurements made over a time interval.”
[wikipedia]
Quotes from Business Support
• “its slow”
• “at 9am, we had a lot of blocking clients”
• “something is wrong”
• “we are missing documents in ‘Postfach’”
what do you see ?
What we do with Go
timeseries
JDBC Exception
login
call duration
WS call
What we do with Go
What we do with Go
first try
a morning
correlate events
working day 1
working day 2
what is this?
printing Issues
Post Mortem
JEV
(Jahresendverarbeitung)
• 24 “Node Cluster” JBoss
• 1 Batch Master
• year before took x hours
=> distribute JBoss + config with “ClientStarter”
=> monitor it with EventAgent
visual perception
• colors (Cyntia Brewer)
• correlate events
• event count is not that important (one, a few, a lot)
• see: http://edwardtufte.com/ - http://colorbrewer2.org
• “PowerPoint Does Rocket Science”
• Senior JAVA Developer: ”I can do that with JAVA too"
• how to deploy that in a JVM based ops infrastructure?
• which IDE do you use for that?
using Go? (1)
• stable and reliable
• nice programming environment, also for Windows
• easy to learn, docs and spec are enough
• POLA, (principle of least astonishment)
using Go? (2)
Why Go is fun ?
• Go is boring (kind of)… but thats good
• simple, elegant, orthogonal, POLA
• interfaces (not the same as JAVA, might be confusing for them)
• channels
• select
Questions ?..
Thank you very much
2015-04-01
Marcel Lanz
Senior System & Software Architect
marcel.lanz@procentric.ch

More Related Content

PDF
eigr.io – a Serverless Runtime on the BEAM (ACM SIGPLAN, ICFP 2021 Erlang Wor...
MarcelLanz
 
PDF
Javantura v4 - Self-service app deployment with Kubernetes and OpenShift - Ma...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PPTX
CICD Azure DevOps
Sergey Seletsky
 
PPTX
Celery workshop
Eswar Vandanapu
 
PPTX
Next generation pipelines
Alex Landa
 
PPTX
Building CI/CD Pipelines with Jenkins and Kubernetes
Janakiram MSV
 
PDF
Netflix Architecture and Open Source
All Things Open
 
PDF
TechTalk - Building Serverless Applications with IBM Bluemix
Janakiram MSV
 
eigr.io – a Serverless Runtime on the BEAM (ACM SIGPLAN, ICFP 2021 Erlang Wor...
MarcelLanz
 
Javantura v4 - Self-service app deployment with Kubernetes and OpenShift - Ma...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
CICD Azure DevOps
Sergey Seletsky
 
Celery workshop
Eswar Vandanapu
 
Next generation pipelines
Alex Landa
 
Building CI/CD Pipelines with Jenkins and Kubernetes
Janakiram MSV
 
Netflix Architecture and Open Source
All Things Open
 
TechTalk - Building Serverless Applications with IBM Bluemix
Janakiram MSV
 

What's hot (19)

PDF
Javantura v4 - Support SpringBoot application development lifecycle using Ora...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
Safe deployments with Blue-Green and Spinnaker
Mihnea Dobrescu-Balaur
 
PDF
TechTalk Webinar Series - Getting Started with Apache OpenWhisk
Janakiram MSV
 
PPTX
Kenzan Spinnaker Meetup
Ambassador Labs
 
PPTX
ONAP on Vagrant
Victor Morales
 
PDF
Jenkins Reviewbot
Yardena Meymann
 
PPTX
Externalized Spring Boot App Configuration
Haufe-Lexware GmbH & Co KG
 
PPTX
Cross Community CI project
Victor Morales
 
PDF
Introduction to OpenFaas
GDG Cloud Bengaluru
 
PDF
Docker in Production at the Aurora Team
Haufe-Lexware GmbH & Co KG
 
PDF
Confoo - DevOps & Agile Infrastructure
Will Stevens
 
PPTX
How to contribute to an open source project and don’t die during the Code Rev...
Victor Morales
 
PPTX
Detailed Introduction To Docker
nklmish
 
PPTX
ONAP on Vagrant for ONAPers
Victor Morales
 
PPTX
ASP.NET vNext
Alex Thissen
 
KEY
Make It Cooler: Using Decentralized Version Control
indiver
 
PPTX
Neutron Updates - Kilo Edition
OpenStack Foundation
 
PPTX
Validating latest changes with XCI
Victor Morales
 
PPTX
Ice breaker with dev ops
Mukta Aphale
 
Javantura v4 - Support SpringBoot application development lifecycle using Ora...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Safe deployments with Blue-Green and Spinnaker
Mihnea Dobrescu-Balaur
 
TechTalk Webinar Series - Getting Started with Apache OpenWhisk
Janakiram MSV
 
Kenzan Spinnaker Meetup
Ambassador Labs
 
ONAP on Vagrant
Victor Morales
 
Jenkins Reviewbot
Yardena Meymann
 
Externalized Spring Boot App Configuration
Haufe-Lexware GmbH & Co KG
 
Cross Community CI project
Victor Morales
 
Introduction to OpenFaas
GDG Cloud Bengaluru
 
Docker in Production at the Aurora Team
Haufe-Lexware GmbH & Co KG
 
Confoo - DevOps & Agile Infrastructure
Will Stevens
 
How to contribute to an open source project and don’t die during the Code Rev...
Victor Morales
 
Detailed Introduction To Docker
nklmish
 
ONAP on Vagrant for ONAPers
Victor Morales
 
ASP.NET vNext
Alex Thissen
 
Make It Cooler: Using Decentralized Version Control
indiver
 
Neutron Updates - Kilo Edition
OpenStack Foundation
 
Validating latest changes with XCI
Victor Morales
 
Ice breaker with dev ops
Mukta Aphale
 
Ad

Similar to What we do with Go (20)

PPTX
Rebooting design in RavenDB
Oren Eini
 
PPTX
Introduction to node.js
Arun Kumar Arjunan
 
PDF
IBM InterConnect: Java vs JavaScript for Enterprise WebApps
Chris Bailey
 
PDF
JavaOne 2014: Java vs JavaScript
Chris Bailey
 
PDF
Not Only Streams for Akademia JLabs
Konrad Malawski
 
PPTX
Building trust within the organization, first steps towards DevOps
Guido Serra
 
PDF
OSDC 2014: Devdas Bhagat - Graphite: Graphs for the modern age
NETWAYS
 
PDF
Avatar 2.0
David Delabassee
 
PDF
Beyond the Hype: 4 Years of Go in Production
C4Media
 
PPT
Breaking The Clustering Limits @ AlphaCSP JavaEdge 2007
Baruch Sadogursky
 
PDF
Introduction to Apache Geode (Cork, Ireland)
Anthony Baker
 
PDF
Download full ebook of Flex on Java Bernerd Allmon instant download pdf
bzuraklaasoq
 
PDF
Flex and Java
gueste65db38
 
PDF
Java tuning on GNU/Linux for busy dev
Tomek Borek
 
PDF
Experiences with Microservices at Tuenti
Andrés Viedma Peláez
 
PDF
Continuous Enterprise Development In Java Testable Solutions With Arquillian ...
nfikduw7187
 
PPTX
Event driven systems
Shatabda Majumdar
 
PDF
SESP_Ovidiu_Popoviciu_Poster
Ovidiu Popoviciu
 
PDF
Go at Skroutz
AgisAnastasopoulos
 
PPTX
vert.x - asynchronous event-driven web applications on the JVM
jbandi
 
Rebooting design in RavenDB
Oren Eini
 
Introduction to node.js
Arun Kumar Arjunan
 
IBM InterConnect: Java vs JavaScript for Enterprise WebApps
Chris Bailey
 
JavaOne 2014: Java vs JavaScript
Chris Bailey
 
Not Only Streams for Akademia JLabs
Konrad Malawski
 
Building trust within the organization, first steps towards DevOps
Guido Serra
 
OSDC 2014: Devdas Bhagat - Graphite: Graphs for the modern age
NETWAYS
 
Avatar 2.0
David Delabassee
 
Beyond the Hype: 4 Years of Go in Production
C4Media
 
Breaking The Clustering Limits @ AlphaCSP JavaEdge 2007
Baruch Sadogursky
 
Introduction to Apache Geode (Cork, Ireland)
Anthony Baker
 
Download full ebook of Flex on Java Bernerd Allmon instant download pdf
bzuraklaasoq
 
Flex and Java
gueste65db38
 
Java tuning on GNU/Linux for busy dev
Tomek Borek
 
Experiences with Microservices at Tuenti
Andrés Viedma Peláez
 
Continuous Enterprise Development In Java Testable Solutions With Arquillian ...
nfikduw7187
 
Event driven systems
Shatabda Majumdar
 
SESP_Ovidiu_Popoviciu_Poster
Ovidiu Popoviciu
 
Go at Skroutz
AgisAnastasopoulos
 
vert.x - asynchronous event-driven web applications on the JVM
jbandi
 
Ad

Recently uploaded (20)

PPTX
Online Cab Booking and Management System.pptx
diptipaneri80
 
PDF
The Effect of Artifact Removal from EEG Signals on the Detection of Epileptic...
Partho Prosad
 
PPTX
sunil mishra pptmmmmmmmmmmmmmmmmmmmmmmmmm
singhamit111
 
PPTX
Chapter_Seven_Construction_Reliability_Elective_III_Msc CM
SubashKumarBhattarai
 
PPTX
database slide on modern techniques for optimizing database queries.pptx
aky52024
 
PPTX
Civil Engineering Practices_BY Sh.JP Mishra 23.09.pptx
bineetmishra1990
 
PDF
Biodegradable Plastics: Innovations and Market Potential (www.kiu.ac.ug)
publication11
 
DOCX
SAR - EEEfdfdsdasdsdasdasdasdasdasdasdasda.docx
Kanimozhi676285
 
PDF
FLEX-LNG-Company-Presentation-Nov-2017.pdf
jbloggzs
 
PDF
Zero carbon Building Design Guidelines V4
BassemOsman1
 
PDF
67243-Cooling and Heating & Calculation.pdf
DHAKA POLYTECHNIC
 
PDF
Chad Ayach - A Versatile Aerospace Professional
Chad Ayach
 
PPT
Understanding the Key Components and Parts of a Drone System.ppt
Siva Reddy
 
PPTX
Module2 Data Base Design- ER and NF.pptx
gomathisankariv2
 
PPTX
Inventory management chapter in automation and robotics.
atisht0104
 
PDF
Advanced LangChain & RAG: Building a Financial AI Assistant with Real-Time Data
Soufiane Sejjari
 
PDF
Construction of a Thermal Vacuum Chamber for Environment Test of Triple CubeS...
2208441
 
PPTX
MULTI LEVEL DATA TRACKING USING COOJA.pptx
dollysharma12ab
 
PDF
top-5-use-cases-for-splunk-security-analytics.pdf
yaghutialireza
 
PPTX
IoT_Smart_Agriculture_Presentations.pptx
poojakumari696707
 
Online Cab Booking and Management System.pptx
diptipaneri80
 
The Effect of Artifact Removal from EEG Signals on the Detection of Epileptic...
Partho Prosad
 
sunil mishra pptmmmmmmmmmmmmmmmmmmmmmmmmm
singhamit111
 
Chapter_Seven_Construction_Reliability_Elective_III_Msc CM
SubashKumarBhattarai
 
database slide on modern techniques for optimizing database queries.pptx
aky52024
 
Civil Engineering Practices_BY Sh.JP Mishra 23.09.pptx
bineetmishra1990
 
Biodegradable Plastics: Innovations and Market Potential (www.kiu.ac.ug)
publication11
 
SAR - EEEfdfdsdasdsdasdasdasdasdasdasdasda.docx
Kanimozhi676285
 
FLEX-LNG-Company-Presentation-Nov-2017.pdf
jbloggzs
 
Zero carbon Building Design Guidelines V4
BassemOsman1
 
67243-Cooling and Heating & Calculation.pdf
DHAKA POLYTECHNIC
 
Chad Ayach - A Versatile Aerospace Professional
Chad Ayach
 
Understanding the Key Components and Parts of a Drone System.ppt
Siva Reddy
 
Module2 Data Base Design- ER and NF.pptx
gomathisankariv2
 
Inventory management chapter in automation and robotics.
atisht0104
 
Advanced LangChain & RAG: Building a Financial AI Assistant with Real-Time Data
Soufiane Sejjari
 
Construction of a Thermal Vacuum Chamber for Environment Test of Triple CubeS...
2208441
 
MULTI LEVEL DATA TRACKING USING COOJA.pptx
dollysharma12ab
 
top-5-use-cases-for-splunk-security-analytics.pdf
yaghutialireza
 
IoT_Smart_Agriculture_Presentations.pptx
poojakumari696707
 

What we do with Go

  • 1. What we do with Go Marcel Lanz, engineer, proCentric AG
  • 2. agenda • how we started with Go • RichClient/JVM Distribution • Business Event Monitoring • using Go, why Go is Fun
  • 3. a few problems solved • 2014 RichClient/JVM distribution (groupcache) • 2014 Business Event Monitoring with time series (d3/cubism) • 2014 Business Operation Monitor (ng) • 2015 OCR Solution (omnipage, rewritten (old) C++ server)
  • 4. how we started with Go • Insurance Sector • Windows “Servers”, MSSQL, Winddows File Servers, ActiveDirectories… • but JEE/JBoss Java AppServer • eclipse RCP based RichClient, about 200 users • multiple generations (32bit/64bit, old OCR 32bit Solution)
  • 5. SOAPCaller • “new” external SOAP Service • Monitoring: no SOAP support • external sensors via exit code and stdout • *.bat, java app, Windows-Script… => why not Go
  • 6. SOAPCaller • SOAPCaller • send SOAP request • receive and parse SOAP response (parse XML) • report via exit code & stdout • => one exe-File, starts & runs in 200ms, simple deployment
  • 7. network issues (1) • new infrastructure (network and servers) • RichClient App running on SMB Share • ClassNotFound Exceptions in random order • unreliable Network (L3 switches, ProxyARP issues)
  • 8. network issues (2) • “the network is slow”, “something is wrong” • blocking Clients • business processes unavailable / blocking • printers unavailable 25% of the time => L3 Switches
  • 9. RichClient/JVM distribution • Windows SW distribution not yet available • don’t run apps on “shares” • distribute them to the client • update, staging and multiple locations
  • 10. Indexing Server • walk over a given directory by configuration (JSON) • read files into memory, SHA1 hash them and put them into a map • combine configuration and the file index into a boot file • provide the boot file over HTTP
  • 12. ClientStarter (1) • ClientStarter.exe + server.json (JAVA Swing App, launch4j EXE) • on every start • download boot.json from Index Server • synchronize index files locally • boot the app
  • 13. ClientStarter (2) • a tuesday afternoon • worked more or less in second try • structs, JSON en-/decoding, filepath.Walk(), maps, “net/http”
  • 14. Issues • after a few hours, server crashed, dump in windows memory allocation/management • debug.WriteHeapDump(f.Fd()) • https://golang.org/issue/8119 (solved within 2 days) • => switched to Windows 64Bit
  • 16. ClientStarter 2.0 • multiple remote locations (DE, IT, FR) • staging, jre6 ➡ GroupCache (github.com/golang/groupcache) (small patch for server selection) ➡ expiring keys for boot.json => boot.json_20140701T165_ ➡ took another afternoon (+ a bit more to polish) ➡ runs over a year without issues
  • 18. Business Event Monitoring with time series http://d3js.org https://square.github.io/cubism “A time series is a sequence of data points, typically consisting of successive measurements made over a time interval.” [wikipedia]
  • 19. Quotes from Business Support • “its slow” • “at 9am, we had a lot of blocking clients” • “something is wrong” • “we are missing documents in ‘Postfach’”
  • 20. what do you see ?
  • 33. JEV (Jahresendverarbeitung) • 24 “Node Cluster” JBoss • 1 Batch Master • year before took x hours => distribute JBoss + config with “ClientStarter” => monitor it with EventAgent
  • 34. visual perception • colors (Cyntia Brewer) • correlate events • event count is not that important (one, a few, a lot) • see: http://edwardtufte.com/ - http://colorbrewer2.org • “PowerPoint Does Rocket Science”
  • 35. • Senior JAVA Developer: ”I can do that with JAVA too" • how to deploy that in a JVM based ops infrastructure? • which IDE do you use for that? using Go? (1)
  • 36. • stable and reliable • nice programming environment, also for Windows • easy to learn, docs and spec are enough • POLA, (principle of least astonishment) using Go? (2)
  • 37. Why Go is fun ? • Go is boring (kind of)… but thats good • simple, elegant, orthogonal, POLA • interfaces (not the same as JAVA, might be confusing for them) • channels • select
  • 38. Questions ?.. Thank you very much 2015-04-01 Marcel Lanz Senior System & Software Architect [email protected]