Comment by UnfitFootprint
6 hours ago
Could you share a bit more about your learnings on go + temporal? That combo was next in line for us to migrate _to_
6 hours ago
Could you share a bit more about your learnings on go + temporal? That combo was next in line for us to migrate _to_
Sure, basically:
- Temporal itself is written in Go and we use Go for our backend so we expected this to be a natural fit. - Temporal makes writing activities in Go very explicit and boilerplatey - This in turn makes testing more difficult than it needs to be often - Temporal doesn't play well with Go's concurrency model at all (all stuff like goroutines needs to go through its special workflows.Go) a lot more often you have to write stuff that "appeases" temporal. - The whole workflows.ExecuteActivity(...).Get(...) is weird, having futures in a language explcitly designed to avoid that is weird. - All our compute isn't done on temporal workers anyway, its done (in another AWS account, owned by the customer) in batch compute (aws batch, lambda, ec2, whatever) so our temporal code isn't CPU heavy but is highly concurrent and needs a very high reliability guarantee. - Compare that to temporal with TypeScript, where it's simple and easy to use the same code inside or outside of temporal. Testing is trivial and the code looks like "regular code".
Interesting. Perhaps the go sdk is in alignment with the go-principle of being explicit. I’ll take care to review examples of goroutines etc under temporal before calling any shots. Thanks