بازگشت به بلاگ
داستان آویاتو ۲۳ تیر ۱۴۰۵ · ۶ دقیقه مطالعه

روزی که آویاتو واقعی شد

آویاتو مدت‌ها برای ما مجموعه‌ای از کدها، سرورها و تنظیمات شبکه بود؛ تا روزی که اولین مشتری، بدون هماهنگی قبلی، از پنل یک ماشین مجازی خرید و بخشی از کارش را به ما سپرد.

آ

امیرمسعود مهرابیان

نوشته شده در ۲۳ تیر ۱۴۰۵

این مقاله را به اشتراک بگذارید:

قبل از آن روز هم آویاتو وجود داشت. دامنه‌اش ثبت شده بود، پنلش بالا می‌آمد، سروری در رک روشن بود و بخش‌هایی از محصول کم‌کم کار می‌کردند. می‌توانستیم وارد حساب کاربری شویم، پلن‌ها را ببینیم، سفارش آزمایشی ثبت کنیم و یک ماشین مجازی بسازیم. هر بار که چیزی درست کار می‌کرد، برای چند لحظه خوشحال می‌شدیم و بعد سراغ مشکل بعدی می‌رفتیم. همیشه یک صفحه‌ی نیمه‌تمام، یک خطای تازه یا تصمیمی بود که هنوز باید درباره‌اش فکر می‌کردیم. آویاتو در آن روزها برای ما واقعی بود، اما واقعیتش شبیه واقعیت یک پروژه بود؛ چیزی که ساخته بودیم و هنوز بیشتر از هرکس خودمان آن را می‌شناختیم.

شروع کار هم چندان شبیه داستان‌های باشکوه تأسیس شرکت‌ها نبود. یک سرور دست‌دوم HP DL360 Gen9 داشتیم که متعلق به محمدامین ادهمی بود. محمدامین آن را در اختیارمان گذاشت تا بتوانیم پنل را بسازیم، ماشین مجازی ایجاد کنیم، خراب کنیم، دوباره از ابتدا بسازیم و بفهمیم بسیاری از چیزهایی که روی کاغذ ساده به نظر می‌رسند، در عمل چقدر جزئیات دارند. علی زاهدی بخش شبکه را پیش می‌برد و من بیشتر درگیر برنامه‌نویسی، پنل و تجربه‌ای بودم که کاربر قرار بود ببیند. میان این دو بخش، مسیر بلندی وجود داشت؛ از دکمه‌ای که کاربر در مرورگر می‌زد تا ماشینی که باید چند لحظه بعد روی یک سرور واقعی روشن می‌شد، به شبکه متصل می‌شد و آماده‌ی استفاده بود.

بارها خودمان نقش مشتری را بازی کرده بودیم. حساب تازه می‌ساختیم، اعتبار اضافه می‌کردیم، پلنی انتخاب می‌کردیم و منتظر می‌ماندیم ببینیم فرایند تا کجا پیش می‌رود. گاهی ماشین ساخته می‌شد اما شبکه نداشت. گاهی IP تخصیص داده می‌شد اما چیزی در پنل درست نمایش داده نمی‌شد. گاهی همه‌چیز از نظر فنی درست بود، ولی تجربه‌ای که کاربر می‌دید هنوز آن‌قدر واضح نبود که بتوانیم از آن راضی باشیم. هر سفارش آزمایشی یک شماره داشت، هر ماشین یک شناسه داشت و هر خطا به بخشی از سیستم اشاره می‌کرد که باید بهتر می‌شد. همه‌چیز مهم بود، اما هنوز چیزی کم بود که با تست‌کردن خودمان نمی‌توانستیم آن را ایجاد کنیم.

آن چیز، حضور یک آدم واقعی در طرف دیگر محصول بود.

