ساختن یک معماری مقیاس پذیر و انعطاف پذیر در AWS

ایجاد یک سیستم در مقیاس بزرگ یک چالش پیچیده است که اغلب به تفکر اصول اول نیاز دارد. برای طراحی معماری که از مشتری به طور مؤثر پشتیبانی می کند ، مهم است که با سادگی شروع کنید و با گذشت زمان به یک سیستم قوی تر و قابل اعتماد تر تبدیل شوید.
بسیاری از شرکت ها با معماری های بیش از حد پیچیده شروع می کنند ، اما از نظر من ، بهتر است با رشد و پیشرفت و مقیاس بندی بر روی آن ، سازگار و مقیاس بندی شوند.
VPC
این بنیاد یک معماری قدرتمند مجازی خصوصی (VPC) است ، از جمله:
- یک راه اندازی سه لایه (عمومی ، برنامه ، بانک اطلاعاتی) در سه منطقه در دسترس بودن (AZS)
- زیر شبکه های عمومی با دسترسی به دروازه اینترنتی
- گروه های امنیتی برای کنترل ترافیک بین لایه ها
- در دسترس بودن بالا از طریق استقرار چنداز
- پشتیبانی IPv4 و IPv6
- EFS برای ذخیره مشترک
- نظارت یکپارچه از طریق CloudWatch
تنظیم سرور تک – EC2
در ابتدا ، من با یک برنامه یکپارچه مستقر در زیر شبکه عمومی شروع می کردم. به عنوان مثال ، یک نمونه وردپرس که قادر به رسیدگی به ترافیک اولیه است. با این حال ، اگر این نمونه متوقف شود ، یک IP عمومی جدید دریافت می کند و باعث می شود کاربران دسترسی خود را از دست بدهند. از نظر انتقادی ، داده ها و پرونده ها می توانند از بین بروند – چیزی که باید از ابتدا از آن جلوگیری کنیم.
مجموعه پایگاه داده
یک مرحله اولیه کلیدی برای جدا کردن لایه داده با استفاده از یک بانک اطلاعاتی مدیریت شده در زیر شبکه های DB است. این نه تنها منطق برنامه را از داده ها جدا می کند بلکه زمینه را برای مقیاس پذیری فراهم می کند. علاوه بر این ، پایگاه داده ها می توانند برای استحکام بیشتر پیکربندی شوند:
تکثیر پایگاه داده
ما می توانیم با تکثیر اساسی شروع کنیم – توزیع داده ها در چندین نمونه و پیکربندی عکس های منظم برای تهیه نسخه پشتیبان و بازیابی.
عمودی در مقابل مقیاس افقی
در حالی که مقیاس گذاری عمودی (ارتقاء به یک نمونه بزرگتر) می تواند یک رفع سریع باشد ، مقیاس بندی افقی (اضافه کردن نمونه های بیشتر) به دلیل محدودیت های سخت رشد عمودی به طور معمول برای سیستم های در مقیاس بزرگ ترجیح داده می شود.
ترازو بار
تکیه بر یک سرور واحد برای کلیه ترافیک های دریافتی در مقیاس پایدار نیست. معرفی تعادل بار برنامه (ALB) به توزیع ترافیک در چندین مورد ، بهبود در دسترس بودن و عملکرد کمک می کند.
مخازن
ذخیره سازی برای کاهش بار در پایگاه داده ها و بهبود زمان پاسخ ضروری است. خدمات AWS مانند elasticache (redis/memcached) می توان برای ذخیره پرس و جوهای گران قیمت یا داده های مکرر استفاده کرد. علاوه بر این ، ذخیره سازی می تواند در:
من به طور معمول از حافظه نهان برای محتوای غیر فرار استفاده می کنم ، اما برای جلوگیری از ارائه داده های بی نظیر باید مراقب باشید.
شبکه تحویل محتوا (CDN)
برای بهینه سازی عملکرد برای کاربران جهانی ، CDN مانند خطوط ابری می تواند محتوا را از مکان های لبه نزدیک به کاربر سرو کند.
یک احتیاط: ذخیره سازی پیچیدگی ، مانند محتوای بی نظیر را معرفی می کند. خوشبختانه ، Cloudfront اجازه می دهد بی اعتبار بودن حافظه پنهان صریح– چه در مسیر منابع (به عنوان مثال ، /resources/*
) یا پرونده های فردی.
تنظیمات
از فروشگاه پارامتر AWS Systems Manager برای خارجی سازی تنظیمات استفاده کنید. به عنوان مثال ، با ذخیره کردن داده های پیکربندی خود در یک سرویس خارجی مانند فروشگاه پارامتر ، می توانید به راحتی سرورهای جدیدی را که بازیابی و از همان تنظیمات استفاده می کنند راه اندازی کنید – درست کردن آن برای تکرار محیط ها و مقیاس به طور مداوم.
معماری بی تاب
برنامه های بدون تابعیت مقیاس بندی را آسان تر می کنند. هر نمونه می تواند درخواست ها را به طور مستقل ارائه دهد ، بنابراین اگر کسی شکست بخورد ، دیگری می تواند یکپارچه را به عهده بگیرد. در مقابل ، برنامه های حالت (مانند یکپارچه اولیه) وابستگی هایی را ایجاد می کنند که مانع تحمل و مقیاس بندی گسل می شود.
معماری محور رویداد
برای بهبود جداشدن و مقاومت ، ارتباطات ناهمزمان را با استفاده از سیستم های پیام رسانی ترجیح می دهم:
این امر به مؤلفه ها اجازه می دهد تا اگر دیگران به طور موقت در دسترس نباشند ، به طور موقت بازیابی شوند – اثرات موج دار اجتناب ناپذیر که می توانند سیستم را خراب کنند.
رعایت
یک سیستم مقیاس پذیر باید قابل مشاهده باشد. AWS Lambda این کار را به طور پیش فرض ارائه می دهد:
این قابلیت ها شما را قادر می سازد تا بر سلامت سیستم ، مسائل اشکال زدایی و تصمیم گیری های مقیاس گذاری آگاهانه نظارت کنید. معیارها همچنین می توانند به گروه مقیاس گذاری خودکار (ASG) سیاست ها
اطلاعات بیشتر در مورد AWS Lambda
مقیاس بندی خودکار
با مشاهده در محل ، مرحله بعدی اجرای آن است مقیاس بندی خودکار-تعریف سیاست هایی که باعث ایجاد مقیاس یا اقدامات مقیاس می شوند. این سیاستها می توانند براساس:
- استفاده از CPU
- فشار حافظه
- ترافیک شبکه
- الگوهای مبتنی بر زمان (به عنوان مثال ، ساعات اوج قابل پیش بینی)
پایان
ساختن یک برنامه بسیار مقیاس پذیر و انعطاف پذیر در AWS چالش برانگیز اما قابل دستیابی است. شما می توانید با یک معماری ساده و یکپارچه شروع کنید و به تدریج آن را تکامل دهید تا میلیون ها کاربر را اداره کنید.
در طول راه ، این الگوهای تاب آوری را در خاطر داشته باشید:
- نقاط ادغام را به حداقل برسانید
- از خرابی آبشار جلوگیری کنید
- از نخ های مسدود شده و پاسخ های آهسته خودداری کنید
- اجرای زمان و قطع کننده مدار
- برای جداسازی خرابی از سر های بزرگ استفاده کنید
- آغوش شکست سریع اصل: خطاها را زود تشخیص داده و رسیدگی کنید
هرگز زمان بهتری برای مهندس بودن و ایجاد ارزش در جامعه از طریق نرم افزار وجود نداشته است.
اگر از این مقاله لذت بردید ، به وبلاگ من در Jorgetovar.dev مراجعه کنید.