<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های حسین جعفری</title>
        <link>https://virgool.io/feed/@h0x3ein</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-16 14:30:10</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/3478321/avatar/mMrMoH.jpg?height=120&amp;width=120</url>
            <title>حسین جعفری</title>
            <link>https://virgool.io/@h0x3ein</link>
        </image>

                    <item>
                <title>قسمت هفتم:‌ تکنولوژی و سرویس‌های migration و انتقال داده</title>
                <link>https://virgool.io/@h0x3ein/%D9%82%D8%B3%D9%85%D8%AA-%D9%87%D9%81%D8%AA%D9%85-%D8%AA%DA%A9%D9%86%D9%88%D9%84%D9%88%DA%98%DB%8C-%D9%88-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-%D9%87%D8%A7%DB%8C-migration-%D9%88-%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84-%D8%AF%D8%A7%D8%AF%D9%87-iyjvh82s9coa</link>
                <description>مقدمهتو دنیای AWS، یکی از بخش‌های مهم برای هر Cloud Practitioner موضوع «مهاجرت و انتقال» داده‌ها و سیستم‌هاست. تو این فصل، دربارۀ تکنولوژی‌ها و سرویس‌هایی صحبت می‌کنیم که کمک می‌کنن دیتامون رو به‌سرعت و با کمترین دردسر به محیط ابری انتقال بدیم. اگه درست و اصولی انجامش بدیم، هم هزینۀ نگه‌داری زیرساخت کم می‌شه و هم کسب‌وکارمون سریع‌تر و چابک‌تر پیش می‌ره. حالا قراره یه دید کلی از این سرویس‌ها و روش‌ها بگیریم تا هر وقت احتیاج داشتیم، بتونیم برای انتقال پروژه‌ها و داده‌هامون ازشون بهترین استفاده رو داشته باشیم.معرفی خانواده AWS Snow: راهکارهای انتقال داده‌های بزرگ به AWSتصور کنید که حجم زیادی از داده‌ها، مثلاً بیش از 10 ترابایت یا بیشتر، در دیتاسنتر خودتون ذخیره کردید و قصد دارید این داده‌ها رو به عنوان بخشی از مهاجرت به فضای ابری، به AWS منتقل کنید. انتقال این حجم از داده‌ها از طریق اینترنت، ممکنه زمان زیادی ببره یا حتی باعث اختلال تو شبکه بشه، اینجاست که خانواده AWS Snow به کمک ما میاد.خانواده Snow شامل دستگاه‌های فیزیکی هست که برای انتقال امن و کارآمد داده‌ها به AWS طراحی شدن.این دستگاه‌ها زمانی به کار میان که پهنای باند شبکه شما برای انتقال آنلاین کارآمد نباشه؛ چه به دلیل زیاد بودن حجم داده و چه به خاطر ناپایدار بودن شبکه‌ای که در اون کار می‌کنید.انواع دستگاه‌های AWS Snow و کاربرد آن‌هاسرویس Snowball:اگر حجم داده‌های شما حداقل 10 ترابایت هست و نیاز به پردازش اضافی ندارید،Snowball یه گزینه عالیه. Snowball در واقع یه جعبه بزرگ پر از دیسک‌هاست که به شبکه شما وصل میشه و داده‌ها رو به دستگاه انتقال میدین.سپس دستگاه رو به AWS ارسال می‌کنید تا داده‌ها در فضای ذخیره‌سازی AWS بارگذاری بشن.سرویس Snowball Edge:اگه علاوه بر انتقال 10 ترابایت یا بیشتر داده، به پردازش اولیه داده‌ها هم نیاز دارید، Snowball Edge بهترین گزینه‌ست. این دستگاه علاوه بر ذخیره داده، منابع محاسباتی داخلی داره که امکان پردازش داده‌ها رو فراهم می‌کنه. بنابراین، اگر به قابلیت محاسباتی هم نیاز دارید، Snowball Edge رو انتخاب کنید.سرویس Snowmobile:Snowmobile برای انتقال داده‌های حجیم‌تر از 10 پتابایت طراحی شده و در واقع یه کانتینر عظیم پر از دیسک‌هاست که توسط کامیون جابه‌جا میشه.این گزینه مخصوص انتقال مجموعه داده‌های بسیار بزرگه.سرویس Snowcone:Snowcone کوچک‌ترین و قابل‌حمل‌ترین عضو خانواده Snow هست. این دستگاه با ظرفیت 8 ترابایت HDD یا 14 ترابایت SSD، وزن کمی (کمتر از پنج پوند) داره و به راحتی توی کوله‌پشتی یا حتی یه جعبه پستی جا می‌گیره. این دستگاه بیشتر برای انتقال داده از مکان‌هایی که دیتاسنتر ندارن یا شبکه‌ای پایدار ندارن، مثل پایگاه‌های نظامی، استفاده میشه.شناسایی ابزارهای Database Migrationاینجا با ابزارهای مهم AWS برای مهاجرت دیتابیس‌ها آشنا می‌شیم، که دو ابزار اصلی AWS Database Migration Service (DMS) و AWS Schema Conversion Tool (SCT) هستن.سرویس AWS Database Migration Service (DMS)سرویس Database Migration Service، که به اختصار DMS هم گفته میشه، ابزاریه که برای مهاجرت دیتابیس‌ها و بارهای تحلیلی به AWS استفاده میشه. این بارهای کاری می‌تونن روی سیستم‌های on premise (دیتاسنتر محلی)، روی EC2 یا حتی در RDS باشن.فرض کنید یه دیتابیس Oracle دارین که ممکنه در دیتاسنتر شما یا روی EC2 اجرا بشه. با استفاده از DMS، می‌تونید این دیتابیس رو به سرویس RDS for Oracle منتقل کنید، که یه دیتابیس کاملا مدیریت‌شده Oracle در AWS هست. اما اگر بخواید اصلا از Oracle استفاده نکنید و بخواید به یه نوع دیتابیس دیگه مهاجرت کنید، اینجاست که AWS Schema Conversion Tool (SCT) به کمک شما میاد.سرویس AWS Schema Conversion Tool (SCT)سرویس SCT ابزاریه که به شما اجازه میده اسکیمای دیتابیس رو از یه نوع دیتابیس به نوع دیگه‌ای تبدیل کنید.برای مثال، فرض کنید دیتابیس اصلی شما Oracle هست. با استفاده از SCT، می‌تونید این داده‌ها رو به اسکیمای دیگه‌ای مثل AWS Aurora for MySQL منتقل و تبدیل کنید.مثال‌هایی از تبدیل‌های ممکن با SCTتبدیل دیتابیس MySQL به RDS for MySQL در AWSتبدیل SQL Server به Aurora for PostgreSQL در AWSتبدیل MongoDB به DocumentDB در AWSتبدیل Oracle به Redshift برای پردازش داده‌ها در AWSمعرفی AWS Transfer Family: راهکار انتقال فایل با شرکای خارجیدر واقع سرویس  AWS Transfer Family  به ما امکان انتقال فایل‌ها به AWS را می‌دهد. بیایید با یک مثال شروع کنیم. فرض کنید گروهی از شرکا، مثل مشتریان یا طرف‌های خارجی که با شما همکاری می‌کنند، نیاز دارن فایل‌هایی رو مستقیماً به AWS شما منتقل کنن و این فایل‌ها رو در فضای ذخیره‌سازی AWS شما ذخیره کنن. برای این کار، به یه راهکار انتقال فایل نیاز دارید، و این دقیقاً همون چیزیه که AWS Transfer Family فراهم می‌کنه.ویژگی‌های AWS Transfer Familyبا استفاده از AWS Transfer Family، می‌تونید انتقال فایل بین کسب‌وکارها (B2B) رو با استفاده از پروتکل‌های مختلفی انجام بدید، از جمله SFTP، AS2، FTPS و FTP. این فایل‌ها می‌تونن به AWS منتقل بشن یا از AWS به خارج ارسال بشن و برای ذخیره می‌تونن از S3 یا EFS استفاده کنن.برای مثال، تصور کنید توی یه بانک سرمایه‌گذاری کار می‌کنید و هر روز از چندین شریک مختلف داده‌ها و گزارش‌هایی در مورد فعالیت‌های بازار سهام دریافت می‌کنید. AWS Transfer Family می‌تونه راهکار ایده‌آلی برای مدیریت این انتقال فایل‌ها باشه. در این مثال، شرکا از SFTP PUT استفاده می‌کنن تا فایل‌ها رو به مقصدی دور ارسال کنن که در واقع همون فضای ذخیره‌سازی S3 یا EFS ماست.مزایای استفاده از AWS Transfer Familyمزیت اصلی استفاده از Transfer Family اینه که نیازی نیست شما راهکار انتقال فایل امنی رو به تنهایی بسازید و مدیریت کنید؛ AWS این مسئولیت رو به عهده می‌گیره. این سرویس به صورت پایدار و مقیاس‌پذیر ارائه میشه، و می‌تونید از ابزارهای انتقال فایل موجود مثل WinSCP، FileZilla، CyberDuck، LFTP و OpenSSH هم استفاده کنید.پروتکل‌های پشتیبانی شده در AWS Transfer Familyپروتکل SFTP (Secure Shell File Transfer Protocol): از SSH برای امنیت و احراز هویت استفاده می‌کنه.پروتکل AS2 (Applicability Statement 2): از HTTP و HTTPS برای انتقال فایل‌ها استفاده می‌کنه.پروتکل FTPS (File Transfer Protocol over SSL): از TLS استاندارد برای رمزگذاری ترافیک استفاده می‌کنه.پروتکل FTP (File Transfer Protocol): فایل‌ها رو به صورت متن ساده بدون رمزگذاری منتقل می‌کنه، و به دلیل عدم رمزگذاری امنیتی پیشنهاد نمی‌شه.سرویس AWS DataSync: انتقال امن و کارآمد داده‌ها به AWSفرض کنید 500 ترابایت داده دارید که می‌خواید از طریق شبکه به AWS منتقل کنید. این داده‌ها ممکنه در دیتاسنتر شما، در سرویس‌های ابری دیگه، یا حتی در سرویس‌های ذخیره‌سازی AWS در حساب‌ها یا مناطق دیگه‌ای ذخیره شده باشن. هدف شما اینه که این داده‌ها رو به سرویس‌های ذخیره‌سازی AWS مثل S3، EFS یا FSX انتقال بدید.سرویس DataSync این کار رو برای شما ساده می‌کنه و همچنین داده‌ها رو در حین انتقال از طریق شبکه رمزگذاری می‌کنه. این سرویس برای انتقال حجم‌های بزرگ داده طراحی شده و امکان بازدهی بالا و انتقال خودکار رو فراهم می‌کنه که به جلوگیری از خطاهای انسانی کمک می‌کنه. DataSync از NFS یا سیستم فایل شبکه، سیستم فایل اشتراکی SMB مورد استفاده در سرورهای ویندوز، و ذخیره‌سازی اشیا پشتیبانی می‌کنه. پرداخت این سرویس هم فقط بر اساس حجم گیگابایتی که انتقال می‌دین محاسبه میشه.موارد استفاده از AWS DataSyncبرخی از کاربردهای این سرویس شامل موارد زیر هستن:مهاجرت امن داده‌ها به AWS:انتقال تمامی داده‌ها به شکل امن و مقرون‌به‌صرفه.تکثیر داده‌ها برای بازیابی از فاجعه:به‌عنوان مثال، انتقال نسخه‌ای از داده‌ها به AWS برای بازیابی سریع در مواقع اضطراری.آرشیو داده‌های تاریخی:اگر داده‌های مالی دارید که باید برای چند سال ذخیره بشن، می‌تونید اون‌ها رو به S3 یا Glacier منتقل کنید.پردازش‌های ترکیبی یا چندابری (Hybrid/Multi-cloud):برای سناریوهایی که داده‌ها باید هم در دیتاسنتر یا ابرهای دیگه و هم در AWS نگه داشته بشن.نمونه استفاده از DataSync توسط Autodeskباید بدونیم AWS اخیراً جزئیاتی از پروژه‌ای که با شرکت Autodesk انجام داده، منتشر کرده. Autodesk، که ارائه‌دهنده نرم‌افزارهای طراحی با کامپیوتر هست، با استفاده از AWS DataSync موفق به انتقال 700 ترابایت از نسخه‌های پشتیبان پایگاه داده‌های خودشون بر روی یک لینک شبکه 1.4 گیگابیت بر ثانیه در ساعات کم‌کار شبانه شدن. این نسخه‌های پشتیبان برای بایگانی طولانی‌مدت به S3 و Glacier منتقل شدن و پروژه در 2.5 ماه تکمیل شد.معرفی AWS Application Discovery Service: راهکار کشف و جمع‌آوری اطلاعات برای مهاجرت به AWSفرض کنید که مجموعه‌ای از اپلیکیشن‌ها و دیتابیس‌ها دارید که قصد دارید اون‌ها رو به AWS مهاجرت بدید،اما یه موجودی کامل یا طراحی‌های به‌روز از زیرساخت فعلی‌تون ندارید تا به برنامه‌ریزی این مهاجرت کمک کنه.اینجاست که Application Discovery Service به کار میاد و به شما امکان میده تا سرورها و دیتابیس‌های اپلیکیشنی‌تون رو کشف کنید.سرویس Application Discovery Service اطلاعات مربوط به تنظیمات فعلی شما رو جمع‌آوری می‌کنه و از طریق یه اتصال رمزگذاری‌شده به AWS ارسال می‌کنه، و این داده‌ها در AWS Migration Hub ذخیره میشن، که یه ابزار دیگه AWS برای هماهنگ‌سازی و مدیریت مهاجرت هست.داده‌های جمع‌آوری شده توسط Application Discovery Serviceاین سرویس داده‌های مختلفی رو جمع‌آوری می‌کنه که شامل موارد زیره:موجودی سرور: اطلاعاتی در مورد سرورهای فعلی شما رو ثبت می‌کنه.پیکربندی و نسخه‌های سیستم‌عامل: شامل جزئیاتی از نسخه‌های سیستم‌عامل سرورها.استفاده از ظرفیت: اطلاعات مربوط به مصرف منابع رو جمع‌آوری می‌کنه که بهتون کمک می‌کنه سیستم‌ها رو به درستی در AWS تنظیم کنید.ارتباطات شبکه‌ای: اطلاعات مربوط به اتصال‌های ورودی و خروجی بین سرورها رو ثبت می‌کنه تا وابستگی‌ها بین سیستم‌های مختلف رو بهتر درک کنید.نحوه جمع‌آوری داده‌هااین سرویس داده‌ها رو از طریق Application Discovery Service Agent جمع‌آوری می‌کنه. شما این Agent رو روی ماشین‌های مجازی یا سرورهای فیزیکی نصب می‌کنید و این عامل داده‌ها رو به Application Discovery Service ارسال می‌کنه.اگر از VMware استفاده می‌کنید، می‌تونید از جمع‌آوری بدون عامل (Agentless Collector) هم استفاده کنید،که فقط برای مهاجرت از VMware کاربرد داره. این Collector به‌عنوان یه دستگاه مجازی در VMware vCenter نصب میشه واطلاعات ماشین‌های مجازی و میزبان‌های مرتبط با محیط vCenter شما رو جمع‌آوری می‌کنه.این داده‌ها شامل نام میزبان‌ها، آدرس‌های IP، آدرس‌های MAC، تخصیص منابع دیسک، نسخه‌های پایگاه داده،طرح‌های دیتابیس، و معیارهای مصرف ظرفیت مثل CPU، RAM و I/O دیسک هستن.معرفی AWS Application Migration Service: راهکار مهاجرت خودکار اپلیکیشن‌ها به AWSسرویس AWS Application Migration Service  یک راهکار ساده و خودکار برای مهاجرت اپلیکیشن‌ها به AWS ارائه میده.مثال کاربردیفرض کنید تعدادی اپلیکیشن دارید که می‌خواهید اون‌ها رو به AWS منتقل کنید. Application Migration Service به شما این امکان رو میده که اپلیکیشن‌ها رو از سرورهای فیزیکی، سرورهای مجازی اجرا شده روی VMware یا Microsoft Hyper-V و حتی از دیگر ارائه‌دهندگان ابری به AWS منتقل کنید. حتی می‌تونید از این سرویس برای انتقال EC2 instances بین مناطق مختلف AWS یا بین حساب‌های AWS هم استفاده کنید.این سرویس به‌طور خودکار سرورهای منبع شما رو از زیرساخت‌های فیزیکی، مجازی یا ابری تبدیل می‌کنه تا بتونن به‌طور بومی روی AWS اجرا بشن. می‌تونید از این سرویس برای انجام تست‌ها استفاده کنید تا مطمئن بشید همه چیز به‌درستی کار می‌کنه قبل از اینکه به محیط جدید منتقل بشید. این روش به‌عنوان مهاجرت lift and shift شناخته میشه، چرا که اپلیکیشن بدون هیچ تغییری و دقیقا همونطور که هست، منتقل میشه.نحوه عملکرد AWS Application Migration Serviceابتدا AWS replication agent رو روی هر سرور اپلیکیشنی که قصد دارید مهاجرتش بدید نصب می‌کنید.سپس این سرویس، به‌طور مستمر از سرورهای منبع به سرورهای مقصد در AWS داده‌ها رو تکرار می‌کنه و ترافیک همواره رمزگذاری شده تا داده‌ها امن باقی بمونن.در طول فرآیند تکرار، می‌تونید به استفاده معمول از سیستم‌ها ادامه بدید بدون اینکه تأثیری بر عملکرد سیستم‌ها داشته باشه.هزینه‌ها به این شکل هست که شما برای زیرساخت‌های AWS که ایجاد می‌کنید، پرداخت می‌کنید؛اما خود سرویس Application Migration، شامل بخش تکرار داده‌ها، تا 90 روز رایگان هست.بیشتر کاربران در همین مدت 90 روز، اپلیکیشن‌های خودشون رو به‌طور کامل تکرار و مهاجرت میدن و از این رو،می‌تونن بدون هزینه اضافی از این سرویس بهره ببرن.مزایای AWS Application Migration Serviceخودکار بودن: با این سرویس، نیازی به انجام کارها به‌صورت دستی ندارید، که همیشه مزیت بزرگیه.پشتیبانی از انواع سیستم‌عامل‌ها: هم ویندوز و هم لینوکس پشتیبانی میشن.انعطاف‌پذیری برای محیط‌های مختلف: می‌تونید اپلیکیشن‌هایی رو که روی سرورهای فیزیکی، مجازی یا دیگر ارائه‌دهندگان ابری اجرا میشن، به AWS منتقل کنید.معرفی AWS Migration Hub: مدیریت متمرکز مهاجرت به AWSسرویس AWS Migration Hub به عنوان یه مرکز متمرکز برای جمع‌آوری اطلاعات اپلیکیشن‌ها و سرورها عمل می‌کنه. Migration Hub به شما امکان میده تا فرآیند ارزیابی، برنامه‌ریزی، و پیگیری مهاجرت به AWS رو انجام بدید. همچنین می‌تونید سرورها رو به‌صورت منطقی گروه‌بندی کنید و مهاجرت اپلیکیشن‌ها و داده‌ها به AWS رو به طور یکجا مدیریت کنید.یکپارچگی با سایر سرویس‌های مهاجرتیکی از ویژگی‌های عالی Migration Hub اینه که با دیگر سرویس‌های مهاجرت AWS یکپارچه شده، از جمله:سرویس Application Discovery Service: این سرویس برای کشف اپلیکیشن‌ها و دیتابیس‌های موجود شما استفاده میشه، اطلاعات پیکربندی رو جمع‌آوری می‌کنه و این داده‌ها در Migration Hub ذخیره میشن.سرویسApplication Migration Service: این سرویس برای مهاجرت lift and shift خودکار استفاده میشه.سرویس Database Migration Service: برای مهاجرت دیتابیس‌های موجود، مثل Oracle که در دیتاسنتر شما میزبانی میشه، به AWS به کار میره.قابلیت‌های AWS Migration Hubسرویس Migration Hub همچنین می‌تونه توصیه‌هایی درباره مدرن‌سازی اپلیکیشن‌ها ارائه بده. برای مثال، ممکنه بخواید اپلیکیشن‌های Java یا .Net رو به کانتینرهای Docker در Elastic Container Service (ECS) منتقل کنید. علاوه بر این، Migration Hub می‌تونه تخمینی از هزینه اجرای بار کاری فعلی شما روی EC2 instances در AWS ارائه بده.خب تو این فصل  در مورد مهاجرت و انتقال داده‌ها و سیستم‌ها به 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قسمت 6: تکنولوژی‌ها و سرویس‌های توسعه، پیام‌رسانی، و دیپلویمنتقسمت هفتم:‌ تکنولوژی و سرویس‌های migration و انتقال دادهو در آخر این آدرس لینکدین و توئیتر من هست خوشحال میشم در ارتباط باشیم.🪩 Follow Linkedin Hossein Jafari🪩🕊 Twitter 🕊</description>
                <category>حسین جعفری</category>
                <author>حسین جعفری</author>
                <pubDate>Sat, 21 Dec 2024 10:12:15 +0330</pubDate>
            </item>
                    <item>
                <title>قسمت 6: تکنولوژی‌ها و سرویس‌های توسعه، پیام‌رسانی، و دیپلویمنت</title>
                <link>https://virgool.io/@h0x3ein/%D9%82%D8%B3%D9%85%D8%AA-6-%D8%AA%DA%A9%D9%86%D9%88%D9%84%D9%88%DA%98%DB%8C-%D9%87%D8%A7-%D9%88-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-%D9%87%D8%A7%DB%8C-%D8%AA%D9%88%D8%B3%D8%B9%D9%87-%D9%BE%DB%8C%D8%A7%D9%85-%D8%B1%D8%B3%D8%A7%D9%86%DB%8C-%D9%88-%D8%AF%DB%8C%D9%BE%D9%84%D9%88%DB%8C%D9%85%D9%86%D8%AA-wj9f4aka0o35</link>
                <description>مقدمهدر قسمت‌های قبلی، گام به گام پیش رفتیم تا با خدمات اساسی AWS آشنا بشیم. از سرویس‌های محاسباتی و ذخیره‌سازی گرفته تا دیتابیس‌ها و خدمات مرتبط با آن‌ها. هر یک از این سرویس‌ها به ما کمک کردن تا زیرساخت‌ها رو بهتر مدیریت کنیم و داده‌ها رو به صورت کارآمدتر ذخیره و پردازش کنیم.حالا تو فصل ششم قراره به یک بخش حیاتی دیگه بپردازیم: ابزارها و سرویس‌های توسعه، مدیریت پیام‌ها، و دیپلوی نرم‌افزار در AWS. این بخش یکی از جذاب‌ترین و کاربردی‌ترین قسمت‌های AWS هست، چون مستقیماً با چرخه توسعه و ارائه نرم‌افزار ارتباط داره.این فصل در مورد ابزارها و سرویس‌هایی صحبت می‌کنه که AWS برای توسعه نرم‌افزار، مدیریت پیام‌ها بین سیستم‌ها، و دیپلوی اپلیکیشن‌ها ارائه داده. این سرویس‌ها باعث می‌شن فرایند توسعه و ارائه نرم‌افزار سریع‌تر، مؤثرتر و ساده‌تر بشه. بیا با هم یاد بگیریم این سرویس‌ها چطور کار می‌کنن و چطور می‌تونن به تیم‌های توسعه کمک کنناول ببینیم CI/CD یعنی چی و چی هست؟در واقع CI/CD یکی از بهترین روش‌های شناخته‌شده در توسعه نرم‌افزاره و برای کسایی که دارن DevOps رو پیاده‌سازی می‌کنن، یه اصل اساسی به حساب میاد. ایده اصلی CI/CD اینه که همه چیز خودکار بشه؛ از جمله:ادغام کدها: به این معنی که تغییرات کد از چندین توسعه‌دهنده ادغام بشه.ساخت، تست و دیپلویمنت همگی به صورت خودکار انجام بشن.چرا این روش عالیه؟ چون تغییرات رو آسون‌تر می‌کنه. با اعمال تغییرات کوچک و مداوم (حداقل روزی یک‌بار)، ریسک خراب شدن سیستم کاهش پیدا می‌کنه و توسعه‌دهنده‌ها می‌تونن تغییرات تدریجی در اپلیکیشن‌ها اعمال کنن و ویژگی‌های جدید رو سریع‌تر در اختیار مشتری‌ها بذارن.فواید CI/CDاتوماتیک بودن: سرعت، تکرارپذیری و مقیاس‌پذیری رو افزایش می‌ده.حذف کارهای دستی: کارهای دستی معمولاً کند، پرخطا و ناپایدار هستن.تغییرات کوچک و مداوم: باعث می‌شه مشکلات در همون مراحل اولیه شناسایی و سریع‌تر حل بشن.جریان کار ادغام مستمر (CI)تیم توسعه: هر کدوم از اعضای تیم روی بخش‌های مختلف کد کار می‌کنن.ریپازیتوری مرکزی: کد از ریپازیتوری مرکزی دانلود و به صورت لوکال روی سیستم توسعه‌دهنده ذخیره می‌شه.تست محلی (local test): هر توسعه‌دهنده کد خودش رو به صورت لوکال تست می‌کنه.کامیت کد: بعد از اینکه هیچ باگی پیدا نشد، تغییرات کد به ریپازیتوری مرکزی ارسال می‌شه.ادغام: تغییرات همه توسعه‌دهنده‌ها در ریپازیتوری مرکزی ادغام می‌شن.جریان کار تحویل مستمر (CD)ادغام با ریپازیتوری اصلی: بعد از اینکه کد تست شد، با ریپازیتوری اصلی ادغام می‌شه.ساخت و تست دوباره: کد آماده می‌شه، دوباره تست می‌شه و برای دیپلوی بسته‌بندی می‌شه.دیپلوی خودکار: در آخر، کد به صورت خودکار، به محض آماده شدن، دیپلوی می‌شه.ابزارهای توسعه AWS: ساده‌تر کردن CI/CDخب AWS یه سری ابزارهای توسعه‌ای داره که کار رو برای توسعه‌دهنده‌ها و تیم‌های DevOps خیلی راحت می‌کنه. این ابزارها به شما کمک می‌کنن فرآیندهای CI/CD رو سریع، دقیق و کاملاً خودکار پیاده‌سازی کنید. حالا بیایید با چهار تا از ابزارهای اصلی AWS آشنا بشیم که حسابی کارتون رو توی این مسیر راه می‌اندازن:1. ابزار CodeCommit: مخزن کد مرکزی و امنابزار CodeCommit مثل یه نسخه ابری و خصوصی از Git عمل می‌کنه. این ابزار می‌تونه مرکز تمام کدهای شما باشه و به تیم‌تون اجازه بده به راحتی روی کدها همکاری کنن.کاربردها و ویژگی‌ها:ذخیره‌سازی هر چیزی که به توسعه نرم‌افزار مربوطه: مثل کدهای منبع (source code)، باینری‌ها، تصاویر و حتی کتابخانه‌های نرم‌افزاری.همکاری تیمی و مدیریت تغییرات کدها: این ابزار به تیم‌ها اجازه می‌ده تغییرات کدها رو پیگیری کنن و به تاریخچه نسخه‌ها دسترسی داشته باشن.امنیت بالا: چون مخزن خصوصی شما توی فضای ابری AWS قرار داره، امنیتش تضمین شده‌ست.یکپارچگی با سایر ابزارهای AWS: مثلاً می‌تونید از CodeCommit به عنوان منبع کد در CodePipeline استفاده کنید.مثال کاربردی:فرض کنید دارید یه پروژه بزرگ انجام می‌دید و چند نفر روی بخش‌های مختلف کد کار می‌کنن. CodeCommit کمک می‌کنه همه تغییرات تو یه جای امن ذخیره بشه و همه اعضای تیم همیشه به نسخه آخر دسترسی داشته باشن.2. ابزار CodeBuild: ساخت، تست و آماده‌سازیابزار CodeBuild یه سرویس کاملاً مدیریت‌شده برای ساخت (build) کدهاست. به زبان ساده، این ابزار دستورات شما رو اجرا می‌کنه و از ساخت کد تا آماده‌سازی بسته‌ها (artifacts) برای دیپلویمنت رو براتون هندل می‌کنه.کاربردها و ویژگی‌ها:کامپایل کدها: هر زبانی که استفاده می‌کنید، CodeBuild می‌تونه کدها رو برای شما کامپایل کنه.اجرای تست‌ها: از تست‌های واحد (Unit Tests) گرفته تا تست‌های یکپارچگی (Integration Tests).تولید آرتیفکت‌ها (Artifacts): یعنی بسته‌هایی که برای دیپلوی آماده هستن، مثل بسته‌های نرم‌افزاری یا تصاویر Docker.ادغام با CodeCommit و سایر ابزارها: کدها رو از CodeCommit می‌گیره و بعد از ساخت و تست، آرتیفکت‌ها رو تحویل می‌ده.مثال کاربردی:فرض کنید یه اپلیکیشن وب با Node.js نوشتید. CodeBuild می‌تونه کد شما رو کامپایل کنه، تست‌ها رو اجرا کنه و در نهایت یه بسته آماده دیپلوی تولید کنه.3. ابزار CodeDeploy: دیپلوی خودکار، سریع و مطمئنابزار CodeDeploy یه ابزار فوق‌العاده برای خودکارسازی فرآیند دیپلویمنت کده. این ابزار کد شما رو روی انواع محیط‌ها به راحتی دیپلوی می‌کنه، بدون این که نیاز باشه دستی انجامش بدید.کاربردها و ویژگی‌ها:دیپلوی روی محیط‌های مختلف: مثل EC2 Instances، سیستم‌های On-Premises یا توابع Lambda.جلوگیری از Downtime: در واقع CodeDeploy کمک می‌کنه دیپلوی بدون هیچ قطعی انجام بشه.مدیریت نسخه‌ها: به شما اجازه می‌ده نسخه‌های مختلف کد رو به راحتی مدیریت و در صورت نیاز رول‌بک کنید.سرعت و دقت بالا: چون فرآیند به صورت خودکار انجام می‌شه، احتمال خطای انسانی به شدت کاهش پیدا می‌کنه.مثال کاربردی:فرض کنید یه اپلیکیشن وب دارید که روی چندین سرور EC2 اجرا می‌شه. با CodeDeploy می‌تونید آپدیت‌های کد رو بدون این که سایت از دسترس خارج بشه، روی همه سرورها اعمال کنید.4. ابزار CodePipeline: ارکستریت کردن کل فرآیند CI/CDابزار CodePipeline مثل یه رهبر ارکستر عمل می‌کنه. این ابزار کل فرآیند CI/CD رو از ابتدا تا انتها مدیریت می‌کنه و مطمئن می‌شه همه چیز سر جای خودش انجام بشه.کاربردها و ویژگی‌ها:تشخیص تغییرات کد: هر وقت توی مخزن کد (مثل CodeCommit) تغییری اعمال بشه، CodePipeline فرآیند رو شروع می‌کنه.هماهنگی ابزارها: این ابزار با CodeBuild و CodeDeploy هماهنگ می‌شه تا ساخت، تست و دیپلوی کدها رو انجام بده.کاهش خطا: چون همه مراحل به صورت خودکار انجام می‌شه، احتمال خطا به حداقل می‌رسه.سرعت بالا: فرآیند انتشار نرم‌افزار سریع و بدون دردسر انجام می‌شه.مثال کاربردی:فرض کنید تیم شما هر روز روی کدها تغییراتی اعمال می‌کنه. CodePipeline این تغییرات رو می‌گیره، کد رو می‌سازه، تست می‌کنه و بعد دیپلوی می‌کنه.چرا از ابزارهای توسعه AWS استفاده کنیم؟سرعت بیشتر: فرآیندهای دستی مثل تست و دیپلوی خیلی زمان‌بر هستن، ولی این ابزارها همه چیز رو خودکار و سریع انجام می‌دن.کاهش خطا: چون فرآیند خودکاره، احتمال خطای انسانی خیلی کمتر می‌شه.مقیاس‌پذیری: ابزارهای AWS برای تیم‌های کوچک و بزرگ عالی هستن.سازگاری: همه این ابزارها با هم و با سایر سرویس‌های AWS یکپارچه عمل می‌کنن.ابزارهای CodeCommit، CodeBuild، CodeDeploy و CodePipeline چهار ستون اصلی برای پیاده‌سازی فرآیندهای CI/CD در AWS هستن. هر کدوم از این ابزارها یه بخش از فرآیند رو هندل می‌کنن و در کنار هم، یه راهکار کامل برای مدیریت چرخه توسعه و انتشار نرم‌افزار ارائه می‌دن. اگر می‌خواید کار تیمی‌تون سریع‌تر، دقیق‌تر و حرفه‌ای‌تر بشه، این ابزارها رو دست کم نگیرید! 😎دمو: کار با AWS CloudShell و AWS Command Line Interface (AWS CLI)در این سناریو:  یه S3 bucket ایجاد میکنیم و یه فایل توی اون آپلود میکنیم.این کار رو با استفاده از AWS CLI در محیط CloudShell انجام می‌دیم، به جای استفاده از AWS Console.گام‌های انجام کار:اجرای CloudShellابتدا از طریق AWS Console، قسمت بالا سمت راست CloudShell رو باز می‌کنیم. CloudShell یک محیط خط فرمان تحت مرورگر است که AWS CLI به‌صورت پیش‌فرض در آن نصب و پیکربندی شده. این راحت‌ترین روش برای استفاده از CLI هست.بررسی نسخه CLIبا دستور زیر می‌تونید بررسی میکنیم که AWS CLI نصب شده:aws --version بعد از اجرای این دستور، نسخه CLI نمایش داده می‌شه.ایجاد S3 Bucketبرای ایجاد یک S3 bucket، دستور زیر رو وارد میکنیم:aws s3 mb s3://BUCKET NAMEتوجه: نام باکت باید به صورت جهانی یکتا باشد، پس بهتره که اعداد تصادفی به نام اضافه کنیم.مشاهده باکت‌های موجوددستور زیر برای مشاهده لیست باکت‌ها در حساب AWS شماست:aws s3 lsایجاد فایل و آپلود آن به S3ابتدا یک فایل جدید ایجاد میکنیم:echo &quot;my new file&quot; &gt;&gt; file.txtسپس محتوای فایل رو چک میکنیم:cat file.txtفایل رو به باکت آپلود میکنیم:aws s3 cp file.txt s3://BUCKET NAMEبرای اطمینان از آپلود موفق، محتوای باکت رو بررسی میکنیم:aws s3 ls s3://BUCKET NAMEاستفاده از Help برای دستورات CLIاگر سینتکس دستوری رو فراموش کردیم، میتونیم از دستور help استفاده کنیم:aws &lt;service-name&gt; help انتهای Help، مثال‌هایی از نحوه استفاده از دستور نمایش داده می‌شه.دمو: استفاده از AWS Cloud9در این سناریو:ما به یک IDE (محیط توسعه یکپارچه) نیاز داریم که اجازه بده کد بنویسیم، اجرا کنیم و دیباگ کنیم.همچنین، باید از زبان‌های برنامه‌نویسی پرطرفدار مثل JavaScript، Python، Ruby و C++ پشتیبانی کند.این محیط باید قابلیت اجرای دستورات AWS CLI رو هم داشته باشد.سرویس AWS Cloud9 یک IDE مرورگرمحور است، بنابراین نیازی نیست چیزی روی کامپیوتر خودتون نصب میکنیم.در این درس، ما مراحل زیر رو انجام می‌دیم:ایجاد یک محیط Cloud9.نوشتن و اجرای کد در Cloud9.اجرای دستورات AWS CLI در Cloud9.گام‌های انجام کار:1. ایجاد محیط Cloud9ابتدا وارد AWS Console میشیم و Cloud9 رو جستجو میکنیم.سپس:روی Create environment کلیک میکنیم.یک نام برای محیط وارد میکنیم، مثل My-IDE.تنظیمات زیر رو انجام میدیم:قسمت Environment type: گزینه New EC2 instance.قسمت Instance type: انتخاب t3.small.قسمت Platform: گزینه Amazon Linux.قسمت Network settings: تنظیمات پیش‌فرض باقی میمونه.سپس به پایین صفحه میریم و روی Create کلیک میکنیم.سرور Cloud9 در اصل یک سرور Linux است که ابزارهای پیش‌فرضی مانند AWS CLI و زبان‌های برنامه‌نویسی مثل Python و Node.js روی آن نصب شده‌اند.2. نوشتن و اجرای کدبعد از ایجاد محیط:روی Open کلیک میکنیم تا وارد محیط Cloud9 بشیم.یک فایل جدید ایجاد میکنیم: Create File رو انتخاب میکنیم.کد زیر رو مینویسم:print(&quot;Hello Cloud Gurus&quot;)فایل رو ذخیره میکنیم:به File &gt; Save As میریم. نام فایل رو hello.py قرار میدیم و ذخیره میکنیم.حالا برای اجرای کد:به بخش Terminal در پایین صفحه میریم.دستور ls رو وارد میکنیم تا فایل رو ببینیم. بعدش کد رو اجرا میکنیم:python hello.pyاگر همه چیز درست باشه، پیام Hello Cloud Gurus نمایش داده می‌شود.3. استفاده از AWS CLIسرویس  Cloud9 ابزار AWS CLI رو پیش‌نصب داره.برای تست: یک S3 bucket ایجاد میکنیم:aws s3 mb s3://my-code-random-numbersفایل کد رو به S3 bucket آپلود میکنیم:aws s3 cp hello.py s3://my-code-random-numbersاگر همه چیز درست باشه، فایلمون با موفقیت در S3 آپلود میشه.درک AWS CodeArtifact: ابزار قدرتمند برای مدیریت بسته‌های نرم‌افزاریابزار AWS CodeArtifact یه ابزار جذابه که زندگی توسعه‌دهنده‌ها رو خیلی راحت‌تر می‌کنه! این سرویس یه مخزن آرتیفکت (Artifact Repository) هست که به شما اجازه می‌ده بسته‌های نرم‌افزاری موردنیازتون رو ذخیره کنید، منتشر کنید و حتی با تیم‌های دیگه به اشتراک بذارید.ببینیم CodeArtifact دقیقاً چیکار می‌کنه؟ابزار AWS CodeArtifact به توسعه‌دهندگان اجازه می‌ده:بسته‌های نرم‌افزاری (Packages) رو به صورت امن ذخیره کنن.به راحتی نسخه‌های مختلف این بسته‌ها رو مدیریت کنن.بسته‌هایی مثل Maven، NPM یا Python رو استفاده کنن، چه از مخازن عمومی و چه بسته‌هایی که توی سازمان خودشون ساخته شده.بسته نرم‌افزاری (Package) چیه؟به زبان ساده، یه بسته نرم‌افزاری مثل یه مجموعه از کده، ابزارها یا کتابخونه‌هاست که توی یه فرمت استاندارد پیچیده شده. CodeArtifact کمک می‌کنه همه توسعه‌دهنده‌ها به راحتی این بسته‌ها رو پیدا کنن و از نسخه درست استفاده کنن.چرا باید از CodeArtifact استفاده کنیم؟تصور کنید چندین تیم توسعه‌دهنده دارید که روی بخش‌های مختلف یه اپلیکیشن کار می‌کنن. یکی از دغدغه‌های اصلی تو اینجور پروژه‌ها اینه که همه تیم‌ها از نسخه درست بسته‌های نرم‌افزاری استفاده کنن.اینجاست که CodeArtifact می‌تونه یه ابزار نجات‌دهنده باشه!چالش‌ها بدون CodeArtifact:یکی از تیم‌ها یه نسخه اشتباه از یه کتابخونه مثل Express (فریم‌ورکی برای Node.js) رو دانلود می‌کنه.این باعث می‌شه کد تیم‌ها با هم سازگار نباشه.کلی زمان صرف می‌شه تا بفهمن مشکل کجاست.مزایای CodeArtifact:مدیریت نسخه‌ها: تضمین می‌کنه که همه تیم‌ها به نسخه درست کتابخونه دسترسی داشته باشن.صرفه‌جویی در زمان: دیگه نیازی نیست تیم‌ها اینترنت رو برای پیدا کردن بسته مناسب زیرورو کنن.امنیت بیشتر: همه چیز از یه مخزن مرکزی و امن مدیریت می‌شه.آرتیفکت (Artifact) یعنی چی؟توی دنیای فناوری، آرتیفکت‌ها می‌تونن چیزای مختلفی باشن، مثل:مستندات (Documentation): مثلاً فایل‌های README یا راهنمای API.برنامه‌های کامپایل‌شده (Compiled Applications): فایل‌های اجرایی آماده برای استفاده.بسته‌های قابل استقرار (Deployable Packages): مثل فایل‌های Docker یا بسته‌های ZIP.کتابخونه‌ها (Libraries): ابزارهایی که برنامه‌نویس‌ها برای توسعه استفاده می‌کنن.ابزار CodeArtifact همه این موارد رو مدیریت می‌کنه تا شما فقط روی توسعه تمرکز کنید.مزایای CodeArtifact برای تیم‌هانسخه‌های تایید شده (Approved Versions):رهبران IT می‌تونن نسخه‌هایی رو که تست و تایید شدن توی CodeArtifact ذخیره کنن. اینجوری، توسعه‌دهنده‌ها همیشه می‌دونن از چه نسخه‌ای باید استفاده کنن.جلوگیری از مشکلات نسخه‌های جدید:اگر تیم‌ها همیشه از آخرین نسخه کتابخونه‌ها استفاده کنن، ممکنه باگ‌های جدیدی رو تجربه کنن. CodeArtifact اجازه می‌ده نسخه‌هایی که قبلاً تست شدن رو استفاده کنید و اینجوری ریسک خرابی رو کاهش بدید.یکپارچگی تیم‌ها:همه تیم‌ها به یه منبع مرکزی دسترسی دارن و این باعث می‌شه پروژه‌ها بدون دردسر جلو برن.جمع‌بندیابزار AWS CodeArtifact یه ابزار حرفه‌ایه که به تیم‌ها کمک می‌کنه بسته‌های نرم‌افزاری‌شون رو مثل یه حرفه‌ای مدیریت کنن. این سرویس:سرعت توسعه رو بیشتر می‌کنه.اشتباهات ناشی از استفاده از نسخه‌های اشتباه رو به صفر می‌رسونه.باعث می‌شه تیم‌ها متمرکزتر و هماهنگ‌تر کار کنن.اگر توی پروژه‌هاتون می‌خواید خیال‌تون راحت باشه که همیشه از نسخه‌های درست بسته‌ها استفاده می‌کنید و تیم‌تون وقتش رو روی پیدا کردن نسخه‌ها تلف نمی‌کنه، CodeArtifact دقیقاً چیزی هست که لازم دارید! 😎جداسازی مؤلفه‌های اپلیکیشن (Decoupling Application Components)خب بریم ببینیم چرا جداسازی مؤلفه‌ها یا Decoupling!  اینقدر مهمه؟ بیاید اول با یه مشکل قدیمی شروع کنیم: Tight Coupling.اول ببینیم Tight Coupling چیهوقتی یه اپلیکیشن تمام اجزاش به شدت به هم وابسته باشن، به این حالت می‌گن Tight Coupling. این معماری معمولاً تو سیستم‌های Monolithic دیده می‌شه. اما چرا این وابستگی مشکل‌سازه؟مشکلات Tight Couplingوابستگی‌های زیاد: وقتی اجزا به شدت به هم وصل باشن، اگه یکی‌شون کند بشه یا درست کار نکنه، بقیه اجزا هم دچار مشکل می‌شن.مثال: تصور کن یه سایت فروش بلیط کنسرت داری. وقتی فروش بلیط شروع می‌شه، اگر سیستم پرداخت‌ها سریع‌تر از پایگاه داده باشه که تعداد بلیط‌های فروخته‌شده رو به‌روزرسانی می‌کنه، پایگاه داده ممکنه دچار بار اضافی (Overload) بشه.خرابی کل سیستم:اگه یکی از مؤلفه‌ها از کار بیفته، ممکنه کل سیستم سقوط کنه!  مثال: اگه پایگاه داده بلیط‌ها از کار بیفته، هیچکس نمی‌تونه خرید کنه و کل سایت می‌خوابه.موردی بعدی Loose Coupling هستحالا بیاید به راه‌حل این مشکلات نگاه کنیم: Loose Coupling. این معماری معمولاً تو سیستم‌های میکروسرویس (Microservices) دیده می‌شه. بیایید مزایاشو بررسی کنیم.ویژگی‌های Loose Coupling:استقلال: هر مؤلفه می‌تونه به تنهایی کار کنه، بدون اینکه به مؤلفه‌های دیگه وابسته باشه.تعامل بدون انتظار: نیازی نیست یه مؤلفه صبر کنه تا کار مؤلفه دیگه تموم بشه.مدیریت پیام‌ها و داده‌ها: پیام‌ها و داده‌ها بین مؤلفه‌ها جابه‌جا می‌شن بدون اینکه مؤلفه‌ها به هم وابسته باشن.مزایای Loose Coupling:انعطاف‌پذیری بالا:راحت می‌تونید بخش‌های سیستم رو بهبود بدید یا جایگزین کنید.مقیاس‌پذیری (Scalability):هر مؤلفه می‌تونه جداگانه گسترش پیدا کنه.مقاومت در برابر خرابی‌ها:اگه یه مؤلفه از کار بیفته، بقیه بدون مشکل به کارشون ادامه می‌دن.افزایش قابلیت اطمینان:سیستم پایدارتر و قابل اعتمادتره چون اجزا مستقل عمل می‌کنن.الاستیک بودن (Elasticity):به راحتی می‌شه سیستم رو با تغییر نیازها هماهنگ کرد.یه مثال جذاب: World Pizzaفرض کن یه اپلیکیشن موبایلی برای سفارش پیتزا داری. فرآیند سفارش چطوری کار می‌کنه؟مشتری سفارش خودش رو تو اپ ثبت می‌کنه.آشپزخونه سفارش رو دریافت می‌کنه و شروع به آماده‌سازی می‌کنه.وقتی سفارش آماده شد:یه راننده تعیین می‌شه. مسیر و زمان تحویل محاسبه می‌شه. مشتری از زمان تحویل مطلع می‌شه.در نهایت، پیتزای خوشمزه تحویل داده می‌شه!اگر یکی از مؤلفه‌ها خراب بشه چی؟مثلاً بخش پردازش پرداخت‌ها برای چند دقیقه از کار بیفته. نباید این مشکل باعث بشه کل سیستم متوقف بشه. راه‌حل: سفارش‌هایی که قبلاً ثبت شدن باید بدون مشکل پردازش بشن. اینجا نیاز به جداسازی مؤلفه‌ها (Decoupling) داریم.راهکارهای جداسازی مؤلفه‌هاحالا بیایید ببینیم چطوری می‌تونیم مؤلفه‌ها رو جدا کنیم تا از این مشکلات فرار کنیم.سه روش رایج:صف‌ها (Queues): استفاده از AWS SQS (Simple Queue Service) پیام‌ها تو صف منتظر می‌مونن تا پردازش بشن، بدون اینکه سیستم دچار اختلال بشه.اعلان‌ها (Notifications): استفاده از AWS SNS (Simple Notification Service) ارسال نوتیفیکیشن‌ها به صورت ایمیل یا پیامک برای اطلاع‌رسانی به کاربران یا سیستم‌ها.رویدادها (Events): استفاده از AWS EventBridge برای ساخت سیستم‌های رویداد-محور. وقتی یه رویداد (مثل آماده شدن سفارش) اتفاق می‌افته، EventBridge اون رو به سیستم‌های مرتبط ارسال می‌کنه.ستون فقرات جداسازی AWS SQSسرویس SQS یه سرویس مدیریت‌شده است که برای جداسازی مؤلفه‌ها (Decoupling) طراحی شده. ویژگی هاپیام‌ها رو نگه می‌داره تا وقتی که مؤلفه مربوطه آماده پردازش بشه.باعث می‌شه هیچ مؤلفه‌ای بیش از حد بارگذاری نشه.از خرابی سیستم جلوگیری می‌کنه.جمع‌بندیدر واقع Loose Coupling راه‌حل قطعی برای ساخت سیستم‌های مقیاس‌پذیر، مقاوم و انعطاف‌پذیره.AWS ابزارهایی مثل SQS، SNS و EventBridge رو ارائه می‌ده که می‌تونید ازشون برای ساخت سیستم‌های مدرن و پایدار استفاده کنید.با جداسازی مؤلفه‌ها، خیالتون راحت می‌شه که حتی اگه یه بخش از کار بیفته، کل سیستم به مشکل نمی‌خوره. 😎معرفی Amazon Simple Notification Service (SNS)این سرویس یکی از ابزارهای فوق‌العاده AWS برای مدیریت و ارسال اعلان‌ها (Notifications) است. سرویس SNS یک سرویس کاملاً مدیریت‌شده از AWS است که به شما امکان می‌دهد به راحتی اعلان‌ها را تنظیم، مدیریت و ارسال کنید.ویژگی‌های اصلی:امکان ارسال پیام‌ها به صورت پیامک (SMS)، ایمیل (Email) یا به اپلیکیشن‌های دیگر.پشتیبانی از مدل انتشار و اشتراک (Publish-Subscribe).ارسال اعلان‌ها به تعداد زیادی از مشترکین (Subscribers) به طور هم‌زمان.موارد استفاده از SNSسرویس SNS برای سناریوهای مختلفی کاربرد دارد. چند نمونه از پیام‌هایی که می‌توانید با SNS ارسال کنید:اطلاع‌رسانی‌های خودکار:پیامکی از تعمیرگاه خودرو که به شما اطلاع می‌دهد ماشین‌تان برای تعمیر رزرو شده است.پیام‌های بازاریابی:اطلاع‌رسانی درباره یک محصول جدید از یک برند محبوب. پیام تخفیف، مثل 25% تخفیف از کافی‌شاپ مورد علاقه شما.اعلان‌های سیستمی:ارسال پیام به تیم پشتیبانی در صورت بروز مشکل در سیستم.مدل کار SNS: مدل انتشار و اشتراک (Pub-Sub)سرویس SNS از مدل Pub-Sub استفاده می‌کند که به دو بخش اصلی تقسیم می‌شود:انتشار (Publish):پیام‌ها از سوی اپلیکیشن یا سیستم به یک موضوع (Topic) ارسال می‌شوند.اشتراک (Subscribe):مشترکین به یک موضوع (Topic) مشترک می‌شوند و اعلان‌های مربوطه را دریافت می‌کنند.موضوع (Topic):یک موضوع (Topic)، نقطه دسترسی است که پیام‌ها از طریق آن به مشترکین ارسال می‌شود.به زبان ساده، موضوع همان کانالی است که پیام‌ها در آن منتشر می‌شوند و مشترکین می‌توانند پیام‌های مرتبط را دریافت کنند.یک مثال از SNS: World Pizzaفرض کنید شما از اپلیکیشن World Pizza یک سفارش پیتزا ثبت کرده‌اید. فرآیند ممکن است به این شکل باشد:سفارش شما ثبت می‌شود.زمان تحویل پیتزا به شما اطلاع داده می‌شود.این پیام می‌تواند از طریق ایمیل، پیامک (SMS) یا هر دو ارسال شود.کاربرد SNS برای مدیریت مشکلات سیستمیسرویس SNS تنها برای مشتریان استفاده نمی‌شود؛ بلکه در مدیریت مشکلات سیستمی نیز کاربرد دارد. برای مثال:فرض کنید یکی از سرورهای EC2 در اپلیکیشن World Pizza خراب می‌شود.سرویس CloudWatch (یک سرویس مانیتورینگ AWS) این مشکل را شناسایی می‌کند.سرویس CloudWatch از SNS استفاده می‌کنه تا یک ایمیل به تیم پشتیبانی ارسال کند و آنها را از مشکل مطلع سازد.جمع‌بندیسرویس SNS یک ابزار قدرتمند برای ارسال اعلان‌ها در سیستم‌های مختلف است. با استفاده از SNS، می‌توانید پیام‌ها را به صورت کارآمد و با مدل Pub-Sub مدیریت کنید. این سرویس، به شما کمک می‌کند تا اعلان‌ها را سریع، امن و در مقیاس بزرگ به مشترکین ارسال کنید.پولینگ کوتاه (Short Polling) در مقابل پولینگ بلند (Long Polling)تو این قسمت، می‌خواهیم دو روش پولینگ کوتاه و پولینگ بلند را که در Amazon SQS برای مصرف پیام‌ها استفاده می‌شوند، بررسی کنیم. درک تفاوت این دو روش به شما کمک می‌کند تا بهترین گزینه را بر اساس نیاز اپلیکیشن‌تان انتخاب کنید.پولینگ کوتاه (Short Polling)ویژگی‌ها:پاسخ فوری:در این روش، درخواست ارسال‌شده به صف پیام بلافاصله پاسخ می‌گیرد، حتی اگر صف پیام خالی باشد.پاسخ‌های خالی (Empty Responses):اگر صف خالی باشد، درخواست همچنان یک پاسخ دریافت می‌کند، اما این پاسخ خالی است.هزینه:برای هر درخواست، حتی اگر پاسخش خالی باشد، هزینه‌ای پرداخت می‌شود.مشکل:این روش می‌تواند منجر به ارسال درخواست‌های بیهوده و دریافت پاسخ‌های خالی متعدد شود که در نهایت باعث افزایش هزینه و کاهش کارایی می‌شود.پولینگ بلند (Long Polling)ویژگی‌ها:پاسخ فقط در صورت وجود پیام:در این روش، مصرف‌کننده (Consumer) به صورت دوره‌ای صف را بررسی می‌کند. پاسخ تنها زمانی ارسال می‌شود که:یک پیام جدید در صف وجود داشته باشد. یا مدت‌زمان مشخصی (Timeout) سپری شود.صرفه‌جویی در هزینه:به دلیل کاهش تعداد درخواست‌ها و پاسخ‌های خالی، پولینگ بلند به‌طور کلی مقرون‌به‌صرفه‌تر است.مزیت اصلی:این روش معمولاً برای اکثر موارد استفاده توصیه می‌شود، زیرا کارآمدتر و اقتصادی‌تر است.مقایسه پولینگ کوتاه و بلندچرا پولینگ بلند بهتره؟مثال کاربردی:فرض کنید یک اپلیکیشن سفارش آنلاین دارید. اگر از پولینگ کوتاه استفاده کنید، ممکن است سرور شما به صورت مکرر صف پیام‌ها را بررسی کند و در نهایت پاسخ‌های خالی دریافت کند، حتی زمانی که هیچ سفارشی ثبت نشده باشد. این کار باعث افزایش هزینه‌ها و هدر رفتن منابع می‌شود.اما اگر از پولینگ بلند استفاده کنید، سیستم فقط زمانی پاسخ دریافت می‌کند که یک سفارش جدید در صف ثبت شده باشد. این روش هم هزینه‌ها را کاهش می‌دهد و هم منابع سرور را بهینه می‌کند.جمع‌بندی:پولینگ کوتاه برای موارد خاص که به پاسخ‌های فوری نیاز دارید، ممکن است مناسب باشد، اما به دلیل هزینه و کارایی پایین، در بیشتر موارد توصیه نمی‌شود.پولینگ بلند به دلیل کاهش هزینه‌ها و کارایی بیشتر، برای اکثر موارد استفاده ترجیح داده می‌شود.اگر در آزمون AWS سوالی درباره صرفه‌جویی در هزینه‌ها یا کارایی مطرح شد، جواب شما پولینگ بلند خواهد بود!خب ببینیم Amazon Simple Email Service (SES) چیه؟سرویس SES چیه؟سرویس SES یک سرویس ایمیل مبتنی بر ابر (Cloud-based) از AWS است که به شما امکان می‌دهد ایمیل‌های HTML زیبا و حرفه‌ای ارسال کنید. این سرویس مناسب برای موارد زیر است:ارسال ایمیل‌های تأیید سفارش یا تحویل کالا.اجرای کمپین‌های بازاریابی شامل اطلاعات محصولات جدید، تخفیف‌ها و پیشنهادهای ویژه.ارسال ایمیل‌های انبوه به لیست‌های ایمیل.ویژگی‌های کلیدی SES1. ارسال ایمیل‌های HTML با طراحی حرفه‌ایبا استفاده از SES می‌توانید ایمیل‌هایی زیبا و با فرمت HTML ارسال کنید. این ایمیل‌ها می‌توانند شامل:تصاویر محصولاتلینک‌های قابل کلیکدکمه‌های جذاب مانند &quot;پیگیری سفارش&quot; یا &quot;ثبت‌نام در پیشنهاد ویژه&quot;مثال:یک ایمیل تأیید سفارش که تصویر محصول خریداری‌شده، اطلاعات تحویل و دکمه &quot;پیگیری سفارش&quot; را نمایش می‌دهد.2. ارسال ایمیل به صورت انبوهسرویس SES به شما اجازه می‌دهد ایمیل‌های انبوه به تعداد زیادی از مخاطبان ارسال کنید.مناسب برای ارسال خبرنامه‌ها، دعوت‌نامه‌ها یا اطلاعیه‌های عمومی به همه مشتریان.3. ردیابی عملکرد ایمیل‌هابا استفاده از SES می‌توانید:نرخ باز شدن ایمیل‌ها (Open Rate) را بررسی کنید.نرخ کلیک (Click-Through Rate) روی لینک‌های موجود در ایمیل‌ها را مشاهده کنید.این اطلاعات به شما کمک می‌کند اثربخشی کمپین‌های بازاریابی خود را تحلیل کنید.مثال کاربردی:فرض کنید یک کمپین بازاریابی راه‌اندازی کرده‌اید و می‌خواهید یک ایمیل زیبا به مشتریانتان ارسال کنید که:شامل اطلاعات تخفیف ۲۰ درصدی باشد.لینک مستقیم به محصول یا خدمات موردنظر را ارائه دهد.از طراحی بصری جذاب استفاده کند که مشتری را به اقدام (Action) ترغیب کند.با استفاده از SES می‌توانید این ایمیل را طراحی و ارسال کنید و سپس نرخ باز شدن و کلیک‌ها را تحلیل کنید.تفاوت SES با SNSویژگی SES (Simple Email Service) SNS (Simple Notification Service) هدف ارسال ایمیل‌های زیبا و حرفه‌ای ارسال نوتیفیکیشن ساده (پیامک یا ایمیل متنی)   کاربرد تأیید سفارش، ایمیل‌های بازاریابی، خبرنامه اطلاع‌رسانی فوری و ساده (مانند هشدارها)   فرمت ایمیل HTML (ایمیل زیبا و حرفه‌ای) متنی ساده (Plain Text)چرا از SES استفاده کنیم؟زیبایی و حرفه‌ای بودن ایمیل‌ها: SES به شما اجازه می‌دهد ایمیل‌هایی با طراحی بصری و حرفه‌ای ارسال کنید که تأثیر مثبتی روی مخاطبان دارد.ردیابی آسان: نرخ باز شدن و کلیک ایمیل‌ها را می‌توانید برای بهینه‌سازی کمپین‌ها تحلیل کنید.ارسال انبوه: با SES می‌توانید ایمیل‌های خود را به هزاران یا حتی میلیون‌ها کاربر ارسال کنید.ادغام با سایر سرویس‌های AWS: SES به‌راحتی با سایر سرویس‌های AWS مانند Lambda یا CloudWatch ادغام می‌شود.سرویس Amazon EventBridge چیه؟سرویس Amazon EventBridge یک سرویس مدیریت شده از AWS است که به شما امکان می‌دهد سیستم‌های رویداد-محور (Event-Driven Systems) را به راحتی پیاده‌سازی و پیکربندی کنید. همچنین، می‌توانید از این سرویس برای تعریف وظایفی با زمان‌بندی مشخص استفاده کنید.سیستم رویداد-محور (Event-Driven) چیست؟در این سیستم‌ها، رویدادها، که به تغییرات در وضعیت اشاره دارند، باعث اجرای عملیات خاصی می‌شوند.رویداد (Event):رویدادها زمانی ایجاد می‌شوند که تغییری در وضعیت رخ دهد.این تغییرات می‌توانند شامل موارد زیر باشند:EC2: تغییر وضعیت یک اینستنس، مانند اجرا شدن (Running) یا متوقف شدن (Stopped).CloudWatch: تغییرات مرتبط با نظارت بر سیستم.CloudTrail: ردیابی فعالیت کاربران و تغییرات در منابع AWS.نحوه کار EventBridgeرویداد (Event):هر رویداد، که نشان‌دهنده یک تغییر در وضعیت است، در EventBridge ثبت می‌شود.قوانین (Rules):شما می‌توانید قوانینی تعریف کنید که مشخص می‌کنند چه رویدادهایی باید شناسایی شوند و به کجا هدایت شوند.اهداف (Targets):اهداف رویدادها می‌توانند سرویس‌های مختلف AWS باشند، مانند:SNS (ارسال اعلان)Lambda (اجرای کد)EC2 (مدیریت اینستنس‌ها)اقدامات (Actions):هدف پس از دریافت رویداد، عملی مشخص انجام می‌دهد. مثال: ارسال ایمیل از طریق SNS، یا اجرای یک تابع Lambda.یک مثال واقعی از EventBridgeفرض کنید یکی از اینستنس‌های EC2 که وب‌سایت World Pizza را اجرا می‌کند، کرش کرده و ری‌استارت می‌شود:این تغییر وضعیت از Running به Stopping و سپس دوباره به Running شناسایی می‌شود.یک رویداد برای این تغییر وضعیت ایجاد می‌شود و به EventBridge ارسال می‌شود.سرویس EventBridge یک قانون تعریف‌شده را اجرا می‌کند:این قانون تعیین می‌کند که در صورت وقوع این رویداد، چه کاری انجام شود.سرویس SNS یک ایمیل به تیم پشتیبانی ارسال می‌کند تا بررسی‌های لازم انجام شود.رویدادهای زمان‌بندی‌شده (Scheduled Events)علاوه بر شناسایی و مدیریت تغییرات وضعیت، EventBridge می‌تواند رویدادهای زمان‌بندی‌شده را اجرا کند.مثال‌ها:اجرای یک فرآیند هر ساعت یا هر روز.اجرای وظایف خاص در تاریخ و زمان مشخص، مانند:اولین روز هر ماه. هر جمعه ساعت ۱۰ صبح.مزایای EventBridgeخودکارسازی کامل:EventBridge به شما کمک می‌کند تا عملیات و رویدادهای مختلف را به صورت کاملاً خودکار مدیریت کنید.انعطاف‌پذیری:با امکان تعریف قوانین و زمان‌بندی‌ها، EventBridge برای طیف گسترده‌ای از نیازها مناسب است.ادغام با خدمات AWS:EventBridge به‌راحتی با سایر خدمات AWS مانند Lambda، SNS و CloudWatch ادغام می‌شود.مقیاس‌پذیری بالا:می‌توانید رویدادها را در مقیاس بزرگ و با عملکرد بالا مدیریت کنید.درک AWS Step Functionsسرویس Step Functions سرویس AWS است که برای مدیریت منطق و جریان‌های کاری (Workflows) توزیع‌شده در اپلیکیشن‌های سرورلس طراحی شده است.این سرویس به شما اجازه می‌دهد:فرآیندها را به صورت مرحله‌ای (Steps) مدیریت کنید.منطق اپلیکیشن‌های توزیع‌شده را سازمان‌دهی و ردیابی کنید.خطاها را شناسایی و مسیرهای جایگزین (Error Handling) را مدیریت کنید.مثالی برای درک بهتر Step Functions:فرض کنید شما در حال اجرای فرآیند خرید در یک فروشگاه آنلاین هستید. مراحل کلی به این شکل است:بررسی موجودی کالا.رزرو کالا برای مشتری.دریافت هزینه از مشتری.ارسال کالا پس از تأیید پرداخت.اگر مشکلی پیش بیاید، چه اتفاقی می‌افتد؟اگر کارت اعتباری مشتری منقضی شده باشد؟اگر پرداخت رد شود؟اگر مشتری فرآیند خرید را کامل نکند؟سرویس Step Functions می‌تواند:رزرو کالا را لغو کند تا دیگران بتوانند آن را خریداری کنند.اگر پرداخت موفق باشد، ارسال کالا را آغاز کند.نحوه استفاده از Step Functions:منطق توزیع‌شده را مدیریت می‌کند. برای مثال، هر مرحله از فرآیند (مانند چک کردن موجودی یا رزرو کالا) می‌تواند توسط یک Lambda Function مدیریت شود.خطایابی و مدیریت خطاها:اگر پرداخت رد شود، می‌توان:از مشتری درخواست کرد که روش پرداخت دیگری انتخاب کند. ایمیلی برای یادآوری خرید ارسال کرد.پردازش‌های موازی:مثال: در یک اپلیکیشن پردازش تصویر:استخراج متادیتا. تغییر اندازه تصویر. شناسایی چهره. این فرآیندها به صورت همزمان انجام شده و نتیجه به پایگاه داده منتقل می‌شود.جریان‌های کاری پیچیده‌تر:مثال: در فرآیند CodeBuild:اگر تست موفق باشد: یک اعلان به تیم پشتیبانی ارسال شود. اگر تست شکست بخورد: تیم توسعه مطلع شود.ویژگی‌های Step Functions:رابط بصری:جریان‌های کاری را می‌توانید به صورت بصری مشاهده کنید.مدیریت خودکار مراحل:هر مرحله به ترتیب اجرا می‌شود و خروجی یک مرحله می‌تواند ورودی مرحله بعدی باشد.ردیابی وضعیت مراحل:می‌توانید وضعیت هر مرحله (موفق یا ناموفق) را ردیابی کنید و بدانید خطا کجا رخ داده است.استقرار زیرساخت به عنوان کد با AWS CloudFormationخب ببینیم Infrastructure as Code چیه؟تصور کنید باید به سرعت یک محیط AWS برای اپلیکیشن خود بسازید. حالا فرض کنید نیاز دارید:محیطی مشابه برای تیم توسعه ایجاد کنید.محیط دیگری برای انجام تست عملکرد فراهم کنید.همه این محیط‌ها باید کاملاً مشابه و یکسان باشند.بهترین راه برای اطمینان از اینکه همه چیز به صورت یکسان و بدون اشتباه پیکربندی شده، استفاده از Infrastructure as Code است.سرویس CloudFormation چیست؟سرویس CloudFormation سرویسی از AWS است که به شما اجازه می‌دهد:مدیریت و پیکربندی زیرساخت خود را به صورت کد انجام دهید.منابع AWS را به صورت خودکار و با کد ایجاد و مدیریت کنید.ساختار CloudFormation:منابع AWS با استفاده از یک قالب (Template) تعریف می‌شوند.قالب‌ها می‌توانند به زبان‌های YAML یا JSON نوشته شوند.سرویس CloudFormation این قالب را تفسیر می‌کند و با فراخوانی APIهای AWS، منابع تعریف‌شده را ایجاد می‌کند.نتیجه: تمام منابع ایجادشده توسط قالب در یک Stack قرار می‌گیرند.مثالی از قالب CloudFormation:در این مثال:یک EC2 Instance در منطقه‌ی us-east-1a ایجاد می‌کنیم.نوع اینستنس t3.micro است.تصویر AMI (Amazon Machine Image) مشخص شده است.Resources:
  MyEC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      AvailabilityZone: us-east-1a
      InstanceType: t3.micro
      ImageId: ami-12345678سرویس CloudFormation این قالب را تفسیر می‌کند و منابع مشخص‌شده را به صورت خودکار ایجاد می‌کند.مزایای استفاده از CloudFormation:ایجاد منابع به صورت یکسان و استاندارد:مثل استفاده از قالب‌های آماده (Cookie Cutter)، هر بار منابع با پیکربندی مشابه ایجاد می‌شوند.کاهش خطا:خودکارسازی فرایند باعث کاهش خطاهای دستی می‌شود.سرعت و کارایی بالا:به جای صرف زمان برای پیکربندی دستی، همه چیز سریع‌تر انجام می‌شود.رایگان بودن:فقط برای منابعی که ایجاد می‌کنید، هزینه پرداخت می‌کنید. استفاده از CloudFormation خود رایگان است.سرویس AWS Elastic Beanstalk چیست؟سناریو:فرض کنید شما یک توسعه‌دهنده هستید و در حال کار روی اپلیکیشن وب میلیارد دلاری خود هستید. احتمالاً نمی‌خواهید وقت خود را صرف مدیریت زیرساخت‌های موردنیاز برای اجرای این اپلیکیشن کنید. برای مثال:آیا واقعاً می‌خواهید نگران مقاوم بودن (resilient)، تعادل بار (load balancing)، و مقیاس‌پذیری (scalability) زیرساخت باشید؟یا نگران نصب و نگهداری محیط‌های اجرایی موردنیاز مثل Java، .NET، یا Node.js؟یا حتی مدیریت وب‌سرورهایی مانند Apache Tomcat، Nginx، یا Microsoft IIS؟اینجاست که Elastic Beanstalk وارد می‌شود:با استفاده از Elastic Beanstalk:شما تنها کافی است کد اپلیکیشن خود را آپلود کنید.سرویس Elastic Beanstalk تمام زیرساخت موردنیاز برای اجرای اپلیکیشن شما را فراهم می‌کند.این سرویس، نصب و مدیریت محیط‌های اجرایی و پلتفرم‌های وب اپلیکیشن را انجام می‌دهد.ویژگی‌ها و مزایای Elastic Beanstalk:مدیریت زیرساخت به‌صورت خودکار:Elastic Beanstalk موارد زیر را مدیریت می‌کند:Provisioning: آماده‌سازی منابع مثل EC2 و RDS.سرویس Load Balancing: توزیع بار بین سرورها.سرویس Auto Scaling: مقیاس‌پذیری خودکار.سرویس Monitoring: نظارت بر سلامت اپلیکیشن با استفاده از CloudWatch.تمرکز روی کد:شما به‌عنوان توسعه‌دهنده تنها روی نوشتن کد اپلیکیشن تمرکز می‌کنید. Elastic Beanstalk باعث می‌شود اپلیکیشن سریع‌تر به بازار عرضه شود.به‌روزرسانی‌های خودکار: Elastic Beanstalk به‌صورت خودکار:سیستم‌عامل (OS) را به‌روز نگه می‌دارد. وب‌سرورها مثل Apache یا IIS را آپدیت می‌کند.پشتیبانی از زبان‌های برنامه‌نویسی مختلف: Elastic Beanstalk از زبان‌های محبوب زیر پشتیبانی می‌کند:Java، .NET، PHP، Node.js، Python، Ruby، و Go.پشتیبانی از پلتفرم‌های وب‌سرور: از جمله:Apache Tomcat، Nginx، Microsoft IIS، و Docker.مدیریت کامل زیرساخت: Elastic Beanstalk می‌تواند منابع AWS موردنیاز اپلیکیشن را ایجاد و مدیریت کند:EC2 Instances RDS DatabasesS3 StorageElastic Load BalancerAuto Scaling Groupsدمو: استقرار یک اپلیکیشن با استفاده از AWS Elastic Beanstalkسناریو:فرض کنید شما یک توسعه‌دهنده هستید که یک اپلیکیشن با زبان PHP توسعه داده‌اید. حالا می‌خواهید این اپلیکیشن را در AWS اجرا کنید، اما نمی‌خواهید به صورت دستی EC2 Instances را پیکربندی، مدیریت و آماده‌سازی کنید.برای همین تصمیم گرفته‌اید از Elastic Beanstalk برای استقرار اپلیکیشن خود استفاده کنید.مراحل دمو:1. ایجاد یک Service Role برای Elastic Beanstalkاین رول به Elastic Beanstalk اجازه می‌دهد که به نمایندگی از شما منابع AWS را مستقر کند.2. ایجاد یک EC2 Instance Profileاین پروفایل به EC2 Instance شما دسترسی لازم را می‌دهد تا بتواند با Elastic Beanstalk تعامل داشته باشد.3. استقرار اپلیکیشنکد اپلیکیشن را آپلود می‌کنید و Elastic Beanstalk تمامی مراحل را برای شما انجام می‌دهد.مراحل عملیاتیایجاد Service Role برای Elastic Beanstalkبه IAM در AWS Console بروید. به بخش Roles رفته و روی Create Role کلیک کنید. در بخش Trusted Entity Type، گزینه AWS Service را انتخاب کنید. در Use Cases، گزینه Elastic Beanstalk Customizable را جستجو و انتخاب کنید.مراحل بعدی را تکمیل کرده و نام رول را Custom Service Role for Elastic Beanstalk بگذارید.روی Create Role کلیک کنید.ایجاد EC2 Instance Profileبه IAM برگردید و دوباره Create Role را انتخاب کنید. در Trusted Entity Type، گزینه AWS Service و سپس EC2 را انتخاب کنید.در قسمت Permissions  گزینه، Elastic Beanstalk Read-Only Access را جستجو و انتخاب کنید.رول را با نام Custom EC2 Instance Profile for Elastic Beanstalk ایجاد کنید.استقرار اپلیکیشنبه Elastic Beanstalk در AWS Console بروید. روی Create Application کلیک کنید.موارد زیر را وارد کنید:Application Name: Hello HosseinPlatform: PHPUpload Code: فایل کد اپلیکیشن را که دانلود کرده‌اید آپلود کنید.Service Role: رول ایجادشده در مرحله اول.EC2 Instance Profile: پروفایلی که در مرحله دوم ایجاد کردید.تمامی تنظیمات اختیاری دیگر را به صورت پیش‌فرض بگذارید و Submit را بزنید.بررسی دسترسی سرویسقسمت loggingانتظار و بررسیسرویس Elastic Beanstalk تمام موارد زیر را برای شما انجام می‌دهد:ایجاد EC2 Instancesپیکربندی شبکه و نصب پلتفرم PHPبارگذاری کد و اجرای اپلیکیشنبررسی نتیجهپس از موفقیت‌آمیز بودن استقرار، روی لینک Domain URL کلیک کنید تا اپلیکیشن خود را مشاهده کنید.دمو: استفاده از AWS X-Ray برای شناسایی مشکلات عملکردسرویس X-Ray چیه؟سرویس X-Ray یک ابزار برای توسعه‌دهندگان است که به آنها کمک می‌کند اپلیکیشن‌های توزیع‌شده‌ای را که از چندین کامپوننت مختلف تشکیل شده‌اند، تحلیل و دیباگ کنند. این ابزار به شما امکان می‌دهد:عیب‌یابی مشکلات عملکرد و شناسایی دلایل اصلی آن‌ها.تصویرسازی از کامپوننت‌های زیربنایی اپلیکیشن.بهبود عملکرد و نظارت بر وضعیت سلامت اپلیکیشن.سناریو:شما می‌خواهید یاد بگیرید چگونه از X-Ray برای نظارت بر عملکرد و سلامت یک اپلیکیشن توزیع‌شده استفاده کنید. برای این کار:یک اپلیکیشن نمونه (Tic-Tac-Toe) را با استفاده از CloudFormation نصب می‌کنید.با بازی کردن Tic-Tac-Toe داده‌های عملکردی تولید می‌کنید.از X-Ray برای مشاهده عملکرد و سلامت اپلیکیشن استفاده می‌کنید.مراحل عملیاتی1. نصب اپلیکیشن نمونهوارد AWS Console شوید و X-Ray را جستجو کنید.سرویس X-Ray را انتخاب کنید. شما به کنسول CloudWatch منتقل می‌شوید.در سمت راست روی گزینه Set Up Demo App کلیک کنید.گزینه Create Sample Application with CloudFormation را انتخاب کنید.این گزینه تمام منابع موردنیاز برای اجرای اپلیکیشن را به‌صورت خودکار ایجاد می‌کند.تنظیمات از قبل پر شده‌اند؛ کافی است روی Next کلیک کنید.در صفحه بعد، گزینه‌های پیش‌فرض را تایید کنید و به پایین اسکرول کنید. سپس روی Submit کلیک کنید.این فرآیند چند دقیقه زمان می‌برد؛ زیرا منابعی مانند EC2 Instances، ECS Clusters، DynamoDB Tables، Elastic Load Balancer، و موارد دیگر در حال ایجاد هستند. پس از تکمیل، وضعیت را با دکمه Refresh بررسی کنید.2. اجرای اپلیکیشن و تولید داده‌های عملکردیپس از تکمیل استقرار، به تب Outputs در CloudFormation بروید.آدرس URL مربوط به Load Balancer اپلیکیشن را پیدا کنید و آن را در یک تب جدید باز کنید.اپلیکیشن Tic-Tac-Toe نمایش داده می‌شود:روی گزینه Create کلیک کنید. قوانین را Tic-Tac-Toe انتخاب کرده و روی Create and Play کلیک کنید.حالا می‌توانید بازی را انجام دهید. این بازی ساده‌ترین نسخه Tic-Tac-Toe است.3. بررسی عملکرد اپلیکیشن با X-Rayبه کنسول X-Ray بازگردید.سرویس X-Ray به‌طور خودکار داده‌های مربوط به عملکرد اپلیکیشن را جمع‌آوری کرده و تصویری از کامپوننت‌ها و وضعیت سلامت اپلیکیشن ارائه می‌دهد.با بررسی این داده‌ها می‌توانید، زمان پاسخ‌دهی هر کامپوننت را مشاهده کنید. مشکلات عملکردی را شناسایی کنید.وضعیت سلامت و پایداری کل سیستم را بررسی کنید.خب تو این قسمت، سرویس‌های توسعه، مدیریت پیام و دیپلوی AWS رو به زبان ساده بررسی کردیم. از ابزارهایی مثل CodeCommit برای مدیریت کدها و CodeBuild برای ساخت و تست خودکار گرفته تا سرویس‌هایی مثل SQS برای مدیریت صف‌های پیام و Elastic Beanstalk برای دیپلوی سریع اپلیکیشن‌ها، هر کدوم رو با مثال‌های کاربردی توضیح دادیم. همچنین یاد گرفتیم چطور می‌شه از ابزارهایی مثل EventBridge برای مدیریت رویدادها و Step Functions برای هماهنگی فرآیندهای پیچیده استفاده کرد. امیدوارم این توضیحات کمک کرده باشه تا دید بهتری نسبت به سرویس‌های 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قسمت 6: تکنولوژی‌ها و سرویس‌های توسعه، پیام‌رسانی، و دیپلویمنتقسمت هفتم:‌ تکنولوژی و سرویس‌های migration و انتقال دادهو در آخر این آدرس لینکدین و توئیتر من هست خوشحال میشم در ارتباط باشیم.🪩 Follow Linkedin Hossein Jafari🪩🕊 Twitter 🕊</description>
                <category>حسین جعفری</category>
                <author>حسین جعفری</author>
                <pubDate>Sat, 14 Dec 2024 01:06:20 +0330</pubDate>
            </item>
                    <item>
                <title>قسمت پنجم AWS Certified Cloud Practitioner : آشنایی با انواع دیتابیس در AWS</title>
                <link>https://virgool.io/@h0x3ein/%D9%82%D8%B3%D9%85%D8%AA-%D9%BE%D9%86%D8%AC%D9%85-aws-certified-cloud-practitioner-%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%D8%A7%D9%86%D9%88%D8%A7%D8%B9-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%AF%D8%B1-aws-rqdyz9wn7zp5</link>
                <description>مقدمه خب تا اینجا توی قسمت اول، قسمت دوم، قسمت سوم و قسمت چهارم مفاهیم اولیه رو مرور کردیم، با سرویس‌های محاسباتی آشنا شدیم و بعد هم خدمات ذخیره‌سازی رو بررسی کردیم. تو هر قسمت، گام به گام جلو اومدیم تا ببینیم AWS چطور می‌تونه به سازمان‌ها و افراد کمک کنه تا زیرساخت‌ها و منابعشون رو بهینه‌تر و کارآمدتر مدیریت کنن.حالا توی فصل پنجم قراره به سراغ بخش‌های اساسی دیگه‌ای از AWS بریم و به خدمات دیتابیس AWS نگاهی دقیق‌تر بندازیم. دیتابیس‌ها یکی از مهم‌ترین بخش‌های هر سیستم اطلاعاتیه، و AWS سرویس‌های متنوعی برای انواع مختلف دیتابیس‌ها ارائه میده. از دیتابیس‌های رابطه‌ای که ساختار منظم‌تری دارن تا دیتابیس‌های NoSQL که انعطاف بیشتری برای داده‌های غیرساختاریافته دارن، و همچنین دیتابیس‌های در حافظه که سرعت بالایی برای پردازش‌های بلادرنگ ارائه میدن.تو این قسمت، درباره انواع دیتابیس‌های AWS مثل Amazon RDS، DynamoDB، و Amazon MemoryDB for Redis صحبت میکنیم تا درک بهتری از تفاوت‌ها و کاربردهای هر یک از این سرویس‌ها داشته باشیم.نگاه کلی یه دیتابیس‌هاتوی AWS، انواع مختلفی از دیتابیس‌ وجود دارن که هر کدوم برای نیازهای خاصی طراحی شدن. در اینجا نگاهی به اصلی‌ترین انواع دیتابیس‌ها می‌اندازیم:دیتابیس‌های رابطه‌ای مثل Amazon RDS، شبیه به قفسه‌های منظم یه آشپزخونه هستن که همه چیز سر جاشه. توی این نوع دیتابیس، داده‌ها در قالب جدول‌هایی از ردیف‌ها و ستون‌ها ذخیره میشن. در واقع هر داده یه جای مشخص داره و به راحتی قابل جستجو و بازیابی هست. برای مثال، می‌تونید اسم مشتری‌ها یا سفارش‌های پیتزا رو توی یه جدول با نظم خاصی بچینید. RDS برای مواردی مثل مدیریت موجودی، سفارش‌های مشتری یا حتی سیستم‌های بهداشت و درمان که نیازمند نگهداری پرونده‌های بیماران هستن، خیلی کاربردیه.دیتابیس‌های NoSQL مثل DynamoDB، رویکردی متفاوت دارن و ساختار منعطف‌تری ارائه میدن. می‌تونید این نوع دیتابیس رو مثل جعبه‌هایی در نظر بگیرید که هر کدوم برچسب مخصوص به خودش رو داره. برای مثال، یه جعبه با برچسب «پنیر» می‌تونه شامل انواع پنیرهای مختلف مثل موزارلا، چدار و پارمزان باشه. DynamoDB برای ذخیره و بازیابی داده‌ها به شیوه‌ای ساده و سریع، مخصوصا برای اپلیکیشن‌هایی که ترافیک بالایی دارن، فوق‌العاده عمل می‌کنه.دیتابیس‌های در حافظه مثل Amazon MemoryDB for Redis و ElastiCache، سریع‌ترین نوع دیتابیس‌ها هستن چون داده‌هاشون رو مستقیماً توی RAM نگه می‌دارن، نه روی دیسک‌های کندتر. این نوع دیتابیس‌ها شبیه به یه میز مخصوص توی آشپزخونه‌ان که مواد مورد استفاده همیشه آماده دسترسی هستن و نیازی نیست برای هر بار استفاده به انبار بری. دیتابیس‌های در حافظه برای کاربردهایی مثل کش کردن داده‌ها برای اپلیکیشن‌های وب کاربردیه.دیتابیس‌های گراف مثل Amazon Neptune، برای ذخیره و مدیریت داده‌هایی با روابط پیچیده استفاده میشن. این نوع دیتابیس رو مثل یه شبکه پیچیده از دستورپخت‌های مختلف در نظر بگیر که هر ماده به مواد دیگه متصل شده و نشون میده چطور می‌تونن با هم ترکیب بشن. دیتابیس‌های گراف توی مدیریت داده‌هایی که روابط پیچیده و زیادی دارن، مثل سیستم‌های تشخیص تقلب یا سیستم‌های توصیه‌گر، خیلی خوب عمل می‌کنن.درک سرویس‌های Migration دیتابیس AWSتوی این قسمت درباره AWS Database Migration Service (DMS) و AWS Schema Conversion Tool (SCT) صحبت میکنیم. فرض کن قراره از یه آشپزخونه قدیمی پیتزا به یه آشپزخونه مدرن و پیشرفته‌تر بری.این انتقال مثل فرآیند مهاجرت دیتابیسه؛ یعنی جابجایی داده از یه محیط به محیط دیگه.سرویس AWS DMS، مثل یه تیم جابجایی تخصصی برای آشپزخونه ما عمل می‌کنه. این سرویس بهت کمک می‌کنه تا دیتابیس‌هات رو به شکلی سریع و امن به AWS منتقل کنی، در حالی که کیفیت و ساختار داده‌هات حفظ میشه. این ابزار از منابع داده مختلف مثل Oracle، MySQL، PostgreSQL و Microsoft SQL Server پشتیبانی می‌کنه، و بدون نیاز به تغییرات در دیتابیس مبدا، می‌تونی انتقال رو با چند کلیک ساده شروع کنی.سرویس DMS زمان توقف کمی داره، چون امکان تکرار داده‌ها به صورت مستمر رو فراهم می‌کنه؛ یعنی می‌تونی در طول فرآیند انتقال، داده‌ها رو همزمان تکرار کنی و دیتابیس مبدا همچنان به کار خودش ادامه بده. این سرویس به‌صورت خودترمیم و با نظارت پیوسته کار می‌کنه و در صورت هر وقفه‌ای، خودکار شروع به کار می‌کنه. همچنین، DMS از Multi-AZ برای دسترسی بالا بهره می‌بره.یکی دیگه از ویژگی‌های مهم DMS، امکان تجمیع دیتابیس‌هاست؛ به این صورت که می‌تونی چند دیتابیس رو در یک دیتابیس واحد روی AWS ادغام کنی. DMS هم از مهاجرت‌های همگون (یعنی دیتابیس‌های مبدا و مقصد مشابه) و هم از ناهمگون (دیتابیس‌های مبدا و مقصد متفاوت) پشتیبانی می‌کنه. این ویژگی به شرکت‌ها کمک می‌کنه زیرساخت دیتابیس‌شون رو بهینه‌تر و با هزینه‌های کمتر مدیریت کنن.خب بریم سراغ AWS Schema Conversion Tool (SCT).فرض کن یه مجموعه از دستورپخت‌های قدیمی پیتزا داری که نیاز به تبدیل به یه کتاب آشپزی دیجیتال دارن.SCT دقیقا همین کار رو برای دیتابیس‌ها انجام میده؛ این ابزار قدرتمند اسکیمای دیتابیس مبدا رو به فرمت سازگار با دیتابیس‌های AWS تبدیل می‌کنه. SCT ساختار دیتابیس فعلی رو بررسی و درک می‌کنه و بعد یه اسکیمای جدید برای دیتابیس مقصد ایجاد می‌کنه.این ابزار نه‌تنها اسکیمارو تبدیل می‌کنه، بلکه کدهای دیتابیس شامل روال‌های ذخیره‌شده، توابع و نماها رو هم برای سازگاری با AWS تغییر میده. همچنین، SCT مشکلاتی مثل نوع داده‌های ناسازگار یا ویژگی‌های پشتیبانی‌نشده در دیتابیس مقصد رو شناسایی و برطرف می‌کنه.موارد استفاده برای AWS DMSتوی بعضی شرایط، استفاده از DMS می‌تونه خیلی مفید باشه. مثلا وقتی که بین پلتفرم‌های دیتابیس مختلف مهاجرت می‌کنی؛ چه از یه نوع دیتابیس به همون نوع (همگون) یا به یه نوع دیگه (ناهمگون) مثل Oracle به Amazon Aurora. با DMS، می‌تونی چندین دیتابیس رو در یک دیتابیس روی AWS تجمیع کنی، که این کار مدیریت زیرساخت رو راحت‌تر و هزینه‌ها رو کمتر می‌کنه.سرویس DMS همچنین قابلیت تکرار داده‌ها به صورت مداوم رو داره که این ویژگی برای مواردی مثل بازیابی از فاجعه خیلی ایده‌آله. این ویژگی بهت اجازه میده تا داده‌های تولیدی و پشتیبان رو به صورت لحظه‌ای همگام‌سازی کنی. DMS می‌تونه داده‌ها رو به انبارهای داده AWS مثل Amazon Redshift منتقل کنه و قابلیت‌های تحلیلی داده در فضای ابری رو تقویت کنه.این سرویس یک ابزار کلیدی برای انتقال دیتابیس‌ها از دیتاسنترهای محلی به فضای ابریه و به شرکت‌ها کمک می‌کنه تا به راحتی دیتاسنترهای فیزیکی رو کنار بزارن و به AWS مهاجرت کنن.معرفی دیتابیس Amazon DynamoDB: دیتابیس DynamoDB یه سرویس کاملا مدیریت‌شده از دیتابیس‌های NoSQL هست که AWS ارائه میده. یادتونه که دیتابیس‌های NoSQL رو مثل یه سری جعبه‌های مختلف توی آشپزخونه ابری توصیف کردیم؟هر جعبه یه برچسب یا کلید خاص داره و داخلش موادی هست که به اون برچسب مربوط میشن. DynamoDB دقیقا همینطوری کار می‌کنه: به شما اجازه میده تا هر مقدار داده‌ای رو ذخیره کنید و درخواست‌ها رو با هر سطحی از ترافیک سرویس‌دهی کنید. این دیتابیس به‌طور خودکار ظرفیتش رو تنظیم و مقیاس‌بندی می‌کنه تا عملکرد بهینه‌ای داشته باشه.ویژگی‌های DynamoDBدیتابیس DynamoDB پر از ویژگی‌هاییه که اون رو به انتخابی ایده‌آل برای مدیریت داده تبدیل می‌کنه:عملکرد در مقیاس بالا:فرقی نمی‌کنه چقدر ترافیک داده وجود داشته باشه، DynamoDB به شما تضمین میده که سرعت و عملکرد ثابت خواهد موند، حتی وقتی نیازهای برنامه‌تون افزایش پیدا می‌کنه.کاملا مدیریت‌شده:مثل یه آشپزخونه ابری که همه کارهای نظافتی و پر کردن دوباره مواد اولیه به صورت خودکار انجام میشه. اینطوری، شما می‌تونید روی ساخت اپلیکیشن‌هاتون تمرکز کنید.امنیت داخلی:DynamoDB مثل یه انباری قفل‌شده و امن برای داده‌هاتونه. چه داده‌ها در حالت استراحت باشن و چه در حال انتقال، امنیتشون تضمین شده است.پشتیبان‌گیری و بازیابی:شما هر زمانی می‌تونید از داده‌هاتون بکاپ بگیرید و در صورت نیاز به نقطه خاصی برگردید. این قابلیت، بازیابی داده‌ها رو تضمین می‌کنه.موارد استفاده از DynamoDBدیتابیس DynamoDB در سناریوهای مختلفی کاربرد داره و عملکرد عالی از خودش نشون میده:برنامه‌های وب و موبایل:این سرویس برای مدیریت داده‌های کاربر و جلسات با مقیاس‌پذیری پویا بسیار مناسبه. می‌تونه به راحتی ترافیک و داده‌های زیادی رو مدیریت کنه و برای اپلیکیشن‌هایی که تعداد کاربرهاشون متغیره، ایده‌آله.برنامه‌های گیمینگ:DynamoDB دسترسی به داده با تاخیر کم رو برای لیدربوردها و داده‌های جلسات بازی فراهم می‌کنه که برای تجربه بازی در زمان واقعی ضروریه.سناریوهای IoT:توانایی DynamoDB در پردازش حجم عظیمی از داده‌های IoT و مقیاس‌پذیری بدون دردسر، باعث میشه که این سرویس برای تحلیل و پردازش بلادرنگ این داده‌ها بسیار مناسب باشه.پلتفرم‌های تجارت الکترونیک:این سرویس با مقیاس‌پذیری و عملکرد بالا، برای مدیریت موجودی، داده‌های مشتری و تاریخچه سفارش‌ها عالیه، مخصوصا در زمان‌هایی که ترافیک زیادی مثل حراج‌ها یا تعطیلات وجود داره.مروری بر دیتابیس‌های مبتنی بر حافظه در AWS بیایید اول مرور کنیم که دیتابیس مبتنی بر حافظه چی بودن. این نوع دیتابیس‌ها داده‌ها رو به جای ذخیره روی دیسک، توی RAM نگه می‌دارن. این کار شبیه به نگه‌داری مواد اولیه‌ایه که زیاد استفاده می‌کنی روی پیشخون آشپزخونه، تا همیشه دسترسی سریعی بهشون داشته باشی، به جای اینکه بری و از انبار بیاری. این ویژگی باعث میشه که بازیابی و پردازش داده‌ها خیلی سریع‌تر انجام بشه، که برای برنامه‌هایی که به دسترسی بلادرنگ نیاز دارن، مثل اپ‌های گیمینگ یا خدمات تحلیلی فوری، خیلی کاربردیه.سرویس Amazon MemoryDB for Redis:سرویس Amazon MemoryDB یه سرویس دیتابیس در حافظه کاملا مدیریت‌شده و سازگار با Redis هست.این سرویس برای اپلیکیشن‌های مدرنی طراحی شده که به سرعت دسترسی بسیار بالا به داده‌ها نیاز دارن.Redis به‌عنوان یه انبار داده در حافظه و منبع‌باز، هسته این سرویس رو تشکیل میده.بیایید ببینیم MemoryDB چه ویژگی‌های خاصی داره:عملکرد بالا: MemoryDB کل داده‌ها رو توی حافظه ذخیره می‌کنه، و می‌تونه تا 13 تریلیون درخواست در روز رو پشتیبانی کنه و از پیک‌های 160 میلیون درخواست در ثانیه هم عبور کنه.دوام و دسترسی بالا: MemoryDB for Redis به طور خودکار داده‌ها رو توی چندین منطقه دسترسی AWS تکرار می‌کنه، که این کار باعث دوام داده‌ها و دسترسی بالا میشه. این یعنی حتی اگه یکی از نودها دچار مشکل بشه، داده‌ها همچنان امن و در دسترس باقی می‌مونن.موارد استفاده از MemoryDBدیتابیس‌های مبتنی بر حافظه مثل MemoryDB توی AWS یه ابزار چندکاره هستن و برای سناریوهای مختلفی کاربرد دارن:کش برای برنامه‌های وب: MemoryDB بازیابی داده‌ها رو سریع‌تر از دیتابیس‌های رابطه‌ای انجام میده،که این ویژگی برای اپلیکیشن‌های وب با ترافیک بالا ایده‌آله و باعث کاهش زمان بارگذاری و بهبود تجربه کاربری میشه.تحلیل بلادرنگ: برخلاف دیتابیس‌های سنتی، MemoryDB در پردازش بلادرنگ داده‌ها خیلی خوب عمل می‌کنه و برای تحلیل داده‌های جریانی از منابع مختلف به صورت لحظه‌ای و ارائه بینش‌های فوری کاربرد داره.ذخیره‌سازی جلسات برای اپ‌های موبایل و وب:MemoryDB به‌عنوان یه ذخیره‌گاه جلسات کاربری، داده‌ها رو سریع‌تر از دیتابیس‌های دیسکی فراهم می‌کنه، که باعث دسترسی سریع‌تر به اطلاعات کاربری میشه.لیست امتیازات و بازی‌ها:برای اپ‌های گیمینگ، MemoryDB به خاطر سرعت بالای خواندن و نوشتنش از دیتابیس‌های رابطه‌ای بهتر عمل می‌کنه و به‌روزرسانی امتیازات و رتبه‌ها رو در زمان واقعی ممکن می‌سازه.پردازش داده‌های مکانی:      دیتابیس MemoryDB از ساختارهای داده پیچیده مثل ایندکس‌های مکانی پشتیبانی می‌کنه و برای       سرویس‌های مبتنی بر مکان، پرس و جو و دستکاری داده‌ها رو سریع‌تر از دیتابیس‌های سنتی انجام میده.نتیجه‌گیریسرویس Amazon MemoryDB for Redis یه دیتابیس در حافظه پرسرعت و مقیاس‌پذیر برای برنامه‌هایی که به دسترسی بلادرنگ و عملکرد بالا نیاز دارن، محسوب میشه. این سرویس با امنیت، دوام و مقیاس‌پذیری عالی، یه انتخاب ایده‌آل برای برنامه‌هایی مثل اپ‌های وب، گیمینگ، IoT و تحلیل داده‌هاست.خب تو این قسمت ، سرویس‌های دیتابیس AWS رو به زبان ساده توضیح دادم. از دیتابیس‌های رابطه‌ای مثل Amazon RDS گرفته تا دیتابیس‌های NoSQL مثل DynamoDB و دیتابیس‌های در حافظه مثل Amazon MemoryDB for Redis و ElastiCache، هر کدوم رو با مثال‌های کاربردی بررسی کردیم تا راحت‌تر بتونیم انتخاب کنیم که کدوم سرویس برای نیازهای ما مناسب‌تره. امیدوارم این توضیحات کمک کرده باشه تا درک بهتری از سرویس‌های دیتابیس 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قسمت 6: تکنولوژی‌ها و سرویس‌های توسعه، پیام‌رسانی، و دیپلویمنتقسمت هفتم:‌ تکنولوژی و سرویس‌های migration و انتقال دادهو در آخر این آدرس لینکدین و توئیتر من هست خوشحال میشم در ارتباط باشیم.🪩 Follow Linkedin Hossein Jafari🪩🕊 Twitter 🕊</description>
                <category>حسین جعفری</category>
                <author>حسین جعفری</author>
                <pubDate>Tue, 12 Nov 2024 21:08:55 +0330</pubDate>
            </item>
                    <item>
                <title>قسمت چهارم AWS Certified Cloud Practitioner: خدمات شبکه و Content Delivery</title>
                <link>https://virgool.io/@h0x3ein/%D9%82%D8%B3%D9%85%D8%AA-%DA%86%D9%87%D8%A7%D8%B1%D9%85-aws-certified-cloud-practitioner-%D8%AE%D8%AF%D9%85%D8%A7%D8%AA-%D8%B4%D8%A8%DA%A9%D9%87-%D9%88-content-delivery-yzjx7eob3jop</link>
                <description>مقدمهدر قسمت اول، مفاهیم ابتدایی AWS Cloud رو با هم مرور کردیم و فهمیدیم که این تکنولوژی چه کاربردهایی داره و چرا یادگیریش حتی با وجود تحریم‌ها می‌تونه به کار ما بیاد. هدف این بود که پایه‌های اصلی رایانش ابری و خدماتی که AWS ارائه می‌ده رو بشناسیم تا درک بهتری از دنیای cloud پیدا کنیم.در قسمت دوم، به خدمات محاسباتی AWS پرداختیم. از EC2، اصلی‌ترین سرویس محاسباتی AWS، تا ابزارهایی مثل Auto Scaling و Load Balancer که مدیریت منابع رو بهینه می‌کنن. همچنین، سرویس‌های کانتینری مثل ECS و EKS و تکنولوژی‌های Serverless مثل Lambda و Fargate رو بررسی کردیم. هدف این بود که بفهمیم چطور AWS می‌تونه به شرکت‌ها کمک کنه تا با کمترین هزینه و بالاترین انعطاف‌پذیری به نیازهای محاسباتی‌شون پاسخ بدن.در قسمت سوم، خدمات ذخیره‌سازی AWS را توضیح دادم؛ سرویس‌هایی مثل S3، EBS و EFS که هرکدام  برای نیازهای خاص ذخیره‌سازی طراحی شده‌اند و امنیت، پایداری و روش‌های  دسترسی متنوعی را ارائه می‌دهند.حالا توی قسمت چهارم، به خدمات شبکه‌ای AWS می‌پردازیم که شامل سرویس CloudFront، سرویس  AWS Global Accelerator، مفاهیم شبکه‌ در AWS مثل VPC، دموی VPC که دقیقا چی هست و چطور باید ساخته بشه، سرویس DNS و Route 53 و در آخرم  AWS Direct Connect و AWS VPN است. این ابزارها به ما کمک می‌کنند تا ارتباطات سریع، امن و پایدار بین منابع مختلف را در فضای ابری AWS ایجاد کنیم. تو این قسمت، یاد می‌گیریم که چطور این ابزارها را برای ساخت و مدیریت شبکه‌ای ایمن و پایدار استفاده کنیم.بررسی سرویس CDN در AWSخب اول ببینیم شبکه‌های تحویل محتوا، یا همون CDNs چی هستن. CDN یه شبکه جهانی از سرورهای متصله که تضمین می‌کنه محتوای سایتتون سریع به کاربرها برسه. فرض  کنین CDNs یه شبکه از مسیرهای تحویل پیتزا با سرعت بالا هستن که پیتزای  خوشمزه یا محتوای سایتتون رو سریع و داغ به دست کاربرها توی سراسر  دنیا می‌رسونه.CDN مثل این می‌مونه که چندین آشپزخونه پیتزا تو سطح شهر  داشته باشید. این آشپزخونه‌ها یا Edge locations، پیتزاتون رو نگه می‌دارن و  آماده تحویل داغ و سریع به هر کسی که نزدیکه و سفارش می‌ده.خب سوال اینه چرا استفاده از CDN ممکنه براتون مفید باشه؟ بعضی از مزایای CDN:سرعت:  درست مثل اهمیت تحویل سریع پیتزا، CDN به شدت دسترسی به محتوای سایتتون رو  سریع‌تر می‌کنه. این فاصله فیزیکی بین کاربر و محتوا رو کم می‌کنه که باعث  بارگذاری سریع‌تر و تجربه کاربری بهتر می‌شه.پایداری:  اینو مثل داشتن یه برنامه پشتیبان برای شب‌های شلوغ در نظر بگیرین. اگه یه  سرور از کار بیفته یا تحت فشار باشه، CDN درخواست‌ها رو خودکار به  نزدیک‌ترین سرور بعدی می‌فرسته. این تضمین می‌کنه که سایتتون در دسترس می‌مونه و با وجود ترافیک زیاد یا مشکلات سرور، به خوبی کار می‌کنه.دسترسی جهانی:  مثل زنجیره‌های محبوب پیتزا که دسترسیشون رو گسترش می‌دن، CDN سایتتون رو  به صورت جهانی با کارایی بالا قابل دسترسی می‌کنه. فرقی نمی‌کنه کاربرهاتون  کجا باشن، اونا یه تجربه محلی و سریع دارن، چون محتوا از سروری نزدیک به  اونا ارائه می‌شه.حالا بیایین نسخه AWS از CDN رو ببینیم.توی  دنیای AWS، میشه گفت Amazon CloudFront همون شبکه تحویل پیتزای عالی ماست. این  سرویس طوری طراحی شده که پیتزاهای دیجیتال‌مون مثل ویدئوها، اپلیکیشن‌ها،  یا دیتا رو سریع و ایمن به هر کسی، تو هر جایی از دنیا برسونه. CloudFront برای انتقال داده‌ها هزینه داره، ولی یه ترابایت اول رایگانه و تو حساب AWS  Free Tier شامل می‌شه.سرویس CloudFront با کش کردن محتوای شما توی چندین دیتاسنتر که بهشون Edge locations می‌گن، در سراسر دنیا کار می‌کنه. وقتی یه  کاربر محتوای شما رو درخواست می‌کنه، CloudFront از نزدیک‌ترین Edge locations به کاربر اون رو ارائه می‌ده. این به شدت تأخیر (زمان لازم برای انتقال دیتا  بین سرور و کاربر) رو کاهش می‌ده.سرویس CloudFront امنیت رو هم بالا  می‌بره. این سرویس با AWS Shield برای محافظت در برابر حملات DDoS و  فایروال وب اپلیکیشن AWS یا WAF ترکیب شده تا سایتتون رو از حملات معمول وب محافظت کنه. این یعنی علاوه بر اینکه تحویل محتوا سریع هست، امنیت بالایی هم داره و در برابر تهدیدات سایبری محافظت می‌کنه.سرویس CloudFront به طور عمیق با AWS یکپارچه شده، و استفاده از سرویس‌های دیگه AWS مثل S3، EC2، و  Route 53 رو ساده و بهینه می‌کنه. این یکپارچگی باعث می‌شه معماری روان و  قابل توسعه‌ای داشته باشین که بتونه به راحتی با ترافیک و الگوهای استفاده مختلف سازگار بشه، مثل یه سیستم تحویل عالی که هم تو زمان‌های شلوغ و هم در  مواقع خلوت عملکرد خوبی داره.بیایین نگاهی به کاربردهای واقعی CloudFront بندازیم.سرویس Amazon CloudFront برای پخش ویدیوها خیلی کارآمده. این سرویس تضمین می‌کنه که بافر حداقلی وجود داشته باشه و تجربه تماشای با کیفیت و بدون وقفه‌ای ارائه  می‌ده.توی تجارت الکترونیک، امنیت تراکنش‌ها اهمیت داره.  CloudFront برای محافظت از انتقال داده‌های حساس، مثل اطلاعات کارت  اعتباری، از رمزگذاری و یکپارچگی با سرویس‌های امنیتی AWS استفاده می‌کنه.مواقع  افزایش ترافیک، مثل بلک فرایدی یا راه‌اندازی یه محصول جدید، CloudFront  کمک می‌کنه سایت‌ها بدون مشکل از پس این افزایش بار بر بیان.سرویس CloudFront  همچنین ویژگی‌های تحلیلی و گزارش‌دهی دقیقی ارائه می‌ده که به شما امکان  می‌ده بینش‌های ارزشمندی از رفتار کاربرهاتون به دست بیارین، مثل اینکه چه  محتوایی محبوب‌تره و مخاطبانتون از کجا هستن.سرویس AWS Global Acceleratorسرویس AWS Global Accelerator یه سرویس شبکه‌ست که ترافیک کاربرهاتون رو از طریق  زیرساخت جهانی AWS هدایت می‌کنه و عملکرد و دسترسی‌پذیری اپلیکیشن شما رو  بهبود می‌ده. اگر بخواهیم مقایسه‌ای داشته باشیم، قبلاً گفتیم که شبکه‌های تحویل محتوا (CDN) مثل مسیرهای تحویل پیتزا عمل می‌کنند و پیتزاها را در آشپزخانه‌های مختلف سطح شهر (edge locations) آماده تحویل نگه می‌دارند تا به سرعت به دست مشتری  برسند. اما AWS Global Accelerator کمی متفاوته و مثل یک مسیر ویژه و سریع برای پیتزاهای خاص عمل می‌کند؛ به این معنا که به‌جای تحویل در هر آشپزخانه، بهترین و سریع‌ترین مسیر رو انتخاب می‌کنه تا پیتزاهای مهم و  حساس (یا همان ترافیک خاص) سریع‌تر به مقصد برسند.سرویس CloudFront از Edge locations برای کش کردن و ذخیره محتوای ثابت استفاده می‌کنه تا در دسترس کاربران باشد، در حالی که Global Accelerator از همین Edge locations بهره می‌بره تا بهترین مسیر برای هدایت ترافیک به  نزدیک‌ترین نقطه مقصد را پیدا کند. به عبارتی، Global Accelerator روی  یافتن سریع‌ترین و پایدارترین مسیر تمرکز دارد تا ترافیک را بدون تأخیر به  مقصد نهایی برساند. بعضی از مزایای AWS Global Accelerator:بهبود عملکرد:  AWS Global Accelerator ترافیک کاربرهاتون رو از طریق شبکه جهانی بدون  ازدحام آمازون هدایت می‌کنه. این کار تجربه کاربری روان‌تر و سریع‌تری رو  فراهم می‌کنه و تا ۶۰٪ افزایش در پهنای باند رو ممکن می‌سازه.مدیریت ترافیک ساده‌تر:  Global Accelerator دو آی‌پی استاتیک عمومی جهانی ارائه می‌ده که به عنوان  نقطه ورود ثابت به نقاط انتهایی اپلیکیشن شما عمل می‌کنن. این کار مدیریت  ترافیک بین مناطق مختلف رو ساده و برای عملکرد و هزینه بهینه می‌کنه، بدون  نیاز به تنظیمات پیچیده DNS.امنیت و پایداری:  AWS Global Accelerator امنیت اپلیکیشن‌ها رو بالا می‌بره. این سرویس از  حملاتی مثل DDoS محافظت می‌کنه و خدمات شما رو ایمن نگه می‌داره. از نظر پایداری، ترافیک رو خودکار به نزدیک‌ترین نقطه انتهایی منطقه‌ای در دسترس  هدایت می‌کنه اگه یه مسیر مشکل پیدا کنه.تجربه کاربری پایدار در سطح جهانی:  فرقی نمی‌کنه کاربرها کجای دنیا باشن؛ Global Accelerator باعث می‌شه همه  با زمان پاسخگویی اپلیکیشن ثابت و بهینه کار کنن. مسیریابی هوشمند Global  Accelerator ترافیک کاربر رو از طریق شبکه جهانی AWS به نقطه انتهایی‌ای  هدایت می‌کنه که بهترین عملکرد رو ارائه می‌ده.سرویس AWS Global Accelerator در این مواقع به‌دردتون می‌خوره:وقتی که کاربرهای جهانی دارین:  برای کسب‌وکارهایی با مخاطبان جهانی، مثل سرویس‌های استریمینگ یا  خرده‌فروشی‌های آنلاین بین‌المللی، Global Accelerator کمک می‌کنه دسترسی  سریع و پایدار به محتوای شما حفظ بشه.اگه رویدادهای ترافیک بالا دارین:  تو زمان‌های شلوغ مثل رویدادهای فروش بزرگ یا معرفی محصولات، سایتتون  ممکنه با یه موج بازدیدکننده‌ها مواجه بشه. Global Accelerator مثل یه خط  سریع اضافی تو ساعت شلوغیه که کمک می‌کنه این موج رو مدیریت کنین و عملکرد  رو حفظ کنین.اگه اپلیکیشن‌های چندمنطقه‌ای دارین:  برای اپلیکیشن‌هایی که تو مناطق مختلف AWS مستقر شدن، مدیریت ترافیک ممکنه پیچیده باشه. Global Accelerator این فرآیند رو با ارائه یه نقطه ورود  واحد برای کل ترافیکتون ساده می‌کنه.اگه اپلیکیشن‌های حساس به تأخیر دارین:  تو سناریوهایی که هر میلی‌ثانیه اهمیت داره، مثل پلتفرم‌های معاملات مالی  یا بازی‌های تعاملی، Global Accelerator تأخیر رو کمینه می‌کنه و ترافیک  کاربرها رو از طریق شبکه پرسرعت AWS هدایت می‌کنه.بررسی شبکه در AWSخب تو این قسمت، می‌خواهیم با شبکه‌بندی AWS آشنا بشیم و به طور خاص سرویس Amazon VPC یا همون ابر خصوصی مجازی رو بررسی کنیم. Amazon VPC در واقع فضای خصوصی شما توی فضای ابری AWS هست که مثل یه بخش امن و ایزوله از یه آشپزخونه‌ی  بزرگ عمل می‌کنه. این فضای خصوصی به شما کنترل کاملی روی محیط شبکه مجازی‌تون می‌ده؛ می‌تونید چیدمان منابع (ساب‌نت‌ها)، قوانین دسترسی (گروه‌های امنیتی)، و ارتباط با دنیای بیرون مثل اینترنت گیت‌وی‌ها رو  مدیریت کنین.اجزای اصلی Amazon VPCوقتی از VPC استفاده می‌کنیم، داریم یه شبکه خصوصی مجازی توی AWS می‌سازیم. این شبکه شامل بخش‌های مختلفی هست که در ادامه توضیحشون می‌دم.1. ساب‌نت‌ها (Subnets)ساب‌نت‌ها بخش‌های کوچیک‌تری از VPC هستن که شبکه‌ی شما رو به بخش‌های مجزا تقسیم  می‌کنن. با این کار می‌تونید منابع رو بهتر سازمان‌دهی کنید و لایه‌های  امنیتی مختلفی بهشون اضافه کنین. توی هر VPC، ما می‌تونیم هم ساب‌نت عمومی و هم ساب‌نت خصوصی داشته باشیم.ساب‌نت عمومی:  این نوع ساب‌نت به دنیای بیرون (اینترنت) دسترسی داره، پس می‌شه ازش برای  منابعی استفاده کرد که باید برای عموم کاربران قابل دسترسی باشن، مثلاً یه  وب سرور.ساب‌نت خصوصی: این ساب‌نت برای منابع  داخلی مثل دیتابیس‌ها استفاده می‌شه که نمی‌خوایم مستقیم به اینترنت متصل  باشن؛ بنابراین فقط از داخل شبکه قابل دسترسی هستن.2. اینترنت گیت‌وی (Internet Gateway) و جدول‌های مسیریابی (Route Tables)اینترنت گیت‌وی رو می‌تونید به عنوان در اصلی آشپزخونه به دنیای بیرون در نظر بگیرین که  به VPC شما اجازه می‌ده با اینترنت ارتباط برقرار کنه. حالا برای اینکه  بدونیم هر ترافیکی باید به کجا بره، نیاز به یه نقشه راه داریم، که این نقش  رو جدول‌های مسیریابی ایفا می‌کنن.جدول‌های مسیریابی مثل راهنماهایی هستن که تعیین می‌کنن ترافیک شبکه شما باید به کدوم مقصد  بره. مثلاً توی یه جدول مسیریابی می‌تونیم مشخص کنیم که ترافیک ساب‌نت عمومی از اینترنت گیت‌وی رد بشه و به اینترنت برسه، در حالی که ترافیک  ساب‌نت خصوصی داخل شبکه باقی بمونه یا از طریق VPN به شبکه داخلی شرکت متصل  بشه.3. گروه‌های امنیتی (Security Groups) و لیست‌های کنترل دسترسی شبکه (NACLها)برای اینکه امنیت منابع شما حفظ بشه، AWS دو لایه امنیتی اصلی ارائه می‌ده: گروه‌های امنیتی و NACLها (Network ACLs).گروه‌های امنیتی:  این‌ها مثل محافظ‌های درب ورودی منابع عمل می‌کنن. گروه‌های امنیتی در سطح  اینستنس عمل می‌کنن، مثلاً یه سرور EC2، و به شما اجازه می‌دن مشخص کنین  که چه ترافیکی اجازه ورود و خروج داره. نکته مهم اینه که گروه‌های امنیتی Stateful هستن، یعنی اگه یه ترافیک رو در یه جهت مجاز بدونن، ترافیک برگشتی رو هم خودکار اجازه می‌دن.لیست‌های کنترل دسترسی شبکه: این‌ها مثل نگهبان‌هایی هستن که در سطح ساب‌نت عمل می‌کنن. بر خلاف گروه‌های امنیتی، NACLها Stateless هستن، یعنی نمی‌تونن تعاملات قبلی رو به خاطر بیارن و برای هر درخواست  باید قوانین ورودی و خروجی جداگانه تعریف بشه. این‌ها به شما این امکان رو  می‌دن که بر اساس پروتکل، پورت و آی‌پی آدرس مبدا یا مقصد، ترافیک ورودی و  خروجی رو کنترل کنین.تفاوت بین گروه‌های امنیتی و NACLهاتفاوت اصلی بین این دو لایه امنیتی در نحوه‌ی عملکرد و سطح پوشش‌شونه. گروه‌های امنیتی سطح جزئی‌تری دارن و برای هر اینستنس تنظیم می‌شن و حالت (State) رو حفظ  می‌کنن؛ یعنی وقتی اجازه ورود به ترافیک داده می‌شه، خروجش هم مجازه. اما NACLها برای کل ساب‌نت عمل می‌کنن و حالت رو حفظ نمی‌کنن؛ پس برای هر ترافیک ورودی و خروجی باید قوانین جداگانه تعریف بشه.جمع‌بندیدر  Amazon VPC، شما با استفاده از ساب‌نت‌ها می‌تونید بخش‌های عمومی و خصوصی  رو از هم جدا کنین و با اینترنت گیت‌وی و جدول‌های مسیریابی، جریان ترافیک  شبکه رو مدیریت کنین. به کمک گروه‌های امنیتی و NACLها، لایه‌های امنیتی  بیشتری به منابع شبکه‌تون اضافه می‌کنین و کنترل کاملی روی امنیت و دسترسی  دارین.دمو:‌ ایجاد و بررسی VPCخب تا اینجای مباحث بیشتر تئوری بوده، اما حالا وقتشه که یه VPC رو تو عمل ببینیم. یادتونه که VPC رو مثل یه بخش امن و ایزوله از یه آشپزخونه ابری توصیف کردیم؟ حالا قراره بریم سراغ کنسول AWS تا ببینیم این چطوری تو فضای ابری واقعی به نظر می‌رسه. من وارد حساب AWS خودم شدم و می‌خوام برم به سرویس VPCمی‌تونم اینجا روش کلیک کنم یا تو نوار جستجو VPC رو تایپ کنم.حالا سرویس VPC رو انتخاب می‌کنم و شما باید به صفحه‌ای شبیه این برسین. خب برای ساخت یک VPC روی Create VPC کلیک می‌کنم.ما اینجا چندتا گزینه داریم. می‌تونیم فقط یه VPC ایجاد کنیم و بعد به‌صورت دستی سایر منابع رو ایجاد کنیم، یا می‌تونیم روی گزینه  VPC and more  کلیک کنیم که همین کار رو برای این مثال انجام می‌دیم. همون‌طور که می‌بینین، یه پیش‌نمایش به‌صورت یه نقشه نمایش داده می‌شه که نشون می‌ده این منابع مختلف چطور به هم متصل می‌شن.در این گزینه پیش‌فرض، ما یه VPC داریم با چهار ساب‌نت و دو availability zone به نام US East 1A و US East 1B. توی هر availability zone یه ساب‌نت عمومی و یه ساب‌نت خصوصی داریم.و بعد یه جدول مسیریابی داریم که به ساب‌نت‌های عمومی ما تو هر availability zone متصل می‌شه.همچنین جدول‌های مسیریابی برای هر کدوم از ساب‌نت‌های خصوصی در هر availability zone داریم.سمت راست این نقشه، یه اینترنت گیت‌وی داریم که به VPC ما اجازه می‌ده از طریق ساب‌نت‌های عمومیو جدول مسیریابی عمومی با اینترنت ارتباط برقرار کنه.حالا بریم سراغ بعضی تنظیمات:در بخش تنظیمات VPC، می‌تونیم برخی از گزینه‌ها رو برای ایجاد VPC و منابع وابسته‌اش انتخاب کنیم.گزینه Resources to create: گزینه &quot;VPC and more&quot; انتخاب شده، به این معنی که علاوه بر خود VPC، منابع شبکه‌ای دیگر هم به‌طور خودکار ایجاد خواهند شد.گزینه Name tag auto-generation: با فعال کردن گزینه Auto-generate، نام‌گذاری خودکار برای منابع VPC انجام می‌شه. در اینجا، مقدار پیش‌فرض &quot;project&quot; تنظیم شده.گزینه IPv4 CIDR block:  محدوده CIDR، یا همون بلوک آدرس IP، رو می‌تونیم برای VPC انتخاب کنیم. در  اینجا، بلوک آدرس &quot;10.0.0.0/16&quot; انتخاب شده که 65,536 آدرس IP رو پوشش  می‌ده.گزینه IPv6 CIDR block: گزینه &quot;No IPv6 CIDR block&quot; انتخاب شده، یعنی آدرس‌های IPv6 برای این VPC تخصیص داده نمی‌شه.گزینه Number of Availability Zones (AZs):  تعداد availability zones به دو عدد تنظیم شده. هر zone از دیگری ایزوله  است؛ بنابراین اگه یکی از zone ها دچار مشکل بشه، zone دیگه همچنان فعال و  دسترس‌پذیر باقی می‌مونه، که این باعث افزایش پایداری شبکه می‌شه.و در ادامه تنظیمات، می‌تونیم نوع و تعداد ساب‌نت‌ها و گزینه‌های دیگه‌ای رو برای VPC انتخاب کنیم:گزینه Number of public subnets:  تعداد ساب‌نت‌های عمومی برای VPC رو می‌تونیم انتخاب کنیم. در اینجا، دو  ساب‌نت عمومی برای دسترسی مستقیم به اینترنت تعیین شده که معمولاً برای  اپلیکیشن‌های وب به کار می‌ره.گزینه Number of private subnets:  تعداد ساب‌نت‌های خصوصی هم قابل تنظیمه. دو ساب‌نت خصوصی انتخاب شده که  برای منابع بک‌اند (مانند دیتابیس‌ها) که نیازی به دسترسی عمومی ندارند  مناسب است.گزینه Customize subnets CIDR blocks:  می‌تونیم بلوک‌های CIDR هر ساب‌نت رو شخصی‌سازی کنیم. این گزینه به ما  انعطاف بیشتری در تخصیص محدوده آی‌پی‌ها می‌ده، ولی در اینجا پیش‌فرض رها  شده.گزینه NAT gateways: این گزینه به ما اجازه  می‌ده NAT Gateway رو برای هر zone انتخاب کنیم. NAT Gateway امکان دسترسی  امن از ساب‌نت‌های خصوصی به اینترنت رو فراهم می‌کنه بدون اینکه منابع  خصوصی مستقیم به اینترنت متصل بشن. ما می‌تونیم تنظیمات NAT Gateway رو به  صورت &quot;None&quot;، &quot;In 1 AZ&quot; یا &quot;1 per AZ&quot; انتخاب کنیم. در اینجا، گزینه None  انتخاب شده.گزینه VPC endpoints: این گزینه  اجازه می‌ده که نقطه پایانی (Endpoint) به VPC اضافه بشه. انتخاب S3  Gateway می‌تونه هزینه‌های NAT Gateway رو کاهش بده و دسترسی مستقیم به S3  رو از طریق VPC فراهم کنه. در اینجا، گزینه &quot;None&quot; انتخاب شده.گزینه DNS options: این دو گزینه به ما اجازه می‌دن که DNS hostnames و DNS resolution رو فعال کنیم. این کار کمک می‌کنه که نام‌های DNS به راحتی قابل حل باشن و  برای دسترسی به منابع داخل VPC از نام‌گذاری DNS استفاده کنیم.بعد از این تنظیمات، می‌تونیم روی &quot;Create VPC&quot; کلیک کنیم تا VPC با این تنظیمات ساخته بشه.بعد از ایجاد VPC، می‌ریم سراغ بررسی‌ها:اگه به بخش امنیت برید و روی Network ACLs کلیک کنیدیه Network ACL پیش‌فرض برای VPC مون ایجاد شده. Network ACLs در سطح ساب‌نت عمل می‌کنن و stateless هستن، یعنی تعاملات قبلی رو به خاطر نمی‌آرن. مثل یه جامعه بسته با نگهبانانی که تو ورودی‌ها ایستادن و تعیین می‌کنن چه کسی اجازه ورود یا خروج داره. به‌طور جداگانه، باید قوانین ورودی و خروجی تنظیم بشن تا ترافیک ورودی و خروجی رو کنترل کنن. این با گروه‌های امنیتی فرق داره که stateful هستن و تعاملات رو به خاطر می‌سپارن.گروه‌های امنیتی (Security Groups) در سطح اینستنس عمل می‌کنن. این گروه‌ها شبیه در ورودی خونه شما هستن و نگهبان‌ها می‌دونن چه کسی وارد خونه‌تون شده. اگه اجازه عبور ترافیک در یه جهت داده بشه، ترافیک برگشتی هم باید مجاز باشه.بررسی DNSخب ببینیم DNS چیه؟  DNS یه سرویس توزیع‌شده جهانیه که نام‌های قابل خوندن برای انسان، مثل amazon.com رو به آدرس‌های IP عددی تبدیل می‌کنه. اینجا ما به‌طور خاص به سرویس Amazon Route 53، می‌پردازیم. فرض کنید DNS مثل یه دفترچه تلفن بزرگ برای اینترنت عمل می‌کنه. وقتی  یه آدرس وب مثل worldpizzaco.com رو تایپ می‌کنید، DNS پشت‌صحنه کار  می‌کنه تا یه آدرس IP متناظر پیدا کنه، درست مثل اینکه شماره تلفن یه شخص  رو پیدا کنین. این فرآیند برای هدایت ترافیک اینترنت حیاتی است و اطمینان  می‌ده که دستگاه‌های کاربران به سرورهای درست وصل بشن. توی دنیای آمازون ، Amazon Route 53 سرویس DNS پیشرفته و قابل اعتمادیه. این سرویس همچنین خدمات ثبت نام دامنه و بررسی سلامت منابع رو ارائه می‌ده. Route 53 مثل یه دفترچه تلفن کارآمد برای سرویس‌های AWS عمل می‌کنه و اسم‌های دامنه رو به سرعت به آدرس‌های IP تبدیل می‌کنه.ویژگی‌های Amazon Route 53:مسیریابی پیشرفته ترافیک:تصور کنید شماره تلفن مناسب رو بر اساس موقعیت جغرافیایی یا زمان روز انتخاب کنید.Route 53 ترافیک رو به‌طور هوشمند هدایت می‌کنه و از روش‌های مختلفی مثل  مسیریابی جغرافیایی، مسیریابی مبتنی بر تأخیر، و مسیریابی وزن‌دار استفاده  می‌کنه.بررسی سلامت (Health Checks):درست مثل چک کردن خط تلفن قبل از تماس، Route 53 سلامت منابع مثل سرورهای وب رو بررسی می‌کنه.این سرویس به‌طور خودکار ترافیک رو از مسیرهای خراب یا ناسالم منحرف می‌کنه تا دسترس‌پذیری و عملکرد پیوسته‌ای داشته باشین.فایل اور DNS:اگه نقطه انتهایی اصلی شما دچار مشکل بشه، Route 53 می‌تونه کاربران رو خودکار به یه مکان ثانویه هدایت کنه.مقیاس‌پذیری و یکپارچگی:به عنوان بخشی از مجموعه AWS، Route 53 به‌طور خودکار با نیازهای شما مقیاس‌بندی می‌شه.این  سرویس به راحتی با سرویس‌های دیگه AWS مثل Amazon EC2، Elastic Load  Balancing، و Amazon S3 یکپارچه می‌شه و تجربه یکپارچه‌ای رو در مدیریت  ترافیک اپلیکیشن‌ها فراهم می‌کنه.کاربردهای Route 53:مدیریت ترافیک جهانی: برای کسب‌وکارهایی که در سطح جهانی فعالیت می‌کنن، Route 53 ابزار با ارزشی برای مدیریت ترافیک در مناطق جغرافیایی مختلفه.ثبت و مدیریت نام دامنه: علاوه بر مسیریابی و بالانس بار، Route 53 خدمات ثبت نام دامنه هم ارائه می‌ده.می‌تونین نام‌های دامنه رو مستقیماً از طریق Route 53 خریداری و مدیریت کنین.DNS خصوصی برای Amazon VPC: برای اپلیکیشن‌هایی که داخل یه VPC اجرا می‌شن، Route 53 می‌تونه برای  مدیریت نام‌های DNS داخلی EC2 مورد استفاده قرار بگیره. این ویژگی به شما  اجازه می‌ده اسم‌های دامنه‌ای که فقط داخل VPC حل می‌شن رو به اینستنس‌ها  اختصاص بدین.استفاده از مدل های ترکیبی با خدمات شبکهتو این قسمت در مورد AWS Direct Connect و AWS VPN یاد می‌گیریم. این مدل‌های شبکه ترکیبی به شما اجازه می‌دن زیرساخت محلی‌تون رو به Amazon VPC متصل کنید.بیایین اول با AWS Direct Connect شروع کنیم:سرویس AWS Direct Connect مانند یک جاده خصوصی است که به‌طور اختصاصی برای شما  ساخته شده است. این سرویس اتصال مستقیم و خصوصی از دیتاسنتر شما به AWS  فراهم می‌کند و از اینترنت عمومی عبور نمی‌کند. این مسیر اختصاصی باعث  می‌شود انتقال داده‌ها سریع‌تر و قابل‌اعتمادتر باشد، مانند اینکه مواد  اولیه مستقیماً از تأمین‌کننده به آشپزخانه شما بدون تأخیرهای ترافیکی  برسند.مزایای استفاده از AWS Direct Connect:انتقال داده با سرعت بالا: Direct Connect ظرفیت شبکه اختصاصی ارائه می‌ده که سرعت انتقال داده‌ها رو به شدت افزایش می‌ده.این  انتقال پرسرعت برای اپلیکیشن‌هایی که شامل انتقال داده‌های بزرگ و مکرر،  بازیابی از بلایا یا انتقال داده‌های زنده هستن، خیلی مفیده.کاهش هزینه‌های پهنای باند: با عبور نکردن از اینترنت عمومی، Direct Connect می‌تونه برای انتقال داده‌های سنگین اقتصادی‌تر باشه.این  سرویس حجم داده‌ای که از اینترنت منتقل می‌شه رو کاهش می‌ده و می‌تونه  هزینه‌های کلی شبکه رو کاهش بده، به‌خصوص اگه به‌طور مداوم حجم زیادی از  داده‌ها رو به AWS منتقل می‌کنید.اتصال خصوصی و قابل اعتماد: Direct Connect یه مسیر پایدار و امن ارائه می‌ده که ریسک‌های مشکلات اینترنت مثل تأخیر و تهدیدات احتمالی رو کاهش می‌ده.ماهیت خصوصی این اتصال امنیت داده‌های حساس شما رو هم افزایش می‌ده.حالا نگاهی به AWS VPN داشته باشیم:سرویس AWS VPN مثل یه وسیله نقلیه زرهی هست که مواد اولیه رو به‌صورت امن از جاده‌های عمومی به AWS منتقل می‌کنه. این سرویس داده‌هاتون رو رمزنگاری می‌کنه و در طول مسیر از اینترنت به AWS محافظت می‌کنه.دو نوع VPN وجود داره:مدل Site-to-Site VPN:این VPN یه اتصال امن بین دیتاسنتر یا دفتر شما و محیط AWS شما ایجاد می‌کنه. این سرویس به شبکه شما اجازه می‌ده به فضای ابری AWS متصل بشه انگار که بخشی از دیتاسنتر خودتونه.مدل Client VPN:این  یه سرویس VPN مدیریت‌شده مبتنی بر کلاینت هست که به شما اجازه می‌ده از هر  مکانی به منابع AWS یا شبکه خصوصی‌تون دسترسی ایمن داشته باشین. این سرویس دسترسی ایمن و مدیریت‌شده‌ای رو برای کاربرهای دورکار مثل کارکنانی که از خارج از دفتر متصل می‌شن، فراهم می‌کنه.چه موقع از VPN استفاده کنیم و چه موقع از Direct Connect؟وقتی Direct Connect رو انتخاب کنین که انتقال داده‌های بزرگ مقیاس نیاز دارید.اگه  سازمانتون مرتباً حجم زیادی از داده‌ها رو منتقل می‌کنه، Direct Connect  یه راه‌حل پهنای باند اختصاصی و با ظرفیت بالا ارائه می‌ده. این سرویس  برای اپلیکیشن‌هایی که به عملکرد شبکه پایدار و قابل پیش‌بینی نیاز دارن،  خیلی مهمه، مثل تحلیل‌های زنده داده یا معاملات پرسرعت.وقتی VPN رو انتخاب کنین اگه دسترسی از راه دور انعطاف‌پذیر می‌خواین.VPN برای ارائه اتصال امن رمزنگاری‌شده برای دسترسی از راه دور به حساب AWS شما ایده‌آله. این سرویس برای کارکنانی که از خونه یا مکان‌های دور کار می‌کنن، مناسبه.خب تو قسمت چهارم ، به دنیای شبکه‌ای AWS وارد شدیم و ابزارهایی رو بررسی کردیم که هر کدوم از این سرویس‌ها به ما کمک می‌کنن تا شبکه‌ای سریع، امن و پایدار در فضای ابری ایجاد کنیم. با این توضیحات، امیدوارم که دید بهتری نسبت به انتخاب و استفاده از این سرویس‌ها برای بهینه‌سازی ارتباطات و امنیت شبکه‌تون در 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قسمت 6: تکنولوژی‌ها و سرویس‌های توسعه، پیام‌رسانی، و دیپلویمنتقسمت هفتم:‌ تکنولوژی و سرویس‌های migration و انتقال دادهو در آخر این آدرس لینکدین و توئیتر من هست خوشحال میشم در ارتباط باشیم.🪩 Follow Linkedin Hossein Jafari🪩🕊 Twitter 🕊</description>
                <category>حسین جعفری</category>
                <author>حسین جعفری</author>
                <pubDate>Sat, 09 Nov 2024 18:29:01 +0330</pubDate>
            </item>
                    <item>
                <title>قسمت سوم AWS Certified Cloud Practitioner: فناوری و خدمات ذخیره‌سازی مثل  S3</title>
                <link>https://virgool.io/@h0x3ein/%D9%82%D8%B3%D9%85%D8%AA-%D8%B3%D9%88%D9%85-aws-certified-cloud-practitioner-%D9%81%D9%86%D8%A7%D9%88%D8%B1%DB%8C-%D9%88-%D8%AE%D8%AF%D9%85%D8%A7%D8%AA-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D9%85%D8%AB%D9%84-s3-p7xesupj3fi8</link>
                <description>مقدمهدر قسمت اول، مفاهیم ابتدایی AWS Cloud رو با هم مرور کردیم و فهمیدیم که این تکنولوژی چه کاربردهایی داره و چرا یادگیریش حتی با وجود تحریم‌ها می‌تونه به کار ما بیاد. هدف این بود که پایه‌های اصلی رایانش ابری و خدماتی که AWS ارائه می‌ده رو بشناسیم تا درک بهتری از دنیای cloud پیدا کنیم.در قسمت دوم، به خدمات محاسباتی AWS پرداختیم. از EC2، اصلی‌ترین سرویس محاسباتی AWS، تا ابزارهایی مثل Auto Scaling و Load Balancer که مدیریت منابع رو بهینه می‌کنن. همچنین، سرویس‌های کانتینری مثل ECS و EKS و تکنولوژی‌های Serverless مثل Lambda و Fargate رو بررسی کردیم. هدف این بود که بفهمیم چطور AWS می‌تونه به شرکت‌ها کمک کنه تا با کمترین هزینه و بالاترین انعطاف‌پذیری به نیازهای محاسباتی‌شون پاسخ بدن.حالا در قسمت سوم، قراره به خدمات ذخیره‌سازی AWS مثل S3، EBS و EFS بپردازیم. هرکدوم از این سرویس‌ها قابلیت‌های خاص خودشون رو دارن و می‌تونن به نیازهای مختلف ذخیره‌سازی جواب بدن. از پایداری و امنیت داده‌ها گرفته تا گزینه‌های مختلفی که برای دسترسی و بازیابی اطلاعات داریم، همه رو بررسی می‌کنیم.قبل از اینکه بریم سراغ استوریج، یه مرور سریع از EC2 داشته باشیم. EC2 مخفف Elastic Compute Cloud هست. تصور کنید هر برنامه‌ای که می‌سازیم مثل ساختن یه پیتزای شخصیه. حالا بیایم EC2 رو مثل یه آشپزخونه اصلی در نظر بگیریم که توش پیتزا می‌پزیم. اندازه آشپزخونه، تعداد سرآشپزا و ابزارها تعیین می‌کنه که چقدر سریع می‌تونیم پیتزا درست کنیم و چند تا هم‌زمان می‌شه پخت. EC2 گزینه‌های متنوعی برای استوریج داره تا به نیازهای مختلف پاسخ بده. بیایید نگاهی بهشون بندازیم.1. اولین گزینه، Amazon EBS یا همون Elastic Block Store:خب، بذارید یه جور راحت‌تر بگم؛ Amazon EBS مثل فر اصلی آشپزخونه EC2 می‌مونه! یه فر که همیشه به سرور وصله و ازش میشه برای پختن پیتزاهای اصلی‌مون استفاده کرد. در واقع EBS یه سیستم ذخیره‌سازی بلاکی و پایداره که مخصوص اینستنس‌های EC2 طراحی شده و همه‌جوره مطمئنه.ویژگی‌های اصلیش چیان؟ اول از همه پایداری و قابلیت اطمینان بالاشه؛ یعنی حتی اگه اینستنس خاموش بشه یا مشکلی براش پیش بیاد، داده‌های شما سر جاشون می‌مونن و از دست نمی‌رن. این خیلی نکته مثبتیه، چون خیالتون از بابت حفظ اطلاعات راحت می‌شه.قابلیت مقیاس‌پذیری هم داره. یعنی اگه نیاز به فضای بیشتر داشتید، می‌تونید اندازه‌اش رو بدون هیچ‌گونه توقفی افزایش بدید. این برای مواقعی که کسب‌وکار رشد می‌کنه و داده‌ها بیشتر می‌شن، خیلی به درد می‌خوره.قابلیت Snapshot هم از دیگر ویژگی‌های جالبشه. با این قابلیت می‌تونید از داده‌هاتون بکاپ بگیرید و در صورت نیاز از همین بکاپ‌ها برای ساختن ولیوم‌های جدید استفاده کنید. درست مثل گرفتن عکس از پیتزایی که می‌پزید تا هر وقت خواستید دوباره همون پیتزا رو درست کنید.موارد استفاده از EBS:این سرویس برای میزبانی دیتابیس‌های رابطه‌ای (مثل MySQL) یا NoSQL، تحلیل داده‌های حجیم و همین‌طور مدیریت منابع سازمانی یا سیستم‌های مدیریت ارتباط با مشتری حسابی جواب می‌ده.2. بعدی EFS یا Elastic File System:اگه Amazon EBS رو مثل فر اصلی پیتزا در آشپزخونه EC2 دیدیم، Amazon EFS یه نوار نقاله‌ست که می‌تونه همزمان به چندین آشپزخونه سرویس بده! این سیستم به طور مقیاس‌پذیر طراحی شده و به اینستنس‌های مختلف EC2 و حتی بعضی از سرویس‌های دیگه‌ی AWS دسترسی می‌ده.ویژگی‌های اصلی EFSمدیریت‌شده بودنش اولین ویژگی برجسته EFSه، یعنی لازم نیست درگیر پیچیدگی‌های نصب و نگهداریش بشید. Amazon به این موضوع رسیدگی می‌کنه و شما فقط ازش استفاده می‌کنید.مقیاس‌بندی خودکار یکی دیگه از مزیت‌هاشه؛ این یعنی EFS خودش به طور خودکار اندازه‌اش رو با توجه به حجم فایل‌ها تنظیم می‌کنه. فایل اضافه کردید؟ خودش بزرگ‌تر می‌شه. حذف کردید؟ خودش کوچیک می‌شه.دسترسی همزمان هم از دیگر ویژگی‌های مهمشه. یعنی چندین اینستنس EC2 می‌تونن همزمان به این سیستم وصل بشن و ازش استفاده کنن، انگار که دارن به همون نوار نقاله دسترسی دارن و می‌تونن همزمان پیتزاها رو ازش بردارن.موارد استفاده از EFSاین سیستم ذخیره‌سازی به درد برنامه‌هایی می‌خوره که نیاز دارن فضای ذخیره‌سازیشون به مرور زمان بیشتر بشه. برای مثال سیستم‌های مدیریت محتوا و سرویس‌های وب که فایل‌های زیادی رو مدیریت می‌کنن و به فضای ذخیره‌سازی زیادی نیاز دارن. برای تحلیل داده‌های حجیم هم خیلی مفیده، چون داده‌ها همیشه در دسترسن. علاوه بر این، توی محیط‌های توسعه و تست هم کاربرد زیادی داره، چون این محیط‌ها معمولاً به یه سیستم ذخیره‌سازی مقیاس‌پذیر و چند کاربره نیاز دارن.3. بعدی، Instance Store هستاین Instance Store یه نوع استوریج موقته که به صورت بلاکی و مستقیم به اینستنس‌های EC2 متصل می‌شه. برعکس EBS، این استوریج پایداری نداره و بیشتر برای ذخیره‌ی داده‌های موقت و لحظه‌ای استفاده می‌شه. اگر بخوایم یه مثال بزنیم، Instance Store مثل یه میز کار موقته که شما مواد اولیه رو روش آماده می‌کنید، اما اگر آشپزخونه رو تعطیل کنید یا اینستنس متوقف بشه، تمام چیزهایی که روش هست از بین می‌ره.ویژگی‌های اصلی Instance Storeعملکرد بالای ورودی/خروجی (I/O) داره چون به‌صورت مستقیم به اینستنس متصله، که باعث می‌شه عملیات‌های خوندن و نوشتن سریع‌تر انجام بشن.موقتی بودن این استوریج یکی دیگه از ویژگی‌های مهمشه. یعنی اگر اینستنس شما متوقف، خاموش یا خراب بشه، داده‌های ذخیره‌شده روی Instance Store از بین می‌رن و قابل بازیابی نیستن.هزینه اضافی نداره، چون به‌عنوان بخشی از اینستنس EC2 ارائه می‌شه و نیازی نیست برای استفاده ازش هزینه جداگانه‌ای پرداخت کنید.موارد استفاده از Instance Storeخب Instance Store بیشتر برای ذخیره‌ی موقت اطلاعاتی مثل کش‌ها یا بافرها استفاده می‌شه. این نوع استوریج معمولاً در پردازش داده‌هایی که نیاز دارن به‌سرعت نوشته و حذف بشن، کاربرد داره. مثلاً توی پردازش داده‌های توزیع‌شده که حجم بالایی از داده‌ها باید به سرعت جابه‌جا و پردازش بشن، خیلی مفید و کاربردیه.خب ببینیم Amazon Simple Storage Service یا همون S3 چیه؟‌باید بدونیم S3 یکی از انواع استوریج‌های AWS است، اما با EBS، EFS و Instance Store فرق داره و به جای اینکه به طور مستقیم به اینستنس‌های EC2 متصل بشه، مخصوص ذخیره‌سازی آبجکت‌ها و فایل‌های حجیم طراحی شده. این سرویس برای هر نوع دیتایی که بخواید ذخیره کنید، از اسناد گرفته تا تصاویر، ویدیوها و حتی بکاپ‌ها و آرشیوهای بلندمدت، عالیه. مثل این می‌مونه که یک یخچال بزرگ و مطمئن داشته باشیم که داده‌ها رو امن و قابل دسترسی از هرجای دنیا برامون نگه داره.چرا S3 مثل یک یخچال بزرگه؟توی هر آشپزخونه‌ای، یه یخچال بزرگ داریم که مواد اولیه‌مون رو داخلش ذخیره می‌کنیم. حالا تصور کنید S3 هم مثل همین یخچاله، با این تفاوت که داده‌ها رو با امنیت بالا و دسترسی از راه دور برای شما نگه می‌داره. توی S3 می‌تونید تمام مواد اولیه‌تون، یا همون داده‌ها، رو ذخیره کنید و هر وقت خواستید بهشون دسترسی داشته باشید. یک نکته مهم اینه که S3 به طور جهانی قابل دسترسیه، یعنی می‌تونید داده‌های ذخیره شده رو از هر نقطه‌ای از دنیا ببینید و ازشون استفاده کنید.اجزای اصلی Amazon S3: آبجکت‌ها و سطل‌ها (Buckets)توی یخچال خونه‌تون، ممکنه ظرف‌های مختلفی برای انواع مواد غذایی داشته باشید. توی S3 هم همچین مفهومی داریم. داده‌ها توی سطل‌ها یا Buckets ذخیره می‌شن. هر سطل به عنوان یک محفظه بزرگ عمل می‌کنه و توش آبجکت‌ها یا Objects ذخیره می‌شن. این آبجکت‌ها می‌تونن فایل‌های تصویری، ویدیویی، متنی، یا هر نوع فایل دیگه‌ای باشن. مثلا، شما می‌تونید برای هر نوع پروژه، یک سطل ایجاد کنید و فایل‌های مربوط به اون رو داخلش ذخیره کنید. هر سطل هم اسم مخصوص به خودش رو داره و این اسم‌ها باید در سطح جهانی یکتا باشن، چون هر سطل می‌تونه از هر جایی قابل دسترسی باشه.آبجکت (Object) چیه؟هر فایل یا داده‌ای که داخل یک سطل ذخیره می‌کنید، بهش می‌گیم آبجکت. هر آبجکت از سه بخش تشکیل شده: داده، کلید (Key) و متادیتا (Metadata).داده: همون فایل اصلی شماست؛ مثلا یک عکس، سند، ویدیو یا هر فایل دیگه‌ای.کلید (Key): یک نام منحصربه‌فرد داخل سطل که برای شناسایی آبجکت استفاده می‌شه. این کلید مثل یه برچسب یکتا برای هر فایل داخل سطل عمل می‌کنه.متادیتا (Metadata): اطلاعات اضافی در مورد فایل که شامل چیزهایی مثل تاریخ ایجاد، مالکیت، و دسترسی‌هاست. می‌تونید متادیتا رو مثل برچسب‌هایی بدونید که روی ظرف‌ها در یخچال می‌زنید تا محتویاتش رو راحت‌تر بشناسید.مزایای استفاده از S3حالا که با مفهوم کلی S3 و اجزاش آشنا شدید، بیایید ببینیم چرا این سرویس به این اندازه محبوب و کاربردی شده. S3 چهار ویژگی اصلی داره که باعث می‌شه خیلی‌ها به عنوان استوریج اصلیشون ازش استفاده کنن:دوام (Durability): S3 به خاطر طراحی خاصش،  (۹۹.۹۹۹۹۹۹۹۹۹۹٪) دوام داره، یعنی تقریباً غیرممکنه داده‌ها از بین برن. این سطح از اطمینان باعث می‌شه شما مطمئن باشید که داده‌های ذخیره شده برای همیشه پابرجا می‌مونن.مقیاس‌پذیری (Scalability): مهم نیست چقدر داده دارید؛ چه فقط یک دستور پخت ساده باشه یا یه کتاب آشپزی کامل با صدها دستور. S3 می‌تونه حجم‌های بسیار زیادی از داده رو ذخیره کنه و هر زمان که نیاز داشتید، بیشتر هم بشه.امنیت (Security): با ویژگی‌هایی مثل Bucket Policy و لیست‌های کنترل دسترسی (ACL)، می‌تونید سطح دسترسی به داده‌ها رو مدیریت کنید. مثلا می‌تونید تنظیم کنید که چه افرادی و با چه سطحی از دسترسی بتونن فایل‌ها رو ببینن یا ویرایش کنن.انعطاف‌پذیری (Versatility): S3 محدود به ذخیره‌سازی اسناد و فایل‌های متنی نیست. شما می‌تونید انواع مختلف فایل‌ها، از تصاویر و ویدیوها گرفته تا بکاپ‌ها و حتی داده‌های کلان برای تحلیل و پردازش رو توی S3 ذخیره کنید.موارد استفاده از Amazon S3به خاطر ویژگی‌های منحصر به فردش، S3 برای کاربردهای زیادی استفاده می‌شه. در اینجا به برخی از موارد استفاده‌ی مهم اون اشاره می‌کنیم:پشتیبان‌گیری داده‌ها: S3 به‌عنوان یک مکان امن برای ذخیره‌سازی نسخه‌های پشتیبان از داده‌ها، فایل‌ها و حتی بانک‌های اطلاعاتی فوق‌العاده‌ست. درست مثل اینکه دستور پخت‌های مهم‌تون رو توی یه جای امن بذارید، می‌تونید داده‌هاتون رو در S3 ذخیره کنید.هاستینگ وبسایت‌های استاتیک: با استفاده از S3 می‌تونید سایت‌های استاتیک (مثل سایت‌های HTML ساده) رو میزبانی کنید. این قابلیت به شما اجازه می‌ده که فایل‌های HTML، CSS، و JavaScript رو توی S3 آپلود کنید و سایتتون رو مستقیم از همونجا اجرا کنید.تحلیل داده‌های کلان: S3 می‌تونه حجم زیادی از داده‌ها رو ذخیره کنه، که برای پروژه‌های تحلیل داده‌های کلان ایده‌آله. مثلا می‌تونید داده‌های حجیم رو توی S3 ذخیره کنید و بعد با سرویس‌هایی مثل Amazon EMR یا Amazon Athena اون‌ها رو پردازش کنید.مدیریت محتوا: S3 یه فضای ذخیره‌سازی امن و مقیاس‌پذیر برای سیستم‌های مدیریت محتوا فراهم می‌کنه. شما می‌تونید تصاویر، ویدیوها و فایل‌های مرتبط با محتوای سایت یا اپلیکیشن خودتون رو به‌راحتی توش ذخیره کنید.ذخیره داده‌های اپلیکیشن‌ها: اپلیکیشن‌های مدرن داده‌های زیادی رو تولید و ذخیره می‌کنن، از اطلاعات کاربران گرفته تا لاگ‌ها. با استفاده از S3 می‌تونید این داده‌ها رو ذخیره و به‌راحتی مدیریت کنید.توزیع محتوا: با ترکیب S3 و CloudFront می‌تونید محتوا رو با سرعت بالا و تاخیر کم به کاربران در سراسر دنیا برسونید. این قابلیت مخصوصاً برای سایت‌هایی که بازدیدکنندگان زیادی از نقاط مختلف دارن، خیلی کارآمده.بررسی انواع کلاس‌های ذخیره‌سازی S3باید بدونیم AWS چندین کلاس ذخیره‌سازی در S3 ارائه می‌ده، که هر کدوم برای نیاز خاصی طراحی شدن. می‌تونید این کلاس‌ها رو مثل بخش‌های مختلف یخچال‌تون تصور کنید، که هر کدوم برای ذخیره‌سازی مواد اولیه خاصی مناسبن. در ادامه، به بررسی دقیق این کلاس‌ها و کاربردهای هر کدوم می‌پردازیم و توضیح می‌دیم که چرا انتخاب درست کلاس می‌تونه هزینه‌ها و کارایی رو بهینه‌تر کنه.کلاس استاندارد S3 Standardاین کلاس مثل طبقه‌های اصلی یخچال شماست که برای داده‌هایی که به طور مکرر بهشون دسترسی دارین، طراحی شده. S3 Standard از نظر کارایی بسیار بالاست و تأخیر دسترسی کمی داره. این کلاس به طور خودکار ظرفیت رو افزایش می‌ده و به راحتی با نیازهای ذخیره‌سازی شما رشد می‌کنه.ویژگی‌ها و کاربردها:کارایی بالا: S3 Standard به طور خودکار به نیازهای پردازشی بالا و دسترسی سریع پاسخ می‌ده، و برای ذخیره‌سازی داده‌هایی که باید همیشه در دسترس باشن عالیه.دوام و امنیت: این کلاس به گونه‌ای طراحی شده که داده‌ها رو در چندین دستگاه و مرکز داده مختلف (Availability Zones) ذخیره کنه. این یعنی حتی در صورت از بین رفتن یکی از مراکز داده، داده‌ها همچنان در دسترس خواهند بود.موارد استفاده: داده‌های حیاتی تجاری، پروژه‌های روزانه، و داده‌هایی که به طور مرتب مورد استفاده قرار می‌گیرند، مثل گزارش‌های مالی، دیتابیس‌ها و فایل‌های مهم.کلاس ذخیره‌سازی هوشمند S3 Intelligent-Tiering: این کلاس مثل قفسه‌های دینامیکی یخچال شماست که به طور خودکار به داده‌هایی که دسترسی نامنظمی بهشون نیاز دارین، کمک می‌کنه. اگر دسترسی به داده‌ها غیرقابل پیش‌بینی باشه، S3 Intelligent-Tiering به طور خودکار داده‌ها رو بین دو سطح دسترسی جابه‌جا می‌کنه: سطح با دسترسی بالا و سطح با دسترسی کمتر.ویژگی‌ها و کاربردها:صرفه‌جویی در هزینه‌ها: این کلاس به طور خودکار هزینه‌ها رو برای داده‌هایی که کمتر استفاده می‌شن، کاهش می‌ده، اما بدون اینکه به کارایی آسیب بزنه.مدیریت خودکار دسترسی: نیازی نیست که خودتون سطح دسترسی رو تنظیم کنید؛ AWS این کار رو به طور هوشمند انجام می‌ده و داده‌ها رو به سطح مناسبی منتقل می‌کنه.موارد استفاده: داده‌هایی که الگوی دسترسی‌شون مشخص نیست، مثل داده‌های ماشین‌های سنسور و داده‌هایی که به صورت نوسانی مورد استفاده قرار می‌گیرن.کلاس S3 Standard-Infrequent Access (S3 Standard-IA): این کلاس رو می‌تونید مثل انباری یخچالتون در نظر بگیرید که برای داده‌هایی طراحی شده که کمتر بهشون دسترسی دارین ولی وقتی نیاز دارین، باید فوراً در دسترس باشن. S3 Standard-IA هزینه ذخیره‌سازی کمتری داره، اما برای بازیابی داده‌ها هزینه‌ای وجود داره.ویژگی‌ها و کاربردها:هزینه پایین ذخیره‌سازی: برای داده‌هایی که به ندرت استفاده می‌شن ولی نیاز به دسترسی سریع دارن، مناسبه.بازیابی سریع داده‌ها: هر زمان که نیاز به بازیابی داده‌ها داشته باشین، می‌تونین به سرعت بهشون دسترسی پیدا کنین.موارد استفاده: آرشیو داده‌های قدیمی، گزارش‌های مالی پایان سال، فایل‌های بزرگ که به ندرت بهشون نیاز دارین، اما نمی‌تونید زمان بازیابی رو فدا کنید.کلاس S3 One Zone-Infrequent Access:این کلاس مثل بخشی از یخچاله که فقط توی یک ناحیه ذخیره می‌شه. به خاطر اینکه داده‌ها فقط در یک ناحیه ذخیره می‌شن، هزینه کمتری داره. این کلاس برای داده‌هایی مناسبه که امکان بازتولیدشون راحته و نیازی به ذخیره‌سازی در چندین ناحیه ندارن.ویژگی‌ها و کاربردها:کم‌هزینه و در یک ناحیه: فقط در یک ناحیه ذخیره می‌شه و برای داده‌هایی که بازتولیدشون راحته، مقرون‌به‌صرفه‌ست.دوام پایین‌تر: چون داده‌ها فقط در یک ناحیه نگهداری می‌شن، اگه اون ناحیه در دسترس نباشه، ممکنه دسترسی به داده‌ها رو از دست بدین.موارد استفاده: بکاپ‌های ثانویه، داده‌هایی که می‌تونید از جای دیگه‌ای هم بهشون دسترسی داشته باشین، داده‌های تکرارپذیر مثل لاگ‌های سیستم.کلاس S3 Glacier Instant Retrievalاین کلاس مثل کشو بالای فریزر می‌مونه که داده‌های آرشیوی رو سریعاً در دسترس قرار می‌ده. این کلاس ذخیره‌سازی برای داده‌هایی که به ندرت استفاده می‌شن و نیاز به بازیابی فوری دارن، بهترین گزینه‌ست و در عین حال کم‌هزینه‌ترین نوع ذخیره‌سازی برای داده‌های بلندمدت محسوب می‌شه.ویژگی‌ها و کاربردها:بازیابی در حد میلی‌ثانیه: هر زمان نیاز باشه، داده‌ها در کمترین زمان ممکن بازیابی می‌شن.هزینه پایین برای ذخیره بلندمدت: برای داده‌هایی که به ندرت نیاز به بازیابی دارن، ولی باید سریع در دسترس باشن، این گزینه عالیه.موارد استفاده: داده‌های قدیمی که همچنان ممکنه در مواقع خاص نیاز به دسترسی سریع داشته باشن، مثل تصاویر قدیمی، فایل‌های آرشیوی مهم.کلاس S3 Glacier Flexible Retrievalاین کلاس مثل یه بخش دیگه از فریزر عمیق شماست که به ندرت بهش دسترسی دارید. S3 Glacier Flexible Retrieval برای داده‌های آرشیوی طراحی شده که معمولاً فقط یکی دو بار در سال نیاز به دسترسی دارن و بازیابی فوری براشون ضروری نیست، اما برای حجم‌های زیادی از داده‌ها بدون هزینه اضافی برای بازیابی مناسبه.ویژگی‌ها و کاربردها:بازیابی انعطاف‌پذیر: می‌تونید داده‌ها رو در عرض چند دقیقه تا چند ساعت بازیابی کنید.بدون هزینه بازیابی: برای داده‌هایی که نیاز به بازیابی سریع و مداوم ندارن ولی باید در دسترس باشن، عالیه.موارد استفاده: داده‌هایی که یک یا دو بار در سال ممکنه نیاز به بازیابی داشته باشن، مثل گزارش‌های مالی بلندمدت، داده‌های پژوهشی قدیمی.کلاس S3 Glacier Deep Archiveاین کلاس مثل پایین‌ترین بخش فریزر شماست که مخصوص نگهداری طولانی‌مدت و مقرون‌به‌صرفه‌ست. این کلاس برای مشتریانی طراحی شده که به دلیل الزامات قانونی یا مقرراتی نیاز دارن داده‌ها رو برای سال‌های طولانی (حتی تا ده سال یا بیشتر) نگه‌دارن.ویژگی‌ها و کاربردها:کم‌هزینه‌ترین گزینه برای ذخیره‌سازی بلندمدت: این کلاس برای داده‌هایی که تقریباً هیچ‌وقت بازیابی نمی‌شن، بسیار مقرون‌به‌صرفه‌ست.بازیابی طولانی‌مدت: برای بازیابی این داده‌ها ممکنه تا ۱۲ ساعت طول بکشه، پس برای داده‌هایی که نیاز به دسترسی فوری ندارن عالیه.موارد استفاده: داده‌هایی که به خاطر مقررات قانونی نیاز به نگهداری طولانی‌مدت دارن، مثل داده‌های بیمه، اسناد پزشکی، اطلاعات تاریخی.نکات کلیدی برای انتخاب کلاس مناسبهر کلاس ذخیره‌سازی در S3 برای هدف خاصی طراحی شده و انتخاب درست کلاس می‌تونه تاثیر زیادی روی هزینه‌ها و بهینه‌سازی منابع داشته باشه:بازیابی فوری یا کند: اگر نیاز به بازیابی فوری داده دارین، کلاس‌های S3 Standard و S3 Intelligent-Tiering مناسبن. برای داده‌های آرشیوی، Glacier و Glacier Deep Archive گزینه‌های بهتری هستن.هزینه بازیابی: در کلاس‌های S3 Standard-IA و Glacier، برای بازیابی داده‌ها هزینه‌ای در نظر گرفته می‌شه، در حالی که در S3 Standard و Glacier Deep Archive این هزینه‌ها کمتر یا وجود ندارن.دوام و امنیت داده: اگر داده‌ها حیاتی هستن و نمی‌خواید از دستشون بدین، بهتره از کلاس‌هایی مثل S3 Standard که داده‌ها رو در چند ناحیه ذخیره می‌کنن، استفاده کنید.در نهایت، هر کلاس در S3 طوری طراحی شده که بتونه نیازهای خاصی از ذخیره‌سازی رو تامین کنه، از ذخیره‌سازی لحظه‌ای و مداوم گرفته تا آرشیو طولانی‌مدت.سناریو: ایجاد و بررسی S3خب اما الان وقتشه که S3 رو به صورت عملی ببینیم، اول بیایید درباره‌ی مفاهیم کلیدی‌ای صحبت کنیم که قراره توی این دمو یاد بگیریم. بعدش می‌ریم به کنسول AWS.بالاتر گفتیم S3 مثل یخچال بزرگ ما هست، توی این قسمت قراره یاد بگیریم چطور مواد اولیه‌مون رو تازه و در دسترس نگه داریم. هر سرآشپز مواد اولیه‌ای داره و هر کاربری داده‌های مهمی داره. همون‌طور که یک سرآشپز مواد اولیه رو توی یخچال می‌ذاره، توی S3 هم داده‌های حیاتی‌مون رو توی باکت آپلود می‌کنیم. باکت‌ها مثل یخچال‌های جداگانه هستن. هر باکت، انواع مختلفی از اشیا یا مواد اولیه رو نگه می‌داره و سازماندهی درست داده‌هامون کمک می‌کنه به‌راحتی چیزی که نیاز داریم رو پیدا کنیم. باید مطمئن بشیم که مواد اولیه‌مون امن هستن. Amazon S3 امکانات امنیتی قدرتمندی ارائه می‌ده که شامل سیاست‌های باکت، سیاست‌های IAM و رمزنگاری هست.خب، بریم سراغ کنسول AWS. وارد کنسول AWS میشیم و میریم سراغ سرویس S3. حالا توی S3 هستیم و روی Create Bucket کلیک کنم.اولین قانون در S3 اینه که نام باکت باید در سطح جهانی یکتا باشه. یعنی هر باکتی از هر حسابی در هر جایی باید متفاوت از دیگری باشه. یه نام انتخاب میکنیم.باکت ما توی منطقه‌ی US East 1 AWS قرار می‌گیره. برای مالکیت شی، تنظیمات رو روی حالت پیش‌فرض می‌ذاریم که دسترسی عمومی به‌طور خودکار مسدود می‌شه. برای نسخه‌بندی باکت، اینجاست که می‌تونیم نسخه‌ی قبلی یک شی رو بازیابی کنیم اگه به‌طور اتفاقی تغییری اشتباه ایجاد بشه. پس گزینه‌ی &quot;فعال‌سازی&quot; رو می‌زنیم.باکت‌های S3 به‌طور پیش‌فرض رمزنگاری می‌شن. اینجا چند گزینه داریم، ولی تنظیمات پیش‌فرض رو می‌ذاریم و روی &quot;ایجاد باکت&quot; کلیک می‌کنیم. به نظر می‌رسه که باکت ما با موفقیت ایجاد شده.حالا قراره یه شی رو توی باکت آپلود کنم. روی نام باکت کلیک می‌کنم. برای آپلود یک شی، می‌تونید اون رو بکشید و رها کنید یا روی &quot;آپلود&quot; کلیک کنید و بعد فایل رو اضافه کنید و باز کنید. فایل آماده برای آپلود و به مقصد باکت ما ارسال می‌شه.نکته‌ای که می‌خوام بگم اینه که اگه روی ویژگی‌ها کلیک کنیم، می‌بینیم که نسخه‌بندی باکت فعال شده. حالا تصور کنید که یه فایل متنی رو آپلود کردیم و بعد کسی اون متن رو اشتباه تغییر داده. چیزی که نسخه‌بندی به ما اجازه می‌ده اینه که نسخه‌ی قبلی رو دانلود کنیم و اون رو به‌عنوان شی جدید آپلود کنیم.حالا اگه برگردیم به باکتمون و به تب دسترسی‌ها بریم، اینجا می‌بینیم که یه Bucket Policy داریم. سیاست‌های باکت، دسترسی کاربران به باکت رو کنترل می‌کنه. اگه به کنسول IAM بریم، می‌تونیم دسترسی‌های خاص کاربران به باکت رو هم تنظیم کنیم.در آخر، اگه بریم به تب مدیریت، اینجاست که می‌تونیم یه سیاست چرخه عمر ایجاد کنیم. با این سیاست می‌تونیم اشیا رو بین کلاس‌های ذخیره‌سازی انتقال بدیم، مثلاً از S3 Standard به Glacier.با این سیاست‌ها می‌تونیم هزینه‌ها رو بهینه کنیم و مطمئن باشیم داده‌هامون به بهترین شکل مدیریت می‌شن.معرفی سرویس‌های ذخیره‌سازی تخصصی AWSخب همونطور که تا الان گفتیم AWS سرویس‌های متنوعی برای ذخیره‌سازی داره که هر کدوم به هدف خاصی طراحی شدن و نیازهای متفاوتی رو پوشش می‌دن. اگر با سرویس‌های عمومی‌تر مثل Amazon S3، EBS و EFS آشنا باشیم، می‌دونیم که این‌ها سرویس‌های اصلی ذخیره‌سازی AWS هستن و برای ذخیره‌سازی عمومی داده‌ها استفاده می‌شن:سرویس Amazon S3 رو می‌تونید مثل یه یخچال بزرگ در نظر بگیرید که آبجکت‌ها، فایل‌ها، تصاویر و داده‌های متنوع رو می‌شه داخلش گذاشت و از هر جای دنیا بهش دسترسی داشت. این سرویس بیشتر برای ذخیره‌سازی فایل‌هایی که مستقیماً به EC2 متصل نمی‌شن، کاربرد داره.سرویسEBS مثل یه حافظه‌ی بلاکی پایداره که به صورت مستقیم به اینستنس‌های EC2 وصل می‌شه. اگه بخواهید داده‌های مهم مثل فایل‌های سیستمی یا اپلیکیشن‌ها رو ذخیره کنید، اینجا به کار میاد.سرویس EFS یک سیستم فایل مشترک برای اینستنس‌های EC2 هست و به‌صورت خودکار مقیاس‌پذیر بوده و امکان دسترسی همزمان از چندین اینستنس رو فراهم می‌کنه.اما Amazon FSX و Elastic Disaster Recovery برای نیازهای تخصصی‌تری ساخته شدن. این دو سرویس به جای تمرکز بر ذخیره‌سازی عمومی داده، به کارهای خاص‌تری مثل بازیابی داده‌ها در شرایط بحرانی و پشتیبانی از بارهای کاری خاص ویندوزی توجه دارن. اینجا می‌خوایم به بررسی نقش‌ها و کاربردهای این دو سرویس بپردازیم.Amazon FSXسرویس Amazon FSX رو می‌تونیم مثل یه قفسه‌ی ذخیره‌سازی خاص در نظر بگیریم که برای پیتزاهایی طراحی شده که به شرایط ویژه‌ای نیاز دارن! این سرویس برای کسب‌وکارهایی مناسبه که از اپلیکیشن‌های ویندوزی استفاده می‌کنن و به سیستم فایل‌های مخصوص با ویژگی‌های بومی ویندوز نیاز دارن.ویژگی‌های کلیدی FSX:یکپارچگی کامل: FSX به گونه‌ای طراحی شده که کاملاً با محیط‌های ویندوزی سازگاره. مثل یک سیستم فایل ویندوزی محلی رفتار می‌کنه و به اپلیکیشن‌هایی که به Active Directory و NTFS وابسته هستن، امکان کار یکپارچه و بدون نقص می‌ده.قابلیت اطمینان: داده‌ها در چندین نقطه ذخیره می‌شن، به این معنی که در صورت بروز مشکل برای یکی از نقاط ذخیره‌سازی، داده‌های شما همچنان دست‌نخورده و ایمن باقی می‌مونن.مقیاس‌پذیری: FSX به‌خوبی با رشد کسب‌وکار شما مقیاس‌پذیره و می‌تونه نیازهای ذخیره‌سازی مختلف رو برآورده کنه، چه برای پروژه‌های کوچک و چه برای بارهای کاری بزرگ.موارد استفاده از FSX: FSX بیشتر برای اپلیکیشن‌هایی طراحی شده که نیاز به دسترسی سریع و دائمی به داده‌ها دارن و معمولاً در محیط‌های ویندوزی و سازمانی استفاده می‌شه. به عنوان مثال، بانک‌ها یا سازمان‌های دولتی که نیازمند سیستم‌های یکپارچه و امن ویندوزی هستن، از این سرویس برای بهینه‌سازی دسترسی و عملکرد استفاده می‌کنن.Elastic Disaster Recoveryحالا بریم سراغ Elastic Disaster Recovery، این سرویس رو می‌تونید مثل یه ژنراتور پشتیبان برای آشپزخونه‌ی پیتزا در نظر بگیرید؛ زمانی که برق قطع بشه، این ژنراتور اطمینان می‌ده که همه چیز به خوبی پیش بره. Disaster Recovery به طور خاص برای مواقع بحرانی و بازیابی سریع داده‌ها طراحی شده و کمک می‌کنه تا در زمان بروز مشکلات زیرساختی، کسب‌وکار با کمترین اختلال ادامه پیدا کنه.ویژگی‌های کلیدی Elastic Disaster Recovery:پرداخت به ازای استفاده: در این سرویس، شما فقط هزینه‌ی سرورهایی که به AWS منتقل می‌کنید رو پرداخت می‌کنید. بنابراین، از لحاظ هزینه بسیار مقرون‌به‌صرفه و انعطاف‌پذیره.بازیابی سریع و انعطاف‌پذیر: طراحی شده که در زمان بروز مشکلات، داده‌ها و سرویس‌ها رو با سرعت به حالت عادی برگردونه. این بازیابی سریع به سازمان‌ها کمک می‌کنه که خرابی‌ها رو به حداقل برسونن.تضمین ادامه‌ی کسب‌وکار: Elastic Disaster Recovery تنها یک بکاپ ساده نیست؛ برای تضمین ادامه‌ی کسب‌وکار و پشتیبانی از عملیات بدون اختلال طراحی شده.موارد استفاده از Elastic Disaster Recovery: این سرویس برای سازمان‌هایی که نمی‌تونن از کار افتادگی رو تحمل کنن و نیاز به بازیابی سریع داده‌ها دارن، ایده‌آله. به‌عنوان مثال، فروشگاه‌های آنلاین، سیستم‌های مالی، و بیمارستان‌ها که دسترسی به داده‌هاشون از اهمیت حیاتی برخورداره می‌تونن از این سرویس استفاده کنن تا مطمئن بشن در صورت بروز مشکل، داده‌هاشون با کمترین تأخیر بازیابی می‌شن.بررسی کامل‌تر Amazon Elastic Block Store (EBS)خب، توی قسمت اول مقاله یه نگاه کلی به EBS داشتیم، اما حالا می‌خوایم این سرویس رو دقیق‌تر و عمیق‌تر بررسی کنیم. همون‌طور که گفتیم، Amazon EBS مثل فر اصلی آشپزخونه EC2 عمل می‌کنه و به‌عنوان یه سیستم ذخیره‌سازی بلاکی پایدار و قابل اعتماد برای اینستنس‌های EC2 به کار می‌ره. این سیستم داده‌ها رو حتی بعد از خاموش شدن یا مشکل‌دار شدن اینستنس‌ها حفظ می‌کنه و امکاناتی مثل مقیاس‌پذیری و گرفتن Snapshot داره.ویژگی‌های کلیدی EBSپایداری و قابلیت اطمینان بالا: داده‌ها حتی اگر اینستنس خاموش بشه، همچنان محفوظ می‌مونن. این به معنی اطمینان خاطر از حفظ و امنیت اطلاعاته.قابلیت مقیاس‌پذیری: امکان افزایش حجم ذخیره‌سازی بدون توقف کار سیستم، به‌خصوص برای کسب‌وکارهایی که با رشد داده‌ها مواجه هستن، اهمیت زیادی داره.قابلیت Snapshot: می‌تونید به‌راحتی از داده‌های خود بکاپ بگیرید و از این بکاپ‌ها برای بازیابی یا ایجاد ولیوم‌های جدید استفاده کنید. این ویژگی مثل گرفتن عکس از پیتزاییه که درست کردید، تا هر وقت نیاز شد دوباره همون پیتزا رو داشته باشید.انواع Volume در EBSحالا وقتشه که به انواع Volumeها در EBS بپردازیم. این بخش می‌تونه به شما کمک کنه تا بر اساس نیازهای خاص پروژه‌تون، نوع مناسبی از Volume رو انتخاب کنید.1. دیسک های SSD ، بهینه برای IOPS بالا ولیوم‌های SSD در Amazon EBS مخصوص حجم‌کارهای تراکنشی با نیاز به تعداد بالای عملیات خواندن و نوشتن سریع طراحی شده‌اند. به‌طور کلی، این نوع ولیوم‌ها زمانی مناسب هستند که حجم داده‌ها کوچک است ولی دفعات دسترسی به آن‌ها زیاد است.General Purpose SSD (gp3 و gp2)این نوع از SSDها برای اپلیکیشن‌هایی که نیاز به تاخیر کم و عملکرد سریع دارند، مثل برنامه‌های تعاملی، ایده‌آل هستند.حداکثر IOPS: برای gp3 تا 16,000 و برای gp2 تا 3,000.موارد استفاده: مناسب برای سیستم‌های تراکنشی (مانند پایگاه داده‌های ساده)، دسکتاپ‌های مجازی، و برنامه‌های تست و توسعه.Provisioned IOPS SSD (io2، io1 و io2 Block Express)این دسته از SSDها برای حجم‌کارهایی طراحی شده‌اند که به IOPS بسیار بالا و تاخیر بسیار کم نیاز دارند. Provisioned IOPS SSDها قابلیت تنظیم تعداد IOPS بالاتر را دارند، که آن‌ها را برای اپلیکیشن‌های حساس و پر‌سرعت مناسب می‌کند.حداکثر IOPS: برای io2 و io1 تا 64,000 و برای io2 Block Express تا 256,000.موارد استفاده: مناسب برای دیتابیس‌های حساس (مثل پایگاه‌های داده رابطه‌ای پیشرفته) و اپلیکیشن‌هایی که نیاز به عملکرد سریع و پاسخگویی فوری دارند.قابلیت Multi-Attach در SSDهایکی از ویژگی‌های جالب برخی از ولیوم‌های SSD، مثل io2 و io1، این است که می‌توان آن‌ها را به چندین اینستنس EC2 به‌طور همزمان متصل کرد. این ویژگی به‌ویژه در محیط‌های پردازشی موازی که چند سرور نیاز به دسترسی همزمان به داده‌ها دارند، بسیار کاربردی است.2. هارد های HDD بهینه برای throughput بالا ولیوم‌های HDD در Amazon EBS برای حجم‌کارهایی طراحی شده‌اند که حجم داده‌های بالایی دارند و نیاز به دسترسی کمتری به آن‌هاست. این نوع ولیوم‌ها بیشتر در پردازش‌های جریان‌دار (streaming) و داده‌های بزرگ و تحلیلی مورد استفاده قرار می‌گیرند. در ادامه دو نوع اصلی از این ولیوم‌ها را بررسی می‌کنیم:Throughput Optimized HDD (st1)این نوع از ولیوم‌های HDD برای حجم‌کارهای بزرگ و نیازمند پردازش و انتقال سریع داده‌ها بهینه شده است.حداکثر IOPS: عدد 500حداکثر سرعت انتقال داده (throughput): 500 MiB/sموارد استفاده: مناسب برای انبارهای داده (Data Warehousing)، تحلیل داده‌های حجیم و پردازش لاگ‌ها و فایل‌های ثبت رخدادها. این نوع ولیوم برای مواردی که نیاز به انتقال سریع داده‌های بزرگ دارند، بسیار کاربردی است.Cold HDD (sc1)این نوع ولیوم هزینه‌های ذخیره‌سازی را به حداقل می‌رساند و مناسب داده‌هایی است که به‌ندرت به آن‌ها دسترسی دارید. اگر داده‌هایی دارید که فقط برای آرشیو هستند و نیاز چندانی به دسترسی به آن‌ها ندارید، Cold HDD گزینه‌ی مناسبی است.حداکثر IOPS: عدد 250حداکثر سرعت انتقال داده (throughput): 250 MiB/sموارد استفاده: مناسب برای آرشیو داده‌ها و ذخیره اطلاعاتی که به ندرت به آن‌ها نیاز دارید. این نوع ولیوم برای زمانی که هزینه‌ی پایین ذخیره‌سازی اولویت دارد و نیاز به دسترسی سریع به داده‌ها ندارید، کاربرد دارد.نکته مهم: عدم پشتیبانی از قابلیت Multi-Attachیکی از ویژگی‌هایی که فقط در ولیوم‌های SSD موجود است، قابلیت Multi-Attach است. این قابلیت به شما اجازه می‌دهد تا یک ولیوم را به چندین اینستنس EC2 به‌طور همزمان متصل کنید. اما این ویژگی در ولیوم‌های HDD پشتیبانی نمی‌شود و برای مواردی که نیاز به این قابلیت دارید، باید از ولیوم‌های SSD استفاده کنید.بررسی قابلیت Snapshot در EBSقابلیت Snapshot در EBS یک ابزار حیاتی برای پشتیبان‌گیری و بازیابی داده‌هاست. Snapshotها اجازه می‌دن که از داده‌های حیاتی خود یک نسخه پشتیبان بگیرید و در مواقع نیاز به‌راحتی بازیابی کنید. Snapshots به‌شکلی عمل می‌کنن که در هر بار گرفتن بکاپ، تنها تغییرات از Snapshot قبلی ذخیره می‌شه.پشتیبان‌گیری افزایشی: هر Snapshot تنها تغییرات از آخرین Snapshot رو ذخیره می‌کنه، که این امر باعث کاهش مصرف فضای ذخیره‌سازی و به‌صرفه بودنش می‌شه.بازیابی سریع: با استفاده از Snapshotها می‌تونید در صورت بروز مشکل، داده‌های خود رو به‌سرعت بازیابی کنید یا حتی یک اینستنس جدید راه‌اندازی کنید.اشتراک‌گذاری: Snapshotها رو می‌تونید با حساب‌های دیگه AWS به اشتراک بذارید یا عمومی کنید.تکرار بین مناطق: Snapshotها قابلیت تکرار و کپی‌برداری در مناطق مختلف AWS رو دارن که باعث می‌شه در صورت بروز بحران، داده‌ها از هر نقطه‌ای قابل بازیابی باشن.AWS Storage Gatewayسرویس AWS Storage Gateway یک سرویس ذخیره‌سازی ترکیبی است که به شما کمک می‌کند محیط‌های درون‌سازمانی را به راحتی و بهینه به فضای ابری AWS متصل کنید. اگر بخواهیم یک مثال ملموس بزنیم، AWS Storage Gateway مثل یک سرویس پیک سریع است که داده‌های شما را از انبار محلی‌تان به فضای ابری عظیم AWS Cloud با امنیت و کارایی بالا منتقل می‌کند.چرا باید از AWS Storage Gateway استفاده کنیم؟به‌صرفه‌بودن: این سرویس نیاز به زیرساخت‌های ذخیره‌سازی محلی را کاهش می‌دهد و هزینه‌ها را به‌صرفه‌تر می‌کند.امنیت: داده‌های شما به صورت رمزگذاری شده منتقل و ذخیره می‌شوند، پس خیالتان از امنیت آن‌ها راحت باشد.یکپارچگی بدون مشکل: AWS Storage Gateway به راحتی با اپلیکیشن‌های موجود سازگار می‌شود و به شما کمک می‌کند که بدون تغییرات زیاد، انتقال به فضای ابری را تجربه کنید.کاربردهای AWS Storage Gatewayاین سرویس مخصوص سازمان‌ها و شرکت‌هایی است که زیرساخت‌های موجود در دیتا سنترها، دفاتر راه دور و لبه‌های شبکه دارند و می‌خواهند از امکانات فضای ابری هم بهره‌مند شوند. در اینجا چند کاربرد اصلی را بررسی می‌کنیم:پشتیبان‌گیری داده‌ها (Data Backup): مانند یک پشتیبان خارج از سایت، AWS Storage Gateway داده‌های مهم شما را در فضای ابری ذخیره می‌کند.بازیابی بعد از فاجعه (Disaster Recovery): در صورت بروز هرگونه مشکل یا خرابی، می‌توانید داده‌های خود را به سرعت و به راحتی از فضای ابری بازیابی کنید.پردازش داده‌ها در AWS: شما می‌توانید داده‌ها را برای پردازش و تحلیل به AWS ارسال کنید و سپس نتایج را به سیستم‌های محلی‌تان برگردانید.انواع AWS Storage Gatewayسرویس AWS Storage Gateway چهار نوع اصلی دارد که هر یک برای نیازهای خاص طراحی شده‌اند:مدل S3 File Gateway:این مدل برای ذخیره فایل‌ها مستقیماً روی Amazon S3 استفاده می‌شود و ایده‌آل برای مواقعی است که می‌خواهید داده‌هایتان را در فرمت‌های سازگار با فضای ابری نگه دارید. داده‌ها به صورت فایل ذخیره شده و در Amazon S3 به‌راحتی در دسترس خواهند بود.مدل Volume Gateway:این مدل فضای ذخیره‌سازی به صورت بلوک (Block Storage) ارائه می‌دهد و داده‌ها را در Amazon S3 ذخیره می‌کند. Volume Gateway دارای دو حالت اصلی است:حالت Stored Volumes: این حالت داده‌های کامل را ذخیره می‌کند، به گونه‌ای که نسخه کامل آن‌ها در فضای محلی ذخیره می‌شود و به عنوان بکاپ به S3 ارسال می‌گردد.حالت Cached Volumes: در این حالت، داده‌های پر استفاده در فضای محلی نگهداری می‌شود، ولی نسخه اصلی آن‌ها در S3 ذخیره می‌گردد و به این ترتیب از ظرفیت ذخیره‌سازی کمتری استفاده می‌شود.مدل Tape Gateway:این مدل برای سازمان‌هایی طراحی شده که نیاز به آرشیو داده‌ها به صورت نوار دارند، اما این نوارها به‌صورت مجازی در AWS ذخیره می‌شوند. Tape Gateway مناسب برای داده‌هایی است که به‌ندرت به آن‌ها نیاز است ولی باید برای مدت طولانی نگهداری شوند.مدل FSx File Gateway:این مدل برای شرکت‌هایی که از فایل سرورهای ویندوزی استفاده می‌کنند، به کار می‌آید. FSx File Gateway امکان توسعه سیستم‌های فایل محلی به فایل سرورهای FSx در فضای ابری AWS را فراهم می‌کند، که برای برنامه‌های ویندوزی حساس به ویژگی‌های بومی ویندوز بسیار مناسب است یک راهکار جامع برای پشتیبان‌گیری و بازیابی داده‌ها، AWS Backupسرویس AWS Backup سرویسی است که امکان تنظیم سیاست‌های پشتیبان‌گیری به صورت مرکزی و پایش دقیق فعالیت‌های پشتیبان‌گیری را برای منابع AWS فراهم می‌کند. برای فهم بهتر، می‌توانید AWS Backup را مانند یک کتاب دستور پخت تصور کنید؛ اگر مشکلی برای داده‌ها پیش بیاید، می‌توانید به این &quot;دستور پخت&quot; برگردید و داده‌ها را به همان شکلی که بودند، بازسازی کنید. AWS Backup داده‌های شما را به طور خودکار کپی و ذخیره می‌کند و به عنوان یک راهکار جامع برای پشتیبان‌گیری از انواع منابع AWS عمل می‌کند تا اطمینان حاصل شود که هر داده‌ای به شکل ایمن ذخیره و به راحتی قابل بازیابی است.این سرویس از منابع متنوعی پشتیبانی می‌کند، از جمله:EC2 (Elastic Compute Cloud)EBS (Elastic Block Store)RDS (Relational Database Service)جدول‌های DynamoDBفایل سیستم‌های EFS (Elastic File System)فایل سیستم‌های FSxحجم‌های Storage Gatewayویژگی‌های اصلی AWS Backupمدیریت مرکزی پشتیبان‌گیری: AWS Backup امکان مدیریت و نظارت بر پشتیبان‌گیری‌های انجام‌شده را در سراسر AWS آسان‌تر می‌کند. شما می‌توانید از یک داشبورد واحد تمامی پشتیبان‌گیری‌ها را مدیریت کنید.زمان‌بندی خودکار پشتیبان‌گیری: این سرویس به شما این امکان را می‌دهد که سیاست‌هایی برای زمان‌بندی خودکار پشتیبان‌گیری‌ها تعریف کنید. با این ویژگی، دیگر نیازی به پشتیبان‌گیری دستی مداوم ندارید.رمزگذاری و تطبیق با استانداردهای قانونی:داده‌های پشتیبان‌گیری به‌صورت رمزگذاری‌شده ذخیره می‌شوند و این اطمینان را به شما می‌دهد که حتی در صورت بروز مشکل، داده‌ها امن باقی می‌مانند. این ویژگی کمک می‌کند تا AWS Backup با استانداردهای امنیتی و قانونی مختلف هماهنگ باشد.پشتیبان‌گیری در مناطق و حساب‌های مختلف:با امکان پشتیبان‌گیری در چندین منطقه (Region) و حساب AWS، AWS Backup انعطاف‌پذیری بیشتری در بازیابی داده‌ها به شما می‌دهد. این ویژگی در شرایط بحرانی و نیاز به بازیابی سریع داده‌ها بسیار مفید است.کاربردهای AWS Backupپشتیبان‌گیری ابری (Cloud-Native Backup):AWS Backup یک راهکار ایده‌آل برای پشتیبان‌گیری از بارهای کاری مستقر در فضای ابری AWS است. این سرویس تضمین می‌کند که داده‌های شما به‌سرعت و با اطمینان قابل بازیابی باشند.حفاظت از داده‌های هیبریدی (Hybrid Data Protection):AWS Backup علاوه بر پشتیبان‌گیری از منابع ابری، امکان پشتیبان‌گیری از داده‌های ذخیره‌شده در محیط‌های هیبریدی (ترکیبی از محلی و ابری) را هم فراهم می‌کند. این ویژگی برای سازمان‌هایی که هم از ذخیره‌سازی محلی و هم از ذخیره‌سازی ابری استفاده می‌کنند، بسیار مفید است.تطابق با سیاست‌های حفاظت از داده‌ها (Data Protection Compliance):با AWS Backup، شما می‌توانید مطمئن شوید که سیاست‌های حفاظتی و امنیتی مرتبط با داده‌های خود را رعایت می‌کنید و در چارچوب استانداردهای قانونی و امنیتی مورد نیاز حرکت می‌کنید.فرآیند بازیابی در AWS Backupیکی از ویژگی‌های کلیدی AWS Backup، امکان بازیابی سریع داده‌هاست. اگر داده‌ها به هر دلیلی از دست بروند یا خراب شوند، AWS Backup این امکان را فراهم می‌کند که به‌سرعت اطلاعات را بازیابی کنید؛ دقیقاً مانند زمانی که از یک کتاب دستور پخت استفاده می‌کنید تا بعد از یک مشکل، دوباره پیتزای دلخواهتان را درست کنید. این فرآیند بازیابی ساده طراحی شده تا زمان از کار افتادگی به حداقل برسد و یکپارچگی داده‌ها به حداکثر برسد.سرویس AWS Backup به سازمان‌ها کمک می‌کند تا نه تنها از داده‌های خود پشتیبان بگیرند، بلکه بتوانند در صورت بروز هرگونه خرابی یا مشکل، به‌سرعت و به‌صورت مؤثر داده‌های خود را بازیابی کنند. این سرویس با مدیریت متمرکز، زمان‌بندی خودکار، امنیت بالا و امکان بازیابی داده‌ها در چندین منطقه و حساب، به یک راهکار جامع و ایده‌آل برای مدیریت پشتیبان‌گیری و بازیابی داده‌ها تبدیل شده است.تو این قسمت، سرویس‌های ذخیره‌سازی AWS رو به زبان ساده معرفی کردیم. از EBS و EFS گرفته تا S3 و AWS Storage Gateway، هر کدوم رو با مثال‌های کاربردی بررسی کردیم تا راحت‌تر بتونیم انتخاب کنیم که کدوم سرویس برای نیازهای ما مناسب‌تره.امیدوارم این توضیحات کمک کرده باشه تا درک بهتری از سرویس‌های ذخیره‌سازی 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قسمت 6: تکنولوژی‌ها و سرویس‌های توسعه، پیام‌رسانی، و دیپلویمنتقسمت هفتم:‌ تکنولوژی و سرویس‌های migration و انتقال دادهو در آخر این آدرس لینکدین و توئیتر من هست خوشحال میشم در ارتباط باشیم.🪩 Follow Linkedin Hossein Jafari🪩🕊 Twitter 🕊</description>
                <category>حسین جعفری</category>
                <author>حسین جعفری</author>
                <pubDate>Fri, 01 Nov 2024 16:36:29 +0330</pubDate>
            </item>
                    <item>
                <title>قسمت دوم AWS Certified Cloud Practitioner : خدمات مبتنی بر Compute</title>
                <link>https://virgool.io/@h0x3ein/%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-aws-certified-cloud-practitioner-%D8%AE%D8%AF%D9%85%D8%A7%D8%AA-%D9%85%D8%A8%D8%AA%D9%86%DB%8C-%D8%A8%D8%B1-compute-k9mcshud0v1p</link>
                <description>مقدمهخب توی قسمت اول، یک معرفی کلی از دوره AWS Certified Cloud Practitioner داشتیم و با مفاهیم ابتدایی و اصلی AWS آشنا شدیم. توی این قسمت درباره اهمیت رایانش ابری صحبت کردیم و توضیح دادیم که AWS چطور می‌تونه به سازمان‌ها کمک کنه تا هزینه‌هاشون رو کاهش بدن و انعطاف‌پذیری بیشتری داشته باشن. همچنین با مفاهیم اصلی مثل Region، Availability Zone، و Edge Location آشنا شدیم و به تفاوت‌ها و کاربردهای هرکدوم اشاره کردیم. در نهایت، نگاهی به خدمات پایه‌ای AWS مثل EC2 و S3 انداختیم و یک دید کلی از امکاناتی که این پلتفرم ارائه می‌ده، ارائه دادیم.تو این قسمت، به معرفی و بررسی سرویس‌های محاسباتی AWS می‌پردازیم. ابتدا با مفاهیم Compute و EC2 آشنا می‌شیم، انواع نمونه‌های EC2 و load Balancer رو بررسی می‌کنیم و سپس به قابلیت Auto Scaling می‌پردازیم. در ادامه، کانتینرها و سرویس‌های مرتبط مثل ECR، ECS و EKS رو توضیح می‌دیم و تفاوت‌های اون‌ها رو مرور می‌کنیم. بعد به سرویس‌های Serverless مثل Lambda و Fargate می‌رسیم و کاربردها و قیمت‌گذاری هرکدوم رو بررسی می‌کنیم. در نهایت، سرویس‌های پیشرفته‌تر AWS مثل Outposts، Lightsail، Batch و Wavelength رو معرفی می‌کنیم که هرکدوم برای نیازهای خاصی طراحی شدن و به بهینه‌سازی منابع کمک می‌کنن.اول ببینیم Compute چیه؟میتونیم بگیم Compute به مفهوم خدمات و تکنولوژی‌هایی اشاره داره که برای پردازش اطلاعات و اجرای محاسبات سنگین طراحی شدن. این مفهوم شامل استفاده از واحدهای پردازش مختلف مثل CPU (واحد پردازش مرکزی) و GPU (واحد پردازش گرافیکی) میشه که وظیفه‌ی اجرای عملیات و پردازش داده‌ها رو بر عهده دارن. هر وقت این مخفف‌ها رو دیدید، بدونید که دارید وارد دنیای Compute می‌شید، جایی که همه‌چیز درباره‌ی سرعت، قدرت پردازش و کارایی هست!یه مثال ساده از محاسبات: رستوران پیتزا!فرض کنید توی رستورانی به اسم World Pizza نشستید. گارسونی که سفارش شما رو می‌گیره، اون رو به آشپزخونه می‌بره و بعد پیتزای خوشمزه رو برمی‌گردونه به میز شما، دقیقاً مثل یک سرور کار می‌کنه. وظیفه سرور اینه که درخواست‌ها رو مدیریت کنه و در نهایت پاسخ مناسبی ارائه بده. گارسون مثل یه سرور توی دنیای محاسبات، سفارش‌ها (درخواست‌ها) رو می‌گیره، اون‌ها رو به بخش پردازش (آشپزخونه) می‌بره و بعد نتیجه رو به شما تحویل میده. همین مفهوم ساده، کمک می‌کنه تا درک بهتری از نحوه عملکرد سرورها و نقش اون‌ها در پردازش داشته باشیم.معرفی EC2یکی از مهم‌ترین اصطلاحات در دنیای محاسبات ابری AWS، چیزی به اسم EC2 هست، که مخفف &quot;Elastic Cloud Compute&quot; به معنی &quot;محاسبات ابری انعطاف‌پذیر&quot; هست. واژه &quot;Elastic&quot; به این اشاره داره که این سرویس می‌تونه بسته به نیازهای شما، گسترش پیدا کنه یا کوچیک بشه؛ درست مثل خمیر پیتزا که باهاش اندازه‌های مختلفی درست می‌کنید!فرض کنید اپلیکیشنی دارید که بعضی وقت‌ها ترافیک سنگین‌تری داره. توی این شرایط، EC2 به شما این امکان رو میده که تعداد و ظرفیت سرورهای مجازیتون رو افزایش بدید تا بتونید فشار رو مدیریت کنید. بعد از اینکه بار کاری کاهش پیدا کرد، می‌تونید به‌راحتی تعداد سرورها رو کم کنید تا هم در هزینه‌ها صرفه‌جویی بشه و هم به اهداف پایداری‌تون برسید.خب ببینیم EC2 چیه؟در واقع EC2 در اصل سرورهای مجازی‌ای هست که توی فضای ابری اجرا میشه. هر نمونه EC2 که شما راه‌اندازی می‌کنید، روی یک سرور فیزیکی توی یه مرکز داده (datacenter) قرار داره که اون هم داخل یه Availability Zone یا AZ هست، و همه این‌ها در منطقه‌ای که شما انتخاب کردید، مدیریت میشن.می‌تونیم بگیم EC2 یکی از سرویس‌های اصلی AWS هست که بهتون اجازه میده نمونه‌های مجازی (virtual instances) خودتون رو مدیریت کنید. با این سرویس می‌تونید با چند کلیک ساده، سرورهای مجازی رو از طریق یک قالب آماده که بهش AMI (Amazon Machine Image) می‌گن، ایجاد کنید. این AMI شامل اطلاعات مهمی از جمله سیستم‌عامل مورد استفاده و تنظیمات پایه‌ای دیگه هست.حتی می‌تونید برنامه‌های خودتون رو مستقیماً روی این نمونه‌های EC2 پیاده‌سازی کنید و با استفاده از چندین AZ، اپلیکیشن‌هایی با دسترس‌پذیری بالا داشته باشید. همچنین اگر بخواید کنترل کاملی روی پایگاه داده‌تون داشته باشید، می‌تونید از EC2 به‌عنوان دیتابیس استفاده کنید..انواع نمونه‌های EC2سرورهای EC2 شش خانواده از نمونه‌ها رو ارائه میده که هر کدوم برای نیازهای خاصی طراحی شدن. این خانواده‌ها شامل انواع، نسل‌ها و اندازه‌های مختلفی هستن که در مجموع صدها گزینه مختلف برای انتخاب وجود داره. حالا بیاید نگاهی به این خانواده‌ها بندازیم:عمومی (General Purpose): این خانواده برای کارهای عمومی و روزمره مناسب هست. این نمونه‌ها یه توازن خوب بین پردازش، حافظه، و ذخیره‌سازی ایجاد می‌کنن. یعنی اگر اپلیکیشنی دارید که نیازهای مشخصی داره، این نمونه‌ها گزینه مناسبی هستن.بهینه‌شده برای پردازش (Compute Optimized): این نمونه‌ها برای بارهای کاری‌ای طراحی شدن که نیاز به پردازش بالایی دارن. مثلا برای پردازش داده‌ها، اجرای برنامه‌های محاسباتی، و حتی برخی از پردازش‌های ویدیویی که به قدرت CPU بالا نیاز دارن، این نوع نمونه‌ها ایده‌آل هستن.بهینه‌شده برای حافظه (Memory Optimized): این نمونه‌ها برای اپلیکیشن‌هایی مناسبه که به حافظه بالا و دسترسی سریع به حجم زیادی از داده‌های در حال پردازش نیاز دارن. مثلا برای پایگاه‌های داده‌ای که حجم زیادی از اطلاعات رو مدیریت می‌کنن یا سیستم‌های تجزیه و تحلیل داده‌ها، این نمونه‌ها انتخاب خوبی هستن.محاسبات شتاب‌داده‌شده (Accelerated Computing): این نمونه‌ها برای بارهای کاری‌ای طراحی شدن که نیاز به پردازش‌های تخصصی دارن، مثل یادگیری ماشین، پردازش‌های موازی بزرگ، یا حتی رندرینگ گرافیک‌های سه‌بعدی.بهینه‌شده برای ذخیره‌سازی (Storage Optimized): این نمونه‌ها برای کارهایی مناسبه که نیاز به ذخیره‌سازی و دسترسی به داده‌های بزرگ دارن. مثلا برای ذخیره‌سازی فایل‌های بزرگ یا اجرای پایگاه‌های داده سنگین، این خانواده گزینه عالی‌ای به حساب میاد.بهینه‌شده برای محاسبات با عملکرد بالا (HPC Optimized): این نوع نمونه‌ها برای کارهای پیچیده‌ای مناسبه که نیاز به محاسبات با عملکرد بالا دارن. مثلا برای محاسبات علمی، مدل‌سازی‌های پیچیده یا شبیه‌سازی‌های پیشرفته، این نوع نمونه‌ها انتخاب میشه.قیمت‌گذاری EC2حالا بریم سراغ بحث قیمت‌گذاری نمونه‌های EC2. AWS چندین مدل مختلف قیمت‌گذاری ارائه می‌ده که بسته به نیازتون می‌تونید یکی رو انتخاب کنید:مدل On-demand: این مدل قیمت‌گذاری به‌صورت ثابت و براساس استفاده ثانیه‌ای محاسبه میشه. این حالت وقتی مفیده که نیاز به هزینه‌های پایین دارید اما نمی‌خواید پیش‌پرداختی انجام بدید یا تعهدی برای مدت طولانی بدید. برای بارهای کاری که نمی‌تونید پیش‌بینی‌شون کنید یا قطع کردنشون ممکن نیست، این مدل ایده‌آله.مدل Spot Instances: این مدل برای استفاده از ظرفیت‌های خالی EC2 در دسترسه. اگه زمان شروع و پایان کار براتون مهم نیست و می‌تونید کار رو متوقف کنید، Spot Instances می‌تونه تا 90 درصد در هزینه‌ها صرفه‌جویی کنه. این روش به شما این امکان رو می‌ده که با هزینه خیلی کم، منابع مورد نیازتون رو در مواقعی که ظرفیت اضافی هست، تهیه کنید.مدل Dedicated Hosts: این گزینه برای زمانی مناسبه که شما نیاز به سرورهای فیزیکی اختصاصی دارید. این حالت مخصوصاً برای مواقعی مفیده که می‌خواید از لایسنس‌های سرور خودتون مثل لایسنس‌های Microsoft یا Oracle استفاده کنید و باید مطمئن بشید که هیچ منبع مشترکی با بقیه کاربران وجود نداره.مدل Reserved Instances: این مدل به شما این امکان رو می‌ده که برای مدت یک تا سه سال، یک نوع خاص از نمونه‌ها رو رزرو کنید. این حالت برای بارهای کاری‌ای که استفاده مداوم دارن و می‌تونید به مدت طولانی تعهد بدید، مناسبه. با استفاده از Reserved Instances، می‌تونید تا 72 درصد در هزینه‌ها صرفه‌جویی کنید و حتی ظرفیت رو در یک AZ خاص رزرو کنید.مدل Savings Plans: این مدل قیمت‌گذاری، به شما اجازه می‌ده که به‌جای تعهد به یک نمونه خاص، تعهدی به استفاده از منابع محاسباتی مثل EC2، Lambda یا Fargate به‌صورت ساعتی داشته باشید. این مدل انعطاف‌پذیری بیشتری داره و اگه قصد کاهش هزینه‌ها در سرویس‌های مختلف رو دارید، این مدل مناسبه. توی این روش هم می‌تونید تا 72 درصد از هزینه‌های on-demand رو کاهش بدید.قابلیت load balancing در EC2باید بدونیم EC2 قابلیت Load Balancing رو ارائه می‌ده که به‌طور خودکار ترافیک ورودی شما رو بین چندین نمونه EC2 سالم توزیع می‌کنه. بیاید با یه مثال رستورانی توضیحش بدیم؛ Load Balancer مثل یه میزبان یا مسئول خوشامدگویی در رستوران World Pizza هست که وقتی مشتری‌ها وارد می‌شن، اون‌ها رو به میزهای خالی و آماده هدایت می‌کنه تا به‌طور یکنواخت سرویس‌دهی بشن.چهار نوع Load Balancer بار در AWS داریم که هر کدوم به‌طور متفاوتی ترافیک رو مدیریت می‌کنن:نوع Classic Load BalancerاینLoad Balancer که جزو اولین‌ها بود، در لایه‌های 4 و 7 شبکه کار می‌کنه. Classic Load Balancer از پروتکل‌هایی مثل TCP، SSL/TLS، HTTP و HTTPS پشتیبانی می‌کنه و بیشتر برای شبکه‌های قدیمی‌تر یا EC2-Classic استفاده می‌شد. با اینکه هنوز هم در دسترسه، ولی بیشتر توصیه می‌شه که از انواع جدیدتر استفاده کنید.نوع Application Load Balancer (ALB)این نوع Load Balancer بهینه شده برای مدیریت اپلیکیشن‌هاست و در لایه 7 کار می‌کنه. ALB از پروتکل‌های HTTP، HTTPS و GRPC پشتیبانی می‌کنه. انعطاف‌پذیری بالا در مدیریت اپلیکیشن‌ها، تعریف قوانین مسیریابی پیشرفته و پشتیبانی از اپلیکیشن‌های مدرن مثل ریزخدمات (Microservices) از ویژگی‌های این نوع بارگذار هست.نوع Gateway Load Balancerاین Load Balancer به‌عنوان دروازه‌ای برای مانیتورینگ و ثبت اطلاعات شبکه استفاده میشه. Gateway Load Balancer در لایه 3 و 4 فعالیت داره و از تجهیزات مجازی شخص ثالث برای تجزیه و تحلیل شبکه پشتیبانی می‌کنه. این بارگذار معمولاً برای نیازهای خاص شبکه و سناریوهای پیشرفته امنیتی یا مانیتورینگ استفاده میشه.نوع Network Load Balancer (NLB)این نوع Load Balancer بهینه شده برای عملکرد بالاست و در لایه 4 شبکه فعالیت می‌کنه. NLB می‌تونه با استفاده از پروتکل‌های TCP، UDP و TLS ترافیک رو به‌صورت بسیار سریع و با آدرس‌های IP ثابت هندل کنه. این نوع برای اپلیکیشن‌هایی که نیاز به تأخیر کم و عملکرد بسیار بالا دارن، ایده‌آله.این چهار نوع Load Balancer، به شما این امکان رو می‌دن که ترافیک ورودی‌تون رو بر اساس نیازهای خاص برنامه‌هاتون مدیریت کنید و از اختلال و خرابی جلوگیری کنیدقابلیت Auto Scalingقابلیت Auto Scaling در EC2 به‌طور خودکار نمونه‌های EC2 رو بر اساس تغییرات تقاضا و نیاز، اضافه یا جایگزین می‌کنه تا همیشه بهترین کارایی و دسترس‌پذیری رو داشته باشید. این ویژگی به شما کمک می‌کنه که با تغییر شرایط و نیازهای اپلیکیشن، بدون دخالت دستی، به تعداد مناسبی از منابع برسید.انواع Auto Scaling:افقی (Horizontal Scaling یا Scaling Out): در این نوع مقیاس‌پذیری، نمونه‌های EC2 رو افزایش یا کاهش می‌دید تا به تعداد بیشتری سرور دسترسی داشته باشید. این نوع Auto Scaling به شما اجازه می‌ده تا تاثیر خرابی‌های سیستمی رو کاهش بدید و از چندین منطقه دسترسی (AZ) برای بهبود دسترس‌پذیری اپلیکیشن‌ها استفاده کنید. وقتی بار کاری بیشتر بشه، تعداد نمونه‌ها افزایش پیدا می‌کنه و وقتی نیاز کمتر باشه، نمونه‌های اضافی حذف می‌شن.عمودی (Vertical Scaling یا Scaling Up): در این نوع مقیاس‌پذیری، شما قدرت پردازش یا حافظه (RAM) نمونه‌های موجود رو ارتقا می‌دید. یعنی به‌جای اضافه کردن نمونه‌های جدید، از نمونه‌های قوی‌تر استفاده می‌کنید. برای مثال، می‌تونید از یک نمونه T3 small به یک نمونه T3 medium ارتقا بدید.کاربرد:با استفاده از Auto Scaling، می‌تونید اپلیکیشن‌هاتون رو به‌صورت خودکار با تغییرات تقاضا تطبیق بدید و از پرداخت هزینه‌های اضافی جلوگیری کنید. این قابلیت به‌ویژه برای اپلیکیشن‌هایی که در زمان‌های خاصی از روز یا هفته بار کاری متغیری دارن، ایده‌آل هست.این امکان باعث می‌شه که شما همیشه بهینه‌ترین استفاده رو از منابع داشته باشید و کاربران‌تون تجربه‌ی بهتری از سرویس‌ها دریافت کنن.قابلیت Compute Optimizerحالا بریم سراغ قابلیت Compute Optimizer. این سرویس به شما کمک می‌کنه تا تنظیمات مناسب برای منابع مختلف مثل اینستنس‌ها، حجم‌ها، کانتینرها، یا تابع‌های Lambda رو بر اساس داده‌های واقعی مصرف انتخاب کنید. نکته باحال اینجاست که Compute Optimizer پیشنهادهایی ارائه می‌ده تا بتونید عملکرد سیستم‌هاتون رو بهتر کنید و منابعی رو که بیش از حد نیاز یا کمتر از اون پیکربندی شدن، شناسایی کنید.این سرویس به کمک داده‌های تاریخی و هر متریکی که از ابزارهای نظارتی (مثل CloudWatch) جمع‌آوری شده، می‌تونه توصیه‌هایی دقیق‌تر برای گروه‌های Auto Scaling و اینستنس‌ها ارائه بده. به این ترتیب، شما می‌تونید منابع خودتون رو دقیق‌تر تنظیم کنید و جلوی هدر رفتن منابع و هزینه‌ها رو بگیرید.جالب‌تر اینکه، Compute Optimizer می‌تونه توی مهاجرت به پردازنده‌های Graviton هم کمکتون کنه. این پردازنده‌ها همون‌هایی هستن که AWS طراحی کرده تا هم هزینه‌ها رو پایین بیاره و هم عملکرد بهتری ارائه بده. پس اگه به فکر کاهش هزینه و افزایش کارایی هستید، این سرویس حتماً می‌تونه کمک بزرگی باشه.به‌طور خلاصه، Compute Optimizer همون ابزاریه که می‌تونید ازش برای بهینه‌سازی منابع استفاده کنید، از بهبود عملکرد گرفته تا صرفه‌جویی در هزینه‌ها و انتخاب بهترین سایز منابع بر اساس داده‌های واقعی مصرف.خب بریم EC2 رو توی محیط واقعی ببینیمتو این قسمت اول بررسی میکنیم چطور به EC2 متصل بشیم و بعدش یه سناریو داریم اینجا طبق همون میریم جلو و در آخرم میریم سراغ کنسول و باهاش کار می‌کنیم.چطور به EC2 دسترسی داشته باشیم؟قبل از اینکه وارد سناریومون بشیم، بیایید در مورد روش‌های مختلف دسترسی به EC2 صحبت کنیم.چهار راه اصلی برای این کار وجود داره:روش کنسول مدیریت AWS:از طریق مرورگر می‌تونید نمونه‌های EC2 خودتون رو مدیریت و پیکربندی کنید.روش EC2 Instance Connect یا EIC:این روش به شما اجازه می‌ده تا از طریق IAM policies دسترسی SSH رو کنترل کنید و نیازی به مدیریت کلیدهای SSH نداشته باشید.روش SSH یا Remote Desktop Protocol (RDP):SSH برای نمونه‌های EC2 لینوکس استفاده می‌شه.RDP برای نمونه‌های EC2 ویندوز استفاده می‌شه. با استفاده از این روش‌ها می‌تونید از طریق لپ‌تاپ یا PC خودتون به‌صورت امن به نمونه‌ها متصل بشید. برای این اتصال شما نیاز به یک جفت کلید دارید که شامل یک کلید خصوصی و یک کلید عمومی می‌شه تا اتصال امن رو برقرار کنه.روش Session Manager در Systems Manager:این ابزار به شما امکان مدیریت نمونه‌ها رو از طریق مرورگر یا AWS CLI می‌ده.حالا بریم سراغ سناریوی ایجاد EC2سناریوی ما اینه که یه نمونه EC2 جدید به نام Web App ایجاد کنیم. باید این نمونه رو طوری پیکربندی کنیم که از Amazon Linux AMI استفاده کنه و در محدوده‌ی سطح رایگان (Free Tier) باشه. همچنین یه کلید جدید به نام NewKeyPair ایجاد کنیم و بعد اتصال خودمون رو تست کنیم.مراحل کارخب، توی کنسول، اولین قدم اینه که یه نمونه EC2 ایجاد کنیم. توی نوار جستجو EC2 رو تایپ میکنیم و انتخابش میکنیم. خب، حالا از این داشبورد، می‌تونید از چند طریق به instance ها دسترسی داشته باشید. توی این قسمت گزینه Launch Instance رو میزنیم و اسم این Instance رو Web App می‌ذاریم و باید از Amazon Linux AMI که در محدوده سطح رایگان هست، استفاده کنیم.ایجاد جفت کلید (Key Pair)ما نیاز داریم یه جفت کلید جدید ایجاد کنیم، پس اینجا روی گزینه ایجاد کلید کلیک می‌کنیم و اسمش رو NewKeyPair می‌ذاریم.وقتی این جفت کلید ایجاد می‌شه، به‌صورت خودکار روی سیستم شما دانلود می‌شه.ما برای این دمو به جفت کلید نیازی نداریم چون داریم از Instance Connect استفاده می‌کنیم، ولی بدونید که این تنها باریه که می‌تونید این جفت کلید رو ایجاد کنید.تنظیمات شبکه (Network Settings)معمولاً شما می‌خواید دسترسی به Instance تون رو فقط از IPهای مشخصی باز کنید، ولی ما اینجا گزینه Anywhere رو انتخاب می‌کنیم تا بتونیم از طریق Instance Connect متصل بشیم.ذخیره‌سازی (Storage)قسمت ذخیره‌سازی هم همونطور که هست بدون تغییر میزاریم. اگه بخوایم یه نمونه بزرگ‌تر یا فضای ذخیره‌سازی بیشتری اضافه کنیم، اینجا جاییه که میتونیم این کار رو انجام بدیم. بیایید به قسمت تنظیمات پیشرفته (Advanced Details) بریم.اگه می‌خواستید برای این نوع نمونه از spot instances استفاده کنید، می‌تونید از اینجا انتخاب کنید.گزینه‌های زیادی توی این قسمت هستن که می‌تونید انتخاب کنید، ولی ما برای این دمو نیازی به انجام این کار نداریم، پس فقط می‌ریم و نمونه‌مون رو اجرا می‌کنیم.حالا بریم سراغ قسمت نمونه‌ها تا وضعیتش رو ببینیم.  در اول توی وضعیت pending هست.ممکنه چند دقیقه طول بکشه تا به وضعیت فعال (running) برسه.خب، تا الان instance ما اجرا شده و از چک‌های وضعیت (status checks) عبور کرده.حالا Instance رو انتخاب می کنیم و بهش وصل میشیم.ما همه چیز رو همینطوری می‌ذاریم و از Instance Connect استفاده می‌کنیم تا متصل بشیم.خب، متصل شدیم و الان توی Instance هستیم. و یه بررسی میکنیم مثلا لیست فایل‌ها رو میبینیم.کانتینر Container چیه؟خب، بذارید کانتینرها رو مثل یه سری جعبه‌های پیتزا تصور کنیم! هر جعبه، یه اپلیکیشن یا سرویس جداگانه رو توی خودش داره. حالا، همون‌طور که جعبه‌های پیتزا رو می‌تونید روی هم بچینید و هرکدوم مستقل باقی بمونه، شما هم می‌تونید کانتینرها رو روی یه سرور یا حتی چند سرور مختلف قرار بدید و هر کدوم به‌طور مجزا کار کنه. این کار باعث می‌شه هم سازماندهی و جداسازی بهتری داشته باشید و هم امنیت بالاتر بره.مزایای کانتینرها:پرتابل بودن: کانتینرها به شما این امکان رو می‌دن که اون‌ها رو روی سیستم‌عامل‌ها و سخت‌افزارهای مختلف مستقر کنید و با خیال راحت از این پورتابل بودن لذت ببرید.ثبات در عملیات: فرقی نداره که کانتینر رو کجا مستقر کنید، وقتی کانتینر deploy شد، دقیقا همونطور که انتظار دارید اجرا می‌شه.کارایی بیشتر: کانتینرها به‌خاطر سبک‌وزن بودن، سریع‌تر مستقر و پچ می‌شن و برای مقیاس‌پذیری خیلی گزینه‌ی بهتری هستن.تسریع چرخه‌های توسعه و تست: چون توسعه و تست سریع‌تر پیش می‌رن، اپلیکیشن‌ها زودتر به تولید می‌رسن.مصرف کمتر منابع سیستم: کانتینرها نسبت به ماشین‌های مجازی سنتی یا سخت‌افزارها، منابع کمتری نیاز دارن چون سیستم‌عامل رو توی خودشون ندارن.کی باید از کانتینرها استفاده کنیم؟انتقال اپلیکیشن‌های موجود به معماری‌های ابری: اگه می‌خواید اپلیکیشن‌های موجود رو به فضای ابری منتقل کنید، کانتینرها گزینه خوبی هستن.بازطراحی اپلیکیشن‌ها: اگه برنامه‌تون نیاز داره تا بازطراحی بشه و بتونه از قابلیت‌های بومی ابر بهره‌مند بشه، کانتینرها انتخاب درستی هستن.معماری میکروسرویس‌ها: اگه اپلیکیشن شما نیاز به جداسازی، استقرار و مقیاس‌پذیری راحت داره، کانتینرها بهترین انتخاب هستن.یکپارچه‌سازی با CI/CD: توی فرآیندهای CI/CD، کانتینرها می‌تونن خیلی راحت اجرا بشن و چرخه توسعه، تست و استقرار رو سریع‌تر و روان‌تر کنن.وظایف تکراری: برای jobهای تکراری مثل ETL یا Batch jobs که توی پس‌زمینه اجرا می‌شن، استفاده از کانتینرها خیلی کارآمده.جمع‌بندی: کانتینرها ابزاری هستن که به شما این امکان رو می‌دن تا اپلیکیشن‌هاتون رو سازماندهی کنید، منابع رو بهینه مصرف کنید و حتی چرخه توسعه رو سریع‌تر کنید. با کانتینرها، هم ثبات بیشتری دارید و هم می‌تونید به‌راحتی از قابلیت‌های ابری بهره‌مند بشید. 🌟کانتینرها در AWSخب AWS سه سرویس اصلی برای مدیریت کانتینرها داره که شامل: Elastic Container Registry (ECR)، Elastic Container Service (ECS)، و Elastic Kubernetes Service (EKS) می‌شن. این سرویس‌ها به شما کمک می‌کنن تا به راحتی کانتینرها رو ذخیره، مدیریت و مستقر کنید. حالا بیایید نگاهی بندازیم به این سرویس‌ها:1. Elastic Container Registry (ECR)تصور کنید ECR مثل یک &quot;مخزن دستورپخت‌ها&quot; یا همون &quot;ریسپی&quot; برای کانتینرهاست. این سرویس در واقع به شما اجازه می‌ده تا تصاویر کانتینر (Images) خودتون رو ذخیره، مدیریت و با اعضای تیم به اشتراک بذارید. برای مثال، فرض کنید شما چندین نسخه از اپلیکیشنتون رو دارید؛ ECR به شما کمک می‌کنه تا این نسخه‌ها رو ذخیره کنید و همیشه به آخرین نسخه‌ها دسترسی داشته باشید. با استفاده از ECR، اعضای تیم به راحتی می‌تونن به این تصاویر دسترسی پیدا کنن و توی پروژه‌های مختلف از اون‌ها استفاده کنن.2. Elastic Container Service (ECS)مورد بعدی ECS هست ، که یک سرویس مدیریت کانتینر کاملاً مدیریت‌شده است که برای تیم‌هایی که با Docker کار می‌کنن خیلی مناسبه. می‌تونید ECS رو مثل سرآشپزی تصور کنید که از دستورپخت‌های موجود در ECR استفاده می‌کنه و کانتینرها رو مستقر و مدیریت می‌کنه. ECS به شما امکان می‌ده تا با استفاده از EC2 یا Fargate، کانتینرهای خودتون رو به راحتی اجرا کنید. برای کسایی که آشنایی بیشتری با Docker دارن و به دنبال یک سرویس ساده‌تر هستن، ECS انتخاب عالی‌ایه.3. Elastic Kubernetes Service (EKS)در واقع EKS، سرویس دیگه‌ای از AWS هست که به شما اجازه می‌ده تا با استفاده از Kubernetes، کانتینرهای خودتون رو مدیریت کنید. EKS مثل یک سرآشپز متخصص در زمینه Kubernetes عمل می‌کنه. اگه تیم شما بیشتر با Kubernetes راحت‌تره، EKS بهترین انتخابه. این سرویس به شما اجازه می‌ده تا از ابزارها و قابلیت‌های Kubernetes مثل Podها، Serviceها و Ingress استفاده کنید. EKS با EC2، Fargate و حتی Outposts کار می‌کنه و انعطاف‌پذیری بیشتری رو در اختیارتون می‌ذاره.تفاوت‌های ECS و EKSبزرگترین تفاوت بین ECS و EKS اینه که ECS از Docker پشتیبانی می‌کنه و در واقع به عنوان یک سرویس مدیریت کانتینر کاملاً سازگار با Docker عمل می‌کنه. EKS اما، برای کار با Kubernetes طراحی شده که یک سیستم منبع‌باز برای مدیریت کانتینرهاست. بنابراین، انتخاب شما بین این دو سرویس به نوع معماری، تخصص تیم، و نیازمندی‌های شما بستگی داره.خلاصه‌ی مقایسه:سرویس ECS = کار با Docker، سادگی بیشتر، سازگاری با Fargate.سرویس EKS = کار با Kubernetes، استفاده از امکانات منبع‌باز، انعطاف‌پذیری بیشتر.خب، حالا یه سوال براتون دارم. اگه به مدیریت و استقرار کانتینرها با Docker عادت دارید و نمی‌خواید وارد مباحث پیچیده‌ی Kubernetes بشید، کدوم سرویس AWS رو انتخاب می‌کنید؟ ECS درسته! اما اگه قصد دارید از ابزارها و قابلیت‌های منبع‌باز Kubernetes استفاده کنید، EKS بهترین گزینه است.سرویس‌های Serverless در AWSمفهوم Serverless چیه؟ Serverless، در واقع نوعی مدل Cloud Native برای توسعه و استقرار اپلیکیشن‌هاست. ایده‌ی اصلی این مدل اینه که شما به‌عنوان توسعه‌دهنده نیازی به مدیریت مستقیم سرورها ندارید. در واقع سرورها همچنان وجود دارن، اما AWS اون‌ها رو مدیریت می‌کنه و شما فقط روی کد و منطق تجاری اپلیکیشن‌هاتون تمرکز می‌کنید.این مدل به شما این امکان رو می‌ده که دیگه دغدغه‌ی مدیریت، به‌روزرسانی، یا نظارت مستقیم بر روی سرورها رو نداشته باشید. شما فقط فانکشن‌ها و سرویس‌های خودتون رو تعریف می‌کنید و باقی کارها رو AWS به‌طور خودکار برای شما انجام می‌ده. در نتیجه، مسئولیت مدیریت زیرساخت‌ها از روی دوش شما برداشته می‌شه و می‌تونید زمان بیشتری رو برای توسعه و بهبود اپلیکیشن‌هاتون صرف کنید.سرویس‌های Serverlessحالا بیاین نگاهی به بعضی از سرویس‌های Serverless  بندازیم.1. Lambdaلامبدا Lambda یک سرویس محاسباتی Serverless هست که به شما اجازه می‌ده کدتون رو بدون مدیریت سرورها اجرا کنید. کدی که می‌نویسید به‌عنوان یک فانکشن شناخته می‌شه و می‌تونه با زبان‌های مختلفی مثل Python، Rust، و Ruby نوشته بشه. یکی از ویژگی‌های خوب Lambda اینه که به‌صورت خودکار مقیاس‌پذیری داره.چه زمانی باید از Lambda استفاده کنید؟پردازش فایل‌های Real-Time: فرض کنید یه فایل داده‌ای رو به یک S3 Bucket آپلود می‌کنید. این آپلود می‌تونه یک فانکشن Lambda رو تریگر کنه تا داده‌ها رو توی یک جدول DynamoDB ذخیره کنه.ارسال نوتیفیکیشن ایمیلی: فرض کنید نیاز دارین وقتی تغییراتی توی فایل‌ها از طریق CodeCommit انجام می‌شه، نوتیفیکیشن دریافت کنید. زمانی که تغییری از طریق CodeCommit انجام بشه، می‌تونید از CloudWatch استفاده کنید تا یک فانکشن Lambda رو تریگر کنه و سپس از SNS استفاده کنید تا ایمیلی که حاوی اطلاعات تغییرات هست به شما ارسال بشه.برای business logic توی بک‌اند: فرض کنید شما یک دستگاه Alexa دارین. می‌تونید از یک Alexa Skill استفاده کنید تا Lambda رو تریگر کنه و اطلاعاتی رو از یک جدول DynamoDB بگیره و سپس از یک تریگر Lambda دیگه استفاده کنه تا اون اطلاعات رو به Alexa ارسال کنه.2. Fargateفارگیت Fargate یک موتور محاسباتی با قابلیت پرداخت به‌ازای استفاده (Pay-as-You-Go) و مقیاس‌پذیری خودکار هست. برای استفاده از اون، شما یک image کانتینری می‌سازید یا انتخاب می‌کنید و منابع حافظه و محاسباتی مورد نیازتون رو مشخص می‌کنید. سپس، کانتینرهایی که با استفاده از image و منابع تعریف‌شده اجرا شدن رو مدیریت می‌کنید.ویژگی‌های Fargateوظایف Fargate منابع زیرساختی مثل هسته‌های CPU، حافظه یا رابط‌های شبکه رو با هیچ وظیفه‌ی دیگه‌ای به اشتراک نمی‌ذارن، که باعث ایجاد ایزولاسیون از نظر طراحی می‌شه.فارگیت Fargate یک نوع استقرار (Launch Type) در ECS هست برای کانتینرها، همونطور که EC2 هم نوعی از این استقراره. Fargate تمام اینستنس‌هایی که برای کانتینرها استفاده می‌کنه رو مدیریت می‌کنه و این موضوع اون رو به یک سرویس Serverless تبدیل می‌کنه. در حالی که EC2 به شما اجازه می‌ده مستقیماً اینستنس‌ها رو مدیریت کنید.چه زمانی باید از Fargate استفاده کنید؟بارهای کاری مبتنی بر پیام (Message-Driven Workloads): فرض کنید شما یک صف از سرویس SQS دارین که Fargate از اون برای long polling پیام‌ها استفاده می‌کنه. Fargate این پیام‌ها رو پردازش می‌کنه و سپس اون‌ها رو در یک جدول DynamoDB ذخیره می‌کنه. تفاوت کلیدی اینجاست که Lambda برای وظایف کوتاه‌مدت و تکراری استفاده می‌شه. اگه نیاز به پردازشی دارین که بیشتر از ۱۵ دقیقه طول می‌کشه، Fargate انتخاب بهتری برای موندن در دنیای Serverless هست.بارهای کاری مبتنی بر رویداد و برنامه‌ریزی شده: فرض کنید نیاز دارین که کدها رو برای اطلاعات حساس مثل شماره حساب‌ها یا اعتبارات اسکن کنید. اگر یک pull request در CodeCommit ثبت بشه، می‌تونید یک فانکشن Lambda رو تریگر کنید تا یک وظیفه‌ی جدید Fargate رو ایجاد کنه که این اسکن رو انجام بده. اگه این اسکن اطلاعات حساسی پیدا کنه، Fargate می‌تونه از SNS استفاده کنه تا به شما ایمیل بزنه و اطلاع بده.درک قیمت‌گذاری و ویژگی‌های سرویس‌های Serverlessنحوه‌ی قیمت‌گذاری Lambdaشما فقط مسئول کدی هستین که می‌نویسین و امنیتش، در حالی که AWS مدیریت محیط کدنویسی و نسخه‌های پشتیبانی شده از زبان‌ها رو بر عهده داره. لامبدا Lambda می‌تونه کد شما رو در پاسخ به رویدادها اجرا کنه و یک زمان‌بندی حداکثری ۱۵ دقیقه‌ای داره. مقدار پیش‌فرض این زمان‌بندی ۳ ثانیه‌ست، اما شما می‌تونید این مقدار رو برای فانکشن خودتون تغییر بدین.در مورد قیمت‌گذاری Lambda، شما براساس تعداد درخواست‌ها و مدت‌زمان (duration) شارژ می‌شین. شما فقط برای زمانی که از محاسبات استفاده می‌شه هزینه پرداخت می‌کنید و شارژ زمانی شروع می‌شه که فانکشن تریگر می‌شه. این شامل تست‌ها هم می‌شه، بنابراین اگه کد در واقع اجرا نشه، هیچ هزینه‌ای نداره. مدت‌زمان اجرای فانکشن به نزدیک‌ترین میلی‌ثانیه گرد می‌شه.نکته‌ی جالب در مورد قیمت‌گذاری Lambda اینه که حتی بعد از پایان سال رایگان، Lambda همچنان در طرح Always Free قرار داره و شامل یک میلیون درخواست رایگان در ماه می‌شه.قیمت‌گذاری Fargateخب، برسیم به Fargate. این سرویس هم مثل Lambda هیچ هزینه‌ی اولیه‌ای نداره. شما فقط به اندازه‌ای که از منابع استفاده می‌کنین، مثل تعداد vCPUها، مقدار حافظه و فضای ذخیره‌سازی، هزینه پرداخت می‌کنین. اما برخلاف Lambda، Fargate هیچ طرح رایگانی نداره، پس این نکته رو باید تو برنامه‌ریزی هزینه‌هاتون در نظر بگیرین.فارگیت Fargate به شما امکان می‌ده که کانتینرها رو بدون نیاز به مدیریت مستقیم سرورها اجرا کنین و به راحتی اون‌ها رو مقیاس‌پذیر کنین. البته این سادگی مدیریت، هزینه‌ای داره که بر اساس منابع محاسباتی مصرفی محاسبه می‌شهسناریو ایجاد و بررسی  Lambda سناریو: ارائه‌ی آموزش Lambda به تیمبه شما وظیفه داده شده تا یک راهنمای عملی از سرویس Lambda برای تیمتون ارائه بدین. شما باید یک فانکشن بسازید و به نکات مهم در طول مسیر اشاره کنید. خب بریم قدم به قدم اینو انجام بدیم.ورود به کنسول AWSاولین کاری که باید بکنیم اینه که وارد کنسول بشیم. می‌تونید از راه‌های مختلف به Lambda دسترسی پیدا کنید. ممکنه در قسمت ویجت‌ها باشه یا تو منوی بالا دیده بشه.ایجاد فانکشن جدیدمی‌خوایم از اول فانکشن رو بسازیم، پس گزینه Author from scratch رو انتخاب می‌کنیم. اسم فانکشن  رو   MyTestFunction میزایم . نسخه‌ی زمان اجرای (runtime) ما همون Node.js باقی می‌مونه و معماری رو هم تغییر نمی‌دیم. بعد، گزینه‌ی change default execution role رو انتخاب می‌کنیم. اینجا اگه بخوایم رول‌های خاصی رو برای استفاده با سرویس‌های مختلف مشخص کنیم، می‌تونیم این کار رو انجام بدیم. اما توی این سناریو نیازی به این کار نداریمو در آخر هم قسمت Additional Configurations  هست که  می‌تونیم امضا کردن کد (code signing)، URLهای فانکشن، تگ‌ها و VPC رو فعال کنیم، اما الان بهشون نیازی نداریم، پس این بخش رو هم می‌بندیم و فانکشن خودمون رو ایجاد می‌کنیم.خب فانکشن ما با موفقیت ساخته شد. اینجا می‌بینیم که بخش Overview فانکشن به ما اجازه می‌ده که یک تریگر اضافه کنیم و یک مقصد (destination) تعیین کنیم.ویرایش کدپایین‌تر به بخش code source می‌رسیم و یک فایل به نام index.mjs می‌بینیم.  اسم این فایل رو تغییر میدیم تا مطمئن بشیم کدمون درست کار می‌کنه. پس اونM رو حذف می‌کنیم و اسم رو به index.js تغییر می‌دیم.حالا محتوای فعلی رو با کد نمونه‌ای زیر جایگزین می‌کنیم. این فانکشن قراره به یک URL مشخص متصل بشه. اگه اتصال موفقیت‌آمیز باشه، یک کد وضعیت (status code) 200 دریافت می‌کنیم.const https = require(&#039;https&#039;);
let url = &amp;quothttps://www.amazon.com&amp;quot // Change this to your desired URL
exports.handler = async (event) =&gt; {
    return new Promise((resolve, reject) =&gt; {
        https.get(url, (res) =&gt; {
            if (res.statusCode === 200) {
                resolve({
                    statusCode: 200,
                    body: &amp;quotSuccess! Received 200 status code.&amp;quot
                });
            } else {
                resolve({
                    statusCode: res.statusCode,
                    body: `Received status code: ${res.statusCode}`
                });
            }
        }).on(&#039;error&#039;, (e) =&gt; {
            reject({
                statusCode: 500,
                body: `Request failed: ${e.message}`
            });
        });
    });
};
ایجاد و اجرای تستبرای اینکه بتونیم فانکشن رو تست کنیم، اول باید یک test event ایجاد کنیم. پس به بخش تست می‌ریم، اسم این تست رو MyTest می‌ذاریم و باقی موارد رو بدون تغییر باقی می‌ذاریم چون نیازی به ارسال اطلاعات نداریم. حالا این رو ذخیره می‌کنیم و فانکشن رو مستقر می‌کنیم.تست موفقیت‌آمیز فانکشنخب فانکشن ما به‌روزرسانی شد و حالا می‌تونیم اون رو تست کنیم. همونطور که انتظار داشتیم، کد وضعیت 200 رو دریافت کردیم.بررسی لاگ‌ها و گزارش‌هاپایین‌تر در بخش &quot;function logs&quot; می‌بینیم که فانکشن چه زمانی شروع و چه زمانی پایان یافته. اما نکته‌ی مهمی که باید بهش توجه کنیم، گزارش مربوط به مدت‌زمان (duration) فانکشن هست. اینجا مدت‌زمان فانکشن ما 76.33 میلی‌ثانیه بوده و طبق گرد کردن، قراره برای 77 میلی‌ثانیه شارژ بشیم. این گزارش همچنین اندازه‌ی حافظه و اطلاعات دیگر مربوط به مدت‌زمان رو هم شامل می‌شه.معرفی سرویس‌های محاسباتی بیشتر AWSخب تو این قسمت می‌خوایم چهار تا از سرویس‌های محاسباتی AWS یعنی Outposts، Lightsail، Batch و Wavelength رو با هم بررسی کنیم. هر کدوم از این سرویس‌ها، ویژگی‌های منحصربه‌فرد و کاربردهای خاص خودشون رو دارن که در این بخش باهاشون آشنا می‌شیم.AWS Outpostsسرویس Outposts به شما اجازه می‌ده تا از سرویس‌های ابری AWS در مراکز داده داخلی خودتون استفاده کنین. این سرویس بیشتر برای سازمان‌هایی مناسبه که باید بارهای کاری خودشون رو به دلیل نیاز به تأخیر پایین یا الزامات حاکمیت داده در محل‌های داخلی نگهداری کنن.حاکمیت داده‌ها به این معناست که اطلاعات و داده‌ها باید در یک مکان مشخص باقی بمونن، مثلاً به دلیل قوانین یا امنیت. Outposts به شرکت‌ها این امکان رو می‌ده تا به صورت هیبریدی، بین محیط‌های ابری و داخلی، کارهاشون رو مدیریت کنن.خانواده Outpostsسرویس Outposts در دو نوع Rack و Servers ارائه می‌شه. AWS این سخت‌افزارها رو بسته به نیاز شما به مراکز داده‌ی داخلی‌تون ارسال و نصب می‌کنه، تا شما بتونید به سرویس‌ها و APIهای ابری AWS دسترسی داشته باشید.AWS Lightsailسرویس Lightsail برخلاف Outposts، یک سرویس ابری کاملاً مدیریت‌شده‌ست که به شما اجازه می‌ده تا پروژه‌های کوچک مثل وب‌سایت‌های WordPress یا محیط‌های تست ساده رو راه‌اندازی کنید. این سرویس یک رابط کاربری ساده و گزینه‌های قابل پیش‌بینی قیمت‌گذاری داره.ویژگی‌های Lightsailسرویس Lightsail یک سرویس عالی برای تازه‌کارها یا پروژه‌های کوچک و سریع‌الرشد هست. شما از طریق یک رابط کاربری ساده به منابعی مثل سرورهای مجازی، حافظه SSD، مدیریت DNS و دسترسی RDP/SSH دسترسی دارین. این سرویس همون‌طور که اشاره شد، با قیمت‌گذاری ساده و شفاف ارائه می‌شه که هزینه‌های ماهانه رو به‌راحتی پیش‌بینی‌پذیر می‌کنه.AWS Batchسرویس Batch یک سرویس مدیریت دسته‌ای AWS هست که به شما اجازه می‌ده تا بارهای کاری بزرگ رو به بخش‌های کوچیک‌تر تقسیم کنید. این سرویس برای کارهای طولانی‌مدت که نیازمند پردازش‌های تکراری هستن، ایده‌آله. Batch به صورت خودکار منابع محاسباتی مثل اینستنس‌ها رو براساس حجم کاری تأمین می‌کنه.مثال از Batchفرض کنید باید یک خبرنامه ماهانه برای ۵۰,۰۰۰ مشترک ارسال کنین. AWS Batch می‌تونه این خبرنامه‌ها رو به دسته‌های هزار تایی تقسیم کنه تا کار ارسال ساده‌تر و بهینه‌تر انجام بشه.AWS Wavelengthسرویس Wavelength یکی از سرویس‌های جالب AWS هست که امکان اجرای اپلیکیشن‌هایی با تأخیر بسیار پایین رو فراهم می‌کنه. این سرویس به‌طور خاص برای کاربرانی طراحی شده که از شبکه 5G استفاده می‌کنن و نیاز به دسترسی سریع به اپلیکیشن‌ها دارن.ویژگی‌های Wavelengthسرویس Wavelength از بخش‌های مختلفی مثل zones و subnets تشکیل شده که به توسعه‌دهندگان کمک می‌کنه تا اپلیکیشن‌هایی با تأخیر کم برای شبکه‌های موبایل ایجاد کنن. این سرویس برای اپلیکیشن‌هایی که نیازمند زمان پاسخ سریع در شبکه‌های 5G هستن، گزینه مناسبیه.تو این مقاله سعی کردم به صورت جامع و ساده، مفاهیم و سرویس‌های مختلف AWS رو معرفی کنم. امیدوارم که با این توضیحات، درک بهتری از خدمات ابری AWS و کاربردهای متنوع اون‌ها پیدا کرده باشین. نکته مهمی که هست  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قسمت 6: تکنولوژی‌ها و سرویس‌های توسعه، پیام‌رسانی، و دیپلویمنتقسمت هفتم:‌ تکنولوژی و سرویس‌های migration و انتقال دادهو در آخر این آدرس لینکدین و توئیتر من هست خوشحال میشم در ارتباط باشیم.🪩 Follow Linkedin Hossein Jafari🪩🕊 Twitter 🕊</description>
                <category>حسین جعفری</category>
                <author>حسین جعفری</author>
                <pubDate>Sat, 26 Oct 2024 12:44:47 +0330</pubDate>
            </item>
                    <item>
                <title>قسمت اول AWS Certified Cloud Practitioner : آشنایی با مفاهیم ابتدایی AWS Cloud</title>
                <link>https://virgool.io/@h0x3ein/%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-aws-certified-cloud-practitioner-%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%D9%85%D9%81%D8%A7%D9%87%DB%8C%D9%85-%D8%A7%D8%A8%D8%AA%D8%AF%D8%A7%DB%8C%DB%8C-aws-cloud-dychs4bvtcrl</link>
                <description>مقدمه توی چند تا مقاله، قراره به‌صورت کامل و قدم‌به‌قدم مباحث مربوط به دوره‌ی AWS Cloud Practitioner رو با هم بررسی کنیم. هدف این مقالات اینه که مفاهیم اساسی رایانش ابری و سرویس‌های مختلف AWS رو به زبان ساده  یاد بگیریم تا درک بهتری از دنیای cloud پیدا کنیم.حالا ممکنه با خودتون بگین: &quot;خب، AWS که به خاطر تحریم‌ها توی ایران قابل استفاده نیست، چرا باید یادش بگیرم؟&quot; جواب ساده‌ست: حتی اگر مستقیم نتونیم از AWS استفاده کنیم، یادگیری این مفاهیم بهمون کمک می‌کنه تا رایانش ابری و سرویس‌های مشابه رو بهتر بفهمیم. این دانش می‌تونه توی کار با پلتفرم‌های دیگه مثل Azure، Google Cloud یا حتی سرویس‌های ابری خصوصی هم به کارمون بیاد.پس چه بخواین با AWS کار کنین چه نه، این سری مقالات می‌تونه پایه‌ی خوبی براتون بسازه.خب ببینیم Cloud چیه؟حتماً شنیدین که همه جا صحبت از اینه که داده‌ها توی &quot;cloud&quot; هستن یا شرکت‌ها دارن به cloud مهاجرت می‌کنن. اما cloud اینجا به اون ابرهای سفید توی آسمون ربطی نداره! بلکه cloud یه مکان واقعی‌ه که در واقع می‌تونه هر جایی روی زمین باشه. cloud یعنی استفاده از سرورهای قدرتمند که می‌تونن توی دیتاسنترهای شما یا یکی دیگه باشن.یه مثال ساده: فکر کنین شما یه فروشگاه آنلاین پیتزا دارید. وقتی مشتری‌هاتون وارد سایت می‌شن و سفارش پیتزا می‌دن، پشت صحنه داره یه سرور یا شاید حتی چند تا سرور درخواست‌ها رو مدیریت می‌کنن. سرورهای AWS دقیقاً همین کار رو برای شما انجام می‌دن. هزاران سرور در سراسر جهان توی گروه‌هایی به اسم دیتاسنتر (Data Center) قرار دارن. این دیتاسنترها توی کشورهای مختلف پراکنده هستن و هر وقت که لازم باشه، درخواست‌های شما رو مدیریت می‌کنن.حالا یکی از تکنولوژی‌هایی که AWS برای استفاده بهتر از سرورهاش داره، مجازی‌سازی (Virtualization) هست. مجازی‌سازی مثل اینه که شما یه تیکه نون رو به چند تا تیکه کوچیک‌تر تقسیم کنید. این تیکه‌های کوچیک‌تر توی دنیای سرور همون ماشین‌های مجازی (Virtual Machine یا VM) هستن. هر VM یه سیستم عامل، حافظه، فضای ذخیره‌سازی و دسترسی شبکه مخصوص به خودش رو داره. در واقع مثل اینه که شما یه تیکه نون برای خودتون داشته باشید، ولی بقیه هم بتونن از همون نون استفاده کنن.مدل‌های استفاده از خدمات ابریاینکه چطور از این منابع استفاده می‌کنید هم خیلی مهمه. درست مثل اینکه چطور از برق یا آب استفاده می‌کنید، استفاده از منابع ابری هم به دو شکل اصلی هست:مدل On-Demand: این مدل هیچ نیاز به پرداخت پیش‌پرداخت یا تعهدات بلندمدت نداره. شما فقط هر وقت که نیاز داشتید، از منابع استفاده می‌کنید. مثل این می‌مونه که برق‌تون رو فقط وقتی می‌خواهید روشن کنید که نیاز دارید، و هر وقت که استفاده نکنید، هزینه‌ای هم پرداخت نمی‌کنید.مدل Pay-as-You-Go: این مدل همونطور که از اسمش پیداست، بر اساس مصرف شما هزینه دریافت می‌کنه. دقیقاً مثل قبض برق یا آب، هر چقدر که استفاده کردین، به همون میزان پرداخت می‌کنید. AWS حتی به شما این امکان رو می‌ده که هزینه‌ها رو به صورت ساعتی یا حتی ثانیه‌ای محاسبه کنید!رایانش ابری (Cloud Computing) چیه؟حالا که فهمیدیم cloud چیه، باید بدونیم رایانش ابری (Cloud Computing) به چه معناست. رایانش ابری یعنی شما به جای استفاده از سرورهای خودتون، از سرورهای AWS استفاده می‌کنید که توی دیتاسنترهای مختلف قرار دارن. اینجوری نیازی به راه‌اندازی و نگهداری دیتاسنتر خودتون ندارید و AWS همه کارها رو براتون انجام می‌ده.در واقع AWS یه عالمه خدمات مختلف داره که هر کدوم برای یه کاری به کار می‌رن:خدمات محاسباتی (Compute services): مثل EC2 که به شما امکان راه‌اندازی سرورهای مجازی رو می‌ده.خدمات ذخیره‌سازی (Storage services): مثل S3 که فضایی برای ذخیره داده‌ها فراهم می‌کنه.خدمات شبکه (Networking services): مثل VPC که به شما اجازه می‌ده یه شبکه خصوصی مجازی راه بندازید.خدمات پایگاه داده (Database services): مثل RDS که یه پایگاه داده مدیریتی ارائه می‌ده.ابزارهای توسعه‌دهنده (Developer tools): مثل خانواده Code که ابزارهای مختلف برای توسعه و استقرار برنامه‌ها ارائه می‌ده.خدمات هوش مصنوعی و یادگیری ماشین (AI و ML): مثل Rekognition که سرویس‌های مربوط به تشخیص تصویر و یادگیری ماشین رو فراهم می‌کنه.خدمات امنیتی (Security services): مثل IAM که مدیریت دسترسی‌ها و امنیت حساب‌های کاربری رو بر عهده داره.خدمات قیمت‌گذاری (Pricing services): مثل Pricing Calculator که به شما کمک می‌کنه قیمت‌ها رو محاسبه کنید.معرفی Cloud Computing و مدل‌های استقرارمدل های CapEx و OpEx چیه؟دو تا اصطلاح پرکاربردی که توی دنیای تکنولوژی و به خصوص cloud computing زیاد می‌شنوید، CapEx و OpEx هستن. درک تفاوت بین این دو مدل به شما کمک می‌کنه تا بهتر متوجه بشید که چرا رایانش ابری (Cloud Computing) و استفاده از سرویس‌هایی مثل AWS، به شرکت‌ها و سازمان‌ها کمک می‌کنه که هزینه‌های خودشون رو بهینه‌تر مدیریت کنن.در محیط‌های سنتی، معمولاً هزینه‌های زیرساختی به شکل CapEx انجام می‌شه، یعنی شما باید هزینه‌های بالایی برای خرید سخت‌افزار و تجهیزات پرداخت کنید و از اون‌ها برای مدت طولانی استفاده کنید. ولی با ورود به دنیای Cloud، مدل هزینه‌ای به سمت OpEx میره که باعث انعطاف‌پذیری بیشتر در هزینه‌ها می‌شه.مدل CapEx یا هزینه‌های سرمایه‌ای (Capital Expenditures)، مربوط به خریدهای پیش پرداختیه که برای دارایی‌های ثابت مثل تجهیزات، املاک، کامپیوترها و نرم‌افزارها انجام می‌دید.مدل OpEx یا هزینه‌های عملیاتی (Operating Expenses)، هزینه‌هایی هستن که برای اجرای عملیات روزمره استفاده می‌شن، مثل حقوق کارکنان، اجاره، بازاریابی و تحقیق و توسعه.شش مزیت محاسبات ابری (Cloud Computing)حالا بریم سراغ شش تا مزیتی که محاسبات ابری به شما میده:شما می‌تونید اپلیکیشن‌هاتون رو توی هر جایی از دنیا با فقط یک کلیک راه‌اندازی کنید و کل محیط‌هاتون رو توی چند دقیقه بالا بیارید.به جای اینکه دغدغه مدیریت سخت‌افزارها رو داشته باشید، فقط روی توسعه اپلیکیشن‌ها تمرکز می‌کنید، چون مرکز داده‌ای که استفاده می‌کنید متعلق به شما نیست.به دلیل اینکه AWS به جمع زیادی از مردم سرویس میده، تخفیف‌هایی که از حجم بالا می‌گیرن، به شما منتقل میشه و این باعث میشه قیمت‌های &quot;Pay as You Go&quot; کمتر بشه.سرویس‌های ارائه شده بهتون کمک می‌کنن سریع‌تر نوآوری کنید و اپلیکیشن‌هاتون رو سریع‌تر به بازار برسونید.کشسانی یا Elasticity: یعنی ظرفیت شما دقیقا مطابق با تقاضای شما تنظیم میشه.شما فقط برای چیزی که استفاده می‌کنید هزینه می‌پردازید و نیازی به سرمایه‌گذاری‌های بزرگ برای راه‌اندازی مرکز داده شخصی ندارید.مزایای محاسبات ابریحالا بیایم مزایای اصلی cloud computing رو با هم مرور کنیم:مزیت High Availability یا دسترسی بالا: سیستم‌های با دسترسی بالا طراحی شدن که بدون مشکل و بدون قطعی برای مدت طولانی کار کنن. این سیستم‌ها با مدیریت یا کاهش خرابی‌ها از از دست رفتن سرویس جلوگیری می‌کنن.مزیت Elasticity یا کشسانی: نیازی نیست از قبل ظرفیت سرورهاتون رو مشخص کنید. می‌تونید فقط همونقدری که نیاز دارید منابع فراهم کنید و بر اساس تقاضا افزایش یا کاهش بدید.مزیت Agility یا چابکی: همه‌ی سرویس‌هایی که دارید، کمک می‌کنن سریع‌تر نوآوری کنید و سریع‌تر محصول رو به بازار برسونید.مزیت  Durability یا پایداری: این به معنای حفاظت بلندمدت از داده‌هاست. داده‌های شما بدون خراب شدن یا فساد باقی می‌مونن.مدل‌های محاسبات ابری Cloud Computing Modelsحالا نوبت به بررسی مدل‌های cloud computing می‌رسه. سه مدل اصلی داریم:مدل Infrastructure as a Service (IaaS): مثل ساختن چیزی با لگو می‌مونه. اینجا شما واحدهای زیرساختی رو اجاره می‌کنید و هر طور که دوست دارید کنار هم می‌ذارید. مثلا وقتی یه شرکت هاستینگ رو برای میزبانی سایتتون اشتراک می‌گیرید، در حال استفاده از IaaS هستید.مدل Software as a Service (SaaS): این مدل به شما اجازه میده از یک اپلیکیشن آماده استفاده کنید. مثلا ایمیل‌های شخصی که از طریق مرورگر بهشون دسترسی دارید، نمونه‌ای از SaaS هستن.مدل Platform as a Service (PaaS): این مدل به توسعه‌دهنده‌ها کمک می‌کنه که بدون نگرانی از زیرساخت، نرم‌افزارهاشون رو با استفاده از ابزارهای تحت وب توسعه بدن. مثلا ابزارهایی که به شما اجازه میدن یه فروشگاه آنلاین بسازید و روی سرورهای یه شرکت دیگه اجرا بشه، PaaS هستن.مدل‌های استقرار ابری Cloud Deployment Modelحالا بریم سراغ مدل‌های استقرار ابری:مدل Private Cloud: یعنی منابع شما مثل سرورها و دیتابیس‌ها همگی درون شبکه داخلی یا مرکز داده خصوصی خودتون هستن. این مدل امنیت بیشتری داره چون داده‌ها از فضای عمومی عبور نمی‌کنن.مدل Public Cloud: مثل AWS، Azure، و GCP. توی این مدل شما هیچ دغدغه‌ای از بابت سخت‌افزار ندارید و همه سخت‌افزارها توسط ارائه‌دهنده‌ی خدمات ابری مدیریت می‌شن.مدل Hybrid Cloud: این مدل ترکیبی از Private و Public Cloud هست. معمولاً داده‌های حساس به‌صورت محلی نگهداری می‌شن و ارتباط امنی بین Private Cloud و Public Cloud ایجاد میشه. به عنوان مثال، می‌تونید از VPN یا Direct Connect برای اتصال امن بین cloud خصوصی و عمومی استفاده کنید.بررسی Regions و  Availability Zones AWS Regionsخب، اول از همه بیایم ببینیم این «مناطق» در AWS دقیقا چی هستن. Region در AWS به معنای یک مکان فیزیکی توی جهان واقعیه. AWS مناطق خودش رو بر اساس موقعیت‌های جغرافیایی تقسیم‌بندی می‌کنه و ممکنه هر مکان جغرافیایی شامل چندین منطقه باشه. به عنوان مثال، مناطق اوهایو (Ohio) و ویرجینیای شمالی (North Virginia) هر دو زیر دسته موقعیت جغرافیایی شرق آمریکا (US East) قرار دارن.در واقع AWS چندین منطقه در سراسر جهان داره و این مناطق کاملاً مستقل و از هم جدا هستن. این یعنی اگر یه اتفاق طبیعی مثل زلزله توی یه منطقه بیفته، مناطق دیگه تحت تأثیر قرار نمی‌گیرن. نکته مهم دیگه اینکه منابع (Resources) و سرویس‌ها توی مناطق مختلف جدا از هم هستن و به طور خودکار در مناطق مختلف تکرار نمی‌شن. برای اینکه یه منبع رو توی چند منطقه داشته باشی، باید اون رو به طور دستی توی هر منطقه‌ای که می‌خوای، تکرار کنی.Availability Zonesهر منطقه AWS شامل چندین ناحیه در دسترس یا همون AZ (Availability Zone) هست. هر ناحیه در دسترس شامل یه یا چند مرکز داده (Data Center) هست که از هم جدا هستن. AWS دقیقاً نمی‌گه که هر AZ چند تا مرکز داده داره، ولی فرض کنیم که در us-east-1a چهار تا مرکز داده وجود داره، در حالی که در 1b و 1c هر کدوم سه تا و در 1d و 1e هر کدوم دو تا مرکز داده باشن.هر مرکز داده توی یه ساختمان جداگانه قرار داره و AWS ناحیه در دسترس رو به عنوان یه یا چند مرکز داده مستقل تعریف می‌کنه که از نظر منابع برق، شبکه و اتصال به طور کامل مستقل و با قابلیت پشتیبانی از همدیگه توی یه منطقه AWS قرار دارن.ویژگی‌های Availability Zonesهر ناحیه در دسترس به صورت جداگانه کار می‌کنه و هر کدوم منبع برق و شبکه خاص خودشون رو دارن.نواحی در دسترس از طریق لینک‌های با تأخیر کم به هم وصل هستن.این نواحی قابلیت تحمل خطا دارن، یعنی اگر یکی از نواحی از دسترس خارج بشه، نواحی دیگه همچنان به کار خودشون ادامه می‌دن.نواحی در دسترس به شما اجازه می‌دن تا اپلیکیشن‌هاتون با قابلیت دسترسی بالا (High Availability) اجرا بشه. برای مثال، اگر اپلیکیشنتون روی نواحی 1a، 1b و 1c در حال اجرا باشه و ناحیه 1a از کار بیفته، اپلیکیشن شما هنوز روی نواحی 1b و 1c فعال خواهد بود.یه کوئیز سریع!حالا که مطالب رو خوندیم، بیایید یه تست کوچیک بگیریم تا ببینیم چقدر خوب یاد گرفتیم. من یه سناریو می‌گم و شما سه ثانیه وقت دارین تا جواب بدین.سناریو اول: از شما خواسته شده که بررسی کنین آیا اپلیکیشنی که لانچ شده قابلیت تحمل خطا (Fault Tolerant) داره یا نه. بعد از بررسی متوجه می‌شین که اپلیکیشن فقط توی us-east-1a در حال اجراست. آیا این اپلیکیشن Fault Tolerant هست؟ پاسخ: خیر. برای اینکه یه اپلیکیشن Fault Tolerant باشه باید توی چندین ناحیه در دسترس اجرا بشه.سناریو دوم: شما اپلیکیشنی دارین که در چندین ناحیه در دسترس (AZ) در حال اجراست، ولی اپلیکیشن متوقف شده. چه دلیلی می‌تونه باعث این اتفاق شده باشه؟ پاسخ: احتمالاً کل منطقه (Region) از دسترس خارج شده. چون نواحی در دسترس در یک منطقه قرار دارن و اگر اپلیکیشن توی چند ناحیه در دسترس باشه و همه نواحی از کار بیفتن، دلیلش می‌تونه خرابی کل منطقه باشه.بررسی Edge Locations و Local Zonesاول ببینیم Latency چیه؟اول از همه، بیایم Latency رو تعریف کنیم. Latency یعنی مدت زمانی که طول می‌کشه تا یه وب‌سایت برای کاربر لود بشه. یعنی فاصله زمانی بین درخواست کاربر و دریافت پاسخ از سرور. حالا هرچی این زمان کمتر باشه (Low Latency)، یعنی وب‌سایت سریع‌تر به کاربر نمایش داده می‌شه، که خب یه چیز خیلی خوبه. برعکس، هرچی Latency بیشتر باشه، کاربران باید بیشتر صبر کنن تا وب‌سایت بارگذاری بشه و این چیز جالبی نیست.Local Zonesخب حالا بریم سراغ Local Zones. Local Zones به کار ما میان که سرویس‌های AWS مثل محاسبات (Compute)، ذخیره‌سازی (Storage)، پایگاه‌داده و سایر سرویس‌ها رو به کاربران نهایی نزدیک‌تر کنن. با این کار، ما می‌تونیم اپلیکیشن‌هایی که نیاز به تأخیر خیلی کم دارن (مثل بازی‌های آنلاین زمان واقعی) رو بهتر اجرا کنیم. همونطور که گفتیم، هرچی Latency کمتر باشه، بهتره. Local Zones یه جورایی مثل یک بخش اضافه از مناطق (Regions) AWS هستن که پهنای باند بالا و ارتباطات امنی بین منابع محلی و منابع داخل منطقه اصلی فراهم می‌کنن.Edge LocationsEdge Locations به کاهش Latency کمک می‌کنن، اما برای راه‌اندازی منابع استفاده نمی‌شن. کار اصلی‌شون اینه که محتوا رو کش (Cache) کنن تا سریع‌تر به کاربر تحویل داده بشه. Edge Locations یکی از قابلیت‌های سرویس CloudFront هستن، که در ادامه دوره و در بخش شبکه و تحویل محتوا (Content Delivery) بیشتر در موردش صحبت می‌کنیم. تعداد Edge Locations معمولاً از مناطق و نواحی در دسترس (AZs) بیشتره. این Edge Locations از شبکه اصلی AWS استفاده می‌کنن و وقتی به مبحث CloudFront رسیدیم، بیشتر در موردشون صحبت می‌کنیم.یه کوئیز سریع! بریم سراغ یه کوئیز سریع:سناریو اول: شما موظفید تأخیر کمتر از میلی‌ثانیه (Millisecond Latency) برای آخرین اپلیکیشنی که راه‌اندازی شده فراهم کنین. از چی می‌تونید برای این کار استفاده کنید؟ پاسخ: Local Zones باید استفاده بشه. این نواحی گسترشی از مناطق هستن که تأخیر کمتر از میلی‌ثانیه برای اپلیکیشن‌هایی مثل بازی‌های آنلاین زمان واقعی فراهم می‌کنن.سناریو دوم: شما باید تأخیر یه وب‌سایت رو که توی دو قاره مختلف در دسترسه، کاهش بدین. از چی می‌تونید استفاده کنید؟پاسخ: از Edge Locations استفاده کنید. به عنوان یکی از قابلیت‌های CloudFront، Edge Locations می‌تونن با کش کردن داده‌ها تأخیر رو کاهش بدن.معرفی فریم‌ورک‌ها (Frameworks)فریم‌ورک‌ها در واقع چارچوب‌هایی هستن که به ما کمک می‌کنن تا به صورت ساختاریافته و با اصول درست، از تکنولوژی‌های ابری استفاده کنیم. حالا بیاید ببینیم این فریم‌ورک‌ها دقیقاً چی هستن و چه کاربردی دارن.فریم‌ورک‌ها چه کاربردی دارند؟فریم‌ورک‌ها به شما نقشه راه و راهنمایی‌های لازم رو می‌دن تا بتونید از خدمات ابری به بهترین شکل استفاده کنید. به‌طور خاص، AWS این دو فریم‌ورک رو ارائه کرده تا به سازمان‌ها کمک کنه که به‌راحتی بتونن از تکنولوژی‌های ابری برای بهینه‌سازی عملیات و زیرساخت‌های خودشون استفاده کنن و در عین حال، خطرات و ریسک‌ها رو به حداقل برسونن.اول ببینیم Cloud Adoption Framework چیه؟در واقع Cloud Adoption Framework (CAF) به عنوان یکی از ابزارهای اصلی AWS به شما کمک می‌کنه تا سازمان خودتون رو برای پذیرش خدمات ابری آماده کنید و عملیات دیجیتالی رو با سرعت بیشتری اجرا کنید. در واقع، این فریم‌ورک به سازمان‌ها کمک می‌کنه تا از خدمات AWS برای ایجاد تحول دیجیتال و افزایش سرعت دستیابی به نتایج کسب‌و‌کار استفاده کنن.پرسپکتیوها (Perspectives) در Cloud Adoption Frameworkدر واقع Cloud Adoption Framework شش پرسپکتیو (Perspective) داره که هرکدوم یکی از جنبه‌های کلیدی تحول دیجیتال رو پوشش می‌دن. پرسپکتیوها به شما کمک می‌کنن تا بتونید همه ابعاد مهم یک پروژه تحول دیجیتال رو پوشش بدین و اطمینان پیدا کنید که از تمام منابع و قابلیت‌ها به درستی استفاده می‌شه.امنیت (Security): در این پرسپکتیو، تمرکز اصلی بر مدیریت امنیت، حاکمیت، حفاظت از داده‌ها، و مدیریت تهدیدات قرار داره. امنیت زیرساخت، مدیریت هویت و دسترسی، مدیریت واکنش به حوادث امنیتی و تشخیص تهدیدات از اجزای کلیدی این بخش هستن.کسب‌و‌کار (Business): این پرسپکتیو بر استراتژی و نتایج کسب‌وکار تمرکز داره. مدیریت پورتفولیو، نوآوری، علم داده و بینش‌های کسب‌وکار همگی در این بخش بررسی می‌شن. در اینجا به نحوه‌ی استفاده از داده‌ها برای ایجاد ارزش‌های تجاری جدید و بهینه‌سازی استراتژی‌ها پرداخته می‌شه.پلتفرم (Platform): این بخش به زیرساخت‌ها و اپلیکیشن‌ها مربوط می‌شه. معماری پلتفرم، مهندسی داده و CI/CD (ادغام و تحویل مداوم) در این بخش قرار دارن. همچنین بهینه‌سازی فرآیندهای مدرن توسعه و نحوه‌ی ارائه و اجرای اپلیکیشن‌ها رو هم شامل می‌شه.عملیات (Operations): تمرکز این پرسپکتیو بر روی موفقیت در تحویل بارکاریه. مدیریت رخدادها، مدیریت پچ‌ها و به‌روزرسانی‌ها، و همچنین مشاهده‌پذیری (Observability) که به شما کمک می‌کنه وضعیت سیستم‌ها و خدمات خودتون رو تحت نظر داشته باشید، در این قسمت پوشش داده می‌شن.حکمرانی (Governance): این پرسپکتیو روی کاهش ریسک‌های مربوط به تحولات دیجیتال و حداکثر کردن مزایای سازمانی تمرکز داره. مدیریت مالی ابری، مدیریت ریسک‌ها و مدیریت پورتفولیوی اپلیکیشن‌ها در اینجا قرار دارن.افراد (People): در اینجا، تمرکز بر روی تحول نیروی انسانی و هم‌راستا کردن اون‌ها با اهداف دیجیتالی سازمانه. مباحثی مثل آموزش و تحول نیروی کار، تغییرات فرهنگی و سازمانی هم در این بخش بررسی می‌شن.دامین Domainهای Cloud Adoption Frameworkباید بدونیم Cloud Adoption Framework چهار دامین (Domain) اصلی داره که هرکدوم بخشی از فرآیند تحول دیجیتال رو پوشش می‌دن:تکنولوژی (Technology): این دومین به مهاجرت به زیرساخت‌های ابری و مدرن‌سازی پلتفرم‌های داده مربوط می‌شه.تحول فرآیندها (Process Transformation): این دومین به بهینه‌سازی و دیجیتالی‌کردن فرآیندهای کسب‌وکار کمک می‌کنه و با استفاده از پلتفرم‌های جدید داده‌ای و تجزیه‌وتحلیل، کارایی رو افزایش می‌ده.تحول سازمانی (Organizational Transformation): این بخش به بازتعریف نحوه‌ی کار تیم‌ها و سازمان‌ها برای ایجاد ارزش‌های جدید تمرکز داره.تحول محصولات (Product Transformation): در این بخش، تمرکز اصلی بر ایجاد محصولات و خدمات جدید و مدل‌های کسب‌وکاری نوآورانه است.فازهای تحول ابری در Cloud Adoption Frameworkفریم‌ورک Cloud Adoption چهار فاز داره که هرکدوم بخشی از فرآیند تحول سازمانی رو پوشش می‌ده:تصور (Envision): تمرکز اصلی در این فاز بر اینه که نشون بدین چطور می‌شه از ابر برای تسریع نتایج کسب‌وکار استفاده کرد.هماهنگی (Align): در این فاز شکاف‌های موجود در سازمان شناسایی می‌شن و برنامه‌ریزی لازم برای رفع اون‌ها انجام می‌شه.راه‌اندازی (Launch): این فاز مربوط به پیاده‌سازی پروژه‌های اولیه و ارزیابی ارزش اون‌هاست.مقیاس‌دهی (Scale): بعد از موفقیت در فاز راه‌اندازی، در این مرحله پروژه‌ها در مقیاس بزرگ‌تر پیاده‌سازی و بهینه‌سازی می‌شن.معرفی Well-Architected Frameworkخب بریم سراغ Well-Architected Framework که این هم یکی از ابزارهای مهم AWS برای کمک به سازمان‌ها در طراحی و پیاده‌سازی سرویس‌های بهینه و امن هست. این فریم‌ورک از شش ستون (Pillar) اصلی تشکیل شده:امنیت (Security): این ستون بر محافظت از داده‌ها، سیستم‌ها و منابع شما تمرکز داره.بهینه‌سازی هزینه‌ها (Cost Optimization): مدیریت هزینه‌ها و استفاده بهینه از منابع ابری.کارایی عملکرد (Performance Efficiency): استفاده بهینه از منابع برای پاسخگویی به نیازها و کارایی سیستم‌ها.برتری عملیاتی (Operational Excellence): ایجاد فرآیندهای عملیاتی که باعث بهبود مدیریت بار کاری و خدمات می‌شن.قابلیت اطمینان (Reliability): طراحی سیستم‌ها و خدمات به‌گونه‌ای که در صورت بروز مشکل، به سرعت بازیابی بشن و از کار نیفتن.پایداری (Sustainability): این ستون بر کاهش اثرات زیست‌محیطی و بهینه‌سازی مصرف انرژی متمرکزه.این ستون‌ها به شما کمک می‌کنن تا بتونید سرویس‌ها و سیستم‌های ابری خودتون رو بهینه و با اطمینان بیشتری پیاده‌سازی کنید.آشنایی با کنسول مدیریت AWS و دسترسی به AWSکنسول مدیریت AWS این هم کنسول مدیریت AWS. این کنسول، محبوب‌ترین راه برای کار با منابع AWS هست. این کنسول از طریق مرورگر شما قابل دسترسیه و بهتون اجازه می‌ده تا به حساب کاربری و منابع AWS خودتون دسترسی پیدا کنید. بهترین نکته درباره کنسول اینه که رابط کاربری خیلی راحت و کاربرپسندی داره و جستجو و پیدا کردن سرویس‌ها رو ساده می‌کنه. این موضوع مخصوصاً برای افرادی که تازه وارد دنیای ابری شدن یا در نقش‌های غیر فنی مثل مدیر پروژه کار می‌کنن، خیلی خوبه.البته اگر شما تو نقش‌های فنی مثل مهندس یا توسعه‌دهنده هستید، از کنسول می‌تونید برای ایجاد، تغییر یا حذف منابع استفاده کنید. حالا بیاید درباره کاربر root صحبت کنیم.کاربر Rootحالا توی هر حساب AWS، چندین کاربر می‌تونن باشن، ولی یکی از این کاربران همه چیز رو تحت کنترل داره و اون هم root user هست. این کاربر زمانی ایجاد می‌شه که حساب AWS رو ایجاد می‌کنید و تنها کاربریه که می‌تونه به طور کامل حساب کاربری و همه منابع داخل اون حساب رو حذف کنه. پس حفاظت از این کاربر خیلی مهمه و باید مطمئن باشید که از اون برای کارهای روزمره استفاده نمی‌کنید.اولین کاری که بعد از ایجاد حساب AWS باید انجام بدید اینه که برای کاربر root احراز هویت چند عاملی (MFA) رو فعال کنید و سپس یک کاربر جدید یا گروه برای انجام کارهای روزمره در سرویس IAM (مدیریت هویت و دسترسی) ایجاد کنید.دسترسی به AWS از طریق روش های دیگهبیاید به راه‌های دیگه‌ای که می‌تونید به حساب AWS خودتون دسترسی پیدا کنید نگاه کنیم. اول با CLI یا رابط خط فرمان شروع می‌کنیم. CLI بهتون اجازه می‌ده تا از طریق ترمینال یا پنجره دستورات، به منابع حساب خودتون دسترسی پیدا کنید. تفاوت بین CLI و کنسول مدیریت اینه که CLI بیشتر توسط توسعه‌دهندگان و مهندسان استفاده می‌شه چون با استفاده از دستورات API از طریق ترمینال کار می‌کنن.یک نکته جالب: بعضی وقت‌ها قابلیت‌های جدید اول توی CLI عرضه می‌شن قبل از اینکه توی کنسول مدیریت در دسترس قرار بگیرن! ولی به طور کلی، اکثر کارهایی که توی کنسول می‌تونید انجام بدید، با CLI هم قابل انجام هست. CLI به شما دسترسی برنامه‌نویسی (Programmatic Access) می‌ده. یعنی از طریق یک ابزار یا اپلیکیشن مثل CLI می‌تونید به منابع AWS دسترسی پیدا کنید.&gt; aws ec2 describe-instances --filters &amp;quotName=instance-type,Values=t2.micro&amp;quot
