This document discusses the evolution of messaging solutions at Workiva from RPC to messaging. It describes how Workiva transitioned from a monolithic architecture to microservices, and needed to standardize communication between services. It details how Workiva used Thrift for RPC initially over HTTP, then moved to NATS for asynchronous messaging to improve scalability without guarantees. For guaranteed delivery, Workiva is testing Frugal over SQS. The document outlines lessons learned around complexity, product management, and being willing to change plans.
3. About Me
• Kevin Sookocheff
• Software Architect - Workiva
• Messaging Systems
• API Platform
• sookocheff.com
cc: andrewrennie - https://www.flickr.com/photos/29712408@N02
12. Thrift
• Cross-Language Type System
• Byte Transport
• Serialization Protocol
• Versioning System
• Processors
cc: kellyhogaboom - https://www.flickr.com/photos/11597293@N00
13. Thrift Server
1. Define an Interface
2. Generate Server Code
3. Choose a Protocol
4. Choose a Transport
5. Implement Processor Logic
cc: bigpresh - https://www.flickr.com/photos/62806367@N00
50. Recipient List
1. Define a channel for each
recipient
2. Inspect each message
3. Determine the list of desired
recipients
4. Forward message to all channels
associated with the recipients
cc: HeyRocker - https://www.flickr.com/photos/74785688@N00
51.
52.
53. Problem Solved
Frugal + Compact Protocol + SQS Transport = Guaranteed Messaging
cc: Brian Sawyer - https://www.flickr.com/photos/45609637@N00
54. Problem Solved
• Thrift + Frugal
• Serialization
• Standardization
• Cross-platform
cc: Brian Sawyer - https://www.flickr.com/photos/45609637@N00
55. Problem Solved
• HTTP Transport
• RPC
• One-to-one communication
cc: Brian Sawyer - https://www.flickr.com/photos/45609637@N00
56. Problem Solved
• NATS Transport
• Messaging
• Low-latency
• Not guaranteed
cc: Brian Sawyer - https://www.flickr.com/photos/45609637@N00
57. Problem Solved
• Durable Transport (SQS)
• Guaranteed delivery
• Added latency
cc: Brian Sawyer - https://www.flickr.com/photos/45609637@N00
58. Problem Solved
• Supports > 60 services
• Multi-cloud
• > 10 million msgs/day (NATS)
• ~ 20 million msgs/day (HTTP)
• Durable messaging in beta
testing
cc: Brian Sawyer - https://www.flickr.com/photos/45609637@N00