[GoSF] Advanced GRPC/Protobuf Solutions + Implementing Memory Monitoring [3/22]
Details
Location: Culinary Artistas, 851 Beach St (on Beach across from the bus stop near the Maritime Museum and next to GamedayVR)
Agenda
5:30pm Networking
6:00pm Speakers
• Clever Solutions with Advanced GRPC and Protobuf (Alan Shreve,) ngrok)
• Implementing a Memory Monitor within GO Applications (Urjit Singh Bhatia, chronomq)
7:30pm End
---------------------
About the Sponsor
ngrok is a simplified, API-first ingress-as-a-service trusted by over 5M developers to get their apps online faster and keep security happy. With one line of code, developers get instant ingress to services with authentication, observability, and other critical controls. All without provisioning legacy proxies, load balancers or VPNs. ngrok’s simplicity has made it a de-facto standard tool among developers, and the world’s top brands -- including GitHub, Okta, Shopify, and Twilio -- recommend it throughout their documentation.
---------------------
Talk 1: Clever Solutions with Advanced GRPC and Protobuf
GRPC and Protobuf are popular tools in the Go ecosystem. There are many resources on how to get started with GRPC and Protobuf, but documentation can be sparse when you begin leveraging more powerful features.
Alan Shreve from ngrok will walk through novel applications of Protobuf and GRPC drawn from real-world examples building ngrok’s global ingress platform, including:
- Leveraging GRPC streaming for resilient pull-based distributed systems architectures
- Writing custom code generators with protobuf annotations and grpc interceptors for safety and ergonomics
- Encoding customer-defined middleware configuration like load balancing and federated auth into nested protobuf message representations
About the Speaker
Alan Shreve is the founder and CEO of ngrok.
Talk 2: Implementing a Memory Monitor within GO Applications
Urjit Singh Bhatia will discuss methods for monitoring and managing memory within Go applications. Urjit is developing chronomq, a cancelable, globally time-sorted queue and needed to include sufficient smarts to accept new jobs without falling over due to running out of memory. His solution was to include a server-side memory monitor that applies back pressure on clients.
Since ChronoMQ sits in the middle of producers and consumers, it is useful for it to handle load in a hands off way - fast producers and slow consumers can put a lot of pressure on the system and lead to Out-Of-Memory problems. By adding a memory fence, ChronoMQ is able to dynamically slow down producers but deliberately slowing down while accepting new jobs or by outright rejecting them if a critical threshold is crossed.
This implementation was inspired by the High_Memory_Watermark mechanism used in RabbitMQ. This mechanism is going to be released as an independent package that you can use in your applications as well to architect resilient, self-healing systems.
Link: https://github.com/chronomq/chronomq
About the Speaker
Urjit Singh Bhatia is an SF based senior software engineer working with ClassDojo Inc. He has been using Go for writing backend systems and services for the past 7 years and other technologies before that. In his free time he likes cooking, hiking, powerlifting, and traveling.
*****************
Note that we are in need of speakers for future meetups. Talks should be technical and non-commercial, on a Go or Go-related topic, and of interest to Go developers. (No product pitches, please.)
If interested, email ken@frommworldwide.com and ariw@jfrog.com with a title and a few bullet points describing the talk.