&gt; i-012e4561
&gt; i-012e345n

&gt; echo &#039;This is an example of a command that lists all of your t2.micro instances.&#039;
&gt; This is an example of a command that lists all of your t2.micro instances.دسترسی Programmatic Accessمحیط CLI از یک terminal session برای Programmatic Access استفاده می‌کنه. راه‌های دیگه برای Programmatic Access شامل استفاده از کد برنامه‌نویسی و SDKها (کیت‌های توسعه نرم‌افزار) هست. SDKها می‌تونن با استفاده از زبان‌های برنامه‌نویسی مثل Java، Python، C# و غیره به منابع دسترسی داشته باشن.کوئیز سریعحالا بریم سراغ یک سوال سریع. فرض کنید حساب AWS شما هفته گذشته ایجاد شده و شما وارد حساب شدید تا منابعی ایجاد کنید. آیا باید با root user وارد بشید؟اگر جواب دادید که نباید از root user استفاده کنید، درست گفتید! یادتون باشه که وقتی حساب AWS رو ایجاد می‌کنید، اولین قدم‌هاتون باید فعال‌سازی MFA برای root user و ایجاد یک کاربر یا گروه روزمره باشه.بررسی حساب AWS و مدیریت آنخب، دوستان، متأسفانه به خاطر تحریم‌ها ما در ایران نمی‌تونیم به صورت مستقیم حساب AWS بسازیم. اما نگران نباشید! من اینجا با دسترسی‌هایی که دارم، تمام مراحل ایجاد حساب رو براتون توضیح می‌دم تا درک کاملی از فرآیند داشته باشین.سناریو: ایجاد حساب AWSفرض کنید شما مأموریت دارین یک حساب AWS جدید ایجاد کنید. اولین کار اینه که کاربر root رو ایمن کنید و سپس یک کاربر روزمره بسازید تا تیم شما بتونه از اون استفاده کنه.برای انجام این کار، لازمه که حساب AWS خودتون رو ایجاد کنید. البته این کار در محیط آموزشی (sandbox) ما انجام نمی‌شه، بلکه شما باید خودتون این حساب رو بسازید.خب، بیاید حساب AWS خودمون رو بسازیم. لینک صفحه ساخت حساب در منابع قرار داره. به گوشه بالا سمت راست صفحه می‌ریم و روی &quot;Create an AWS Account&quot; کلیک می‌کنیم. بعد باید ایمیل root user و نام حساب کاربری خودمون رو وارد کنیم و ایمیل رو تأیید کنیم.بعد از تأیید ایمیل، لازمه که یک رمز عبور انتخاب کنیم. فرم‌ها رو کامل می‌کنیم و ادامه می‌دیم.اطلاعات صورتحساب و هویتدر مرحله بعد، اطلاعات کارت بانکی رو برای صورتحساب وارد می‌کنیم. سپس باید شماره موبایل خودمون رو برای تأیید هویت وارد کنیم. بعد از اینکه کد تأیید رو دریافت کردیم، وارد می‌کنیم و ادامه می‌دیم.حالا باید طرح پشتیبانی خودم ون رو انتخاب کنیم. برای این درس، من طرح پشتیبانی رایگان رو انتخاب می‌کنم. بعد از تکمیل مراحل، حساب ما ایجاد شده و می‌تونیم وارد کنسول مدیریت AWS بشیم.اولین ورود به AWSاولین باری که وارد حساب AWS می‌شیم، باید با کاربر root وارد بشیم. ایمیل و رمز عبورمون رو وارد می‌کنیم و وارد حساب می‌شیم.ایمن‌سازی کاربر rootحالا اولین قدم، ایمن‌سازی کاربر root هست. برای این کار، وارد بخش IAM یا مدیریت هویت و دسترسی می‌شیم. در بالای صفحه می‌بینیم که AWS پیشنهاد می‌کنه که MFA (احراز هویت چند عاملی) رو فعال کنیم. روی &quot;Add MFA&quot; کلیک می‌کنیم.استفاده از 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قسمت 6: تکنولوژی‌ها و سرویس‌های توسعه، پیام‌رسانی، و دیپلویمنتقسمت هفتم:‌ تکنولوژی و سرویس‌های migration و انتقال دادهو در آخر این آدرس لینکدین و توئیتر من هست خوشحال میشم در ارتباط باشیم.🪩 Follow Linkedin Hossein Jafari🪩🕊 Twitter 🕊</description>
                <category>حسین جعفری</category>
                <author>حسین جعفری</author>
                <pubDate>Mon, 14 Oct 2024 18:02:45 +0330</pubDate>
            </item>
                    <item>
                <title>قسمت سوم: شروع کار با فایل inventory در Ansible</title>
                <link>https://virgool.io/@h0x3ein/%D9%82%D8%B3%D9%85%D8%AA-%D8%B3%D9%88%D9%85-%D8%B4%D8%B1%D9%88%D8%B9-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D9%81%D8%A7%DB%8C%D9%84-inventory-%D8%AF%D8%B1-ansible-myurz4gayysg</link>
                <description>قسمت اول: انسیبل چیست ؟ نصب و راه انداری انسیبل (ansible)قسمت دوم:‌ مدیریت سرورها با دستورات Ad-Hoc Ansibleقسمت سوم: شروع کار با فایل inventory در Ansibleخب، قضیه از این قراره که شرکت تصمیم گرفته پول اضافی برای تمدید مجوز نرم‌افزار پشتیبان‌گیری نده و گفته این هزینه غیرضروریه. نتیجه؟ مجوز تمدید نشده! حالا مدیرت اومده و برای اینکه پشتیبان‌گیری رو از دست ندیم، یه اسکریپت ساده و یه playbook تو Ansible نوشته که از فایل‌های مهممون پشتیبان بگیره، اون هم براساس گروه‌های از قبل تعریف‌شده.اینجا شما وارد میشی! کارت اینه که فایل inventory رو آماده کنی تا این راهکار موقتی بتونه درست کار کنه و استراتژی پشتیبان‌گیری تکمیل بشه. بدون این فایل، کل ماجرا رو هوا می‌مونهپیش نیاز هاقبل از اینکه بخواید عملیات پشتیبان‌گیری رو شروع کنید، باید چند تا کار مهم رو انجام بدین تا مطمئن بشید همه چیز به‌درستی آماده است. این موارد توی بخش‌های قبلی توضیح داده شدن، اما برای خلاصه اینجا بهشون اشاره می‌کنم:نصب Ansible روی نود کنترل: باید مطمئن بشید که Ansible روی سیستمی که قراره به‌عنوان نود کنترل استفاده کنید، نصب شده. اگر هنوز نصب نکردید، می‌تونید دستورالعمل نصب Ansible رو در بخش قبلی ببینید.ایجاد کاربر ansible روی همه سرورهای مدیریت‌شده: برای اینکه Ansible بتونه بدون مشکل به سرورها دسترسی داشته باشه، باید کاربر ansible رو روی همه سرورها بسازید و کلید SSH این کاربر رو از نود کنترل به سرورهای مقصد منتقل کنید. جزئیات این کار رو قبلاً توضیح دادیم. (این قسمت اجباری نیست و میشه گفت best practice هست)تنظیم یکسان رمز عبور برای کاربر ansible: حتماً بررسی کنید که رمز عبور کاربر ansible روی تمام سرورها یکسان باشه تا در صورت نیاز به ورود مستقیم مشکلی پیش نیاد. در بخش قبل نحوه تغییر رمز عبور رو توضیح دادیم.پیکربندی فایل etc/hosts/: برای اینکه بتونید به‌راحتی به سرورهای مدیریت‌شده وصل بشید، باید فایل etc/hosts/ رو روی نود کنترل پیکربندی کنید و نام‌های سرورها و آدرس‌های IP رو به اون اضافه کنید. این کار قبلاً توی بخش مربوطه توضیح داده شده.[root@control1 ansible]# cat /etc/hosts
