از زمان راهاندازی اولیه سرویس AWS Elastic Beanstalk در سال ۲۰۱۱، مشتریان برنامههای فولاستک را در زبانهای جاوا (Java)، داتنت (.NET)، پایتون (Python)، نود جیاس (Node.js)، پیاچپی (PHP)، روبی (Ruby) و گو (Go) مستقر کردهاند و به سرویس Elastic Beanstalk اعتماد کردهاند تا استقرار و عملیات زیرساختی را مدیریت کند تا آنها بتوانند روی منطق تجاری تمرکز کنند. پانزده سال بعد، این اعتماد عمیقتر شده و این سرویس بازسازی شده است تا با آن مطابقت داشته باشد. اکنون، سرویس AWS Elastic Beanstalk سرویس مدیریت برنامه در سرویس آمازون وب سرویس (AWS) است که مسئولیت کامل عملیاتی را برای محیطهای تولید شما به عهده میگیرد. برنامهها را به هر شکلی که امروز وجود دارند بیاورید: کد منبع، فایلهای داکر (Dockerfiles)، یا تصاویر کانتینر. سرویس Elastic Beanstalk محیط تولید زیرین را ایجاد و مدیریت میکند. شما برنامه خود را مدیریت میکنید. سرویس آمازون وب سرویس (AWS) همهچیز دیگر را مدیریت میکند، از جمله استقرار، مقیاسبندی، اعمال وصلهها، نظارت و نگهداری مداوم آن. این مسئولیت عملیاتی برای تمام طول عمر برنامه با سرویس آمازون وب سرویس (AWS) باقی میماند.
ما موتور عملیاتی زیرین را بازسازی کردهایم و مجموعهای از قابلیتها را ارائه کردهایم که آن را قدرتمندتر از همیشه میسازد. سرویس Elastic Beanstalk اکنون از تجزیهوتحلیل محیط مبتنی بر هوش مصنوعی برای تشخیص مشکلات سلامت و پیشنهاد خودکار اصلاحات استفاده میکند. یک اقدام جدید رسمی در گیتهاب (GitHub Action) به تیمها اجازه میدهد مستقیماً از جریانهای کاری موجود CI/CD خود با یک پیکربندی واحد یامل (YAML) مستقر شوند. و ما پایه زیرساخت را برای ارائه قابلیت مشاهده مبتنی بر اپنتلمتری (OpenTelemetry)، استقرارهای تفکیک ترافیک با بازنشانی خودکار، مقیاسبندی خودکار رویدادمحور، مدیریت اسرار از طریق سرویس AWS Secrets Manager، و پروتکل HTTPS به طور پیشفرض از طریق سرویس AWS Certificate Manager بازسازی کردیم.
امروز، ما فصل بعدی سرویس AWS Elastic Beanstalk را اعلام میکنیم: یک حالت خوشهای کاملاً مدیریتشده جدید که برنامههای شما را برای کل طول عمر بار کاری به طور مداوم مستقر، مقیاسبندی، وصله، نظارت و ارتقا میدهد. شما برنامه خود را میآورید. سرویس آمازون وب سرویس (AWS) آن را اجرا میکند.
یک حالت خوشهای جدید برای تیمهایی ساخته شده است که مجموعهای از برنامهها را اجرا میکنند. به جای کار کردن با هر برنامه به صورت ایزوله، شما چندین برنامه را اجرا میکنید که زیرساخت مشترکی دارند که توسط سرویس Amazon Elastic Kubernetes Service (Amazon EKS) نیرو میگیرد و با یک پایه عملیاتی واحد به طور کامل مدیریت میشود. چندین برنامه منابع را به اشتراک میگذارند، بنابراین هزینه به ازای هر برنامه با رشد سبد پروژههای شما کاهش مییابد بدون اینکه پیچیدگی عملیاتی افزوده شود. چه ده برنامه اجرا کنید و چه صد برنامه، آنها را از طریق یک تجربه واحد، با همان ضمانتهای عملیاتی در سراسر هر استک مدیریت میکنید.
مزایای حالت خوشهای سرویس Elastic Beanstalk برای بارهای کاری شما:
- کد منبع تا تولید، هر رانتایم. کد منبع را در جاوا (Java)، داتنت (.NET)، پایتون (Python)، نود جیاس (Node.js)، پیاچپی (PHP)، روبی (Ruby) یا گو (Go) آپلود کنید. سرویس Elastic Beanstalk در صورت نیاز به طور خودکار کانتینریسازی را از طریق بیلدپکهای بومی ابری (Cloud Native Buildpacks) مدیریت میکند. هیچ فایل داکری (Dockerfile) و هیچ بازطراحی معماری نیاز نیست. شما میتوانید برنامههای قدیمی را از زیرساخت داخلی (on-premises) بیاورید یا خدمات جدید را در هر زبان پشتیبانیشدهای مستقر کنید.
- انطباق سازگار با استاندارد سازمانی داخلی. سرویس Elastic Beanstalk واجد شرایط HIPAA، سازگار با PCI DSS و هماهنگ با SOC 1/2/3 بدون پیکربندی اضافی است، بنابراین تیمها در صنایع تحت نظارت میتوانند بارهای کاری تولید را با وضعیت انطباقی که از قبل نیاز دارند، مستقر کنند.
- استراتژیهای استقرار در سطح تولید. استقرارهای یکجا (All-at-once)، غلطکی (rolling)، تغییرناپذیر (immutable)، و تفکیک ترافیک با بازنشانی خودکار در صورت خرابی. مقیاسبندی خودکار رویدادمحور. ادغام با سرویس AWS Secrets Manager. تمام اپنتلمتری (OpenTelemetry) بومی که امکان ادغام آسان با اکثر پسزمینههای قابلیت مشاهده، از جمله سرویس Amazon CloudWatch را فراهم میکند.
- عیبیابی مبتنی بر هوش مصنوعی. هنگامی که مشکلی پیش میآید، سرویس Elastic Beanstalk لاگهای سمت سرویس را جمعآوری کرده و توصیههای تولید شده توسط هوش مصنوعی را ارائه میدهد تا به شما کمک کند مشکلات را سریعتر و بدون نیاز به بررسی عمیق زیرساخت حل کنید.
نگاهی اول به حالت خوشهای Elastic Beanstalk
برای شروع، به کنسول سرویس Elastic Beanstalk بروید، یک محیط جدید ایجاد کنید، و خوشه (Cluster) را در بخش نوع استقرار (Deployment type) انتخاب کنید.