روزی اولین سفارش واقعی در پنل ثبت شد. سفارشی که خودمان برای آزمایش نساخته بودیم، از قبل برایش هماهنگ نکرده بودیم و قرار نبود بعد از چند دقیقه حذفش کنیم. یک مشتری وارد آویاتو شده بود، پلن موردنیازش را انتخاب کرده بود، هزینه را پرداخت کرده بود و منتظر بود چیزی که به او وعده داده بودیم واقعاً ساخته شود. از بیرون اتفاق بزرگی به نظر نمی‌رسید. یک رکورد تازه در دیتابیس ایجاد شده بود، مبلغی پرداخت شده بود و فرایند ساخت ماشین مجازی باید اجرا می‌شد. همان مسیری که قبلاً بارها آزمایش کرده بودیم.

اما این بار همه‌چیز فرق داشت.

تا پیش از آن، اگر فرایندی شکست می‌خورد، نتیجه‌اش برای ما یک خطا بود. می‌توانستیم لاگ را بخوانیم، کد را تغییر دهیم، ماشین را حذف کنیم و دوباره امتحان کنیم. در بدترین حالت، چند ساعت از زمان خودمان از دست می‌رفت. ولی این سفارش دیگر متعلق به ما نبود. کسی آن طرف صفحه منتظر بود. شاید می‌خواست سایتی را بالا بیاورد، پروژه‌ای را منتشر کند، دیتابیسی را منتقل کند یا کاری را که مدت‌ها عقب انداخته بود شروع کند. ما نمی‌دانستیم دقیقاً چه چیزی قرار است روی آن ماشین اجرا شود، اما می‌دانستیم برای صاحبش فقط ترکیبی از پردازنده، حافظه و فضای دیسک نیست.

فرایند ساخت شروع شد و ما آن را با دقتی بیشتر از تمام آزمایش‌های قبلی دنبال کردیم. هر مرحله‌ای که تا دیروز عادی به نظر می‌رسید، ناگهان وزن دیگری پیدا کرده بود. ساخته‌شدن دیسک، روشن‌شدن ماشین، تخصیص IP و برقرارشدن شبکه دیگر فقط مراحل یک سیستم خودکار نبودند. هرکدام بخشی از قولی بودند که به کسی داده بودیم. وقتی ماشین ساخته شد و آماده‌ی استفاده قرار گرفت، اتفاق نمایشی خاصی نیفتاد. خبری از جشن، عکس یادگاری یا لحظه‌ای سینمایی نبود. فقط صفحه‌ای بود که نشان می‌داد سفارش با موفقیت انجام شده است.

بااین‌حال، برای من همان لحظه آویاتو برای اولین بار واقعی شد.

نه به‌خاطر مبلغ آن سفارش و نه به این دلیل که می‌توانستیم بگوییم اولین فروشمان را انجام داده‌ایم. آویاتو واقعی شد چون برای اولین بار کسی بیرون از تیم، بدون اینکه مسیر ساخت آن را بداند، به نتیجه‌ی کار ما اعتماد کرده بود. او لازم نبود بداند ماشین روی کدام سرور ساخته می‌شود، شبکه چگونه به آن می‌رسد یا پشت دکمه‌ی ساخت چه تعداد فرایند در حال اجراست. قرار نبود تفاوت میان پنل، مجازی‌ساز، ذخیره‌ساز و روتر را بفهمد. او فقط انتظار داشت چیزی که خریده بود آماده باشد و وقتی به آن نیاز دارد کار کند.

اعتماد در محصولات زیرساختی معمولاً با جمله‌های بزرگ شروع نمی‌شود. کسی روز اول نمی‌آید و تمام کسب‌وکارش را بی‌قیدوشرط به یک سرویس تازه نمی‌سپارد. اعتماد گاهی با همان یک ماشین کوچک آغاز می‌شود؛ ماشینی که شاید برای ارائه‌دهنده فقط یکی از چندین ماشین موجود باشد، اما برای مشتری می‌تواند محل شروع یک ایده، درآمد یک فروشگاه یا نتیجه‌ی ماه‌ها کار باشد. آن سفارش اول به ما نشان داد که از اینجا به بعد، تصمیم‌های ما دیگر فقط روی محصول خودمان اثر نمی‌گذارند. هر به‌روزرسانی، هر تغییر شبکه، هر عملیات نگهداری و حتی نحوه‌ی نوشتن یک پیام خطا ممکن است روی کار آدم دیگری تأثیر بگذارد.

