ุฅู†ุดุงุก ูˆุงุฌู‡ุฉ ุจุฑู…ุฌุฉ ุชุทุจูŠู‚ุงุช ู‚ุงุจู„ุฉ ู„ู„ุชุทูˆูŠุฑ ููŠ ุญุงู„ุงุช ุจู‚ุนุฉ AWS

ู…ุฑุญุจุง! ุงุณู…ูŠ ูƒูŠุฑูŠู„ ุŒ ูˆุฃู†ุง ู…ุฏูŠุฑ ูู†ูŠ ููŠ Adapty. ู…ุนุธู… ุจู†ูŠุชู†ุง ุชุนู…ู„ ุนู„ู‰ AWS ุŒ ูˆุงู„ูŠูˆู… ุณุฃุชุญุฏุซ ุนู† ูƒูŠููŠุฉ ุฎูุถ ุชูƒุงู„ูŠู ุงู„ุฎุงุฏู… ุจู…ู‚ุฏุงุฑ 3x ุจุงุณุชุฎุฏุงู… ู…ุซูŠู„ุงุช Spot ููŠ ุจูŠุฆุฉ ุฅู†ุชุงุฌ ุŒ ุจุงู„ุฅุถุงูุฉ ุฅู„ู‰ ูƒูŠููŠุฉ ุชูƒูˆูŠู†ู‡ุง ุนู„ู‰ ู†ุทุงู‚ ุชู„ู‚ุงุฆูŠ. ุฃูˆู„ุงู‹ ุŒ ุณุชูƒูˆู† ู‡ู†ุงูƒ ู†ุธุฑุฉ ุนุงู…ุฉ ุนู„ู‰ ูƒูŠููŠุฉ ุนู…ู„ู‡ุง ุŒ ุซู… ุฅุฑุดุงุฏุงุช ุชูุตูŠู„ูŠุฉ ู„ู„ุจุฏุก.



ู…ุง ู‡ูŠ ุงู„ู…ุซูŠู„ุงุช ุงู„ููˆุฑูŠุฉุŸ



ุงู„ู…ุซูŠู„ุงุช ุงู„ู…ูˆุถุนูŠุฉ ู‡ูŠ ุฎูˆุงุฏู… ุฃุฎุฑู‰ ู„ู…ุณุชุฎุฏู…ูŠ AWS ุฎุงู…ู„ุฉ ุญุงู„ูŠู‹ุง ูˆูŠู‚ูˆู…ูˆู† ุจุจูŠุนู‡ุง ุจุฎุตู… ูƒุจูŠุฑ (ุชูƒุชุจ ุฃู…ุงุฒูˆู† ู…ุง ูŠุตู„ ุฅู„ู‰ 90 ูช ุŒ ~ 3x ููŠ ุชุฌุฑุจุชู†ุง ุŒ ุชุฎุชู„ู ุญุณุจ ุงู„ู…ู†ุทู‚ุฉ ุŒ ู…ู† ุงู„ุฃู„ู ุฅู„ู‰ ุงู„ูŠุงุก ูˆู†ูˆุน ุงู„ู…ุซูŠู„). ุงุฎุชู„ุงูู‡ู… ุงู„ุฑุฆูŠุณูŠ ุนู† ุชู„ูƒ ุงู„ุชู‚ู„ูŠุฏูŠุฉ ู‡ูˆ ุฃู†ู‡ ูŠู…ูƒู†ู‡ู… ุฅูŠู‚ุงู ุงู„ุชุดุบูŠู„ ููŠ ุฃูŠ ูˆู‚ุช. ู„ุฐู„ูƒ ุŒ ุงุนุชู‚ุฏู†ุง ู„ูุชุฑุฉ ุทูˆูŠู„ุฉ ุฃู†ู‡ ู…ู† ุงู„ุทุจูŠุนูŠ ุงุณุชุฎุฏุงู…ู‡ุง ููŠ ุงู„ุจูŠุฆุงุช ุงู„ุจูƒุฑ ุŒ ุฃูˆ ู„ู…ู‡ุงู… ุญุณุงุจ ุดูŠุก ู…ุง ุŒ ู…ุน ุชูˆููŠุฑ ู†ุชุงุฆุฌ ูˆุณูŠุทุฉ ุนู„ู‰ S3 ุฃูˆ ููŠ ุงู„ู‚ุงุนุฏุฉ ุŒ ูˆู„ูƒู† ู„ูŠุณ ู„ู„ุจูŠุน. ู‡ู†ุงูƒ ุญู„ูˆู„ ุชุงุจุนุฉ ู„ุฌู‡ุงุช ุฎุงุฑุฌูŠุฉ ุชุณู…ุญ ู„ูƒ ุจุงุณุชุฎุฏุงู… ุงู„ู…ูˆุงู‚ุน ุงู„ู…ุนุฑูˆุถุฉ ู„ู„ุจูŠุน ุŒ ูˆู„ูƒู† ู‡ู†ุงูƒ ุงู„ูƒุซูŠุฑ ู…ู† ุงู„ุนูƒุงุฒุงุช ู„ุญุงู„ุชู†ุง ุŒ ู„ุฐู„ูƒ ู„ู… ู†ู‚ู… ุจุชู†ููŠุฐู‡ุง. ูŠุนู…ู„ ุงู„ู†ู‡ุฌ ุงู„ู…ูˆุตูˆู ููŠ ุงู„ู…ู‚ุงู„ุฉ ุจุดูƒู„ ูƒุงู…ู„ ุถู…ู† ูˆุธุงุฆู AWS ุงู„ู‚ูŠุงุณูŠุฉ ุŒ ุจุฏูˆู† ู†ุตูˆุต ุฅุถุงููŠุฉ ุŒ ุชูŠุฌุงู† ุŒ ุฅู„ุฎ.



