diff --git a/src/content/docs/case-study/temporal.io b/src/content/docs/case-study/temporal.io new file mode 100644 index 000000000..a7f5f16d6 --- /dev/null +++ b/src/content/docs/case-study/temporal.io @@ -0,0 +1,107 @@ +--- +title: temporal.io workflow orchestration platform case study +author: Adlan Ilyasov +tags: temporal, workflow, orchestration, backend, distributed-systems +--- + +# Temporal.io Case Study: Workflows That Won't Let You Down + +## What Even is Temporal? + +So I stumbled on Temporal.io while looking for ways to make our backend more reliable - and man, this thing is cool. It's like if your regular backend workflows had a safety net. Originally built by the same folks who made AWS Step Functions, but way more flexible. + +Big names like Uber and Netflix use it for important stuff like payments and ride matching. The key thing? Your workflows **never** die, even if servers crash. As someone who's lost sleep over failed transactions, that got my attention. + +## A Bit of Backstory + +- 2019: Some smart ex-AWS engineers (including Maxim Fateev) built it +- 2021: Went open source which was huge +- 2024: Now has better Python/Go support and plays nice with Kubernetes + +## The Good Stuff + +Here's why I think Temporal stands out: + +### 1. It's Like Time Travel for Your Code +You know when your server crashes mid-process? With Temporal, it picks up right where it left off. No more: +- Duplicate orders +- Half-completed signups +- "Did that payment go through?" moments + +### 2. You Can Write Real Code +Unlike AWS Step Functions where you're stuck with JSON configurations, Temporal lets you use actual programming languages: + +```python +@workflow.defn +class OrderWorkflow: + async def run(self, order_id: str): + try: + await payment_processing(order_id) # This will retry if fails! + await ship_order(order_id) + except Error as e: + await send_failure_email(order_id) +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + +## The Beauty of Temporal + +The beauty? If the conversion fails at 3AM, Temporal picks it right back up. No more waking up to failed jobs. + +## Real-World Use Cases + +From what I've seen, Temporal shines for: + +### 1. Financial Systems +- Payment processing that can't fail +- Fraud detection pipelines +- Reconciliation jobs + +### 2. E-commerce +- Order fulfillment that survives outages +- Inventory management +- Abandoned cart recovery + +### 3. DevOps +- Deployment orchestration +- Data pipeline management +- Backup operations + +## The Good, The Bad, and The Ugly + +### 👍 Why I Like It +- **Reliability**: Stuff actually completes +- **Visibility**: See every workflow's status +- **Flexibility**: Use real code, not just YAML + +### 👎 Pain Points +- **Learning Curve**: Took me 2 weekends to get comfortable +- **Operational Overhead**: Need to run the Temporal server +- **Debugging**: Can be tricky when things go wrong + +## Alternatives Compared (Chatgpt provided this "graph") + +| Tool | Best For | Why Temporal Might Be Better | +|---------------------|---------------------|-------------------------------------| +| AWS Step Functions | AWS shops | More coding flexibility | +| Airflow | Scheduled jobs | Better for real-time ops | +| Celery | Simple tasks | Built-in retries & state | + +## Should You Use Temporal? (Based on My Research) + +After digging through docs, case studies, and developer forums, here's what I've learned about when Temporal makes sense: + +**Consider Temporal when:** +- Your application **can't afford lost workflows** (payments, medical systems, etc.) +- You're currently **writing tons of retry/recovery code** for failed operations +- Your team has **bandwidth to learn** a new paradigm (it's not plug-and-play) + +**Probably overkill for:** +- Simple **scheduled tasks** (cron jobs handle these fine) +- Teams without **distributed systems experience** (there's a learning curve) +- Projects where **"good enough" reliability** is acceptable + +## Where I Found the Best Info + +1. [Temporal Documentation](https://docs.temporal.io/) - The concepts section helped most +2. [Uber's Engineering Blog](https://eng.uber.com/) - Real war stories about why they built it +3. [Community Discussions](https://community.temporal.io/) - Saw actual pain points people hit +4. [ChatGPT] Helped with writing this in a fitting way for Github diff --git a/src/content/docs/temporal.io b/src/content/docs/temporal.io new file mode 100644 index 000000000..a7f5f16d6 --- /dev/null +++ b/src/content/docs/temporal.io @@ -0,0 +1,107 @@ +--- +title: temporal.io workflow orchestration platform case study +author: Adlan Ilyasov +tags: temporal, workflow, orchestration, backend, distributed-systems +--- + +# Temporal.io Case Study: Workflows That Won't Let You Down + +## What Even is Temporal? + +So I stumbled on Temporal.io while looking for ways to make our backend more reliable - and man, this thing is cool. It's like if your regular backend workflows had a safety net. Originally built by the same folks who made AWS Step Functions, but way more flexible. + +Big names like Uber and Netflix use it for important stuff like payments and ride matching. The key thing? Your workflows **never** die, even if servers crash. As someone who's lost sleep over failed transactions, that got my attention. + +## A Bit of Backstory + +- 2019: Some smart ex-AWS engineers (including Maxim Fateev) built it +- 2021: Went open source which was huge +- 2024: Now has better Python/Go support and plays nice with Kubernetes + +## The Good Stuff + +Here's why I think Temporal stands out: + +### 1. It's Like Time Travel for Your Code +You know when your server crashes mid-process? With Temporal, it picks up right where it left off. No more: +- Duplicate orders +- Half-completed signups +- "Did that payment go through?" moments + +### 2. You Can Write Real Code +Unlike AWS Step Functions where you're stuck with JSON configurations, Temporal lets you use actual programming languages: + +```python +@workflow.defn +class OrderWorkflow: + async def run(self, order_id: str): + try: + await payment_processing(order_id) # This will retry if fails! + await ship_order(order_id) + except Error as e: + await send_failure_email(order_id) +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + +## The Beauty of Temporal + +The beauty? If the conversion fails at 3AM, Temporal picks it right back up. No more waking up to failed jobs. + +## Real-World Use Cases + +From what I've seen, Temporal shines for: + +### 1. Financial Systems +- Payment processing that can't fail +- Fraud detection pipelines +- Reconciliation jobs + +### 2. E-commerce +- Order fulfillment that survives outages +- Inventory management +- Abandoned cart recovery + +### 3. DevOps +- Deployment orchestration +- Data pipeline management +- Backup operations + +## The Good, The Bad, and The Ugly + +### 👍 Why I Like It +- **Reliability**: Stuff actually completes +- **Visibility**: See every workflow's status +- **Flexibility**: Use real code, not just YAML + +### 👎 Pain Points +- **Learning Curve**: Took me 2 weekends to get comfortable +- **Operational Overhead**: Need to run the Temporal server +- **Debugging**: Can be tricky when things go wrong + +## Alternatives Compared (Chatgpt provided this "graph") + +| Tool | Best For | Why Temporal Might Be Better | +|---------------------|---------------------|-------------------------------------| +| AWS Step Functions | AWS shops | More coding flexibility | +| Airflow | Scheduled jobs | Better for real-time ops | +| Celery | Simple tasks | Built-in retries & state | + +## Should You Use Temporal? (Based on My Research) + +After digging through docs, case studies, and developer forums, here's what I've learned about when Temporal makes sense: + +**Consider Temporal when:** +- Your application **can't afford lost workflows** (payments, medical systems, etc.) +- You're currently **writing tons of retry/recovery code** for failed operations +- Your team has **bandwidth to learn** a new paradigm (it's not plug-and-play) + +**Probably overkill for:** +- Simple **scheduled tasks** (cron jobs handle these fine) +- Teams without **distributed systems experience** (there's a learning curve) +- Projects where **"good enough" reliability** is acceptable + +## Where I Found the Best Info + +1. [Temporal Documentation](https://docs.temporal.io/) - The concepts section helped most +2. [Uber's Engineering Blog](https://eng.uber.com/) - Real war stories about why they built it +3. [Community Discussions](https://community.temporal.io/) - Saw actual pain points people hit +4. [ChatGPT] Helped with writing this in a fitting way for Github