10.0.1.133 node1 web1 media1
10.0.1.181 node2 web2 media2با انجام این مراحل، مطمئن می‌شید که همه چیز برای اجرای playbook‌های Ansible و انجام پشتیبان‌گیری آماده است. حالا می‌تونید ادامه بدید و عملیات پشتیبان‌گیری رو به‌راحتی شروع کنید.۱. ایجاد فایل موجودیابتدا باید فایلی به نام inventory ایجاد کنیم که شامل لیستی از هاست‌ها (سرورها) باشد. این فایل لیستی از سرورهای مختلف مثل &quot;media&quot; و &quot;webservers&quot; را مدیریت می‌کند. سرورهایی مانند media1 و media2 در گروه media و سرورهای web1 و web2 در گروه webservers قرار می‌گیرند. در ادامه، این موجودی به ما امکان می‌دهد تا دستورات و اسکریپت‌های خاصی را روی هر گروه از سرورها اجرا کنیم.قدم اول: ایجاد فایل موجودیابتدا با دستور زیر فایل را ایجاد کنید:touch /home/ansible/inventory
vim /home/ansible/inventoryسپس، در این فایل، سرورها را به این شکل وارد کنید:[media]
media1
media2

[webservers]
web1
web2۲. تعریف متغیرها برای گروه‌های سرورهاانسیبل Ansible به ما این قابلیت رو میده که برای هر گروه از سرورهایی که تعریف می‌کنیم، متغیرهای اختصاصی یا group_vars تعریف کنیم. این متغیرها به Ansible کمک می‌کنن تا بدونه هر گروه از سرورها چه تنظیمات خاصی دارن یا چه مسیری‌هایی برای اجرای دستورات باید استفاده بشه.به عنوان مثال، ممکنه شما گروه‌های مختلفی از سرورها داشته باشین، مثل سرورهای وب (web servers) و سرورهای دیتابیس (database servers). هر کدوم از این گروه‌ها نیاز به تنظیمات یا مسیرهای خاصی دارن. برای اینکه این تنظیمات به‌صورت خودکار اعمال بشن و نیاز نباشه در هر playbook جداگانه دوباره تعریفشون کنیم، از group_vars استفاده می‌کنیم.فقط باید بدونی که این فایل باید دقیقا جایی باشه که فایل inventory هستتنظیم متغیرهای گروه &quot;media&quot;ابتدا یک دایرکتوری برای متغیرها ایجاد کنید:mkdir /home/ansible/group_vars
cd /home/ansible/group_vars/
touch mediaسپس در فایل media این متغیرها را وارد کنید:media_content: /tmp/var/media/content/
media_index: /tmp/opt/media/mediaIndexتنظیم متغیرهای گروه &quot;webservers&quot;همین کار را برای سرورهای وب انجام دهید:touch webservers
vim webserversو متغیرهای مربوط به سرورهای وب را وارد کنید:httpd_webroot: /var/www/
httpd_config: /etc/httpd/۳. تعریف متغیرهای خاص برای سرورهاممکنه بعضی از سرورها نیاز به تنظیمات خاص و متفاوتی داشته باشن که برای سایر سرورها در همون گروه اعمال نمی‌شه. در این حالت، host_vars وارد عمل میشه. host_vars به شما این امکان رو میده که متغیرهای خاصی رو برای یک سرور خاص (host) تعریف کنید، به‌جای اینکه اون متغیرها رو به کل گروه اختصاص بدید. تنظیم متغیر برای سرور web1ابتدا دایرکتوری host_vars را برای متغیرهای اختصاصی سرورها ایجاد کنید:mkdir /home/ansible/host_vars
cd host_vars/
touch web1سپس در فایل web1، متغیرهای زیر را وارد کنید:script_files: /tmp//usr/local/scripts۴. بررسی اتصال به سرورهابرای اینکه مطمئن بشیم که می‌تونیم از طریق Ansible به سرورهای مدیریت‌شده متصل بشیم، از ماژول ping استفاده می‌کنیم. این ماژول به ما نشون میده که آیا Ansible قادره به سرورهای مشخص‌شده در فایل inventory دسترسی داشته باشه یا نه5. بررسی فایل بکاپ فایل زیر که توی این لینک گیت هاب هم در دسترس هست برای بکاپ گیری تهیه شده. این فایل playbook مربوط به پشتیبان‌گیری از فایل‌های مهم سرورهای ماست که با استفاده از Ansible نوشته شده. توی این فایل، از متغیرهای خاص سرورها (host_vars) و گروه‌های سرورها (group_vars) استفاده کردیم تا هر گروه از سرورها بر اساس نیازهای خاص خودشون فایل‌های مهم رو به درستی پشتیبان‌گیری کنن.---
- hosts: all
  become: yes
  tasks:
    - name: create backup directories
      file:
        path: /mnt/backup_vol/{{ ansible_hostname }}
        state: directory
      tags:
        - hostvar
        - webservervars
        - mediavars