ููŠู…ุง ูŠู„ูŠ ุจุนุถ ู„ู‚ุทุงุช ุงู„ุดุงุดุฉ ุงู„ุชูŠ ุชุนุฑุถ ุชุงุฑูŠุฎ ุฃุณุนุงุฑ Spot Spot.



m5.large in the eu-west-1 region (Ireland). ุงู„ุณุนุฑ ู…ุณุชู‚ุฑ ููŠ ุงู„ุบุงู„ุจ ู„ู…ุฏุฉ 3 ุฃุดู‡ุฑ ุŒ ู…ุฏุฎุฑุงุช ุญุงู„ูŠู‹ุง 2.9x .



ุตูˆุฑุฉ



m5.large ููŠ ู…ู†ุทู‚ุฉ us-east-1 ( ุดู…ุงู„ ููŠุฑุฌูŠู†ูŠุง). ูŠุชุบูŠุฑ ุงู„ุณุนุฑ ุจุงุณุชู…ุฑุงุฑ ู„ู…ุฏุฉ 3 ุฃุดู‡ุฑ ุŒ ุญุงู„ูŠู‹ุง ุชุชุฑุงูˆุญ ุงู„ู…ุฏุฎุฑุงุช ู…ู† 2.3x ุฅู„ู‰ 2.8x ุงุนุชู…ุงุฏู‹ุง ุนู„ู‰ ู…ู†ุทู‚ุฉ ุงู„ุชูˆุงูุฑ.



ุตูˆุฑุฉ



t3.small ููŠ ู…ู†ุทู‚ุฉ ู„ู†ุง-ุดุฑู‚ -1 (ูุฑุฌูŠู†ูŠุง ุงู„ุดู…ุงู„ูŠุฉ ). ุงู„ุณุนุฑ ู…ุณุชู‚ุฑ ู„ู…ุฏุฉ 3 ุดู‡ูˆุฑ ุŒ ุงู„ู…ุฏุฎุฑุงุช ุญุงู„ูŠุง 3.4x .



ุตูˆุฑุฉ



ู‡ู†ุฏุณุฉ ุงู„ุฎุฏู…ุฉ



ูŠุชู… ุนุฑุถ ุงู„ุจู†ูŠุฉ ุงู„ุฃุณุงุณูŠุฉ ู„ู„ุฎุฏู…ุฉ ุŒ ูˆุงู„ุชูŠ ุณู†ุชุญุฏุซ ุนู†ู‡ุง ููŠ ู‡ุฐู‡ ุงู„ู…ู‚ุงู„ุฉ ุŒ ููŠ ุงู„ุฑุณู… ุงู„ุจูŠุงู†ูŠ ุฃุฏู†ุงู‡.



ุตูˆุฑุฉ



Application Load Balancer โ†’ EC2 Target Group โ†’ Elastic Container Service



