Arahan "use workflow" Vercel Cetuskan Bantahan Pembangun Berkenaan Magic Strings dan Kebimbangan Penguncian Vendor

Pasukan Komuniti BigGo
Arahan "use workflow" Vercel Cetuskan Bantahan Pembangun Berkenaan Magic Strings dan Kebimbangan Penguncian Vendor

Pengenalan terkini Vercel terhadap Workflow Devkit, satu toolkit baharu yang direka untuk menambah ketahanan dan kebolehpercayaan kepada fungsi TypeScript, telah mencetuskan perdebatan hangat dalam kalangan komuniti pembangun. Inti kontroversi ini adalah arahan use workflow - satu magic string yang mengubah fungsi biasa menjadi workflow tahan lasak dengan percubaan semula automatik dan kegigihan keadaan. Walaupun menjanjikan penyederhanaan operasi tak segerak yang kompleks, pendekatan ini telah menarik kritikan kerana kebergantungannya pada penulisan semula kod dan potensi penguncian vendor.

Kontroversi Magic String

Sintaks use workflow mewakili penerokaan terkini Vercel ke dalam pengaturcaraan berasaskan arahan, mengikuti corak serupa seperti use server dan use client dalam Next.js. Pendekatan ini menggunakan pengisytiharan string mudah di bahagian atas fungsi untuk membolehkan ciri-ciri berkuasa seperti percubaan semula automatik, kegigihan keadaan, dan kebolehcerapan. Walau bagaimanapun, ramai pembangun berpengalaman menolak apa yang mereka lihat sebagai kebergantungan berlebihan terhadap magic strings yang mengaburkan bagaimana kod sebenarnya berfungsi.

Daripada semua pilihan sintaks yang mereka boleh pilih, mereka memilih apa yang saya katakan secara arguable adalah yang paling teruk. Jika anda mahukan satu baris, decorators digunakan secara meluas merentasi bahasa berbeza dan Typescript juga menyokongnya.

Komuniti telah mencadangkan beberapa alternatif, termasuk decorators, fungsi peringkat tinggi, dan fungsi penjana. Sesetengah berhujah bahawa decorators akan menyediakan pendekatan yang lebih standard, manakala yang lain mencadangkan pembalut percubaan semula eksplisit di sekitar panggilan fungsi individu. Kebimbangan asas adalah bahawa magic strings menjadikan tingkah laku kod kurang boleh diramal dan lebih sukar untuk didebug, terutamanya untuk pembangun yang perlu memahami dengan tepat apa yang kod mereka lakukan.

Alternatif Sintaks yang Dicadangkan oleh Komuniti:

  • Decorators (@workflow) - Lebih piawai merentas bahasa pengaturcaraan
  • Fungsi peringkat tinggi - workflow(myFunction)
  • Fungsi generator - Pendekatan JavaScript asli
  • Pembungkus cuba semula eksplisit - retry(() => myFunction())

Pelaksanaan Teknikal dan Kebimbangan Ekosistem

Di sebalik tabir, use workflow bergantung pada pemalam pengkompil SWC yang menulis semula kod semasa proses binaan. Transformasi ini membolehkan ciri seperti pelaksanaan tahan lasak dan percubaan semula automatik tanpa pembangun perlu melaksanakan pengurusan keadaan kompleks secara manual. Sistem ini secara automatik menangkap keadaan fungsi, membolehkan workflow bertahan daripada mulakan semula pelayan dan terus dari tempat ia berhenti.

Walau bagaimanapun, pendekatan ini telah menimbulkan kebimbangan tentang penguncian rangka kerja dan keserasian ekosistem. Komen menekankan bahawa pelaksanaan semasa nampaknya ketat terikat dengan Next.js dan infrastruktur Vercel, dengan sokongan terhadap rangka kerja lain yang terhadap. Beberapa pembangun menyuarakan kebimbangan tentang terperangkap dalam ekosistem Vercel, menyatakan bahawa model perniagaan sama yang memudahkan penempatan juga mencipta penguncian vendor yang berkuasa. Sifat projek sumber terbuka memberikan sedikit jaminan, tetapi persoalan tetap tentang bagaimana mudah workflow ini boleh dijalankan di luar platform Vercel.

Sokongan Framework Semasa:

  • Tersedia: Next.js, NestJS
  • Akan Datang: Svelte, Remix, Astro, Qwik
  • Memerlukan: Plugin pengkompil SWC untuk transformasi kod

Perbandingan dengan Penyelesaian Sedia Ada

