Tutorial Temporal: Durable Execution untuk Workflow yang Andal

# Temporal dengan Python: Durable Execution untuk Workflow yang Andal Temporal adalah platform untuk durable execution: ia memungkinkan Anda menulis logika bisnis yang berjalan lama dan bersifat stat...

By Ruby Abdullah · · tutorial
TemporalDurable ExecutionWorkflowOrchestrationDistributed SystemsPython

Temporal dengan Python: Durable Execution untuk Workflow yang Andal

Temporal adalah platform untuk durable execution: ia memungkinkan Anda menulis logika bisnis yang berjalan lama dan bersifat stateful sebagai kode biasa yang tetap bertahan ketika proses crash, saat deployment, maupun ketika infrastruktur gagal. Alih-alih merangkai queue, cron job, dan database untuk melacak "sampai mana proses order ini berjalan," Anda cukup menulis sebuah fungsi dan Temporal menjamin fungsi itu berjalan sampai selesai persis seperti yang ditulis, bahkan jika mesin yang menjalankannya mati di tengah jalan.

Apa Itu Durable Execution

Sebagian besar tool workflow yang mungkin pernah Anda lihat — Airflow, Prefect, Dagster — adalah scheduler untuk pipeline data. Mereka sangat baik dalam menjalankan DAG berisi task secara berkala dan menampilkan hasilnya. Celery adalah task queue untuk memindahkan pekerjaan latar belakang. Temporal menyelesaikan masalah yang berbeda: menjaga satu proses berumur panjang tetap benar di tengah berbagai kegagalan.

Ide intinya adalah model event-sourced replay:

  • Sebuah Workflow adalah logika bisnis Anda yang ditulis sebagai kode deterministik. Temporal tidak menyimpan variabel workflow di memori selamanya. Sebaliknya, setiap langkah penting (hasil activity, timer yang berbunyi, signal yang masuk) ditambahkan ke event history yang durable.
  • Jika proses worker crash, Temporal memulai workflow kembali pada worker lain dan mereplay event history tersebut. Setiap baris kode Anda dieksekusi ulang, tetapi alih-alih memanggil activity lagi, SDK mengembalikan hasil yang sudah tercatat. Ketika replay menyusul ke titik tempat crash terjadi, eksekusi berlanjut normal.
  • Karena replay, kode workflow harus deterministik: dengan history yang sama, ia harus mengambil jalur yang sama setiap kali. Apa pun yang non-deterministik (panggilan jaringan, angka acak, membaca jam, query database) harus terjadi di dalam sebuah Activity.

Sebuah Activity adalah fungsi biasa untuk side effect dan pekerjaan non-deterministik. Activity tidak direplay; hasilnya dicatat sekali dan dipakai ulang. Activity adalah tempat kode Anda berbicara dengan dunia luar.

Pembagian inilah yang membuat mekanismenya bekerja: workflow adalah "otak" yang durable dan bisa direplay, sedangkan activity adalah "tangan" yang menyentuh sistem eksternal.

Arsitektur Inti

Sebuah deployment Temporal memiliki beberapa komponen:

  • Temporal Server (Cluster): backend yang menyimpan event history, menjadwalkan task, serta menegakkan timeout dan retry. Ia adalah sumber kebenaran, didukung oleh database (PostgreSQL, MySQL, atau Cassandra).
  • Task Queue: queue bernama yang dipakai server untuk menyerahkan pekerjaan ke kode Anda. Worker mem-poll task queue; klien dan server merutekan task workflow dan activity ke queue tersebut.
  • Worker: proses yang Anda jalankan untuk menampung kode workflow dan activity Anda. Worker mem-poll task queue, mengeksekusi task, dan melaporkan hasil kembali ke server. Kode Anda ada di sini, bukan di server.
  • Client: cara kode aplikasi memulai workflow, mengirim signal, dan membaca state.
  • Web UI: dashboard untuk memeriksa workflow yang berjalan dan yang selesai, event history-nya, input, output, dan kegagalannya.

Server tidak pernah menjalankan kode Anda. Ia hanya mengorkestrasi. Pemisahan ini berarti Anda dapat men-deploy versi worker baru, menskalakan worker secara horizontal, dan server tetap menjaga history tetap aman.

Menyiapkan Server Pengembangan

Untuk pengembangan lokal, Temporal CLI menyertakan dev server mandiri dengan database in-memory dan Web UI.

# Instal Temporal CLI (macOS / Linux)

curl -sSf https://temporal.download/cli.sh | sh

Atau dengan Homebrew

brew install temporal

Jalankan dev server lokal dengan Web UI di http://localhost:8233

temporal server start-dev

Dev server mendengarkan koneksi SDK di localhost:7233 dan menyajikan Web UI di localhost:8233. Ia me-reset state saat restart, yang wajar untuk pengembangan. Untuk produksi Anda menjalankan cluster sungguhan atau menggunakan Temporal Cloud (dibahas nanti).

Instal Python SDK:

pip install temporalio

Artikel Terkait

Tutorial ComfyUI: Workflow Berbasis Node untuk Stable Diffusion

ComfyUI: Workflow Berbasis Node untuk Stable Diffusion ComfyUI adalah lingkungan grafis berbasis node untuk menjalankan ...

ZenML: Framework Pipeline MLOps yang Modular dan Cloud-Agnostic

ZenML: Framework Pipeline MLOps yang Modular dan Cloud-Agnostic Pendahuluan Membangun model machine learning yang akurat...

Tutorial AWS Step Functions untuk ML: Orchestrasi Workflow ML

Tutorial Lengkap AWS Step Functions untuk ML: Orkestrasi ML Workflows AWS Step Functions menyediakan orkestrasi workflow...

Tutorial Lengkap Apache Airflow: Workflow Orchestration untuk Data Pipelines

Tutorial Lengkap Apache Airflow: Workflow Orchestration untuk Data Pipelines Apache Airflow adalah platform open-source ...