Application Load Balancer (ALB), EC2 Target Group (TG). TG , ALB Elastic Container Service (ECS). ECS โ€” Kubernetes AWS, Docker .



, . ECS TG, ( Kubernetes ), . TG , health check, - , .



EC2 Auto Scaling Groups + ECS Capacity Providers



EC2 Auto Scaling Groups (ASG). , . AWS ECS. ECS , , CPU, RAM . , .



ECS Capacity Providers (ECS CP). ECS ASG, , ( ASG). , ECS CP , ASG, . ECS CP , , , .



EC2 Launch Templates



, , , โ€” EC2 Launch Templates. , , . , , . , . , , ECS .



โ€” ECS_ENABLE_SPOT_INSTANCE_DRAINING=true. , ECS , , , Draining. , , , . . 2 . 2 , .



โ€” AWS Elastic File System (EFS) ECS, , , . SIGINT ( Draining) 30 , , ECS_CONTAINER_STOP_TIMEOUT. 2 .





. , . , - . AWS, CloudFormation Terraform. Adapty Terraform.



EC2 Launch Template



, . EC2 -> Instances -> Launch templates.



Amazon machine image (AMI) โ€” , . ECS Amazon. ECS. ID , Amazon ECS-optimized AMIs, AMI ID . , us-east-1 ID โ€” ami-00c7c1cf5bdc913ed. ID Specify a custom value.



Instance type โ€” . , .



Key pair (login) โ€” , SSH, .



Network settings โ€” . Networking platform Virtual Private Cloud (VPC). Security groups โ€” . , , . 2 , , (inbound) 80 (http) 443 (https), , . (outbound) TCP . , , - .



Storage (volumes) โ€” . , AMI, ECS Optimized โ€” 30 GiB.



Advanced details โ€” .



Purchasing option โ€” . , , Auto Scaling Group, .



IAM instance profile โ€” , . , ECS, , ecsInstanceRole. , , , . .

, , . EBS-optimized instance T2/T3 Unlimited, burstable .



User data โ€” . /etc/ecs/ecs.config, ECS.

, user data:



#!/bin/bash
echo ECS_CLUSTER=DemoApiClusterProd >> /etc/ecs/ecs.config
echo ECS_ENABLE_SPOT_INSTANCE_DRAINING=true >> /etc/ecs/ecs.config
echo ECS_CONTAINER_STOP_TIMEOUT=1m >> /etc/ecs/ecs.config
echo ECS_ENGINE_AUTH_TYPE=docker >> /etc/ecs/ecs.config
echo "ECS_ENGINE_AUTH_DATA={\"registry.gitlab.com\":{\"username\":\"username\",\"password\":\"password\"}}" >> /etc/ecs/ecs.config


ECS_CLUSTER=DemoApiClusterProd โ€” , , . , .



ECS_ENABLE_SPOT_INSTANCE_DRAINING=true โ€” , , Draining.



ECS_CONTAINER_STOP_TIMEOUT=1m โ€” , SIGINT, 1 , .



ECS_ENGINE_AUTH_TYPE=docker โ€” , docker-



ECS_ENGINE_AUTH_DATA=... โ€” container registry, Docker . , .



Docker Hub, ECS_ENGINE_AUTH_TYPE ECS_ENGINE_AUTH_DATA .



: AMI, Docker, Linux, ECS . , . email , Lambda-, Launch Template AMI.



EC2 Auto Scaling Group



Auto Scaling Group . EC2 -> Auto Scaling -> Auto Scaling Groups.



Launch template โ€” . .



Purchase options and instance types โ€” . Adhere to launch template Launch Template. Combine purchase options and instance types . .



Optional On-Demand base โ€” , , .



On-Demand percentage above base โ€” , 50-50 , 20-80 4 . 50-50, 20-80, 0-100.



Instance types โ€” , . , . , . , )



ุตูˆุฑุฉ



Network โ€” , VPC , .



Load balancing โ€” , , . Health checks .



Group size โ€” . , .



Scaling policies โ€” , , ECS , .



Instance scale-in protection โ€” . , ASG , . , , ECS Capacity Provider.



Add tags โ€” ( Tag new instances). Name, , , , .



ุตูˆุฑุฉ



Advanced configurations, .



Termination policies โ€” , . . , . Launch Template (, AMI, , ). , . .



ุตูˆุฑุฉ



: , Instance Refresh. Lambda- , . instance scale-in protection . , , Instance management.