سرویس Elastic Beanstalk کد منبع، فایل داکر یا تصویر کانتینر را برای استقرار برنامه شما میپذیرد. برای مثال، میتوانید کد برنامه را برای محیط خود با انتخاب فایل محلی (Local file) و تعیین گزینههای ساخت تصویر کانتینر فراهم کنید. برای بخشهای باقیمانده، مقادیر پیشفرض باید برای اکثر سناریوها مناسب باشند.

دکمه ایجاد (Create) را انتخاب کنید و استقرار آغاز خواهد شد! توجه داشته باشید که اولین استقرار برای یک مجموعه معین از زیرشبکهها باعث ایجاد خوشه سرویس Amazon EKS میشود که حدود ده دقیقه طول میکشد. استقرارهای بعدی سریعتر هستند زیرا از یک خوشه موجود سرویس Amazon EKS استفاده مجدد میکنند.
وقتی استقرار با موفقیت انجام شود، ظاهر آن به این شکل خواهد بود:

همچنین میتوانید از رابط خط فرمان AWS (AWS CLI)، ابزار ابزار EB CLI یا کیتهای توسعه نرمافزار AWS (AWS SDKs) استفاده کنید. برای مثال، استقرار برنامهای متشکل از چند ریزسرویس در کوبرنتیز را در نظر بگیرید. ابتدا یک برنامه ایجاد کنید.
aws elasticbeanstalk create-application \
--application-name "my-microservice" \
--description "Multi-services demo" \
هر ریزسرویس ممکن است تصاویر از پیش ساخته شدهای در سرویس Amazon Elastic Container Registry (Amazon ECR) داشته باشد. آنها را به عنوان نسخههای برنامه ثبت کنید:
IMAGES=(
"frontend-v1|public.ecr.aws/my-microservices/frontend:v1"
"cartservice-v1|public.ecr.aws/my-microservices/cart:v1"
"paymentservice-v1|public.ecr.aws/my-microservices/payment:v1"
"shippingservice-v1|public.ecr.aws/my-microservices/shipping:v1"
)
for entry in "${IMAGES[@]}"; do
IFS='|' read -r label uri <<< "$entry"
aws elasticbeanstalk create-application-version \
--application-name $APP_NAME \
--version-label "$label" \
--image-configuration Source="{Uri=$uri}" \
--region "us-west-2
echo "Registered: $label"
done
شما میتوانید گزینههای خدمات مربوطه را برای هر سرویس تنظیم و مستقر کنید. برای مثال، سرویس فرانتاند تنها سرویسی است که به یک رابط اینترنت عمومی مانند سرویس Application Load Balancer نیاز دارد و همچنین یک مسیر بررسی سلامت را تنظیم میکند زیرا یک سرویس HTTP است:
[
{"Namespace": "aws:elasticbeanstalk:eks", "OptionName": "cluster-role", "Value": "arn:aws:iam::0123456789012:rol<...>"},
{"Namespace": "aws:elasticbeanstalk:eks", "OptionName": "node-role", "Value": "arn:aws:iam::0123456789012:role/E<...>"},
{"Namespace": "aws:elasticbeanstalk:eks:environment", "OptionName": "observability-role", "Value": "arn:aws:iam::0123456<...>"},
{"Namespace": "aws:elasticbeanstalk:eks:environment", "OptionName": "subnets", "Value": "subnet-1,subnet-2,subnet-3,<...>"},
{"Namespace": "aws:elasticbeanstalk:eks:environment:autoscaling", "OptionName": "min-replica", "Value": "1"},
{"Namespace": "aws:elasticbeanstalk:eks:environment:autoscaling", "OptionName": "max-replica", "Value": "2"},
{"Namespace": "aws:elasticbeanstalk:eks:environment", "OptionName": "cpu", "Value": "0.5"},
{"Namespace": "aws:elasticbeanstalk:eks:environment", "OptionName": "memory", "Value": "256Mi"},
{"Namespace": "aws:elasticbeanstalk:eks:environment", "OptionName": "memory-limit", "Value": "512Mi"},
{"Namespace": "aws:elasticbeanstalk:eks:environment", "OptionName": "service-port", "Value": "8080"},
{"Namespace": "aws:elasticbeanstalk:eks:alb", "OptionName": "scheme", "Value": "internet-facing"},
{"Namespace": "aws:elasticbeanstalk:eks:alb", "OptionName": "healthcheck-path", "Value": "/_healthz"}
] #frontend-options.json namespaces
اکنون، محیط سرویس فرانتاند را با این گزینهها ایجاد کنید. میتوانید به استقرار هر محیط سرویس به روشی مشابه ادامه دهید.
aws elasticbeanstalk create-environment \
--application-name my-microservice \
--environment-name frontend \
--version-label frontend-v1 \
--tier Name=Cluster,Type=EKS \
--option-settings file:///tmp/frontend-options.json \
در اینجا نگاهی به کنسول پس از استقرار تمام خدمات انداخته شده است:

حالت استاندارد Elastic Beanstalk که توسط سرویس Amazon Elastic Compute Cloud (Amazon EC2) پشتیبانی میشود، به طور کامل به کار خود ادامه میدهد. محیطهای حالت استاندارد و خوشهای در کنار یکدیگر در همان برنامه سرویس Elastic Beanstalk اجرا میشوند و به تیمها اجازه میدهند یک محیط را در هر زمان و با سرعت خود مهاجرت دهند. بررسیهای اعتبارسنجی سازگاری را قبل از اعمال هرگونه تغییری تأیید میکنند، بنابراین هیچ محیطی مجبور به جابجایی نمیشود.
حالت استاندارد سرویس Elastic Beanstalk همچنان برای موارد زیر مناسبترین گزینه است:
- برنامههای تک یا موارد استفاده تکمحیطی
- بارهای کاری ویندوز و داتنت فریمورک (Windows/.NET Framework) روی IIS
- برنامههایی که نمیتوانند کانتینری شوند
- بارهای کاری با هزینهای کمتر از ۵۰۰ دلار در ماه که در آن هزینه صفحه کنترل EKS و پرمیوم حالت خودکار EKS سرباری ایجاد میکنند که یک برنامه تک نمیتواند از طریق بستهبندی پشته جبران کند
برای کسب اطلاعات بیشتر در مورد نحوه استقرار و مدیریت برنامههای خود در حالت خوشهای، به مستندات حالت خوشهای سرویس Elastic Beanstalk مراجعه کنید.
اکنون در دسترس است
حالت خوشهای سرویس AWS Elastic Beanstalk از امروز در تمام مناطق AWS که سرویس Elastic Beanstalk در آنها در دسترس است، به طور عمومی عرضه میشود. برای دسترسی منطقهای و نقشه راه آینده، به قابلیتهای AWS بر اساس منطقه مراجعه کنید. اگر میخواهید از APIها فراخوانی کنید، مستندات را جستجو کنید، دسترسی منطقهای را پیدا کنید و عیبیابی در مورد این ویژگی جدید را انجام دهید، استفاده از سرور سرویس AWS MCP Server و پلاگینها را با ابزار هوش مصنوعی دلخواه خود امتحان کنید.
هیچ هزینه اضافی برای حالت خوشهای سرویس Elastic Beanstalk وجود ندارد. شما فقط هزینه منابع زیربنایی AWS را که برنامههایتان مصرف میکنند، از جمله هزینه صفحه کنترل EKS، محاسبات حالت خودکار EKS (تقریباً ۱۲٪ پرمیوم بر روی هزینههای نمونه EC2)، سرویس Amazon ECR و سرویس Amazon CloudWatch پرداخت میکنید. توجه داشته باشید که حالت خوشهای سرویس Elastic Beanstalk واجد شرایط سطح رایگان AWS (AWS Free Tier) نیست. برای کسب اطلاعات بیشتر، به صفحه قیمتگذاری سرویس AWS Elastic Beanstalk مراجعه کنید.
آن را در کنسول سرویس Elastic Beanstalk امتحان کنید و بازخورد خود را به بخش re:Post برای سرویس AWS Elastic Beanstalk یا از طریق مخاطبین معمولی پشتیبانی AWS ارسال کنید.
— چانی (Channy)
منبع: aws.amazon.com