- hosts: web1
  become: yes
  tasks:
    - name: backup scripts
      archive:
        dest: /mnt/backup_vol/{{ ansible_hostname }}/scripts.tgz
        path: &amp;quot{{ script_files }}&amp;quot
      tags: hostvar
- hosts: webservers
  become: yes
  tasks:
    - name: backup httpd configs
      archive:
        dest: /mnt/backup_vol/{{ ansible_hostname }}/httpd_configs.tgz
        path: &amp;quot{{ httpd_config }}&amp;quot
      tags: webservervars
    - name: backup webroot
      archive:
        dest: /mnt/backup_vol/{{ ansible_hostname }}/httpd_webroot.tgz
        path: &amp;quot{{ httpd_webroot }}&amp;quot
      tags: webservervars
- hosts: media
  become: yes
  tasks:
    - name: backup media content
      archive:
        dest: /mnt/backup_vol/{{ ansible_hostname }}/media_content.tgz
        path: &amp;quot{{ media_content }}&amp;quot
      tags: mediavars
    - name: backup media index
      archive:
        dest: /mnt/backup_vol/{{ ansible_hostname }}/media_index.tgz
        path: &amp;quot{{ media_index }}&amp;quot
      tags: mediavarsتوضیح اجزای playbook:ایجاد دایرکتوری‌های بکاپدر ابتدای playbook، برای همه سرورها (با استفاده از hosts: all) دایرکتوری‌های پشتیبان‌گیری در مسیر /mnt/backup_vol/{{ ansible_hostname }} ایجاد میشه. این دایرکتوری‌ها بر اساس نام هر سرور ایجاد میشن و فایل‌های پشتیبان هر سرور توی دایرکتوری خودش ذخیره میشه.پشتیبان‌گیری از اسکریپت‌ها روی سرور web1برای سرور web1 به‌طور خاص، یک تسک برای آرشیو کردن و پشتیبان‌گیری از اسکریپت‌ها در مسیر /mnt/backup_vol/{{ ansible_hostname }}/scripts.tgz وجود داره. این تسک از متغیر script_files برای تعیین مسیر اسکریپت‌ها استفاده می‌کنه که احتمالاً توی فایل host_vars/web1.yml تعریف شده.پشتیبان‌گیری از تنظیمات و محتوای وب سرورهابرای گروه webservers، دو تسک تعریف شده:تسک اول پشتیبان‌گیری از تنظیمات httpd (تنظیمات سرور وب) رو توی فایل httpd_configs.tgz ذخیره می‌کنه.تسک دوم پشتیبان‌گیری از محتوای وب (وب‌روت) رو در فایل httpd_webroot.tgz ذخیره می‌کنه.مسیرهایی که باید پشتیبان‌گیری بشن، از طریق متغیرهای httpd_config و httpd_webroot تعیین میشن که احتمالاً توی فایل group_vars/webservers.yml تعریف شدن.پشتیبان‌گیری از محتوای مدیا سرورهابرای گروه media، دو تسک وجود داره:پشتیبان‌گیری از محتوای مدیا (فایل‌ها) و ذخیره اون‌ها در فایل media_content.tgz.پشتیبان‌گیری از ایندکس مدیا و ذخیره اون در فایل media_index.tgz.مسیرهای این فایل‌ها از طریق متغیرهای media_content و media_index که در فایل group_vars/media.yml تعریف شدن، تنظیم میشن.این playbook یک راهکار ساده و مؤثر برای پشتیبان‌گیری از فایل‌های کلیدی سرورها با توجه به نوع سرور و نقش اون‌ها در سیستم ارائه میده. هر گروه از سرورها متغیرهای خاص خودش رو داره و پشتیبان‌گیری‌ها بر اساس این متغیرها انجام میشه.6. اجزای نهایی بکاپ از سرور ها حالا که فایل پشتیبان‌گیری رو تنظیم کردیم، وقتشه که مطمئن بشیم همه چیز درست کار می‌کنه. برای این کار، یک اسکریپت به نام backup.sh داریم که با استفاده از اون می‌تونیم عملیات پشتیبان‌گیری رو اجرا و تست کنیم. این اسکریپت براساس تگ‌هایی که برای هر گروه سرور در playbook تعریف کردیم، به ما اجازه میده پشتیبان‌گیری رو به‌صورت دقیق اجرا کنیم.#!/bin/sh