Application Load Balancer EC2 Target Group



EC2 โ†’ Load Balancing โ†’ Load Balancers. Application Load Balancer, .



Listeners โ€” 80 443 80 443 .



Availability Zones โ€” .



Configure Security Settings โ€” SSL- , โ€” ACM. Security Policy , ELBSecurityPolicy-2016-08. , DNS name, CNAME . , Cloudflare.



ุตูˆุฑุฉ



Security Group โ€” , EC2 Launch Template โ†’ Network settings.



Target group โ€” , , . Target type Instance, Protocol Port , HTTPS , . , 80 .



Health checks โ€” . , -, -. , , . Success codes 200-399, Docker , , 304 .



ุตูˆุฑุฉ



Register Targets โ€” , ECS, .



: , S3 . , SQL- S3 Athena. - . S3 .



ECS Task Definition



, , , . ECS โ†’ Task Definitions.



Launch type compatibility โ€” EC2.



Task execution IAM role โ€” ecsTaskExecutionRole. , .



Container Definitions Add Container.



Image โ€” , Docker Hub bitnami/node-example:0.0.1.



Memory Limits โ€” . Hard Limit โ€” , , docker kill, . Soft Limit โ€” , , . , 4 GiB , soft limit โ€” 2048 MiB, 2 . 4 GiB โ€” , 4096 MiB, ECS Instances . Soft limit hard limit. , , .



Port mappings โ€” Host port 0, , , Target Group. Container Port โ€” , , , , Dockerfile . 3000, Dockerfile .



Health check โ€” , , Target Group.



Environment โ€” . CPU units โ€” Memory limits, . โ€” 1024 , , 512, 4 . CPU units , .



Command โ€” , . gunicorn, npm . , CMD Dockerfile. npm,start.



Environment variables โ€” . , Secrets Manager Parameter Store.



Storage and Logging โ€” CloudWatch Logs ( AWS). Auto-configure CloudWatch Logs. Task Definition CloudWatch. , Retention period Never Expire . CloudWatch Log groups, .



ุตูˆุฑุฉ



ECS Cluster ECS Capacity Provider



ECS โ†’ Clusters, . EC2 Linux + Networking.



Cluster name โ€” , , Launch Template ECS_CLUSTER, โ€” DemoApiClusterProd. Create an empty cluster. Container Insights, CloudWatch. , ECS Instances , Auto Scaling group.



ุตูˆุฑุฉ



Capacity Providers . , , ECS . , .



Auto Scaling group โ€” .



Managed scaling โ€” , .



Target capacity % โ€” . 100%, . 50%, . , , , .



Managed termination protection โ€” , . , Target capacity %.



ECS Service



:) , Services.



Launch type โ€” Switch to capacity provider strategy .



ุตูˆุฑุฉ



Task Definition โ€” Task Definition .



Service name โ€” , , Task Definition.



Service type โ€” Replica.



Number of tasks โ€” . , .



Minimum healthy percent Maximum percent โ€” . 100 200, , 2 , . 1 , min=0, max=100, , , . 1 , min=50, max=150, , 1 .



Deployment type โ€” Rolling update.



Placement Templates โ€” . AZ Balanced Spread โ€” , , . BinPack โ€” CPU Spread โ€” AZ, CPU. , .



ุตูˆุฑุฉ



Load balancer type โ€” Application Load Balancer.



Service IAM role โ€” ecsServiceRole.



Load balancer name โ€” .



Health check grace period โ€” , 60 .



Container to load balance โ€” Target group name , .



ุตูˆุฑุฉ



Service Auto Scaling โ€” . Configure Service Auto Scaling to adjust your serviceโ€™s desired count. .



IAM role for Service Auto Scaling โ€” AWSServiceRoleForApplicationAutoScaling_ECSService.



Automatic task scaling policies โ€” . 2 :



  1. Target tracking โ€” ( CPU/RAM ). , 85%, , , . , , (Disable scale-in).
  2. Step scaling โ€” . (CloudWatch Alarm), , , .


, , , .





Docker , .



ุตูˆุฑุฉ



  1. , . .
  2. , , .
  3. , .
  4. , , 3 .
  5. , , .
  6. Capacity Provider, (), .
  7. .


, , email-, .



. , - . 1+ . API, . , - , , .



, ECS - .



, serverless ( ) GitLab CI Terraform Cloud.



, !




All Articles