Alchemy: زیرساخت ابری بدون YAML
خلاصهٔ کاملتر
Alchemy یه فریمورک تازهست که خودش رو «Infrastructure-as-Effects» معرفی میکنه. یعنی بهجای اینکه زیرساخت رو توی فایلهای YAML یا یه ابزار جدا تعریف کنی، منابع ابری و کد اپلیکیشن رو توی یه برنامهٔ واحد با Effect (یه کتابخونهٔ TypeScript برای نوشتن عملیات خطاپذیر به شکل تایپدار) مینویسی. تو معرفی پروژه اومده که منابع، Worker و Lambda، IAM و SDK همه توی همون یه برنامه زندگی میکنن و runtime دومی در کار نیست.
ایدهٔ اصلی چیزیه که بهش میگن binding. یه فراخوانی مثل ReadWriteBucket همزمان اتصال Worker به باکت، متغیر محیطی و یه کلاینت تایپدار رو میسازه، هم موقع deploy و هم موقع اجرا. یعنی اون چسبکاری همیشگی بین تعریف زیرساخت و کد برنامه حذف میشه:
const Bucket = Cloudflare.R2.Bucket("bucket");
const bucket = yield* Cloudflare.R2.ReadWriteBucket(Bucket);
const object = yield* bucket.get(request.url);
return HttpServerResponse.stream(object!.body);نکتهٔ دومی که روش تأکید دارن اینه که خطاها میان توی سیستم تایپ. هر شکست API ابری یه خطای تگدار Effect حساب میشه که یا هندلش میکنی یا آگاهانه ولش میکنی، ولی از چشمت پنهون نمیمونه. به گفتهٔ سازندهها همین مدل باعث میشه توسعهٔ محلی، plan و deploy، تستهای اولیه و CI همه یه ذهنیت مشترک داشته باشن.
پشتیبانی فعلی شامل AWS با S3، SQS، DynamoDB، Kinesis، Lambda و EC2 و همینطور Cloudflare با Workers، R2، D1، Durable Objects و Containers میشه. یه GitHub Action رسمی هم داره که prod رو از شاخهٔ main دیپلوی میکنه، برای هر PR یه محیط پیشنمایش با اسم staging-{number} میسازه و با بستهشدن PR اونو پاک میکنه. خود تیم تأکید میکنه که پروژه هنوز alpha ـه و تغییرهای شکننده هم انتظار میره.
نکات کلیدی:
- زیرساخت و کد اپلیکیشن توی یه برنامهٔ Effect نوشته میشن، بدون YAML و بدون runtime دوم
- یه فراخوانی مثل ReadWriteBucket هم binding، هم متغیر محیطی و هم کلاینت تایپدار رو میسازه
- هر خطای API ابری یه خطای تگدار Effect ـه و توی سیستم تایپ دیده میشه
- پشتیبانی فعلی: AWS (S3، SQS، DynamoDB، Lambda، EC2) و Cloudflare (Workers، R2، D1، Durable Objects)
- GitHub Action رسمی پیشنمایش هر PR رو با اسم staging-{number} میسازه و بعد پاک میکنه
- پروژه هنوز alpha ـه و با لایسنس Apache 2.0 منتشر شده




