Advertisement
Advertisement

More Related Content

Similar to Amazon EC2 Container Service in Action(20)

Advertisement

Amazon EC2 Container Service in Action

  1. Amazon EC2 Container Service in Action Channy Yun ‒ AWS Technical Evangelist Sangpill Kim – AWS Solutions Architect Docker Seoul Meetup
  2. Why ContainerServices?
  3. Benefits of Containers Portable Flexible Fast EfficientServer Guest OS Bins/Libs Bins/Libs App2App1
  4. Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS But…
  5. + So…
  6. Cluster management Configuration management Scaling Security AvailabilityContainer sprawl Image: RaSeLaSeD - ll Pinguino
  7. Elastic Load Balancing ENIs Auto Scaling Security Groups IAM Image: xmatt Tagging Multi-AZ Amazon EBS
  8. Docker 콘테이너 제작 및 배포 EC2 인스턴스를 클러스터 구성 가능 실행 시 지속적인 볼륨 유지 가능 사설 Docker 레포지터리 운영 Amazon EC2 Container Service “Docker기반 확장성과 고성능 콘테이너 관리 서비스”
  9. EC2 Instance EC2 InstanceEC2 Instance
  10. EC2 Instance EC2 InstanceEC2 Instance EC2 Instance EC2 Instance EC2 Instance EC2 Instance
  11. 주요 구성 요소 •  Container Instance •  Cluster •  Task Definitions •  Tasks •  Service
  12. 주요 구성 요소 •  Container Instance •  Cluster •  Task Definitions •  Tasks •  Service Container Instance Container Instance … Container Instance Cluster Task definition Task Service
  13. Demo
  14. 주요 구성 요소 •  Container Instance •  Cluster •  Task Definitions •  Tasks •  Service !  Amazon EC2 인스턴스 !  Docker 데몬 !  Amazon ECS 에이전트 https://github.com/aws/ amazon-ecs-agent
  15. 주요 구성 요소 •  Container Instance •  Cluster •  Task Definitions •  Tasks •  Service !  리전 단위 (Multi-AZ) !  자원 풀 !  Container Instances 그룹 !  최소 시작, 동적 확장
  16. 주요 구성 요소 •  Container Instance •  Cluster •  Task Definitions •  Tasks •  Service Volume definitions Container definitions Shared data volume PHP App Time of day App
  17. Task Definitions Container Instance Schedule Shared data volume PHP App Time of day App
  18. Task Definition { “family” : “my-website”, “version” : “1.0” “containers” : [ <<CONTAINER DEFINTIONS>> ] }
  19. Container Definition { “name” : “webServer”, “image” : “nginx:latest” “cpu” : 512, “memory” : 128, “portMappings” : [ { “containerPort” : 9443, “hostPort” : 443 }], “links” : [“rails”], “essential” : true }
  20. !!!!!!{! "environment": [],! "name": "simple-demo",! "image": "my-demo",! "cpu": 10,! "memory": 500,! "portMappings": [! {! "containerPort": 80,! "hostPort": 80! }! ],! "mountPoints": [! {! "sourceVolume": "my-vol",! "containerPath": "/var/www/my-vol"! }! ],! "entryPoint": [! "/usr/sbin/apache2",! "-D",! "FOREGROUND"! ],! "essential": true! },! [! {! "image": "mysql",! "name": "db",! "cpu": 10,! "memory": 500,! "essential": true,! "entryPoint": [! "/entrypoint.sh"! ],! "environment": [! {! "name": "MYSQL_ROOT_PASSWORD",! "value": "pass"! }! ],! "portMappings": []! }! ]! Essential to our Task Create and mount volumes Expose port 80 in container to port 80 on host 10 CPU Units (1024 is full CPU), 500 Megabytes of Memory
  21. [! {! "image": "tutum/wordpress-stackable",! "name": "wordpress",! "cpu": 10,! "memory": 500,! "essential": true,! "links": [! "db"! ],! "entryPoint": [! "/bin/sh",! "-c"! ],! "environment": [! …! ],! "portMappings": [! {! "containerPort": 80,! "hostPort": 80! }! ]! },! ]! From Docker Hub Mount volume from other container Command to exec ! !{! "name": "busybox",! "image": "busybox",! "cpu": 10,! "memory": 500,! "volumesFrom": [! {! "sourceContainer": "simple-demo"! }! ],! "entryPoint": [! "sh",! "-c"! ],! "command": [! "/bin/sh -c "while true; do /bin/ date > /var/www/my-vol/date; sleep 1; done""! ],! "essential": false! }!
  22. 주요 구성 요소 •  Container Instance •  Cluster •  Task Definitions •  Tasks •  Service !  서비스를 위한 단위 !  연관된 콘테이너들의 그룹 !  콘테이너 인스턴스에서 실행 Nginx Web Server Rails Application MySQL Database Log Collector
  23. 주요 구성 요소 •  Container Instance •  Cluster •  Task Definitions •  Tasks •  Service !  지속적 애플리케이션 !  로드 밸런싱 및 상태 관리 !  스케일-아웃 !  신규 버전 배포/업데이트 Elastic Load Balancing
  24. CLI를 이용한 관리 가능 $"aws"ecs"list+container+instances"–c"default" arn:aws:ecs:us*west*2:956941867282:container*instance/ 01be44c0*4d45*4c1f*b2ae*1fce16c35ab6< arn:aws:ecs:us*west*2:956941867282:container*instance/ 1c81279b*4b39*4985*b76d*224e0385b219< $"aws"ecs"create+cluster"default"" {< <<"cluster_arn":<"arn:aws:ecs:us*west*2:956941867282:cluster/ c1a329a8*ec8a*41dc*82f6*294434861bd1",< <<"cluster_name":<"default",< <<"status":<"ACTIVE"< }<
  25. $"cat"wordpress.json" {< <"containers"<:<[< < <{< < < <"image"<:<"tutum/wordpress*stackable",< < < <"name"<:<"wordpress",< < < <"cpu"<:<10,< < < <"memory"<:<50,< < < <"links"<:<["db"],< < < <"environment"<:<[{<"name"<:<"DB_USER",<"value"<:<"root"},<{<"name"<:<"DB_PASS",<"value"<:< "pass"<}],< < < <"portMappings"<:<[{<"containerPort"<:<80,<"hostPort"<:<<80}]< < <},< < <{< < < <"image"<:<"mysql",< < < <"name"<:<"db",< < < <"cpu"<:<10,< < < <"memory"<:<50,< < < <"environment"<:<[{<"name"<:<"MYSQL_ROOT_PASSWORD",<"value"<:<"pass"}],< < <}< <]< }<
  26. $"aws"register+task+definition"wordpress:1.0"–+file"wordpress.json"" {< <<<<<“family”<:<“wordpress”,< <<<<<“version”<:<“1.0”,< <"containers"<:<[< < <{< < < <"image"<:<"tutum/wordpress*stackable",< < < <"name"<:<"wordpress",< < < <"cpu"<:<100,< < < <"memory"<:<100,< < < <"links"<:<["db"],< < < <"environment"<:<[{<"name"<:<"DB_USER",<"value"<:<"root"},<{<"name"<:<"DB_PASS",<"value"<:<"pass"<}],< < < <"portMappings"<:<[{<"containerPort"<:<80,<"hostPort"<:<<80}]< < <},< < <{< < < <"image"<:<"mysql",< < < <"name"<:<"db",< < < <"cpu"<:<100,< < < <"memory"<:<100,< < < <"environment"<:<[{<"name"<:<"MYSQL_ROOT_PASSWORD",<"value"<:<"pass"}],< < <}< <]< }<
  27. $"aws"ecs"run+task"wordpress:1.0" {< <<"tasks":<[< <<<<{< <<<<<<"task_arn":<"arn:aws:ecs:us*west*2:956941867282:task/29da33da*1d71*454f*b036*df0da0284266",< <<<<<<"task_definition_arn":<"arn:aws:ecs:us*west*2:956941867282:task*definition/ 7fc71808*5102*47d3*9f76*0bded26a932b",< <<<<<<"container_instance_arn":<"arn:aws:ecs:us*west*2:956941867282:container*instance/01be44c0*4d45*4c1f* b2ae*1fce16c35ab6",< <<<<<<"overrides":<{},< <<<<<<"last_status":<"PENDING",< <<<<<<"desired_status":<"RUNNING",< <<<<<<"containers":<[< <<<<<<<<{< <<<<<<<<<<"arn":<"arn:aws:ecs:us*west*2:956941867282:container/1b33848e*1933*43b5*b9c7*4581efb70504",< <<<<<<<<<<"task_arn":<"arn:aws:ecs:us*west*2:956941867282:task/29da33da*1d71*454f*b036*df0da0284266",< <<<<<<<<<<"name":<"wordpress",< <<<<<<<<<<"last_status":<"PENDING",< <<<<<<<<<<"exit_code":<0< <<<<<<<<}<< <<<<<<]< <<<<}< <<]< }<
  28. wordpress
  29. http://aws.amazon.com/solutions/case-studies/coursera-ecs/ “ Amazon ECS enabled Coursera to focus on releasing new software rather than spending time managing clusters.” Frank Chen Software Engineer •  Docker containers on Amazon EC2 Container Service (ECS) enabled Coursera to easily move to a microservices -based architecture. •  Each job is created as a container and Amazon ECS schedules the container across the Amazon EC2 instance cluster. •  Amazon ECS handles all the cluster management and container orchestration, and containers provide the necessary resource isolation.
  30. http://engineering.remind.com/introducing-empire/
  31. http://www.slideshare.net/nathariel/microservices-and-elastic-resource- pools-with-amazon-ec2-container-service
  32. Amazon EC2 Amazon EC2 Containers Services AWS Lambda On-Premises Weeks Minutes Seconds Milliseconds
  33. AWS 자원의 변경 이벤트 변화 인식 Node.js 및 자바를 지원하는 클라우드 함수 서버 없이도 고 확장성 기반 실행 AWS Lambda “이벤트 기반 확장성 높은 클라우드 코드 실행 서비스”
  34. Photo bucket S3 Metadata DynamoDB Trending DynamoDB Extract metadata Cloud Function Trending Cloud Function NotifyCloud Function " " SNS Push notification
  35. When to Use ECS and Lambda ECS Long-running jobs Manage your event triggering Any language, any dependency Resources are your own - use Spot, RIs Lambda Short-lived jobs Triggered on specific events Supports specific environments No infrastructure to manage
  36. Example: Batch Jobs with ECS and Lambda .zip s3://bucket/scene.zip ECS Cluster .png
  37. Move to Microservices! Based on AWS Building Blocks
  38. Your Architecture ECS, Lambda, API Gateway, CodeDeploy, DynamoDB, SQS…
  39. 규모에 따른 클러스터 관리 별도 실행 없음 전체 상태 관리 컨트롤 및 모니터링 대규모 확장
  40. 유연한 콘테이너 배치 어플리케이션 배치 작업 복수 스케줄러
  41. 맞춤형 기능 확장 가능 다양한과 편리한 API 오픈 소스 에이전트 사용자 정의 스케줄러
  42. 다양한 AWS 서비스와 빌딩 블럭 Elastic Load Balancing Amazon Elastic Block Store Amazon Virtual Private Cloud AWS Identity and Access Management AWS CloudTrail …. AWS Elastic Beanstalk & Opsworks AWS Lambda
  43. 여러분의 피드백을 기다립니다! •  공식 블로그: http://aws.amazon.com/ko/blogs/korea •  한국어 공식 소셜 미디어 @AWSKorea AmazonWebServices.ko AWSKorea AWSKorea
Advertisement