# Need to take a tag varialbe
# mediavars to test media
# webservervars to test webservers
# hostvar to test host var
# use playbook tags maybe?
case &amp;quot$1&amp;quot in
  mediavars)
    ansible-playbook -i /home/ansible/inventory /home/ansible/scripts/backup.yml --tags
&amp;quotmediavars&amp;quot
    exit $?
    ;;
  webservervars)
    ansible-playbook -i /home/ansible/inventory /home/ansible/scripts/backup.yml --tags
&amp;quotwebservervars&amp;quot
    exit $?
    ;;
  hostvar)
    ansible-playbook -i /home/ansible/inventory /home/ansible/scripts/backup.yml --tags
&amp;quothostvar&amp;quot
    exit $?
    ;;
  *)
    ansible-playbook -i /home/ansible/inventory /home/ansible/scripts/backup.yml
    exit $?
esac
ساختار اسکریپت backup.sh:این اسکریپت به‌صورت زیر کار می‌کنه:با توجه به آرگومنتی که به اسکریپت پاس می‌دیم، مشخص میشه که کدوم دسته از سرورها (مثل سرورهای وب یا سرورهای مدیا) باید پشتیبان‌گیری بشن.از ansible-playbook برای اجرای playbook پشتیبان‌گیری استفاده میشه و تگ‌ها مشخص می‌کنن که کدوم بخش‌ها اجرا بشن.نحوه استفاده از اسکریپت:برای اجرای پشتیبان‌گیری برای گروه‌های مختلف، می‌تونید یکی از آرگومنت‌های زیر رو به اسکریپت پاس بدید:پشتیبان‌گیری از سرورهای مدیا:/home/ansible/scripts/backup.sh mediavarsاین دستور فقط تسک‌های مرتبط با پشتیبان‌گیری سرورهای مدیا رو اجرا می‌کنه.پشتیبان‌گیری از سرورهای وب:/home/ansible/scripts/backup.sh webservervarsاین دستور پشتیبان‌گیری مربوط به سرورهای وب رو اجرا می‌کنه، شامل پشتیبان‌گیری از پیکربندی‌های httpd و محتوای وب‌روت.پشتیبان‌گیری برای یک سرور خاص (host-specific):/home/ansible/scripts/backup.sh hostvarاین دستور مخصوص پشتیبان‌گیری از سرورهایی هست که متغیرهای خاصی دارن، مثل web1 که ممکنه مسیر اسکریپت‌ها متفاوت باشه.اجرای پشتیبان‌گیری کامل: اگر هیچ آرگومنتی به اسکریپت ندید، کل playbook پشتیبان‌گیری برای همه سرورها اجرا میشه:/home/ansible/scripts/backup.shنتیجه اجرا:اگر همه چیز درست باشه و موجودی (inventory) و فایل‌های متغیرها به‌درستی تنظیم شده باشن، اسکریپت بدون هیچ خطایی اجرا میشه و پشتیبان‌گیری به‌صورت کامل انجام میشه. در این صورت، می‌تونید مطمئن باشید که عملیات پشتیبان‌گیری به درستی پیاده‌سازی شده و داده‌های مهم سرورهای شما به‌طور ایمن ذخیره شدن.با این روش، شما یک راهکار اتوماتیک و مطمئن برای پشتیبان‌گیری از سرورهای خودتون دارید.حالا باید اطمینان حاصل کنیم که همه چیز درست کار می‌کند. برای این کار می‌توانیم اسکریپت بکاپ را اجرا کنیم تا مطمئن شویم که موجودی به درستی تنظیم شده است./home/ansible/scripts/backup.shاگر همه چیز درست باشد، اسکریپت بدون هیچ خطایی اجرا می‌شود و به این ترتیب، وظیفه شما به خوبی انجام شده است.نتیجه‌گیریتبریک! شما inventory انسیبل  رو به درستی تنظیم کردید و توانستید بکاپ‌گیری از سرورها را به درستی انجام دهید. این کار، ساده‌ترین روش برای مدیریت سرورها با استفاده از Ansible است که می‌تواند در سناریوهای مختلف بسیار مفید باشد.و در آخر این آدرس لینکدین و توئیتر من هست خوشحال میشم در ارتباط باشیم.🪩 Follow Linkedin Hossein Jafari🪩🕊 Twitter 🕊</description>
                <category>حسین جعفری</category>
                <author>حسین جعفری</author>
                <pubDate>Sun, 29 Sep 2024 17:54:09 +0330</pubDate>
            </item>
                    <item>
                <title>قسمت دوم: مدیریت سرورها با دستورات Ad-Hoc Ansible</title>
                <link>https://virgool.io/@h0x3ein/%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D8%B3%D8%B1%D9%88%D8%B1%D9%87%D8%A7-%D8%A8%D8%A7-%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%D8%A7%D8%AA-ad-hoc-ansible-%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-ufsfz82yqoxh</link>
                <description>قسمت اول: انسیبل چیست ؟ نصب و راه انداری انسیبل (ansible)قسمت دوم:‌ مدیریت سرورها با دستورات Ad-Hoc Ansibleقسمت سوم: شروع کار با فایل inventory در Ansibleمقدمهتصور کن مدیریت بهت یه وظیفه داده که باید برای گروهی از مشاوران امنیتی، دسترسی SSH و حساب‌های کاربری ایجاد کنی. همچنین سرویس بررسی‌های امنیتی باید روی همه سیستم‌ها فعال بشه. اینجا قراره با کمک دستورات Ad-Hoc Ansible این کارها رو انجام بدیم.دستورات Ad-Hoc در Ansible‏کامند Ad-Hoc به معنی دستورات سریع و فوری هستند که بدون نیاز به نوشتن playbook، کارهای مدیریت سرورها رو میتونیم باهاش انجام بدیم. فرض کن می‌خوای سریعاً ی سرویس رو رو چند سرور چک یا نصب کنی، دستورات Ad-Hoc بهترین گزینه برای این کارها هستند. این دستورات برای وظایف ساده مانند اضافه کردن کاربران، تغییر مجوز فایل‌ها، نصب پکیج‌ها و اجرای سریع تغییرات روی تعداد زیادی سرور استفاده می‌شوند.برای مثال، این دستور Ad-Hoc کاربر جدیدی به نام admin را روی همه سرورهای گروه web ایجاد می‌کند:ansible web -m user -a &amp;quotname=admin state=present&amp;quotکامند  Playbook در Ansibleاما وقتی کارهای پیچیده‌تری داریم یا نیاز به اجرای چندین دستور پشت سر هم داریم، نوشتن یک Playbook منطقی‌تر است. Playbook به نوعی یک &quot;برنامه&quot; در انسیبل است که شامل چندین وظیفه (task) است که به ترتیب اجرا می‌شوند. Playbook ها را می‌توان برای اجرای فرآیندهای پیچیده‌تر استفاده کرد.یک مثال ساده از یک Playbook برای نصب httpd روی گروهی از سرورها:---