Workflow Devkit Vercel memasuki ruang yang sudah diduduki oleh beberapa penyelesaian mantap. Pengulas serta-merta membuat perbandingan dengan Temporal.io, Cloudflare Workflows, dan Azure's Durable Task Framework. Sistem-sistem ini menyelesaikan masalah serupa sekitar pelaksanaan tahan lasak dan pengurusan workflow, tetapi menggunakan pendekatan teknikal yang berbeza.

Cloudflare Workflows, sebagai contoh, menggunakan panggilan fungsi eksplisit seperti step.do dan step.sleep dan bukannya penulisan semula kod. Sesetengah pembangun lebih suka pendekatan lebih eksplisit ini kerana ia menjadikan penglibatan enjin workflow jelas dalam kod. Temporal.io menawarkan penyelesaian matang dengan sokongan infrastruktur yang teguh, walaupun pengulas menyatakan ia boleh menjadi kompleks untuk disediakan dan diurus. Kemunculan pelbagai penyelesaian dalam ruang ini mencadangkan pengiktirafan semakin berkembang bahawa pendekatan tradisional untuk mengendalikan proses jangka panjang memerlukan penambahbaikan.

Penyelesaian Aliran Kerja Alternatif yang Disebut oleh Komuniti:

  • Temporal.io: Platform orkestrasi aliran kerja yang matang
  • Cloudflare Workflows: Menggunakan fungsi langkah eksplisit berbanding penulisan semula kod
  • Azure Durable Task Framework: Penyelesaian Microsoft untuk fungsi tahan lama
  • DBOS: Pendekatan sistem operasi berorientasikan pangkalan data untuk aliran kerja

Aplikasi Praktikal dan Pengalaman Pembangun

Walaupun kontroversi, Workflow Devkit menangani titik sakit sebenar dalam pembangunan aplikasi moden. Contoh yang ditunjukkan dalam pengumuman menunjukkan kes penggunaan praktikal seperti jujukan e-mel berbilang hari, workflow ejen AI, dan proses perniagaan kompleks yang memerlukan ketahanan merentasi mulakan semula dan kegagalan perkhidmatan. Untuk pembangun membina aplikasi dengan operasi berjalan panjang, mekanisme kegigihan keadaan dan percubaan semula automatik boleh mengurangkan kod boilerplate dengan ketara.

Pengalaman pembangunan muncul sebagai pedang bermata dua. Walaupun pendekatan konfigurasi sifar dan ciri kebolehcerapan automatik menarik minat pembangun yang mahu menumpu pada logik perniagaan, pendekatan magic string membimbangkan mereka yang menghargai ketelusan dan kebolehdebungan. Seperti yang dinyatakan oleh seorang pengulas, keupayaan untuk mengklik perintah dan melihat mengapa perkara tidak berfungsi menjadi terjejas apabila fungsi teras bergantung pada transformasi kod pada masa binaan.

Masa Depan Pengaturcaraan Berasaskan Arahan

Perdebatan sekitar use workflow mencerminkan ketegangan lebih luas dalam ekosistem JavaScript/TypeScript tentang bagaimana mengimbangi kemudahan pembangun dengan ketelusan kod. Vercel nampaknya bertaruh kuat pada pengaturcaraan berasaskan arahan sebagai masa depan pembangunan web, membina atas pengalaman mereka dengan arahan Next.js. Pendekatan ini mengutamakan pengalaman pembangun dan prototaip pantas berbanding kawalan dan kefahaman eksplisit.

Semasa alat ini matang, banyak bergantung pada bagaimana Vercel menangani kebimbangan komuniti sekitar ketelusan, kebolehdebungan, dan kebolehpindahan. Kehadiran pelaksanaan rujukan Postgres mencadangkan syarikat itu mengiktiraf kepentingan mengelakkan penguncian vendor sepenuhnya. Walau bagaimanapun, reaksi kuat daripada pembangun berpengalaman menunjukkan bahawa pendekatan semasa mungkin memerlukan penapisan untuk mendapat penerimaan lebih luas melebihi penonton teras Vercel.

Tindak balas komuniti pembangun terhadap Workflow Devkit menyerlahkan perdebatan berterusan tentang abstraksi lwn ketelusan dalam pembangunan web moden. Walaupun alat ini menawarkan penyelesaian menarik kepada masalah sebenar sekitar pelaksanaan tahan lasak, pilihan pelaksanaannya telah mencetuskan perbualan penting tentang hala tudi peralatan JavaScript dan keseimbangan antara magik dan keeksplisitan dalam reka bentuk rangka kerja.

Rujukan: Make any TypeScript Function Durable