[HN Gopher] An open letter to the Temporal user community ___________________________________________________________________ An open letter to the Temporal user community Author : roopakv Score : 45 points Date : 2022-02-16 20:32 UTC (2 hours ago) (HTM) web link (docs.temporal.io) (TXT) w3m dump (docs.temporal.io) | swyx wrote: | This letter is timed with our Series B announcement today! We | just did a 1hr livestream here giving context and answering Q&A: | https://www.youtube.com/watch?v=E40KwlxZJFI | | Additional coverage for more info: | | - https://www.geekwire.com/2022/temporal-is-a-unicorn-develope... | | - https://www.theregister.com/2022/02/16/temporal_103m_funding... | | - https://siliconangle.com/2022/02/16/temporal-raises-103-mill... | | - https://dailyuknews.com/tech/temporal-raises-103m-in-series-... | | - https://finance.yahoo.com/news/temporal-io-raises-103-millio... | | - https://www.computerweekly.com/blog/CW-Developer-Network/Tem... | | - https://www.indexventures.com/perspectives/everything-is-a-w... | jffry wrote: | Congratulations! | | (EDIT: links got fixed) For clickable links, remove the leading | spaces so it doesn't get formatted as plaintext, and make | newlines double to avoid them all being on one line | swyx wrote: | ah thanks... fixed! you would think i would know that having | been on HN for like 7 years but i obviously dont do this very | often | shuntress wrote: | So... what _actually is it_? I 've seen the other comments, I've | clicked the links and scanned the blog posts. I get that it is a | "resilient workflow engine" or whatever. | | If my SQL & PHP backend serving a basic web API to a React | storefront is struggling to handle customer's states (carts, | lists, orders, etc) how is this going to help? | | What are my engineers going to actually do? | josephg wrote: | What is temporal, in plain English? I can't make heads or tails | of it from either this letter or from their homepage. | swyx wrote: | lots of answers already here, just throwing in mine :) | | Temporal is a workflow engine for managing distributed state. | It abstracts away queues, databases, schedulers, state | machines, load balancers/gateways and makes it so you don't | have to be a distributed systems expert to get this right. | | To me there are four levels of appeal: | | 1. standardized, declarative system for timeouts and retries | <-- most users start here | | 2. event sourced, highly fault tolerant internal architecture | ---> we even like the term "fault oblivious" - when you write | workflow code you can assume that it is robust to downtime in | external APIs, or Temporal Server or Temporal Workers, the | thing just keeps going until it hits a timeout or an actual | application failure! | | 3. idiomatic SDKs for "workflows as code" -> no need to learn | some JSON or YML based DSL, use all familiar software tooling | | 4. horizontally scalable architecture for every part of the | system (key differentiator vs handrolled systems... although | i'm not saying you should prematurely scale of course, just | saying this architecture lets you scale without replatforming) | | Some projects that we get compared to (although of course we're | not 1:1 competitors): Apache Airflow, AWS Step Functions, Argo | Workflows, Sidekiq, BullMQ | | My 7 min intro: https://www.youtube.com/watch?v=CQhUL5RogXI | | Architecture principles (23mins) | https://docs.temporal.io/blog/workflow-engine-principles | | Full blogpost: https://www.swyx.io/why-temporal/ | dustrider wrote: | This seems to do a better job of explaining | https://docs.temporal.io/docs/temporal-explained/introductio... | | From my take, an interesting way of dealing with scalable | workflows and batch jobs. But I need to read more into it. | chugh09 wrote: | This blog does a good job of explaining it in plain english | imo: https://docs.temporal.io/blog/charles-zedlewski-why-i- | joined... | | ctrl + F to here "Temporal is a new kind of platform. It's not | a database, cache, queue, or a means to run your code. It's a | runtime for distributed applications that transparently manages | their state at any scope and scale. By externalizing state to a | generalized platform like Temporal, application teams get to | outsource the majority of cross-cutting concerns presented by | cloud applications. In doing so, applications become" if you | dont want to read the whole thing | djmagee wrote: | Another excellent overview was just published this morning by | Bryan Offutt: | https://www.indexventures.com/perspectives/everything-is-a-w... | rylandgold wrote: | Hey, I'm Ryland and I work at Temporal. | | Temporal provides a unified backend for automatically managing | implicit application state that is normally stored in transient | queues, databases etc. Furthermore, Temporal does this without | explicitly requiring the developer to think about and manage | the state themselves. This means developers spend way more time | building stuff that actually matters, and less time writing | buggy reliability code. | | I personally find the best way to explain it is with an | analogy. Back in the late 90s many developers built | applications with C and therefore had to manage their own | memory. For a long time, this was not wasted effort as it was | the only real option. But then, Java came around and offered an | experience where developers didn't have to manage their memory. | And for the majority of apps, the performance and capabilities | of Java were more than sufficient. At this point, writing the | average application in C meant you were doing a serious amount | of undifferentiated work. Furthermore, most developers weren't | that great at memory management so choosing to do it by hand | meant more work for a worse result. | | The value proposition of Temporal is nearly identical, but | instead of manually managing memory with C, developers are | manually managing state using queues, CRON services, databases | and more. The result is a bunch of time spent doing | undifferentiated things that a computer would have done better | anyway. | HillRat wrote: | Basically, it's a distributed code-first workflow manager (as | opposed to configuration-centric solutions that use BPML). It's | a fork of Cadence, which was the author's project at Uber to | create a single workflow manager for their platform. | | The use case is basically any kind of temporally-distributed | workflow that you might use something like Airflow for, or else | otherwise hack together with some combination of event buses, | temp tables, and cronjobs. Its main charm is that you define | the logic in code rather than templates, so you can intermix | business logic directly into the workflow. | jvican wrote: | Would really love to see movement on integrating Temporal better | with Scala on the JVM, just like it supports Java and Kotlin now. | Would love to collaborate or help making this thing happen if you | have many things on your plate. | rrix2 wrote: | Congrats to the folks involved. Building a long running (hours to | days) workflow pipeline on top of Cadence was some of the most | fun I had writing code at Uber. Stellar tooling, stellar team. | Thaxll wrote: | Temporal is such a powerful tool, really don't rollout your own | job system using pub/sub, just use Temporal. | | At first it looks easy to use any pub/sub or DB to create a job | system, but there are so many edge cases, I'm not even talking | about scaling etc ... just having a solid job system that | properly handle retries, error, durability, timeout etc ... | djmagee wrote: | IMO, this is the value of Temporal. You certainly can write | your own system--but wouldn't you rather focus on writing code | that directly addresses the unique value that you or your | company offers? | yevpats wrote: | The technology is interesting but honestly I don't recommend it | to any early stage startup as it has a very high learning curve, | high maintainability, limited visibility and so on. Maybe if you | got to a stage that you have a problem that temporal can solve | and a separate team that can keep it alive and debug it. | roopakv wrote: | I get where you are coming from. However with their cloud | offering you get to forget about some of the not easy parts of | Temporal and just build something awesome while benefiting from | all that temporal has to offer :) | yevpats wrote: | I agree it might solve part of the problem but I wouldn't | jump into this on day 1 of your startup as because its a | framework/platform you will be betting your whole company on | this. Im not saying its not good just giving a warning to | very early stage startups to try and use something like this | when they have a problem and not before. | swyx wrote: | for what its worth we do have a super early stage (preseed) | startup building on us and they're happy! | https://www.youtube.com/watch?v=mHifpzMn6kA | | but yeah I would never say that we're for everyone. depends on | your knowledge, needs, usecases! | wmf wrote: | This headline really makes good news look like bad news. | jrockway wrote: | Yup. I expected a shutdown, a response to widespread harassment | allegations, or some sort of open source license change. But | it's none of those things, they got funded! | [deleted] | [deleted] | atarian wrote: | Was this company launched by Uber or is it just based on Uber's | open-source work? | | EDIT: According to https://blog.amplifypartners.com/our- | investment-in-temporal/, Temporal was founded by 2 engineers at | Uber who created an open-source orchestration engine called | Cadence and then later decided to found Temporal. | swyx wrote: | yes correct. open source project started at Uber, project leads | left and forked Cadence to start Temporal. origin story on | podcast here https://docs.temporal.io/blog/gremlin- | podcast#origin-story-o... | ignoramous wrote: | Shades of Amazon Simple Workflow, which was anything but | simple... (: It stands along side SimpleDB as a deprecated | AWS service (unofficially), no less. | | I guess, AWS gave up too soon on Maxim's vision. | swyx wrote: | i think its more that it took Max ~6 more years after | building SWF + getting experience at Google + Uber before | he finally got to the right abstraction with Temporal ___________________________________________________________________ (page generated 2022-02-16 23:00 UTC)