بعد از آن روز، نگاه‌کردن به فهرست ماشین‌ها هم برایم تغییر کرد. پیش از آن بیشتر شماره‌ها، وضعیت‌ها و میزان مصرف منابع را می‌دیدم. اما کم‌کم یاد گرفتم پشت هر ردیف، کسی وجود دارد که احتمالاً دلیل مشخصی برای ساختن آن ماشین داشته است. شاید بعضی ماشین‌ها میزبان پروژه‌هایی کوچک باشند که هیچ‌وقت عمومی نمی‌شوند. شاید یکی از آن‌ها فروشگاهی باشد که خانواده‌ای از درآمدش زندگی می‌کند. شاید یک توسعه‌دهنده شب‌ها روی محصولش کار کند و تمام چیزی که فعلاً دارد همان یک سرور باشد. ما لزوماً داستان همه‌ی آن‌ها را نمی‌دانیم، ولی ندانستن داستانشان چیزی از مسئولیت ما کم نمی‌کند.

واقعی‌شدن یک محصول فقط به این معنا نیست که کسی حاضر شده برای آن پول پرداخت کند. پول نشانه‌ای مهم است، اما تمام ماجرا نیست. محصول زمانی واقعی می‌شود که نبودن یا درست‌کارنکردنش بتواند روز کسی را تغییر دهد. وقتی یک اختلال ممکن است برنامه‌ی انتشار یک تیم را عقب بیندازد، یک فروشگاه را برای مدتی از دسترس خارج کند یا کسی را نیمه‌شب نگران کند، دیگر با یک پروژه‌ی شخصی روبه‌رو نیستیم. از آن لحظه به بعد، کیفیت فقط چیزی نیست که برای رضایت خودمان دنبال کنیم؛ به بخشی از تعهد ما در برابر دیگران تبدیل می‌شود.

البته آن سفارش اول به این معنا نبود که آویاتو کامل شده است. هنوز هم کامل نیست و احتمالاً هیچ‌وقت به نقطه‌ای نمی‌رسد که بتوان گفت دیگر چیزی برای بهترشدن وجود ندارد. بعد از اولین مشتری، خطاهای تازه‌ای پیدا کردیم، بخش‌هایی را بازطراحی کردیم، تصمیم‌های اشتباهی گرفتیم و بعضی چیزها را چندبار از ابتدا ساختیم. اما تفاوت این بود که دیگر فقط برای خودمان محصول نمی‌ساختیم. حالا هنگام هر تغییر باید از خودمان می‌پرسیدیم این تصمیم برای کسی که آن طرف پنل است چه معنایی دارد. آیا چیزی را برایش ساده‌تر می‌کند؟ آیا نگرانی تازه‌ای ایجاد می‌کند؟ آیا وقتی مشکلی پیش می‌آید، می‌فهمد چه اتفاقی افتاده است؟ آیا راهی دارد که با یک آدم واقعی صحبت کند؟

امروز تعداد ماشین‌ها بیشتر شده، سرور دیگری به زیرساخت اضافه شده و پنل با آن نسخه‌ی اولیه فاصله‌ی زیادی دارد. چیزهایی که روزی باید دستی انجام می‌دادیم حالا خودکار شده‌اند و بخش‌هایی که زمانی فقط روی کاغذ وجود داشتند، هر روز استفاده می‌شوند. بااین‌حال، هنوز گاهی به همان سفارش اول فکر می‌کنم. نه به‌عنوان نقطه‌ای که آویاتو از نظر تجاری شروع شد، بلکه به‌عنوان لحظه‌ای که مسئولیتش آغاز شد.

پیش از آن روز، آویاتو چیزی بود که می‌خواستیم بسازیم. بعد از آن، چیزی شد که یک نفر به آن تکیه کرده بود. شاید تفاوت میان یک پروژه و یک محصول واقعی همین باشد: روزی که دیگر فقط برای کارکردن آن خوشحال نمی‌شوی، بلکه می‌فهمی باید مراقب باشی همچنان کار کند.

برای اجرای پروژه‌تان آماده‌اید؟

پلن‌های آویاتو را ببینید یا اگر برای انتخاب سرور سؤال دارید، با ما صحبت کنید.