4 पॉइंट द्वारा GN⁺ 2024-07-24 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Maestro: Netflix का workflow orchestrator

  • TL;DR

    • Netflix ने Maestro का source code public कर दिया है
    • GitHub repository से शुरुआत की जा सकती है, और उपयोगी लगे तो star देने का अनुरोध किया गया है
  • Maestro क्या है

    • Maestro एक general-purpose, horizontally scalable workflow orchestrator है, जिसे large-scale workflows को manage करने के लिए design किया गया है
    • यह data pipeline और machine learning model training pipeline जैसे workflows के पूरे lifecycle को manage करता है
    • उपयोगकर्ता business logic को Docker image, notebook, bash script, SQL, Python आदि कई formats में package कर सकते हैं
    • पारंपरिक workflow orchestrators, जो केवल DAG (Directed Acyclic Graph) को support करते हैं, उनसे अलग Maestro acyclic और cyclic workflows दोनों को support करता है, और इसमें foreach loop, subworkflow, conditional branching जैसे कई reusable patterns शामिल हैं
  • Maestro के साथ यात्रा

    • सैकड़ों हजार workflows को users के लिए न्यूनतम disruption के साथ सफलतापूर्वक migrate किया गया है
    • पिछले 1 साल में चलाए गए tasks में 87.5% की वृद्धि हुई है, और अब औसतन हर दिन 5 लाख tasks execute हो रहे हैं
  • Scalability और multipurpose उपयोग

    • Maestro Netflix के हजारों end users, applications और services को Workflow-as-a-Service देने वाला एक fully managed workflow orchestrator है
    • यह ETL pipelines, ML workflows, AB testing pipelines जैसे कई workflow use cases को support करता है
    • Netflix का मानना है कि क्योंकि उसके data tables एक ही data warehouse में हैं, इसलिए उन्हें संभालने के लिए एक ही orchestrator होना चाहिए
  • Maestro का परिचय

    • यह JSON format में defined workflow definitions का उपयोग करता है
    • user-provided fields और Maestro-managed fields को मिलाकर flexible और powerful orchestration definitions बनाई जाती हैं
    • workflow definition properties और version-managed workflows से मिलकर बनी होती है
    • properties में author और owner की जानकारी, execution settings आदि शामिल हैं
    • version-managed workflows में unique identifier, name, description, tags, timeout settings और priority level शामिल होते हैं
  • Workflow execution strategies

    • Sequential execution strategy: FIFO क्रम में workflows को एक-एक करके execute करता है
    • Strict sequential execution strategy: blocking error होने पर execution को रोक देता है और error को manually resolve करना पड़ता है
    • Run-first-only strategy: जब तक currently running workflow पूरा नहीं हो जाता, तब तक queue से नए workflow instances हटा देता है
    • Run-last-only strategy: केवल सबसे हाल में trigger हुआ workflow चलाता है और पहले से चल रहे instances को stop कर देता है
    • Concurrency-limited parallel execution strategy: predefined concurrency limit के अनुसार कई workflow instances को parallel में execute करता है
  • Parameter और expression language support

    • dynamic parameters और code injection को support करके workflow की flexibility और dynamism को काफी बढ़ाता है
    • security और safety concerns को address करने के लिए इसने अपना custom expression language parser विकसित किया है
    • Simple and Safe Expression Language (SEL): code injection से जुड़े risks को हल करने के लिए विकसित की गई simple और safe expression language
    • Output parameters: user execution से output parameters को system में वापस लौटाया जा सकता है
    • Parameterized workflows: user-defined parameters के आधार पर runtime में step-by-step initialize होते हैं
  • Workflow execution patterns

    • Foreach support: एक ही task को अलग-अलग parameters के साथ बार-बार execute करने के लिए उपयोग होता है
    • Conditional branching support: केवल तब आगे के steps execute करता है जब कोई specific condition पूरी होती है
    • Subworkflow support: common functionality को कई workflows में share करने देता है
  • Step runtime और step parameters

    • Step runtime interface: execution time पर task को describe करने वाला interface
    • Step parameter merging: step execution से पहले runtime parameters और tags inject करके step behavior को dynamically control करता है
  • Step dependencies और signals

    • step dependencies का उपयोग execution dependencies को express करने के लिए किया जा सकता है
    • signals ऐसे message fragments हैं जो parameter values सहित जानकारी पहुंचाते हैं
  • Breakpoints

    • workflow steps पर breakpoints सेट किए जा सकते हैं, जो code-level breakpoints की तरह काम करते हैं
    • breakpoint पर पहुंचने पर वह step "paused" state में चला जाता है और जब तक user उसे manually resume नहीं करता, workflow graph की progress रुक जाती है
  • Timeline

    • step execution timeline सहित सभी महत्वपूर्ण events को capture करता है
    • debugging के लिए उपयोगी है और step status पर insight देता है
  • Retry policy

    • failure के कारण terminal state तक पहुंच चुके steps के लिए retry policy को support करता है
    • platform errors और user-defined conditions के retries में अंतर करता है
  • Aggregated view

    • workflow instance के सभी steps की aggregated status देखी जा सकती है
    • current execution के runtime data और base aggregation को मिलाकर aggregated status calculate की जाती है
  • Rollup

    • workflow instance का high-level summary देता है
    • हर step की status और हर status में steps की संख्या का विवरण देता है
  • Maestro event publishing

    • workflow definition, workflow instance या step instance बदलने पर event बनाता है और उन्हें external systems में publish करता है
    • इन्हें internal events और external events में विभाजित किया जाता है
  • Maestro के साथ शुरुआत

    • Netflix में इसका व्यापक रूप से उपयोग हुआ है, और अब इसका source code public कर दिया गया है
    • code GitHub repository में उपलब्ध है, और सवाल या राय होने पर GitHub issue बनाने का अनुरोध किया गया है
  • आभार

    • Maestro project में योगदान देने वाले team members और Netflix के सहयोगियों को धन्यवाद दिया गया है