- hosts: web
  become: yes
  tasks:
    - name: install httpd
      yum:
        name: httpd
        state: present
    - name: enable and restart httpd
      service:
        name: httpd
        state: started
        enabled: yesتو این Playbook ابتدا پکیج httpd نصب میشه و سپس سرویسش راه‌اندازی و فعال می‌شود.تفاوت بین دستورات Ad-Hoc و Playbook‌هاکامند ‏Ad-Hoc برای دستورات سریع و فوری استفاده می‌شود، مانند نصب یک پکیج روی چند سرور.‏کامند Playbook زمانی کاربرد دارد که کارهای پیچیده‌تر و با ترتیب مشخص انجام شود.در نتیجه، هر دو روش ابزارهای قدرتمندی هستند که با توجه به نیازهای مختلف میتونیم از آن‌ها استفاده کرد.سناریوخب تو این قسمت سراغ دستورات ad-hoc command میریم . تو این سناریو مدیریت ازت خواسته:ایجاد کاربران مشاور و ناظر: باید کاربرهای جدیدی به اسم consultant و supervisor رو روی سرور ایجاد کنیمقرار دادن کلید‌های SSH: کلیدهای عمومی باید توی مسیر /home/$USER/.ssh/authorized_keys قرار بگیرن.فعال‌سازی سرویس auditd: این سرویس که برای بررسی‌های امنیتی استفاده میشه، باید روی همه سرورها فعال بشه.پیش نیاز ها سرور برای اجرای دستورات و ایجاد کاربر با دسترسی sudo تا امکان اجرای دستورات رو داشته باشه تو این سناریو من یوزر  ansiuble رو ساختمقدم به قدم اجرا با Ansible1. قدم اول ساخت فایل inventory و بررسی ارتباط با سرور از طریق ماژول pingبرای بررسی ارتباط هم از دستور زیر استفاده میکنیم. ansible -m ping all -i inventory/hostsخب تا اینجا ما امکان ارسال دستورات به سرور رو داریم و میریم قدم بعدی‏‏2. ایجاد حساب‌های کاربریتوی قدم اول باید کاربر consultant و supervisor رو روی سرور ایجاد کنیم. که میتونیم با دستورات زیر این کار رو انجام بدیم.ansible dbservers -b -m user -a &amp;quotname=consultant&amp;quot -i inventory/hosts.yml
