درباره نرمافزارهای ایستا میتوانیم تخمینهایی ارائه کنیم، اما زمانی که درباره چیزی صحبت میکنیم که هر روزه از آن استفاده میکنیم، اوضاع کمی متفاوت میشود. تقریباً همه ما در طول شبانهروز حداقل یکبار از گوگل استفاده میکنیم، اما ابعاد و اندازه گوگل چگونه است؟ حقیقت این است که گوگل بسیار بزرگتر از آن چیزی است که تصور میشود. گوگل را میتوان بهمثابه امپراتوری نرمافزاری عظیمی دانست که هر روزه طیف گستردهای از مهندسان، کدهای آن را بررسی میکنند. اما برای اینکه بتوانیم این مفهوم را با جزئیات بیشتری بررسی کنیم، بهتر است به درون آن وارد شویم.
نرمافزارهای مختلف از کدهای مختلفی ساخته شدهاند
نرمافزارها همگی به یک شکل از دستورات برنامهنویسی استفاده نمیکنند. برای مثال، سیستمعاملها به گونهای طراحی شدهاند که از دستورات برنامهنویسی به شکلی ایدهآل استفاده کنند. شرکتهای سازنده سیستمعاملها همواره سعی میکنند از خلاقانهترین راهکارها بهمنظور بهینهسازی کدها استفاده کنند. اما در نقطه مقابل نرمافزارهایی قرار دارند که به دلایل متعدد از حداقل کدهای برنامهنویسی استفاده میکنند. آمارهایی که در همین خصوص منتشر شدهاند، حقایق جالبی را برملا میکنند. این آمارها نشان میدهند کدهای مورد استفاده در یک برنامه آیفون بهطور متوسط کمتر از صد هزار خط کد هستند. مرورگر اینترنتی کامینو نزدیک به 200 هزار خط کد دارد. شاتل فضایی از 400 هزار خط کد تشکیل شده است. (شکل 1) جالبتر آنکه رپتورهای اف 22 تنها از دو میلیون خط کد ساخته شدهاند.
شکل 1: کدهای مورد استفاده در نرمافزارهای مختلف
این دو میلیون خط برای مدیریت آشفتگی و افزایش کارکرد این هواپیما استفاده میشوند. ویندوز 3.1 تنها از سه میلیون خط کد تشکیل شده بود. گوگل کروم پنج میلیون خط کد دارد، مرورگر فایرفاکس از 10 میلیون و اندروید از 12 میلیون خط کد استفاده میکنند. ویندوز 7 در مجموع از 40 میلیون خط کد تشکیل شده است که در مقایسه با ویندوز ایکسپی خطوط کمتری دارد و نسبت به ویندوز ویستا 10 میلیون خط کد کمتر دارد. فیسبوک از 60 میلیون خط تشکیل شده است. (شکل 2) آمارهای ارائهشده در این قسمت با آماری که از گوگل 2015 به دست آمده است، قابل مقایسه نیست.
شکل 2: کدهای مورد استفاده در پلتفرمها و محصولات مختلف
گوگل بهتنهایی میزبان دو میلیارد خط کد است. کدهایی که درون یک میلیارد فایل قرار گرفتهاند. همین موضوع باعث شده است مخزن کدهای گوگل یکی از بزرگترین مخزنهای حال حاضر جهان شناخته شود. (شکل 3)
شکل 3: مخازن گوگل
سلام بر گوگل
گوگل در حوزههای مختلف دنیای فناوری، ابزارهای متنوع سختافزاری و نرمافزاری ساخته است. در حالیکه تعدادی از این محصولات اینترنتمحور هستند، در نقطه مقابل تعداد دیگری دسکتاپمحور هستند. گوگل اغلب با موتور جستوجوگر خود شناخته میشود؛ موتور جستوجویی که همچنان بدون رقیب است. اما سرویسهای اینترنتمحور تنها بخشی از فعالیتهای این شرکت هستند. سیستمعاملهای اندروید و کروم از دیگر محصولات پرکاربرد این روزهای گوگل به شمار میروند. تمامی این محصولات در یک موضوع اتفاق نظر دارند؛ همه آنها از کدهای برنامهنویسی برای سرویسدهی به نیازهای کاربران استفاده میکنند. اما سؤال اصلی این است که چگونه میتوانیم به حقایق پشت پرده دست پیدا کنیم؟ ریچل پاتوین، مدیر مهندسی شرکت گوگل به این پرسش پاسخ میدهد. آمارها و ارقامی که ریچل پاتوین در این زمینه ارائه کرده است، نه تنها نشان از بزرگی و عظمت گوگل دارند، بلکه سم لمبرت، مدیرعامل گیتهاب را نیز به حیرت انداختهاند. سم لمبرت که خود مدیرعامل بزرگترین مخزن کدهای جهان است، سیستم مدیریت و نظارتی را که گوگل استفاده میکند، بسیار شگفتانگیز توصیف کرده است. آمارها نشان میدهند تعداد کدهایی که مهندسان گوگل در یک هفته بازبینی و اصلاح میکنند، معادل تمامی کدهایی است که در نوشتن سیستمعامل لینوکس استفاده میشود.
اسرار گوگل چیست؟
ریچل پاتوین همکاری با گوگل را از سال 2008 میلادی آغاز کرد. بر اساس تخمینهای وی، نرمافزاری که برای اجرای همه سرویسهای اینترنتی گوگل استفاده میشود، از موتور جستوجوی گوگل تا سرویس پست الکترونیک، نقشه گوگل و سایر موارد، از دو میلیارد خط کد ساخته شده است. ویندوز مایکروسافت یکی از پیچیدهترین نرمافزارهایی است که برای کامپیوترهای شخصی نوشته شده است. فرایند ساخت و توسعه این سیستمعامل از سال 1980 میلای آغاز شد. تخمینها نشان میدهد که این سیستمعامل در محدوده 50 میلیون خط کد قرار دارد. حال اگر گوگل و ویندوز مایکروسافت را با یکدیگر مقایسه کنیم، مشاهده خواهیم کرد نوشتن گوگل و سرویسهای مرتبط با آن به معنای نوشتن 40 بار سیستمعامل ویندوز است. اکنون به پرسش بنیادی دیگری میرسیم. این دو میلیارد خط کد در چه برنامههایی استفاده میشود؟ Google Search ،Google Maps Google Docs ،Google + ،Google Calendar ،Gmail و هر سرویس اینترنتی که گوگل ارائه داده است، در مجموع از این دو میلیارد خط کد استفاده میکنند. اما نکته جالب این است که همه این دو میلیارد خط کد همگی در مخزن واحدی قرار داشته و تمامی 25 هزار مهندس گوگل به آن دسترسی دارند. مخزنی که در ظاهر واحد به نظر میرسد، با عالیترین سامانه مدیریت مراکز داده گوگل مدیریت میشود. سیستم مدیریتی بهکاررفته در مهندسی این کدها به گونهای بوده است که همه مهندسان درون این سازمان در قالب سیستمعامل عظیمی به این کدها دسترسی دارند. پاتوین در این باره گفته است: «من نمیتوانم این حرف را ثابت کنم؛ اما حدس میزنم، مخزن گوگل بزرگترین مخزن موجود روی کره زمین است. گوگل نمونهای متمایز و کاملاً منحصربهفرد و مثال خوبی است که به ما نشان میدهد در عصر اینترنت زندگی میکنیم. عصری که نشان میدهد نرمافزارهای مورد استفاده تا چه اندازه پیچیده شدهاند و ما توانستهایم برای غلبه بر این پیچیدگیهای مدیریتی، متدولوژی و ابزارهای خود را به گونهای تغییر داده و ارتقا دهیم که بر این پیچیدگیها فائق آییم.» هر چند این منبع عظیم گوگل تنها در دسترس مهندسان داخلی شرکت گوگل قرار دارد، اما کارکرد این منبع بسیار شبیه به مخزن کدهای گیتهاب است. گیتهاب منبع عمومی و بازی است که در آن مهندسان میتوانند حجم زیادی از کدها را به اشتراک بگذارند. امروزه دنیای نرمافزار به سمتی پیش میرود که بهطور مرتب و منظم، نیازمند همکاریهای جهانی در زمینه بهینهسازی کدهای مورد استفاده در یک محصول است. این تنها روشی است که با استفاده از آن توانایی همگام شدن با حرکت بسیار سریع و روبهرشد سرویسهای مدرن اینترنتی را خواهیم داشت.
سم لمبرت، مدیر سیستمهای گیتهاب در همین خصوص گفته است: «شرکتی همچون گوگل که 25 هزار توسعهدهنده حرفهای در آن کار میکنند، اجازه داده است مخزن کدهایش در دسترس افرادی با تواناییهای مختلف قرار داشته باشد. طراحی و راهاندازی یک مخزن کد در این حد و اندازه، کار بسیار سختی است و به لحاظ فنی چالش بزرگی به شمار میرود. اعداد و ارقام ارائهشده در این زمینه واقعاً حیرتآور هستند. بخش بزرگی از نوآوری بهکاررفته در گیتهاب به قابلیت به اشتراکگذاری ساده کدها بازمیگردد. این به اشتراکگذاری ساده کدها توسط توسعهدهندگان، فرصتهای ارزشمندی در اختیار جامعه منبع باز قرار داده است تا با یکدیگر به تعامل، همکاری و همفکری در این زمینه بپردازند. گیتهاب در مقایسه با مخزن مورد استفاده گوگل، پروژه نرمافزاری واحد و یکپارچهای به شمار نمیرود. گیتهاب میزبان میلیونها پروژه نرمافزاری مستقل از یکدیگر است. اما گوگل در مسیری متفاوت گام بر میدارد؛ شیوه کار گوگل به این شکل است که پروژههای زیادی را تبدیل به پروژه واحدی میکند. با توجه به اینکه مهندسان باید حجم زیادی از کدها را مدیریت کنند، در نتیجه این ایده عاقلانهای نیست، اما پاتوین گفته است که گوگل این کار را به شیوهای کاربردی و قابل اجرا مدیریت کرده است.»
گوگل از سیستم مدیریت جامع استفاده میکند
گوگل سیستم خاصی را بهمنظور مدیریت کدهایش طراحی کرده است. این سیستم مدیریتی، پایپر نام دارد که با هدف اجرای سرویسهای آنلاین گوگل در سراسر زیرساخت آنلاین این شرکت کار میکند. آنگونه که پاتوین به آن اشاره کرده است، پایپر میتواند ده مرکز داده گوگل را مدیریت کند. پاتوین درباره این سیستم گفته است: «زمانی که پروژه جدیدی ایجاد میکنید، از همان ابتدای کار کتابخانه گسترده و عظیمی در اختیارتان قرار دارد. این کتابخانه کمک میکند هر چیزی را کپسولهشده و آماده در اختیار داشته باشید.» این سیستم به گونهای طراحی شده است که به مهندسان اجازه میدهد کدها را تغییر دهند و بهسرعت تغییر بهوجودآمده را در سراسر سرورهای گوگل پیادهسازی کنند. البته پایپر همراه با محدودیتهایی استفاده میشود. تعدادی از کدهای حساس و کلیدی گوگل در اختیار کارمندان ویژه قرار دارد. الگوریتمهای رتبهبندی در مخزن جداگانهای قرار دارند و فقط در دسترس کارمندان محدودی هستند. همچنین به دلیل اینکه سیستمعاملهای اندروید و کروم تحت شبکه نیستند و متفاوت با دیگر سرویسهای گوگل عمل میکنند، در نتیجه گوگل آنها را در سیستمهای کنترل نسخه جداگانهای نگهداری میکند. اما در مجموع کدهای گوگل از انسجام خوبی برخوردارند. رویکردی که گوگل استفاده میکند، باعث شده است تا همواره شاهد بروز و شکوفایی ایدهها و راهکارها در این سازمان باشیم. طراحی، پیادهسازی و مدیریت چنین سیستمی با دو چالش بزرگ روبهرو است: اول آنکه به دانش فنی بسیار زیادی نیاز دارد و دوم اینکه همواره حجم سنگینی از محاسبات در گردش است. پایپر در حدود 85 ترابایت معادل 85 هزار گیگابایت داده را مدیریت میکند. بهطور معمول در یک روز مهندسان گوگل نزدیک به 45 هزار تغییر را در کدها پیادهسازی میکنند. در حالی که سیستمعامل لینوکس از 15 میلیون خط کد در محدوده 40 هزار فایل ساخته شده است، اما در نقطه مقابل مهندسان گوگل در هفته 15 میلیون خط کد را که در محدوده 250 هزار فایل قرار دارد، ویرایش میکنند. به عبارت دیگر، مهندسان گوگل هر هفته میتوانند کل سیستمعامل لینوکس را بازبینی کنند. طبیعی است این حجم بسیار سنگین از نظارت بار سنگینی به مهندسان تحمیل میکند و این فشار سنگین باید از دوش مهندسان برداشته شود تا بهراحتی توانایی درک کدها را داشته باشند. زمانی که شناخت درستی از کدها به دست آید، آنگاه تغییرات بهگونهای اعمال خواهند شد که خللی در کار بخشهای دیگر به وجود نیاورند. تغییرات باید به شکلی پیادهسازی شوند تا ضمن برطرف کردن خطاها، توانایی حذف کدهای غیرضروری را به بهینهترین شکل ممکن داشته باشند. پایپر برای پاسخگویی به چنین مشکلاتی، جایگزین سیستم کنترل پیشین گوگل، Perforce شد. هر چند این سیستم هوشمند و مفید است، اما برای نوشتن کدها طراحی نشده است، بلکه عمدتاً برای تولید دادهها و فایلهای پیکربندی که نرمافزارها اجرا میکنند، استفاده میشود. پاتوین در این باره میگوید: «برای آنکه کدها بهدرستی نگهداری و میزبانی شوند، باید از ترکیب عامل انسانی و ماشینی در این زمینه استفاده شود. هیچیک از این دو عامل به تنهایی نمیتوانند در نگهداری صحیح کدها مشارکت داشته باشند.»
شرکتهای بزرگ هر یک سیستمهایی مشابه با پایپر دارند
پایپر سیستم نظارت و نگهداری بر کدها است. برای مثال، نرمافزار اصلی که فیسبوک برای نظارت بر محصولاتش از آن استفاده میکند، میتواند از 20 میلیون خط کد پشتیبانی کند. فیسبوک نیز همانند گوگل کدها را در قالب پروژه واحدی یکپارچه کرده و با آنها کار میکند. شرکتهای مختلفی در سراسر جهان از چنین مکانیزمی برای مدیریت کدهای خود استفاده میکنند. به عبارت دیگر، زمانی که شرکتی رشد پیدا کرد و گسترده شد، مجبور است برای برونرفت از مشکلات بهوجودآمده، از چنین سیستمهایی استفاده کند. پاتوین میگوید: «ما در حال امکانسنجی برای توسعه Mercurial در مقیاس مخزن کد گوگل هستیم تا بتوانیم آن را در اختیار شرکتهای مختلف قرار دهیم.» مرکوریال، نرمافزار چند سکویی کنترل نسخه توزیعشده است که در اختیار توسعهدهندگان نرمافزار قرار دارد. مت ماکال، اولینبار در تاریخ 19 آوریل 2005، این نرمافزار را معرفی کرد. در سال 2013، فیسبوک مرکوریال را برای مدیریت حجم بالای کدهایی که در مخازنش قرار دارد، بهینهسازی کرد. این نرمافزار با انعطافپذیری زیاد، ساختار غیرمتمرکز، توسعه مشارکتی توزیعشده، قابلیتهای پیشرفته در شاخهبندی، ادغامسازی و مانند اینها طراحی شده است.
گوگل برای این منظور با متخصص برنامهنویسی برایان اوسالیوان، مدیر مهندسی فیسبوک و تعدادی از کارکنان آن در تعامل است تا راهکار جامعی در این زمینه پیادهسازی کند. هر چند امروزه تنها گوگل و فیسبوک با چنین حجم زیادی از دادهها روبهرو هستند، اما در آینده نزدیک بسیاری از شرکتها با چنین چالش عظیمی مواجه خواهند شد. شاید بتوانیم المپیک ریو 2016 را نقطه شروعی برای این داستان در نظر بگیریم. زمانی که کلاود در کارزاری همچون المپیک ریو، کارکرد ملموس، عینی و قدرتمند خود را نشان دهد، بسیاری از شرکتها را متقاعد خواهد ساخت تا به سمت این فناوری روی آورند؛ آنگاه در زمان بسیار کوتاهی بسیاری از شرکتها به سامانه مدیریت یکپارچه کدها نیاز خواهند داشت.
==============================
شاید به این مقالات هم علاقمند باشید:
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