توی چند تا مقاله، قراره بهصورت کامل و قدمبهقدم مباحث مربوط به دورهی AWS Cloud Practitioner رو با هم بررسی کنیم. هدف این مقالات اینه که مفاهیم اساسی رایانش ابری و سرویسهای مختلف AWS رو به زبان ساده یاد بگیریم تا درک بهتری از دنیای cloud پیدا کنیم.
حالا ممکنه با خودتون بگین: "خب، AWS که به خاطر تحریمها توی ایران قابل استفاده نیست، چرا باید یادش بگیرم؟" جواب سادهست: حتی اگر مستقیم نتونیم از AWS استفاده کنیم، یادگیری این مفاهیم بهمون کمک میکنه تا رایانش ابری و سرویسهای مشابه رو بهتر بفهمیم. این دانش میتونه توی کار با پلتفرمهای دیگه مثل Azure، Google Cloud یا حتی سرویسهای ابری خصوصی هم به کارمون بیاد.
پس چه بخواین با AWS کار کنین چه نه، این سری مقالات میتونه پایهی خوبی براتون بسازه.
حتماً شنیدین که همه جا صحبت از اینه که دادهها توی "cloud" هستن یا شرکتها دارن به cloud مهاجرت میکنن. اما cloud اینجا به اون ابرهای سفید توی آسمون ربطی نداره! بلکه cloud یه مکان واقعیه که در واقع میتونه هر جایی روی زمین باشه. cloud یعنی استفاده از سرورهای قدرتمند که میتونن توی دیتاسنترهای شما یا یکی دیگه باشن.
یه مثال ساده: فکر کنین شما یه فروشگاه آنلاین پیتزا دارید. وقتی مشتریهاتون وارد سایت میشن و سفارش پیتزا میدن، پشت صحنه داره یه سرور یا شاید حتی چند تا سرور درخواستها رو مدیریت میکنن. سرورهای AWS دقیقاً همین کار رو برای شما انجام میدن. هزاران سرور در سراسر جهان توی گروههایی به اسم دیتاسنتر (Data Center) قرار دارن. این دیتاسنترها توی کشورهای مختلف پراکنده هستن و هر وقت که لازم باشه، درخواستهای شما رو مدیریت میکنن.
حالا یکی از تکنولوژیهایی که AWS برای استفاده بهتر از سرورهاش داره، مجازیسازی (Virtualization) هست. مجازیسازی مثل اینه که شما یه تیکه نون رو به چند تا تیکه کوچیکتر تقسیم کنید. این تیکههای کوچیکتر توی دنیای سرور همون ماشینهای مجازی (Virtual Machine یا VM) هستن. هر VM یه سیستم عامل، حافظه، فضای ذخیرهسازی و دسترسی شبکه مخصوص به خودش رو داره. در واقع مثل اینه که شما یه تیکه نون برای خودتون داشته باشید، ولی بقیه هم بتونن از همون نون استفاده کنن.
اینکه چطور از این منابع استفاده میکنید هم خیلی مهمه. درست مثل اینکه چطور از برق یا آب استفاده میکنید، استفاده از منابع ابری هم به دو شکل اصلی هست:
حالا که فهمیدیم cloud چیه، باید بدونیم رایانش ابری (Cloud Computing) به چه معناست. رایانش ابری یعنی شما به جای استفاده از سرورهای خودتون، از سرورهای AWS استفاده میکنید که توی دیتاسنترهای مختلف قرار دارن. اینجوری نیازی به راهاندازی و نگهداری دیتاسنتر خودتون ندارید و AWS همه کارها رو براتون انجام میده.
در واقع AWS یه عالمه خدمات مختلف داره که هر کدوم برای یه کاری به کار میرن:
دو تا اصطلاح پرکاربردی که توی دنیای تکنولوژی و به خصوص cloud computing زیاد میشنوید، CapEx و OpEx هستن. درک تفاوت بین این دو مدل به شما کمک میکنه تا بهتر متوجه بشید که چرا رایانش ابری (Cloud Computing) و استفاده از سرویسهایی مثل AWS، به شرکتها و سازمانها کمک میکنه که هزینههای خودشون رو بهینهتر مدیریت کنن.
در محیطهای سنتی، معمولاً هزینههای زیرساختی به شکل CapEx انجام میشه، یعنی شما باید هزینههای بالایی برای خرید سختافزار و تجهیزات پرداخت کنید و از اونها برای مدت طولانی استفاده کنید. ولی با ورود به دنیای Cloud، مدل هزینهای به سمت OpEx میره که باعث انعطافپذیری بیشتر در هزینهها میشه.
حالا بریم سراغ شش تا مزیتی که محاسبات ابری به شما میده:
حالا بیایم مزایای اصلی cloud computing رو با هم مرور کنیم:
حالا نوبت به بررسی مدلهای cloud computing میرسه. سه مدل اصلی داریم:
حالا بریم سراغ مدلهای استقرار ابری:
خب، اول از همه بیایم ببینیم این «مناطق» در AWS دقیقا چی هستن. Region در AWS به معنای یک مکان فیزیکی توی جهان واقعیه. AWS مناطق خودش رو بر اساس موقعیتهای جغرافیایی تقسیمبندی میکنه و ممکنه هر مکان جغرافیایی شامل چندین منطقه باشه. به عنوان مثال، مناطق اوهایو (Ohio) و ویرجینیای شمالی (North Virginia) هر دو زیر دسته موقعیت جغرافیایی شرق آمریکا (US East) قرار دارن.
در واقع AWS چندین منطقه در سراسر جهان داره و این مناطق کاملاً مستقل و از هم جدا هستن. این یعنی اگر یه اتفاق طبیعی مثل زلزله توی یه منطقه بیفته، مناطق دیگه تحت تأثیر قرار نمیگیرن. نکته مهم دیگه اینکه منابع (Resources) و سرویسها توی مناطق مختلف جدا از هم هستن و به طور خودکار در مناطق مختلف تکرار نمیشن. برای اینکه یه منبع رو توی چند منطقه داشته باشی، باید اون رو به طور دستی توی هر منطقهای که میخوای، تکرار کنی.
هر منطقه AWS شامل چندین ناحیه در دسترس یا همون AZ (Availability Zone) هست. هر ناحیه در دسترس شامل یه یا چند مرکز داده (Data Center) هست که از هم جدا هستن. AWS دقیقاً نمیگه که هر AZ چند تا مرکز داده داره، ولی فرض کنیم که در us-east-1a چهار تا مرکز داده وجود داره، در حالی که در 1b و 1c هر کدوم سه تا و در 1d و 1e هر کدوم دو تا مرکز داده باشن.
هر مرکز داده توی یه ساختمان جداگانه قرار داره و AWS ناحیه در دسترس رو به عنوان یه یا چند مرکز داده مستقل تعریف میکنه که از نظر منابع برق، شبکه و اتصال به طور کامل مستقل و با قابلیت پشتیبانی از همدیگه توی یه منطقه AWS قرار دارن.
یه کوئیز سریع!
حالا که مطالب رو خوندیم، بیایید یه تست کوچیک بگیریم تا ببینیم چقدر خوب یاد گرفتیم. من یه سناریو میگم و شما سه ثانیه وقت دارین تا جواب بدین.
پاسخ: خیر. برای اینکه یه اپلیکیشن Fault Tolerant باشه باید توی چندین ناحیه در دسترس اجرا بشه.
پاسخ: احتمالاً کل منطقه (Region) از دسترس خارج شده. چون نواحی در دسترس در یک منطقه قرار دارن و اگر اپلیکیشن توی چند ناحیه در دسترس باشه و همه نواحی از کار بیفتن، دلیلش میتونه خرابی کل منطقه باشه.
اول از همه، بیایم Latency رو تعریف کنیم. Latency یعنی مدت زمانی که طول میکشه تا یه وبسایت برای کاربر لود بشه. یعنی فاصله زمانی بین درخواست کاربر و دریافت پاسخ از سرور. حالا هرچی این زمان کمتر باشه (Low Latency)، یعنی وبسایت سریعتر به کاربر نمایش داده میشه، که خب یه چیز خیلی خوبه. برعکس، هرچی Latency بیشتر باشه، کاربران باید بیشتر صبر کنن تا وبسایت بارگذاری بشه و این چیز جالبی نیست.
خب حالا بریم سراغ Local Zones. Local Zones به کار ما میان که سرویسهای AWS مثل محاسبات (Compute)، ذخیرهسازی (Storage)، پایگاهداده و سایر سرویسها رو به کاربران نهایی نزدیکتر کنن. با این کار، ما میتونیم اپلیکیشنهایی که نیاز به تأخیر خیلی کم دارن (مثل بازیهای آنلاین زمان واقعی) رو بهتر اجرا کنیم. همونطور که گفتیم، هرچی Latency کمتر باشه، بهتره. Local Zones یه جورایی مثل یک بخش اضافه از مناطق (Regions) AWS هستن که پهنای باند بالا و ارتباطات امنی بین منابع محلی و منابع داخل منطقه اصلی فراهم میکنن.
Edge Locations به کاهش Latency کمک میکنن، اما برای راهاندازی منابع استفاده نمیشن. کار اصلیشون اینه که محتوا رو کش (Cache) کنن تا سریعتر به کاربر تحویل داده بشه. Edge Locations یکی از قابلیتهای سرویس CloudFront هستن، که در ادامه دوره و در بخش شبکه و تحویل محتوا (Content Delivery) بیشتر در موردش صحبت میکنیم. تعداد Edge Locations معمولاً از مناطق و نواحی در دسترس (AZs) بیشتره. این Edge Locations از شبکه اصلی AWS استفاده میکنن و وقتی به مبحث CloudFront رسیدیم، بیشتر در موردشون صحبت میکنیم.
یه کوئیز سریع!
بریم سراغ یه کوئیز سریع:
پاسخ: Local Zones باید استفاده بشه. این نواحی گسترشی از مناطق هستن که تأخیر کمتر از میلیثانیه برای اپلیکیشنهایی مثل بازیهای آنلاین زمان واقعی فراهم میکنن.
پاسخ: از Edge Locations استفاده کنید. به عنوان یکی از قابلیتهای CloudFront، Edge Locations میتونن با کش کردن دادهها تأخیر رو کاهش بدن.
فریمورکها در واقع چارچوبهایی هستن که به ما کمک میکنن تا به صورت ساختاریافته و با اصول درست، از تکنولوژیهای ابری استفاده کنیم. حالا بیاید ببینیم این فریمورکها دقیقاً چی هستن و چه کاربردی دارن.
فریمورکها به شما نقشه راه و راهنماییهای لازم رو میدن تا بتونید از خدمات ابری به بهترین شکل استفاده کنید. بهطور خاص، AWS این دو فریمورک رو ارائه کرده تا به سازمانها کمک کنه که بهراحتی بتونن از تکنولوژیهای ابری برای بهینهسازی عملیات و زیرساختهای خودشون استفاده کنن و در عین حال، خطرات و ریسکها رو به حداقل برسونن.
در واقع Cloud Adoption Framework (CAF) به عنوان یکی از ابزارهای اصلی AWS به شما کمک میکنه تا سازمان خودتون رو برای پذیرش خدمات ابری آماده کنید و عملیات دیجیتالی رو با سرعت بیشتری اجرا کنید. در واقع، این فریمورک به سازمانها کمک میکنه تا از خدمات AWS برای ایجاد تحول دیجیتال و افزایش سرعت دستیابی به نتایج کسبوکار استفاده کنن.
در واقع Cloud Adoption Framework شش پرسپکتیو (Perspective) داره که هرکدوم یکی از جنبههای کلیدی تحول دیجیتال رو پوشش میدن. پرسپکتیوها به شما کمک میکنن تا بتونید همه ابعاد مهم یک پروژه تحول دیجیتال رو پوشش بدین و اطمینان پیدا کنید که از تمام منابع و قابلیتها به درستی استفاده میشه.
باید بدونیم Cloud Adoption Framework چهار دامین (Domain) اصلی داره که هرکدوم بخشی از فرآیند تحول دیجیتال رو پوشش میدن:
فریمورک Cloud Adoption چهار فاز داره که هرکدوم بخشی از فرآیند تحول سازمانی رو پوشش میده:
خب بریم سراغ Well-Architected Framework که این هم یکی از ابزارهای مهم AWS برای کمک به سازمانها در طراحی و پیادهسازی سرویسهای بهینه و امن هست. این فریمورک از شش ستون (Pillar) اصلی تشکیل شده:
این ستونها به شما کمک میکنن تا بتونید سرویسها و سیستمهای ابری خودتون رو بهینه و با اطمینان بیشتری پیادهسازی کنید.
این هم کنسول مدیریت AWS. این کنسول، محبوبترین راه برای کار با منابع AWS هست. این کنسول از طریق مرورگر شما قابل دسترسیه و بهتون اجازه میده تا به حساب کاربری و منابع AWS خودتون دسترسی پیدا کنید. بهترین نکته درباره کنسول اینه که رابط کاربری خیلی راحت و کاربرپسندی داره و جستجو و پیدا کردن سرویسها رو ساده میکنه. این موضوع مخصوصاً برای افرادی که تازه وارد دنیای ابری شدن یا در نقشهای غیر فنی مثل مدیر پروژه کار میکنن، خیلی خوبه.
البته اگر شما تو نقشهای فنی مثل مهندس یا توسعهدهنده هستید، از کنسول میتونید برای ایجاد، تغییر یا حذف منابع استفاده کنید. حالا بیاید درباره کاربر root صحبت کنیم.
حالا توی هر حساب AWS، چندین کاربر میتونن باشن، ولی یکی از این کاربران همه چیز رو تحت کنترل داره و اون هم root user هست. این کاربر زمانی ایجاد میشه که حساب AWS رو ایجاد میکنید و تنها کاربریه که میتونه به طور کامل حساب کاربری و همه منابع داخل اون حساب رو حذف کنه. پس حفاظت از این کاربر خیلی مهمه و باید مطمئن باشید که از اون برای کارهای روزمره استفاده نمیکنید.
اولین کاری که بعد از ایجاد حساب AWS باید انجام بدید اینه که برای کاربر root احراز هویت چند عاملی (MFA) رو فعال کنید و سپس یک کاربر جدید یا گروه برای انجام کارهای روزمره در سرویس IAM (مدیریت هویت و دسترسی) ایجاد کنید.
بیاید به راههای دیگهای که میتونید به حساب AWS خودتون دسترسی پیدا کنید نگاه کنیم. اول با CLI یا رابط خط فرمان شروع میکنیم. CLI بهتون اجازه میده تا از طریق ترمینال یا پنجره دستورات، به منابع حساب خودتون دسترسی پیدا کنید. تفاوت بین CLI و کنسول مدیریت اینه که CLI بیشتر توسط توسعهدهندگان و مهندسان استفاده میشه چون با استفاده از دستورات API از طریق ترمینال کار میکنن.
یک نکته جالب: بعضی وقتها قابلیتهای جدید اول توی CLI عرضه میشن قبل از اینکه توی کنسول مدیریت در دسترس قرار بگیرن! ولی به طور کلی، اکثر کارهایی که توی کنسول میتونید انجام بدید، با CLI هم قابل انجام هست. CLI به شما دسترسی برنامهنویسی (Programmatic Access) میده. یعنی از طریق یک ابزار یا اپلیکیشن مثل CLI میتونید به منابع AWS دسترسی پیدا کنید.
> aws ec2 describe-instances --filters "Name=instance-type,Values=t2.micro" > i-012e4561 > i-012e345n > echo 'This is an example of a command that lists all of your t2.micro instances.' > This is an example of a command that lists all of your t2.micro instances.
محیط CLI از یک terminal session برای Programmatic Access استفاده میکنه. راههای دیگه برای Programmatic Access شامل استفاده از کد برنامهنویسی و SDKها (کیتهای توسعه نرمافزار) هست. SDKها میتونن با استفاده از زبانهای برنامهنویسی مثل Java، Python، C# و غیره به منابع دسترسی داشته باشن.
کوئیز سریع
حالا بریم سراغ یک سوال سریع. فرض کنید حساب AWS شما هفته گذشته ایجاد شده و شما وارد حساب شدید تا منابعی ایجاد کنید. آیا باید با root user وارد بشید؟
اگر جواب دادید که نباید از root user استفاده کنید، درست گفتید! یادتون باشه که وقتی حساب AWS رو ایجاد میکنید، اولین قدمهاتون باید فعالسازی MFA برای root user و ایجاد یک کاربر یا گروه روزمره باشه.
خب، دوستان، متأسفانه به خاطر تحریمها ما در ایران نمیتونیم به صورت مستقیم حساب AWS بسازیم. اما نگران نباشید! من اینجا با دسترسیهایی که دارم، تمام مراحل ایجاد حساب رو براتون توضیح میدم تا درک کاملی از فرآیند داشته باشین.
سناریو: ایجاد حساب AWS
فرض کنید شما مأموریت دارین یک حساب AWS جدید ایجاد کنید. اولین کار اینه که کاربر root رو ایمن کنید و سپس یک کاربر روزمره بسازید تا تیم شما بتونه از اون استفاده کنه.
برای انجام این کار، لازمه که حساب AWS خودتون رو ایجاد کنید. البته این کار در محیط آموزشی (sandbox) ما انجام نمیشه، بلکه شما باید خودتون این حساب رو بسازید.
خب، بیاید حساب AWS خودمون رو بسازیم. لینک صفحه ساخت حساب در منابع قرار داره. به گوشه بالا سمت راست صفحه میریم و روی "Create an AWS Account" کلیک میکنیم. بعد باید ایمیل root user و نام حساب کاربری خودمون رو وارد کنیم و ایمیل رو تأیید کنیم.
بعد از تأیید ایمیل، لازمه که یک رمز عبور انتخاب کنیم. فرمها رو کامل میکنیم و ادامه میدیم.
اطلاعات صورتحساب و هویت
در مرحله بعد، اطلاعات کارت بانکی رو برای صورتحساب وارد میکنیم. سپس باید شماره موبایل خودمون رو برای تأیید هویت وارد کنیم. بعد از اینکه کد تأیید رو دریافت کردیم، وارد میکنیم و ادامه میدیم.
حالا باید طرح پشتیبانی خودم ون رو انتخاب کنیم. برای این درس، من طرح پشتیبانی رایگان رو انتخاب میکنم. بعد از تکمیل مراحل، حساب ما ایجاد شده و میتونیم وارد کنسول مدیریت AWS بشیم.
اولین ورود به AWS
اولین باری که وارد حساب AWS میشیم، باید با کاربر root وارد بشیم. ایمیل و رمز عبورمون رو وارد میکنیم و وارد حساب میشیم.
حالا اولین قدم، ایمنسازی کاربر root هست. برای این کار، وارد بخش IAM یا مدیریت هویت و دسترسی میشیم. در بالای صفحه میبینیم که AWS پیشنهاد میکنه که MFA (احراز هویت چند عاملی) رو فعال کنیم. روی "Add MFA" کلیک میکنیم.
برای استفاده از MFA، به یک اپلیکیشن احراز هویت مثل Google Authenticator یا Duo Mobile نیاز دارید. من از Google Authenticator استفاده میکنم. کد QR رو اسکن میکنم و کدهای MFA رو وارد کرده و MFA رو فعال میکنم.
حالا که MFA فعال شد، مرحله بعد ایجاد یک کاربر روزمره برای انجام وظایف روزانه است. در سمت چپ روی Users کلیک میکنیم و Create User رو انتخاب میکنیم. این کاربر رو Daily User مینامیم و بهش دسترسی به کنسول میدیم.
در این مثال، ما یک کاربر IAM ایجاد میکنیم. شما میتونید از Identity Center برای ایجاد کاربران در یک محیط امنتر استفاده کنید. همچنین دسترسی برنامهنویسی رو با استفاده از کلیدها برای این مثال تنظیم میکنیم.
رمز عبور سفارشی خودمون رو تنظیم میکنیم و ادامه میدیم. در اینجا برای سادگی، دسترسی Administrator رو به این کاربر میدیم. در حالت عادی بهتره که دسترسیها رو به صورت محدود و برای منابع خاص تنظیم کنید.
حالا که کاربرمون رو با دسترسی مدیر ساختیم، میتونیم اطلاعات حساب رو کپی کنیم و از اون برای ورود کاربر جدید استفاده کنیم. از حساب کاربری خارج میشیم و به عنوان کاربر روزمره وارد میشیم.
با استفاده از account ID و نام کاربری و رمز عبور جدید وارد حساب میشیم. حالا کاربر روزمره ما آماده استفاده هست و میتونیم حساب رو با تیم خودمون به اشتراک بذاریم.
توی این قسمت، درباره آشنایی با مفاهیم ابتدایی AWS Cloud صحبت کردیم و مفاهیم کلی و اولیه مربوط به ابر و رایانش ابری رو بررسی کردیم. حالا که با این مبانی آشنا شدین، توی قسمتهای بعدی به موضوعات پیشرفتهتر میپردازیم و بخشهای مختلف AWS رو یکییکی بررسی میکنیم تا بهطور کامل با این پلتفرم ابری قدرتمند آشنا بشیم.
قسمت اول AWS Certified Cloud Practitioner : آشنایی با مفاهیم ابتدایی AWS Cloud
قسمت دوم AWS Certified Cloud Practitioner : خدمات مبتنی بر Compute
قسمت سوم AWS Certified Cloud Practitioner: فناوری و خدمات ذخیرهسازی مثل S3
قسمت چهارم AWS Certified Cloud Practitioner: خدمات شبکه و Content Delivery
قسمت پنجم AWS Certified Cloud Practitioner : آشنایی با انواع دیتابیس در AWS
و در آخر این آدرس لینکدین و توئیتر من هست خوشحال میشم در ارتباط باشیم.
🪩 Follow Linkedin Hossein Jafari🪩
🕊 Twitter 🕊