ansible dbservers -b -m user -a &amp;quotname=supervisor&amp;quot -i inventory/hosts.ymlاین دستورات با استفاده از ماژولuser کاربرهای جدید رو روی سرورهای dbservers می‌سازن.ساخت یوزر consultantساخت کاربر supervisor‏3. ساخت و قراردادن کلید‌های SSHبا دستورات زیر کلید برای هر کاربر ایجاد میکنیم ssh-keygen -t rsa -b 2048 -f keys/consultant/id_rsa -N &#039;&#039;
ssh-keygen -t rsa -b 2048 -f keys/supervisor/id_rsa -N &#039;&#039;حالا باید دایرکتوری SSH برای کاربران ایجاد بشه و کلید‌های عمومی اون‌ها کپی بشه. دستورات زیر به ترتیب این کارها رو انجام میده. خب توی قدم بعدی باید بیایم و توی مسیر مناسب برای هر یوزر public key هر کاربری رو کپی کنیم. ansible dbservers -b -m file -a &amp;quotpath=/home/consultant/.ssh state=directory mode=0700 owner=consultant group=consultant&amp;quot -i inventory/hosts.yml
ansible dbservers -b -m file -a &amp;quotpath=/home/supervisor/.ssh state=directory mode=0700 owner=supervisor group=supervisor&amp;quot -i inventory/hosts.ymlقدم بعدی قایل ها رو کپی میکنیم.ansible dbservers -b -m copy -a &amp;quotsrc=./keys/consultant/id_rsa.pub dest=/home/consultant/.ssh/authorized_keys mode=0600 owner=consultant group=consultant&amp;quot -i inventory/hosts.yml

