4 ms·
First blog post mentions Erlang/OTP: https://flawless.dev/essays/when-letting-it-crash-is-not-enough/ https://flawless.dev/essays/when-letting-it-crash-is-not-e
by rapnie 3y ago
First blog post mentions Erlang/OTP: https://flawless.dev/essays/when-letting-it-crash-is-not-enough/ https://flawless.dev/essays/when-letting-it-crash-is-not-eno...
- whalesalad 3y agoYeah. Actors and the BEAM are just the runtime. On top of that you build your system/domain logic and part of that is persisting state at regular intervals and being able to restore that state from any kind of failure. You build a durable app, or you don’t. “It’s commonly known under the name durable execution, and is so new that most developers have never heard of it” Serious? I feel like this post is very naive and perhaps disingenuous in thinking that Erlang/Elixir developers are not accounting for this. I’ve been building apps this way for a long time, regardless of language. Rewriting everything in rust doesn’t solve any of these issues. State is state. This tool is literally dagster or prefect but it’s claiming to be a revolutionary new idea.
- jcrites 3y agoThis appears to be a novel way to represent how the application interacts with state though, an API plus runtime. I've used workflow engines before, which provide similar capabilities: execute a distributed process to completion in the presence of failures. However, you have to be really careful when building workflow applications not to introduce accidental side-effects (that are not modeled in the workflow directly), or else the result will be nondeterministic (unspecified at best). I haven't used Dagster or Prefect but it looks like this tool uses a different approach. An application developer doesn't need to "model" their workflow using this tool - just implement it on top of the API that Flawless provides. It reminds me a bit of the AWS Flow framework [1] for AWS SimpleWorkflow, but when developing Flow applications (which are Java apps) you still have to be extremely careful not to accidentally introduce local side effects or nondeterminism. Because this approach provides a deterministic runtime, I see it being plausible that developers could be significantly more confident that their code is, in fact, deterministic. [1] https://aws.amazon.com/swf/details/flow/ https://aws.amazon.com/swf/details/flow/
- dogleash 3y ago> but it’s claiming to be a revolutionary new idea. I haven't touched erlang in ages, but Joe Armstrong popped up in my youtube recommendations recently. After watching the video, I just thought about microservices and IaC for a while and thought "Ha, we're really fucking this up, aren't we?"
- vr46 3y agoWhich video?
- dogleash 3y agoIt wasn't a video pitching the language and certainly not drawing any explicit parallels to modern practices. Just something that got me thinking about the distributed concurrency system of erlang for the first time in a decade. Here is a conference talk that is a pitch, if that's what you're looking for: https://www.youtube.com/watch?v=cNICGEwmXLU https://www.youtube.com/watch?v=cNICGEwmXLU
- vr46 3y agoThanks!
- tomjakubowski 3y agoEven sometimes Erlang's claims around resilience and fault tolerance are a bit overblown, yeah they should have been more humble about their system and called it Flawless :)