14 poin oleh GN⁺ 2023-11-24 | 2 komentar | Bagikan ke WhatsApp
  • Windmill membuktikan melalui benchmark bahwa dibandingkan mesin workflow lain seperti Airflow, Prefect, dan Temporal, ini adalah mesin workflow open-source yang dapat di-self-host paling cepat
  • Windmill mendukung berbagai bahasa pemrograman dan menyediakan lingkungan pengembangan terintegrasi yang memungkinkan membangun serta menguji workflow hanya dalam hitungan menit tanpa SDK yang rumit atau proses deployment yang kompleks
  • Airflow/Prefect hanya mendukung satu runtime (Python), tetapi Windmill mendukung Python, Typescript, Go, Bash, serta mendukung kueri SQL langsung untuk BigQuery, Snowflake, Mysql, dan Postgresql
  • Dibandingkan dengan Temporal, Temporal lebih berfokus pada pengelolaan job queue, sedangkan Windmill juga berfungsi sebagai mesin eksekusi yang durable dengan fitur menunggu event (reactivity)

Perbedaan antara mesin workflow dan job queue

  • Job queue adalah inti dari mesin workflow, dan banyak developer membangun logika mereka sendiri sehingga memanfaatkan job queue tanpa menggunakan mesin workflow
  • Sudah ada berbagai implementasi queue seperti SQS, Kafka, Redis with RMSQ, dan Orban
  • Banyak developer membangun logika mereka sendiri dengan berpusat pada job queue dan merasakan kepuasan serupa dengan mesin workflow (seolah membuat mesin workflow mereka sendiri)

Apa itu mesin workflow "all-inclusive"

  • Mesin workflow mengoordinasikan workflow dalam sistem terdistribusi untuk menyelesaikan pekerjaan sambil mematuhi batasan dependensi antar tugas
  • 5 keuntungan utama mesin workflow:
    • Alokasi resource: dapat memanfaatkan cluster semaksimal mungkin, menetapkan semua tugas ke worker berbeda dengan resource berbeda (CPU, memori, GPU), dan memastikan seluruh resource worker dapat digunakan untuk tugas tersebut
    • Pemrosesan paralel: jika karena batasan workflow beberapa tahap dapat dijalankan secara paralel (branch, for-loop), mesin workflow dapat mendispatch tahap tersebut bukan hanya ke thread, tetapi juga ke banyak worker yang terpisah secara fisik
    • Observabilitas: setiap tugas memiliki ID unik dan dapat diamati secara individual, termasuk memeriksa input, log, output, dan status
    • Durabilitas: jika mesin berhenti atau terjadi efek samping karena alasan tak terduga, workflow harus dapat dimulai ulang
      • Workflow harus bisa restart secepat mungkin saat terjadi event tak terduga, dan salah satu cara mencapainya adalah idempotensi, yaitu satu tugas yang dijalankan berkali-kali memberikan efek yang sama seperti saat dijalankan sekali
      • Jika tidak yakin, replay seluruh alur tanpa menghasilkan akibat tambahan. Ini biasanya diimplementasikan menggunakan file log dan SDK yang melewati efek samping jika ID unik yang melekat pada tugas menjadi bagian dari log
      • Cara lain adalah membuat snapshot transaksional dari state alur dan menyimpan state setelah setiap tugas. Untuk restart, cukup muat ulang state terakhir lalu lanjutkan dari sana
      • Windmill menggunakan pendekatan kedua dan mengasumsikan bahwa pengguna dapat mengimplementasikan idempotensi saat diperlukan di sisi user space
    • Reaktivitas: menjeda alur sampai dapat dilanjutkan kembali berdasarkan event seperti webhook atau approval

Rahasia kecepatan Windmill

  • Windmill memaksimalkan efisiensi melalui desain yang sederhana dan optimisasi dengan memanfaatkan Postgresql dan Rust

Desain sistem dan queue

  • Windmill menyediakan satu binary yang dikompilasi dengan Rust, dan worker maupun server terhubung ke Postgresql, tetapi tidak saling terhubung satu sama lain
  • Queue diimplementasikan langsung di dalam Postgresql, dan tugas dapat dipicu dari luar melalui API

State

  • Mesin workflow merepresentasikan tugas sebagai finite state machine (FSM), sedangkan Windmill memperlakukan keseluruhan alur itu sendiri sebagai FSM

Pengiriman data

  • Windmill menyediakan berbagai cara untuk pengiriman data, termasuk ekspresi JavaScript, berbagi folder sementara, dan integrasi S3

Efisiensi worker

  • Worker Windmill memproses satu tugas pada satu waktu dan meningkatkan performa dengan menjalankan tugas tanpa container

Kesimpulan

  • Windmill adalah runtime dan platform serverless open-source yang dapat di-self-host, berbasis Postgresql dan Rust, yang menawarkan kecepatan sangat tinggi melalui desain sederhana dan optimisasi

Opini GN⁺

Poin terpenting dari artikel ini adalah bahwa Windmill mendukung berbagai bahasa pemrograman dan menyediakan lingkungan pengembangan terintegrasi yang memungkinkan workflow dibangun dan diuji dengan cepat tanpa SDK yang rumit atau proses deployment yang kompleks. Karakteristik ini sangat berguna bagi software developer, dan performa serta efisiensi Windmill yang tinggi akan membantu developer merilis produk yang lebih baik dengan lebih cepat. Artikel ini berisi hal-hal menarik bagi developer, terutama mereka yang ingin membangun mesin workflow sendiri atau mengoptimalkan mesin yang sudah ada.