ansible dbservers -b -m copy -a &amp;quotsrc=./keys/supervisor/id_rsa.pub dest=/home/supervisor/.ssh/authorized_keys mode=0600 owner=supervisor group=supervisor&amp;quot -i inventory/hosts.ymlالان میتونیم با دستور زیر بررسی کنیم آیا میتونیم بدون رمز عبور ssh بزنیم یا نه ssh consultant@db1 -i keys/consultant/id_rsa
این دستورات اطمینان حاصل می‌کنن که کلید‌های عمومی برای هر کاربر در جای مناسب قرار بگیرن.‏‏4. فعال‌سازی سرویس auditdباید مطمئن بشیم که سرویس auditd روی همه سیستم‌ها نصب و فعال و در حال اجراست:ansible all -b -m apt -a &amp;quotname=auditd state=present update_cache=yes&amp;quot -i inventory/hosts.yml
ansible all -b -m service -a &amp;quotname=auditd state=started enabled=yes&amp;quot -i inventory/hosts.ymlاین دستور با استفاده از ماژول service، سرویس auditd رو روی همه سرورها فعال می‌کنه.نتیجه‌گیریتمام دستورات با موفقیت اجرا شدن و حالا حساب‌های کاربری مشاوران ایجاد شدن، کلیدهای SSH به درستی در محل قرار گرفتن و سرویس‌های امنیتی هم روی همه سرورها فعال هستن. این روش کار با Ansible بهت اجازه می‌ده خیلی سریع و ساده مدیریت سیستم‌های سروریت رو انجام بدی!و در آخر این آدرس لینکدین و توئیتر من هست خوشحال میشم در ارتباط باشیم.🪩 Follow Linkedin Hossein Jafari🪩🕊 Twitter 🕊</description>
                <category>حسین جعفری</category>
                <author>حسین جعفری</author>
                <pubDate>Sat, 14 Sep 2024 15:17:31 +0330</pubDate>
            </item>
                    <item>
                <title>قسمت اول: انسیبل چیست ؟ نصب و راه انداری انسیبل (ansible)</title>
                <link>https://virgool.io/@h0x3ein/%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-%D9%86%D8%B5%D8%A8-%D9%88-%D8%B1%D8%A7%D9%87-%D8%A7%D9%86%D8%AF%D8%A7%D8%B1%DB%8C-%D8%A7%D9%86%D8%B3%DB%8C%D8%A8%D9%84-ansible-okokqdslmxtl</link>
                <description>قسمت اول: انسیبل چیست ؟ نصب و راه انداری انسیبل (ansible)قسمت دوم:‌ مدیریت سرورها با دستورات Ad-Hoc Ansibleقسمت سوم: شروع کار با فایل inventory در Ansibleمقدمهانسیبل یه ابزار فوق‌العاده خفن هست که به نظرم بسته به نیاز شما میتونه شما رو از انجام کارهای تکراری نجات بده. ansible به شما این امکان رو میده تا مدیریت و پیکربندی سرورهای راه دور را به راحتی و بدون دردسر انجام بدین حتی اگه نیازه یه سری کارها رو روی سیستم خودتون (localhost) هم انجام بدین میتونین از انسیبل استفاده کنین. فرقی هم نداره میخوای نرم‌افزار نصب کنی، سرور جدید راه‌اندازی کنی، یا تنظیمات سرور هات رو مدیریت کنی؛ Ansible این کارها رو ساده و کارآمد می‌کنه. میدونم مقاله و داکیومنت های زیادی برای این ابزار نوشته شده اما تصمیم گرفتم توی یه سری قسمت به صورت سناریو محور انسیبل رو تا حدود خوبی باهم یاد بگیریم. سوال اصلی:‌ چرا باید از Ansible استفاده کنیم؟فرض کن شما توی یه تیمی هستی که باید روی 100 تا سرور ۵ تا ابزار مختلف رو نصب کنی، تصمیمت چیه؟ چیکار میکنی؟ راه اول اینه دونه به دونه وصل بشی به سرور ها و تک تک ابزار ها رو نصب کنی که میدونی چه زمانی ازت گرفته میشه و راه حل دومی که میتونه تورو نجات بده چیه؟ انسیبل دوست داشتنی :دی. یه نمای کلی از کارهایی که قرار انجام بدیم نمای کلی سناریوکارهایی که قرار انجام بدیم توی این مقاله قصد داریم کارهای زیر رو باهم انجام بدیم و در ادامه هم قدم به قدم کارهایی که میخوایم بکنیم رو پیشرفته‌تر میکنیم.نصب و راه اندازی Ansible را روی هاست کنترل (جایی که دستورات رو مینویسم که روی سرور هامون اجرا بشه) یک یوزر به اسم «ansible» روی هاست کنترل و سروری که قراره ابزار ها رو روش نصب کنیم میسازیم و  یه رمز عبور بهش میدیم و یادمون هم میمونه چون بعدا کارش داریم. (توی ادامه مقاله بهش میگیم worksation) یه کلید ssh برای یوزر ansible روی هاست کنترل میسازیم و کلید عمومی رو کپی میکنیم روی سرور workstation تا بتونیم بدون رمز به سرور workstation وصل بشیم.یوزر Ansible رو روی سرور workstation کانفیگ میکنیم تا یوزر Ansible بدون رمز عبور sudo کند.یک فایل inventory توی این مسیر «home/ansible/inventory» میسازیم.‍‍ فایلی هست که لیست سرور هامون رو لیست میکنیم اینجا.در آخرم یه playbook انسیبل توی مسیر «home/ansible/git-setup.yml» مینویسیم تا ابزار گیت رو توی لیست سرور هایی که توی فایل inventory نوشتیم نصب کنه (تو این سناریو فقط یه سرور داریم)پیش نیاز ها: قبل از شروع، باید حداقل ۲ تا سرور داشته باشیم:اولی Control Host:‌ جایی هست که Ansible نصب می شه و از اونجا سرورهای دیگه را مدیریت میکنیم. (سیستم خودمون هم میشه نیاز نیست حتما یه سرور دیگه باشه)دومی Workstation Host: سرور راه دوری که میخوایم از طریق انسیبل ابزار های مختلفی روش نصب کنیم (تو این سناریو قصد داریم ابزار git رو فقط نصب کنیم).باید از طریق سرور control host به سرور Workstation بتونیم ssh بزنیم. برای راحتی کار توی فایل etc/hosts/ سرور control host خط زیر رو اضافه کردیم  که وقتی مینویسیم workstation به آدرس سرور workstation ریزالو بشه &lt;WORKSTATION SERVER&#x27;S IP&gt; 	workstation1. نصب Ansible روی کنترل هاستنصب انسیبلکنترل هاست در واقع سروری هست که از اون دستورات Ansible صادر میشه. توی قدم اول باید انسیبل رو روی کنترل هاست نصب کنیم. توضیحات کامل نصب انسیبل رو میتونین توی سایت اصلیش  بینین و اما من به صورت خلاصه نوشتم اینجا. نصب از طریق مدیر بسته‌های سیستم‌عامل:در RHEL/CentOS: استفاده از yum یا dnf:sudo yum install ansibleدر Debian/Ubuntu: استفاده از apt:sudo apt-get install ansibleنصب با استفاده از pip:sudo pip install ansibleنصب از سورس (مناسب برای توسعه‌دهندگان):git clone https://github.com/ansible/ansible.gitcd ansiblemake install.با هر روشی دوست داشتین میتونین انسیبل رو نصب کنین. در آخر  برای تست میتونین ورژن انسیبل رو بگیریم ببینیم نصب شده یا نه.   نصب انسییل به صورت موفقیت آمیز2. ایجاد کاربر Ansibleساخت یوزر ansibleپیشنهاد میشه برای امنیت بیشتر و رعایت Best Practice ، یه یوزر اختصاصی برای Ansible روی هر دو کنترل هاست و workstation ایجاد کنیم.برای این کار روی جفت سروری که داریم( Control Host و Workstation Host) با دستور زیر یه یوزر ansible میسازیم و تنها نکته ای که هست  رمز عبوری که به سرور workstation  میدیم رو باید یادمون باشه چون بعدا نیازش داریم.sudo useradd ansiblesudo passwd ansible3. پیکربندی کلید SSH اشتراکیپیکربندی کلید SSH اشتراکیبرای این‌که کاربر Ansible بتواند از کنترل هاست بدون نیاز به رمز عبور به سرور workstation متصل بشه، باید یک SSH Pre-Shared Key ایجاد کنیم.تولید SSH Pre-Shared Key برای کاربر Ansibleبه کاربر Ansible سوئیچ میکنیم و یک کلید SSH تولید کنید:sudo su - ansible ssh-keygenSSH Pre-Shared Key ساخت 4. کپی کردن کلید SSH به سرور workstationتو این مرحله میایم با دستور زیر کلید عمومی هاست کنترل رو ارسال میکنیم به سرور workstationssh-copy-id workstationانتقال کلید عمومی سرور هاست به سرور workstation اگه تمام مراحل رو به درستی انجام داده باشین الان باید بتونید بدون رمز عبور به سرور workstation متصل بشین (ssh بزنین):ssh workstationاگر موفق بودید، از سرور workstation خارج بشین بریم مرحله بعد:logout5. پیکربندی کاربر Ansible روی سرور workstationتوی ادامه مقاله ها بیشتر توضیح میدم اما الان به صورت خلاصه بخوام توضیح بدم، ما یه سری کارهایی قراره روی سرور انجام بدیم که نیاز به دسترسی sudo دارن ، حالا برای اینکه هر سری نخواد از ما رمز رو بپرسه میایم  کاربر Ansible روی سرور workstation  جوری تنظیم میکنیم که دسترسی sudo بدون نیاز به رمز عبور داشته باشه. در غیر اینصورت باید زمان اجرای دستورات انسیبل باید رمز کاربر رو بزنیم اگه نزنیم با خطا روبرو میشیم. وارد سرور workstation میشیم و فایل sudoers را ویرایش میکنیم:sudo visudoباید خط زیر را به انتهای فایل اضافه کنیم:ansible       ALL=(ALL)       NOPASSWD: ALLفایل رو ذخیره میکنیم و خارج میشیم و از سرور workstation خارج میشیم:logout6. ایجاد یک فایل اینونتوری سادهایجاد یک فایل اینونتوری سادهانسیبل برای اینکه بدونه دستورات رو باید روی چه سرور هایی اجرا کنه از یک فایل اینونتوری استفاده می‌کنه. تو این قسمت یه فایل اینونتوری ساده رو نوشتیم،‌روی کنترل هاست به کاربر Ansible سوئیچ میکنیم:sudo su  -  ansible یه فایل inventory ایجاد میکنیم:vim /home/ansible/inventoryمتن زیر رو بهش اضافه میکنیم. (از اونجایی که آدرس این سرور توی فایل etc/hosts/ نوشتیم و چون یوزر مبدا و مقصد یکی هست،‌ جفتشون ansible هست. اینجا میتونیم به این سرور متصل بشیم) workstationفایل را با :wq ذخیره کرده و خارج شوید.7. نحوه اجرای دستورات انسیبلاین عکس به نظرم برای توضیح دستورات عالیه از مقاله ی یکی از دوستان اینو کپی کردم، ما برای اجرای دستورات انسیبل ۲ تا کار میتونیم انجام بدیم، اگه بخوایم یه کامند رو اجرا کنیم از دستور ansible استفاده میکنیم و اگه بخوایم لسیتی از کارها رو انجام بدیم از دستور ansible-playbook استفاده می کنیم.  (در ادامه توضیح میدم که playbook چی هست)نحوه اجرای دستورات انسیل خب رسیدیم به جایی که ببینیم میتونیم به سرور workstation از طریق انسیبل متصل بشیم و دستورات رو اجرا کنیم یا نه. که همیشه با دستور ping  بررسی میکنیم آیا متصل شدیم یا نه. این دستور میاد تمام سرور هایی که توی فایل inventory هست رو ping میگیره ببینه آیا دسترسی داریم بهشون یا نه.دسترسی موفقیت آمیز به سرور workstationنوشتن یک Playbook در Ansible نوشتن یک Playbook در Ansibleپلی بوک ها توی Ansible فایل‌های YAML هستند که شامل یک یا چند تا play هستن که هرکدوم از play ها شامل چند تا task هستن. مثال بزنم براتون کانفیگ کردن یه سرور رو میتونیم یه playbook در نظر بگیریم. نصب داکر و نصب nginx  رو میتونیم ۲ تا play در نظر بگیریم و هر کدوم از این ها شامل یه سری تسک هستن به عنوان مثال برای داکر تسک هایی که داریم: نصب dependency ها و نصب داکر و راه اندازی سرویس داکر رو میتونیم task در نظر بگیریم. در واقع کارهایی که میخوایم انجام بدیم رو لیست میکنیم تا همه رو برای ما انجام بده.ساختار کلی playbook تو این قسمت ما یه playbook داریم که شامل یه play هست و اونم فقط یه تسک داره که نصب ابزار گیت روی سرور workstation هست.درک ساختار Playbookیک playbook از چندین play تشکیل شده  و هر play یک گروه از هاست‌ها را هدف قرار میده که در اینونتوری  تعریف شده‌اند. هر play شامل وظایفی است و هر وظیفه یک ماژول Ansible را برای انجام یک اقدام خاص فراخوانی می‌کند.نوشتن یک Playbook برای نصب Gitنصب گیت روی سرور workstation  روی کنترل هاست، به عنوان کاربر Ansible، یک playbook جدید ایجاد میکنیم:vim /home/ansible/git-setup.yml---
- hosts: workstation
  become: yes
  tasks:
   - name: install git
     yum:
        name: git
        state: latestفایل را با :wq ذخیره کرده و خارج شوید.این playbook به Ansible میگه که آخرین نسخه Git را روی سرور workstation نصب کنه.9. اجرای Playbook در Ansibleبا نوشته شدن playbook، حالا می‌توانید آن را اجرا کنید:ansible-playbook -i /home/ansible/inventory /home/ansible.git-setup.ymlبا این کامند انسیبل به سرور worksation متصل می‌شه و Git را مطابق با playbook نصب می‌کنه.مراحل نصب ابزار گیت روی سرور workstation10. بررسی نصببرای اطمینان از این‌که Git به درستی نصب شده ، وارد سرور worksation میشیم و نسخه Git رو بررسی میکنیم:ssh workstation which gitاگر دستور مسیر به باینری Git را برگرداند، نصب موفقیت‌آمیز بوده استنصب موفقیت آمیز گیتامیدوارم این مقاله مفید بوده باشه و در ادامه به سراغ کارهای چالشی تر با انسیبل میریم تا درک خوبی از انسیبل پیدا کنین.و در آخر این آدرس لینکدین و توئیتر من هست خوشحال میشم در ارتباط باشیم. 🪩 Follow Linkedin Hossein Jafari🪩🕊 Twitter 🕊</description>
                <category>حسین جعفری</category>
                <author>حسین جعفری</author>
                <pubDate>Tue, 03 Sep 2024 21:58:40 +0330</pubDate>
            </item>
            </channel>
</rss>