14 पॉइंट द्वारा GN⁺ 2023-11-24 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • बेंचमार्क के ज़रिए Windmill ने यह साबित किया है कि Airflow, Prefect, Temporal जैसे अन्य workflow engines की तुलना में यह सबसे तेज़ self-hosting किया जा सकने वाला open source workflow engine है
  • Windmill कई programming languages को support करता है और एक integrated development environment देता है, जिसमें complex SDK या deployment process के बिना कुछ ही मिनटों में workflows बनाए और test किए जा सकते हैं
  • Airflow/Prefect केवल एक runtime (Python) को support करते हैं, लेकिन Windmill Python, Typescript, Go, Bash को support करता है और BigQuery, Snowflake, Mysql, Postgresql के लिए direct SQL queries को support करता है
  • Temporal की तुलना में, Temporal job queue management में specialized है, जबकि Windmill event waiting (reactivity) feature के साथ एक durable execution engine की तरह भी काम करता है

workflow engine और job queue के बीच अंतर

  • job queue workflow engine का core होता है, और कई developers अपना logic बनाकर workflow engine का उपयोग किए बिना job queue का उपयोग करते हैं
  • SQS, Kafka, Redis with RMSQ, Orban जैसे कई queue implementations पहले से मौजूद हैं
  • कई developers job queue-केंद्रित अपना logic बनाकर workflow engine जैसा ही संतोष महसूस करते हैं (यानी अपना खुद का workflow engine बनाना)

"All-Inclusive" workflow engine क्या है

  • workflow engine distributed systems में workflows को coordinate करता है ताकि tasks पूरे किए जा सकें, और यह tasks की dependency constraints का सम्मान करता है
  • workflow engine के 5 प्रमुख लाभ:
    • resource allocation: cluster का अधिकतम उपयोग किया जा सकता है, सभी tasks को अलग-अलग resources (CPU, memory, GPU) वाले अलग-अलग workers को assign किया जा सकता है, और यह सुनिश्चित किया जा सकता है कि worker के पूरे resources task के लिए उपलब्ध हों
    • parallel processing: अगर workflow की constraints के कारण कुछ steps को parallel में चलाया जा सकता है (branch, for-loop), तो workflow engine उन steps को केवल threads पर नहीं बल्कि physically अलग कई workers पर dispatch कर सकता है
    • observability: हर task का एक unique ID होता है, और उसके input, logs, output, state आदि को अलग-अलग inspect किया जा सकता है
    • durability: अगर किसी अनपेक्षित कारण से मशीन रुक जाए या side effects हों, तो workflow को फिर से शुरू करना पड़ता है
      • workflow को अनपेक्षित events होने पर जितनी जल्दी हो सके restart हो जाना चाहिए, और इसे हासिल करने का एक तरीका idempotency है, जिसमें एक ही task को कई बार चलाने का प्रभाव एक बार चलाने जैसा ही रहता है
      • अगर निश्चित न हो, तो पूरे flow को बिना किसी परिणाम परिवर्तन के replay किया जाता है। यह आमतौर पर logs और SDK की मदद से implement किया जाता है, जहाँ task से जुड़ा unique ID log का हिस्सा होता है ताकि side effects को skip किया जा सके
      • एक दूसरा तरीका यह है कि flow state का transactional snapshot बनाया जाए और हर task के बाद state save की जाए। restart करने के लिए आख़िरी state को reload करके वहीं से execution जारी रखा जा सकता है
      • Windmill दूसरा तरीका इस्तेमाल करता है और मानता है कि user space में ज़रूरत पड़ने पर idempotency implement की जा सकती है
    • reactivity: webhook या approval जैसे events के आधार पर flow को pause किया जाता है और फिर resume किया जाता है

Windmill की तेज़ गति का राज़

  • Windmill Postgresql और Rust का उपयोग करके simple design और optimizations के ज़रिए efficiency को अधिकतम करता है

system design और queue

  • Windmill Rust में compiled एक single binary देता है, और workers तथा server Postgresql से जुड़े होते हैं, लेकिन एक-दूसरे से जुड़े नहीं होते
  • queue को Postgresql के भीतर ही implement किया गया है, और jobs को API के ज़रिए बाहर से trigger किया जा सकता है

state

  • workflow engine tasks को finite state machine (FSM) के रूप में व्यक्त करता है, और Windmill पूरे flow को ही FSM की तरह handle करता है

data passing

  • Windmill data passing के लिए JavaScript expressions, temporary folder sharing, S3 integration जैसे कई तरीके देता है

worker efficiency

  • Windmill के workers एक समय में एक task process करते हैं, और container के बिना tasks चलाकर performance को बेहतर बनाते हैं

निष्कर्ष

  • Windmill Postgresql और Rust पर आधारित एक open source, self-hosting किया जा सकने वाला serverless runtime और platform है, जो simple design और optimizations के ज़रिए बहुत तेज़ performance देता है

GN⁺ की राय

इस लेख की सबसे महत्वपूर्ण बात यह है कि Windmill कई programming languages को support करता है और complex SDK या deployment process के बिना workflows को तेज़ी से बनाने और test करने के लिए एक integrated development environment देता है। ये विशेषताएँ software developers के लिए बेहद उपयोगी हैं, और Windmill की तेज़ performance और efficiency developers को बेहतर products अधिक तेज़ी से जारी करने में मदद कर सकती हैं। यह लेख developers के लिए दिलचस्प है, खासकर उनके लिए जो अपना workflow engine बनाना चाहते हैं या मौजूदा engine को optimize करना चाहते हैं।

2 टिप्पणियां

 
xguru 2023-11-24