2 komentar

 
xguru 2023-11-24

Windmill - platform open source untuk pembuatan aplikasi internal perusahaan berbasis Python dan otomatisasi

Tahun lalu pada bulan Mei sempat diperkenalkan sekilas, lalu developernya bilang belum siap untuk dipublikasikan dan berkata, “10 menit lagi saya akan wawancara YC!” lalu... dia menulis komentar bahwa dia lolos YC.
Setelah lolos YC dan melaju selama satu setengah tahun, akhirnya produknya resmi diluncurkan.

 
GN⁺ 2023-11-24
Komentar Hacker News
  • Para pengembang Windmill tampaknya menjalankan nasihat "lakukan satu hal dengan baik" secara kebalikan. Bahkan setelah melihat Windmill.dev, masih tidak jelas perangkat lunak ini digunakan untuk apa. Membingungkan apakah ini pesaing Retool, Airflow, Temporal, pembuat workflow no-code, pembuat UI drag-and-drop, IDE online, atau alat dengan sangat banyak integrasi.
  • Diragukan apakah kecepatan mesin workflow menjadi penting setelah melewati tingkat tertentu. Karena banyak workflow melibatkan pekerjaan yang berjalan lama, hal yang penting adalah multi-tenancy, yaitu kemampuan untuk mendukung sebanyak mungkin pekerjaan yang diinginkan pengguna sambil menjadwalkan dan menjalankan setiap pekerjaan seolah-olah itu satu-satunya yang ada di mesin workflow.
  • Ingin memindahkan proses bisnis dari spreadsheet, email pribadi, dan ingatan manajer ke formulir web, unggahan, email otomatis, dan dashboard. Sudah melihat Airtable, Smartsheet, Budibase, dan lainnya, tetapi semuanya tampak lebih berfokus pada manajemen proyek dan kurang memuaskan dalam hal integrasi kalender, email, atau skrip terjadwal. Jika ada API untuk data atau bila perlu bisa menulis kode, dan lebih menyukai pendekatan low-code di mana admin dapat melakukan sebagian pekerjaan UI dengan tampilan spreadsheet sementara programmer menangani integrasi.
  • Heran orang mau menghabiskan begitu banyak waktu dan usaha untuk menulis, tetapi tidak pernah sekalipun memakai pemeriksa ejaan. Penasaran apakah pada tahun 2023 masih ada orang yang menggunakan editor teks yang secara bawaan tidak melakukan pemeriksaan ejaan.
  • Membingungkan bahwa ini disebut open source tetapi ada batas 10 pengguna untuk SSO. Open source umumnya mengizinkan modifikasi kode, jadi muncul pertanyaan bagaimana batas 10 orang itu ditegakkan. Setelah melihat source code, ada kode pemeriksaan lisensi. Kalau benar open source, bukankah siapa pun bisa menghapus kode itu? Jika tidak bisa dimodifikasi, maka itu adalah "source-available", bukan "open source". Proyeknya terlihat keren sehingga ingin mengusulkannya ke atasan, tetapi tidak tahu bagaimana harus menjelaskan bagian ini.
  • Sudah mengikuti Windmill sejak peluncurannya di HN, dan mulai lebih sering menggunakannya sejak kurang dari setahun lalu. Server Discord-nya sangat aktif, dan Ruben menjawab dalam hitungan menit serta memperbaiki bug bahkan di akhir pekan.
  • Ingin menggunakan sistem Windmill, tetapi ragu karena masalah lisensi. Sebagian besar perangkat lunaknya berada di bawah AGPLv3, tetapi bagian lisensi komersial di README mengisyaratkan interpretasi yang luas terhadap AGPL. Jika membangun fungsionalitas melalui Windmill berarti produk tersebut juga harus AGPLv3, itu menyiratkan bahwa bahkan pemanggilan melalui API pun bisa dianggap tercakup oleh hukum hak cipta. Ini membuat posisi Windmill sebagai "sepenuhnya open source" memang benar secara teknis, tetapi dalam praktiknya lebih dekat ke "source-available". Jika Windmill tidak ingin lisensinya ditafsirkan seperti itu, mereka perlu memperjelasnya.
  • Windmill sangat bagus. Bisa self-hosted dan terasa setia pada developer experience (DX). Tidak pernah perlu memakainya di kantor, tetapi di rumah memakainya untuk menjalankan crawler web kecil dan pekerjaan yt-dlp. Alat yang sangat menyenangkan.
  • Bingung soal lisensinya.
  • Masih belum menemukan cara untuk menyeimbangkan antara menyimpan kode di database dan mengeditnya lewat IDE web, dengan memasukkan kode ke Git dan hanya mengubahnya melalui proses pengembangan biasa serta peer review. Windmill terutama menyimpan kode di database, tetapi menyediakan API untuk sinkronisasi dari repositori Git. Penasaran apakah ada mekanisme untuk menegakkan aturan yang membatasi skrip/fungsi/rahasia tertentu hanya pada workflow yang diambil dari repositori yang disediakan.