GN⁺ की संक्षिप्त प्रस्तुति

  • Maestro Netflix के large-scale workflows को manage करने के लिए design किया गया orchestrator है, जो business logic के कई formats को support करता है
  • dynamic parameters और code injection के जरिए यह flexibility और dynamism को काफी बढ़ाता है
  • यह कई execution strategies और patterns देता है, जिनसे complex workflows को आसानी से define और manage किया जा सकता है
  • यह Netflix के data warehouse जैसे single data source को handle करने के लिए उपयुक्त है
  • समान features देने वाले अन्य orchestrators में Apache Airflow और Prefect शामिल हैं

1 टिप्पणियां

 
GN⁺ 2024-07-24
Hacker News राय
  • कॉर्पोरेट टेक ब्लॉग और आंतरिक सिस्टम से प्रभावित था, लेकिन अब समझ आया कि कोड भी एक liability है

    • open source का उपयोग करना पसंद है, लेकिन कोड maintenance और feature addition की ज़रूरत होती है
    • जो कोड बिज़नेस के लिए महत्वपूर्ण नहीं है, वह resources की बर्बादी है
  • यह जानने की जिज्ञासा कि engineers को workflow solution से संतुष्ट होने तक कितनी बार iteration की ज़रूरत पड़ती है

    • Netflix, Uber, Amazon सभी ने कई solutions बनाए हैं
    • engineers को workflow engine बनाने में दिलचस्पी महसूस होती है
  • Windmill.dev संस्थापक की राय

    • Maestro और Windmill में काफी समानताएँ हैं
    • मुख्य अंतर:
      • Windmill Rust में लिखा गया है
      • Maestro CockroachDB का उपयोग करता है, Windmill अपना sharding algorithm उपयोग करता है
      • license का अंतर: Maestro Apache 2.0, Windmill AGPL
      • Netflix के समर्थन वाले Maestro की तुलना में Windmill एक छोटी कंपनी है
      • Maestro में self-hosting documentation और UI की कमी है
  • Activebatch इस्तेमाल करने का अनुभव साझा किया

    • Activebatch एक साधारण MS SQL DB और Windows GUI installation के साथ शक्तिशाली automation environment देता है
    • Airflow और दूसरे open source competitors जटिल हैं
    • यह अफसोस की बात है कि enterprise sales model की वजह से Activebatch व्यापक रूप से इस्तेमाल नहीं हो पाता
  • Netflix/Conductor के उपयोग को लेकर भ्रम

    • प्रोजेक्ट ऐसा दिखता है जैसे Netflix/Conductor उपयोग कर रहा हो, लेकिन वास्तव में archived version उपयोग में है
    • Orkes Conductor का उपयोग नहीं किया जा रहा
  • orchestrator पर राय

    • open source और public development शानदार हैं, लेकिन पहले से ही बहुत से orchestrators मौजूद हैं
    • नए विकल्प के commercial उपयोग में आने की संभावना कम है
  • Temporal से तुलना

    • Maestro Java में लिखा गया है, और Temporal Go में लिखा गया है
  • प्रोजेक्ट के बारे में सकारात्मक मूल्यांकन

    • ML और data engineering projects में ऐसा ही कुछ बनाना चाहता था
    • इसे test करने की उम्मीद है
  • Conductor से अंतर पर सवाल

    • कोड में काफी समानताएँ दिखती हैं
    • workflow definition language के रूप में JSON का उपयोग होता है
  • लेख की सामग्री पर आलोचना

    • ऐसा लगता है जैसे AI ने लिखा हो
    • वास्तविक use cases के example workflows की ज़रूरत है