جذاب ترین راه برای مدیریت منابع AWS شما

یکی از دوستان چند سالی است که یک راه حل SaaS را در AWS Cloud ویرایش می کند. گام به گام، راه حل SaaS او شروع به یافتن می کند، مجموعه مشتریانش در حال رشد است، او باید توسعه دهندگان بیشتری را استخدام کند. کدی که قبلاً توسط یک شخص اصلاح میشد، اکنون توسط چندین مورد اصلاح میشود، تا کنون مخزن git آن فقط از دو شاخه «توسعه» برای پیشرفتها و «اصلی» برای آنچه به تولید میرود تشکیل شده است.
این وضعیت به طرز وحشتناکی او را آزار می دهد، او به این فکر می کند که آیا می تواند افزایش یابد. پس از من می پرسد:
- چگونه می توانم توسعه ویژگی ها را به صورت موازی مدیریت کنم؟
- چگونه می توانم خطرات رگرسیون را به حداقل برسانم؟
- چگونه می توان انتشارات تولید را با زمان توقف صفر انجام داد؟
قبل از پاسخ دادن به این سؤالات، میخواستم به او اطمینان دهم زیرا حضور در فضای ابری AWS یک نقطه شروع عالی است. مطمئناً AWS کاملترین اکوسیستم ابری را دارد و هر برنامه SaaS باید در آنجا احساس امنیت کند.
بنابراین به او گفتم چشمانش را ببندد و راه حلی را تصور کند که بتواند به صورت پویا:
- یک شاخه “ویژگی” از “توسعه” ایجاد می کند
- یک محیط اختصاصی “ویژگی” در ابر AWS ایجاد می کند
- یک خط لوله استقرار در محیط “ویژگی” ایجاد کنید که در هر commit در شاخه “ویژگی” راه اندازی می شود.
- یک رکورد DNS ایجاد کنید که امکان آزمایش آسان شاخه “ویژگی” را فراهم می کند
- یک متعادل کننده بار ایجاد کنید و یک گواهی SSL را برای محیط “ویژگی” مستقر کنید
- با هر تأیید اعتبار «درخواست ادغام» در شاخه «توسعه»، در «Staging» مستقر شود
- تصویری از محیط «استیجینگ» برای استقرار در تولید ایجاد کنید
بعد بهش گفتم چشماش رو باز کنه چون به راحتی میشه روی ابر AWS پیاده سازی کرد بیا باهاش کنار بیایم.
چگونه یک شاخه “ویژگی” از “توسعه” ایجاد کنیم؟
Terraform دوست شماست، کد زیر به شما امکان می دهد یک ماژول Terraform داشته باشید که به شما امکان می دهد هر مخزن git را مدیریت کنید.
چگونه می توانم یک محیط اختصاصی ویژگی در AWS Cloud ایجاد کنم؟
اگر نیاز به تعامل با AWS دارید، Terraform بار دیگر دوست شماست. همه مدلهای استقرار را میتوان با Terraform خودکار کرد:
- سرورهای EC2
- ظروف داکر در ECS
- ظروف داکر در Kubernetes
- توابع لامبدا
- پایگاه های داده RDS
- ترکیبی از همه این حجم کاری
چگونه می توانم یک خط لوله استقرار در محیط “ویژگی” ایجاد کنم و این خط لوله در commit در شاخه “ویژگی” راه اندازی می شود؟
در اینجا نیز Terraform به شما این امکان را میدهد که با ابزار انتخابی خود، ایجاد خط لوله را خودکار کنید. اما از آنجایی که در AWS هستید، می توانید از Terraform برای ایجاد خط لوله با AWS CodePipeline استفاده کنید.
چگونه می توانم یک رکورد DNS ایجاد کنم که آزمایش شاخه “ویژگی” را آسان کند؟
ما قطعاً می توانیم همه کارها را با Terraform انجام دهیم، زیرا ایجاد یک رکورد DNS در Amazon Route 53 یک بازی کودکانه است.
چگونه یک Load Balancer ایجاد کنیم و یک گواهی SSL را روی آن در محیط «ویژگی» مستقر کنیم؟
Terraform یک بار دیگر راه حل است. تنها چیزی که نیاز دارید ارائه ARN گواهی است.
چگونه هر بار که یک درخواست ادغام تأیید می شود به طور خودکار مستقر شود؟
اعتبار یک “درخواست ادغام” مربوط به یک commit در شاخه مقصد است. با AWS CodePipeline و Terraform، راه اندازی خودکار اجرای خط لوله با پیکربندی یک اتصال در مرحله Source خط لوله شما انجام می شود.
چگونه می توانم تصویری از محیط صحنه برای استقرار تولید ایجاد کنم؟
با Terraform ایجاد یک تصویر AMI از یک نمونه آسان است، ایجاد یک تصویر Docker حتی ساده تر است.
بنابراین جذاب ترین راه برای مدیریت منابع AWS چیست؟
همه این کدها به شما امکان می دهد اسکریپت هایی داشته باشید که به شما امکان می دهد منابع خود را مدیریت کنید، محیط های جدید ایجاد کنید، کار توسعه دهندگان خود را ساده کنید و ارتقا دهید.
برای رفتن بیشتر، حتی می توانید یک برنامه کاربردی کوچک “کاربر پسند” برای کنترل اجرای اسکریپت های خود ایجاد کنید و بنابراین مدیریت یک زیرساخت پیچیده را با یک کلیک کنترل کنید.
سپس کل معماری شما می تواند شبیه این باشد.
Terraform عالیه
ابزارهای IaC پاسخ مناسبی برای مدیریت منابع Cloud هستند. هنوز هم میتوانید با استفاده از کنسول وب AWS لذت ببرید، اما ابزارهایی مانند Terraform باعث میشوند سرعت بیشتری داشته باشید، مانند یوسین بولت سریع پیش بروید و قابلیت نگهداری زیرساختهای AWS Cloud شما را بهبود بخشد.