Windmill - Python-आधारित कंपनी के आंतरिक उपयोग के ऐप बनाने और automation platform का open source

पिछले साल मई में इसे हल्के तौर पर सार्वजनिक किया गया था, लेकिन डेवलपर ने कहा था कि अभी वह इसे public करने के लिए तैयार नहीं है, और फिर कहा था, “10 मिनट बाद मैं YC interview देखने जा रहा हूँ!” ... उसके बाद उसने comment में लिखा कि वह YC में select हो गया है।
YC में select होने के बाद डेढ़ साल तक तेज़ी से काम करने के बाद अब उसने आधिकारिक तौर पर product launch किया है।

 
GN⁺ 2023-11-24
Hacker News टिप्पणियाँ
  • ऐसा लगता है कि Windmill के डेवलपर्स ने "एक काम अच्छी तरह करो" वाली सलाह का ठीक उल्टा अपनाया है। Windmill.dev को देखकर भी यह साफ़ नहीं होता कि यह सॉफ़्टवेयर किस काम आता है। यह Retool, Airflow, Temporal का competitor है, या no-code workflow builder, या drag-and-drop UI builder, या online IDE, या फिर ढेर सारी integrations वाला टूल — यह सब काफ़ी उलझाऊ है।
  • यह सवाल है कि workflow engine की speed किसी निश्चित स्तर से ऊपर वास्तव में कितनी महत्वपूर्ण है। कई workflows में long-running jobs शामिल होती हैं, इसलिए असली बात multi-tenancy है — यानी जितने jobs उपयोगकर्ता चलाना चाहें, उन्हें इस तरह schedule और execute कर पाना कि हर job workflow engine में मानो अकेली ही हो।
  • मैं business processes को spreadsheets, निजी email और मैनेजर की याददाश्त से निकालकर web forms, uploads, automated emails और dashboards में लाना चाहता हूँ। Airtable, Smartsheet, Budibase आदि देखे, लेकिन वे project management पर ज़्यादा focused लगे, और calendar integration, email या scheduled scripts के मामले में संतोषजनक नहीं लगे। अगर डेटा के लिए API हो, या ज़रूरत पड़े तो coding की जा सके, और admin spreadsheet view के साथ कुछ UI काम कर सके जबकि programmer integrations संभाल सके, तो मैं low-code approach को प्राथमिकता दूँगा।
  • यह देखकर हैरानी होती है कि लोग इतना समय और मेहनत लगाकर लिखते हैं और फिर भी एक बार spell checker तक इस्तेमाल नहीं करते। सोचता हूँ कि क्या 2023 में भी लोग ऐसे text editors इस्तेमाल करते हैं जिनमें by default spell check नहीं होता।
  • यह बात उलझन पैदा करती है कि इसे open source कहा जा रहा है, लेकिन SSO users पर 10 लोगों की सीमा है। Open source आम तौर पर code modify करने की अनुमति देता है, तो यह 10 लोगों की सीमा कैसे enforce की जाती है, यह सवाल है। Source code देखने पर license check code दिखता है। अगर यह open source है, तो क्या कोई भी उस code को हटा नहीं सकता? अगर modify नहीं किया जा सकता, तो यह "source-available" है, "open source" नहीं। Project बढ़िया लग रहा था और मैं इसे अपने बॉस को सुझाना चाहता था, लेकिन इस हिस्से को कैसे समझाऊँ, यह समझ नहीं आता।
  • मैं HN launch के समय से Windmill को follow कर रहा हूँ, और एक साल से कम समय पहले से इसे ज़्यादा इस्तेमाल करना शुरू किया है। Discord server बहुत active है और Ruben सप्ताहांत पर भी कुछ ही मिनटों में जवाब देता है और bugs ठीक कर देता है।
  • मैं Windmill system इस्तेमाल करना चाहता हूँ, लेकिन license issues की वजह से हिचकिचा रहा हूँ। ज़्यादातर software AGPLv3 के तहत है, लेकिन README का commercial license section AGPL की काफ़ी व्यापक व्याख्या का संकेत देता है। अगर Windmill के ज़रिए functionality बनानी हो और उस कारण product को भी AGPLv3 होना पड़े, तो इसका मतलब है कि सिर्फ API के ज़रिए call करने पर भी copyright law लागू हो सकता है। तकनीकी रूप से Windmill को "पूरी तरह open source" कहना सही हो सकता है, लेकिन व्यवहार में यह "source-available" के ज़्यादा करीब लगता है। अगर Windmill नहीं चाहता कि उसके license की ऐसी व्याख्या की जाए, तो इसे स्पष्ट करना चाहिए।
  • Windmill शानदार है। इसे self-host किया जा सकता है और इसे developer experience (DX) के प्रति सच्चा रहना चाहिए। काम पर मुझे इसका उपयोग करने की ज़रूरत नहीं पड़ी, लेकिन घर पर छोटे web crawlers और yt-dlp jobs चलाने के लिए मैं इसका इस्तेमाल करता हूँ। यह बहुत मज़ेदार टूल है।
  • License को लेकर उलझन है।
  • अभी तक मुझे यह संतुलन बनाने का तरीका नहीं मिला कि code को database में store करके web IDE से edit किया जाए, या code को Git में check-in करके केवल सामान्य development और peer review process के ज़रिए बदला जाए। Windmill मुख्य रूप से database में code store करता है, लेकिन Git repository से sync करने के लिए API देता है। यह जानना दिलचस्प होगा कि क्या कोई ऐसा mechanism है जो यह नियम enforce कर सके कि कुछ scripts/features/secrets केवल उन्हीं workflows तक सीमित रहें जो दिए गए repository से import किए गए हों।