{"author":"tonyhb","children":[{"author":"tonyhb","children":[],"created_at":"2022-06-28T17:53:59.000Z","created_at_i":1656438839,"id":31910814,"options":[],"parent_id":31910762,"points":null,"story_id":31910762,"text":"I uh, didn&#x27;t realize that links weren&#x27;t clickable within text submissions :D<p>Here&#x27;s some good ol&#x27; hyperlinks:<p>[0]: <a href=\"https:&#x2F;&#x2F;www.inngest.com\" rel=\"nofollow\">https:&#x2F;&#x2F;www.inngest.com</a><p>[1]: <a href=\"https:&#x2F;&#x2F;www.inngest.com&#x2F;docs&#x2F;what-is-inngest\" rel=\"nofollow\">https:&#x2F;&#x2F;www.inngest.com&#x2F;docs&#x2F;what-is-inngest</a><p>[2]: <a href=\"https:&#x2F;&#x2F;www.github.com&#x2F;inngest&#x2F;inngest-cli\" rel=\"nofollow\">https:&#x2F;&#x2F;www.github.com&#x2F;inngest&#x2F;inngest-cli</a><p>[3]: <a href=\"https:&#x2F;&#x2F;www.inngest.com&#x2F;docs&#x2F;high-level-architecture\" rel=\"nofollow\">https:&#x2F;&#x2F;www.inngest.com&#x2F;docs&#x2F;high-level-architecture</a><p>[4]: <a href=\"https:&#x2F;&#x2F;www.inngest.com&#x2F;blog&#x2F;open-source-event-driven-queue\" rel=\"nofollow\">https:&#x2F;&#x2F;www.inngest.com&#x2F;blog&#x2F;open-source-event-driven-queue</a><p>[5]: <a href=\"https:&#x2F;&#x2F;github.com&#x2F;inngest&#x2F;demo-nextjs-full-stack\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;inngest&#x2F;demo-nextjs-full-stack</a>","title":null,"type":"comment","url":null},{"author":"mdaniel","children":[{"author":"tonyhb","children":[],"created_at":"2022-06-28T18:54:36.000Z","created_at_i":1656442476,"id":31911589,"options":[],"parent_id":31911496,"points":null,"story_id":31910762,"text":"We have an issue to move code to GPL after some time: <a href=\"https:&#x2F;&#x2F;github.com&#x2F;inngest&#x2F;inngest-cli&#x2F;issues&#x2F;136\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;inngest&#x2F;inngest-cli&#x2F;issues&#x2F;136</a>.<p>It&#x27;s a balance between &quot;give it to everyone including AWS with zero limits&quot; and have some form of limited, time-bound protection.<p>In short, we&#x27;re not looking for free contributors by making this open source; we want people to be able to self host.","title":null,"type":"comment","url":null}],"created_at":"2022-06-28T18:49:09.000Z","created_at_i":1656442149,"id":31911496,"options":[],"parent_id":31910762,"points":null,"story_id":31910762,"text":"SSPL <a href=\"https:&#x2F;&#x2F;github.com&#x2F;inngest&#x2F;inngest-cli&#x2F;blob&#x2F;v0.3.0&#x2F;LICENSE.md\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;inngest&#x2F;inngest-cli&#x2F;blob&#x2F;v0.3.0&#x2F;LICENSE.m...</a>","title":null,"type":"comment","url":null}],"created_at":"2022-06-28T17:49:12.000Z","created_at_i":1656438552,"id":31910762,"options":[],"parent_id":null,"points":19,"story_id":31910762,"text":"Hi HN!  We\u2019re Tony and Dan, the founders of Inngest - https:&#x2F;&#x2F;www.inngest.com.<p>We\u2019re an event-driven queueing system.  Existing queueing solutions have pretty terrible UX.  We solve this by making it simple for you to write delayed or background jobs by triggering step functions from JSON-based events.<p>At a high level, Inngest does two things:<p>- Ingest events from your systems via HTTP (pun intended)<p>- Triggers serverless functions in response to specific events \u2014 async, either immediately or delayed.<p>This allows you to build out async functions (eg. background jobs, handling webhooks) much faster, without worrying about config, queues, scaffolding, boilerplate, or infra.  Because of the decoupling, it also means cleaner code.  We talk about the benefits here [1].<p>Previously, Tony ran engineering at https:&#x2F;&#x2F;www.uniformteeth.com&#x2F; and Dan was the CTO of https:&#x2F;&#x2F;buffer.com&#x2F;.  At both places, we had to build and manage a lot of complex async logic.  You could say that Buffer is one big queue, and at Uniform we had lots of logic to run for compliance\u2026 managed via queues.  So we&#x27;re very familiar with the problem.<p>Technicals and how it\u2019s different:<p>Functions are declarative.  They specify which events trigger them, with optional conditionals.  This is great because you can then deploy functions independently from your core systems, and you get things like canary deploys, plus immediate rollbacks.<p>Each function can have many steps, represented as a DAG.  Each step can be <i>any</i> code \u2014 an AWS function, custom code in a container, an HTTP call, etc.  Edges of the DAG can also have conditions for traversal, and can \u201cpause\u201d until another event comes in, with TTLs and timeout (eg. after signup, run step 1, wait for a user to do something else, then run the next step).<p>Because the functions are event driven, we also statically type and version events for you.  This lets you inspect and generate SDKs for events, or to fail early on invalid data.  It also lets you replay functions, test with historical data, or deploy functions and re-run historical events.<p>Architecturally, we\u2019ve focused on simple standards that are easy to learn and adopt.  Events are published via HTTP requests.  Functions use args &amp; stdout.<p>You can get started without knowing any implementation details.  You only need to send events via POST requests and write functions that react to them \u2014 nothing else required.<p>What people use us for:<p>- A replacement for their current queueing infrastructure (eg. celery).<p>- Running functions after receiving webhooks<p>- Running business logic when users perform specific actions (eg. publishing things at a specific time)<p>- Handling coordinated logic (eg. when a user signs up, wait for a specific event to come in then run another step)<p>Where we\u2019re at:<p>We\u2019ve open sourced our core execution engine [2], which allows you to run an in-memory environment locally with a single command.  We\u2019re working on opening more and more of the platform to allow you to self host \u2014 that\u2019s currently our main goal.  Right now, you can use us \u201cserverless\u201d.  Because we record function state, we charge per \u2018step\u2019 of a function invoked.<p>We\u2019ve documented our core OS architecture [3], and we\u2019ve also released the function spec and interfaces in our repo. We\u2019ve talked more about about goals, vision, and why in our open sourcing post [4]. There\u2019s also a minimal demo w&#x2F; a Next.js backend [5].<p>We know we\u2019re far from feature complete. There\u2019s so much more we can do.  If there\u2019s things you\u2019d like to see, feedback, or improvements, please let us know \u2014 we\u2019d love to hear from you and make this better, and get your initial thoughts.<p>[1]: https:&#x2F;&#x2F;www.inngest.com&#x2F;docs&#x2F;what-is-inngest<p>[2]: https:&#x2F;&#x2F;www.github.com&#x2F;inngest&#x2F;inngest-cli<p>[3]: https:&#x2F;&#x2F;www.inngest.com&#x2F;docs&#x2F;high-level-architecture<p>[4]: https:&#x2F;&#x2F;www.inngest.com&#x2F;blog&#x2F;open-source-event-driven-queue<p>[5]: https:&#x2F;&#x2F;github.com&#x2F;inngest&#x2F;demo-nextjs-full-stack","title":"Show HN: Inngest \u2013 an open-source event-driven queue","type":"story","url":null}
