Top Banner
40

基于Aws的dev ops实践指南 王毅

Apr 12, 2017

Download

Internet

Mason Mei
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 基于Aws的dev ops实践指南 王毅
Page 2: 基于Aws的dev ops实践指南 王毅

基于AWS的DevOps实践指南基于AWS的DevOps实践指南

亚马逊高级解决方案架构师,区域主管

王毅

亚马逊高级解决方案架构师,区域主管

王毅

Page 3: 基于Aws的dev ops实践指南 王毅

什么是DevOps?

“DevOps(英文Development和Operations的组合)代表一种文化、运动或实践。旨在促进软件交付和基础设施变更软件开发人员(Dev)和IT运维技术人员(Ops)之间的合作和沟通。它的目的是构建一种文化和环境使构建,测试,发布软件更加快捷,频繁和可靠.”

Source: http://en.wikipedia.org/wiki/DevOps

Page 4: 基于Aws的dev ops实践指南 王毅

为什么需要DevOps?

因为我们不希望事情是这样的…

Page 5: 基于Aws的dev ops实践指南 王毅

为什么需要DevOps?

快速迭代, 敏捷开发

Time

Ch

an

ge

瀑布式开发,版本发布少

Time

Ch

an

ge

我们希望…

Page 6: 基于Aws的dev ops实践指南 王毅

为什么需要DevOps?

Page 7: 基于Aws的dev ops实践指南 王毅

怎么实现DevOps?怎么实现DevOps?

Page 8: 基于Aws的dev ops实践指南 王毅

从软件开发的角度看DevOps

逻辑与控制

易用

多语言的支持

自动化的基础

基础设施和操作系统平台

API

SDK

框架/工具

代码

Page 9: 基于Aws的dev ops实践指南 王毅

AWS对DevOps的全面支持

程序,命令行,脚本

Python, Java, PHP, Node.js, …

REST API

基础服务平台

API

SDK

框架/工具

代码

Page 10: 基于Aws的dev ops实践指南 王毅

基于AWS的DevOps实践要素

API & SDK

Code & CLI

AWS Services

代码和命令行 CloudFormation CodeDeploy OpsWorks ElasticBeanstalk第三方服务

AnsibleSaltstack

Page 11: 基于Aws的dev ops实践指南 王毅

Code & CLI

代码和命令行

Page 12: 基于Aws的dev ops实践指南 王毅

操作AWS服务的三种方式

APIs and SDKsManagement Console Command Line Interface

DevOps基础

AWS Tools (SDK, CLI, IDE, etc.): http://aws.amazon.com/tools/

Page 13: 基于Aws的dev ops实践指南 王毅

Python Code – Start two EC2 instances

Page 14: 基于Aws的dev ops实践指南 王毅

CLI- Add Tag to EC2 instances

aws ec2 create-tags --resources i-ffb064c7 i-8eb561b6 --tags Key=Name,Value=QConEC2

Page 15: 基于Aws的dev ops实践指南 王毅

大规模基础架构的DevOps

需要框架和工具

Page 16: 基于Aws的dev ops实践指南 王毅

AWS DevOps服务适用场景

Provision Deploy Monitor

Customization

Convenience

CloudFormation

CodeDeploy

CloudWatch

Beanstalk

OpsWorks

IAM

Page 17: 基于Aws的dev ops实践指南 王毅

CloudFormation

Page 18: 基于Aws的dev ops实践指南 王毅

基础平台模板化

• 简化AWS服务的部署,快速部署一个Stack

• 模板化基础平台

• CloudFormation自动解决资源部署的先后和依赖关系

• 版本控制

• 第三方管理工具可以通过API集成CloudFormation

Page 19: 基于Aws的dev ops实践指南 王毅

Infrastructure as Code

Samples: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/sample-templates-services-us-west-2.html

Page 20: 基于Aws的dev ops实践指南 王毅

基于模板的快速部署

Page 21: 基于Aws的dev ops实践指南 王毅

CodeDeploy

Page 22: 基于Aws的dev ops实践指南 王毅

Agent Agent

Agent Agent

Agent

Agent

Deployment Group

Deployment

Amazon S3

GitHub

ApplicationBundle

自动化应用部署

Page 23: 基于Aws的dev ops实践指南 王毅

Deployment Configuration

Rolling updates

v2

v1

Auto Scaling support

v2

v2

v2

Customized Install

files:- source: /web_files/

destination: /var/www/html/hooks:

BeforeInstall:- location: setup/install_dep.sh

ApplicationStart:- location: setup/start_server.sh- location: setup/start_logger.sh

ApplicationStop:- location: setup/stop_server.sh- location: setup/flush_logs.sh

Page 24: 基于Aws的dev ops实践指南 王毅

Application Specification File

version: 0.0os: linuxfiles:- source: /destination: /var/www/html/WordPress

hooks:BeforeInstall:- location: scripts/install_dependencies.sh

timeout: 300runas: root

AfterInstall:- location: scripts/change_permissions.sh

timeout: 300runas: root

ApplicationStart:- location: scripts/start_server.sh

timeout: 300runas: root

ApplicationStop:- location: scripts/stop_server.sh

timeout: 300runas: root

Page 25: 基于Aws的dev ops实践指南 王毅

Demo Snapshot

Page 26: 基于Aws的dev ops实践指南 王毅

OpsWorks

Page 27: 基于Aws的dev ops实践指南 王毅

OpsWork

AWS OpsWorks is a flexible application management solution with automation tools that enable you to model and control your applications and their supporting infrastructure.

Page 28: 基于Aws的dev ops实践指南 王毅

OpsWorks工作原理

OpsWorksBackend

OpsWorksAgent

Amazon EC2, Amazon EBS, EIP, Amazon VPC, Elastic Load Balancing…. Auto-Scaling, Auto-Healing….

On-instance execution viaChef client/zero

CommandJSON

CommandLog+Status

大大简化了Chef环境的搭建

Page 29: 基于Aws的dev ops实践指南 王毅

Lifecycle events

Page 30: 基于Aws的dev ops实践指南 王毅

Built-in and Custom Chef Recipes

Page 31: 基于Aws的dev ops实践指南 王毅

Custome Recipe Demo– 创建目录

Page 32: 基于Aws的dev ops实践指南 王毅

ElasticBeanstalk

Page 33: 基于Aws的dev ops实践指南 王毅

保存配置为A/B测试保存配置,这样可以很容易的复制和搭建环境

应用程序版本所有的应用程序版本都存储在S3上. 代码同样可以从Git推送!

Elastic Beanstalk 工作原理

Page 34: 基于Aws的dev ops实践指南 王毅

Application

Page 35: 基于Aws的dev ops实践指南 王毅

蓝绿部署

Page 36: 基于Aws的dev ops实践指南 王毅

CLI workflow

Initial app deployment:

$ git init . $ git add .Initialize your Git repository01 Add your code04

$ eb init $ git commit –m “v1.0”Create your Elastic Beanstalk app02 Commit05

Follow the prompts to configure the environment

03 Create the resources and launch the application

06

$ eb create

Page 37: 基于Aws的dev ops实践指南 王毅

CLI workflow

Update your app:

Update your code01

$ git add .$ git commit –m “v2.0”$ eb deploy

Push the new code 02

Monitor the deployment progress03

$ eb status

Page 38: 基于Aws的dev ops实践指南 王毅

Amazon CloudWatch

AWS IAM (Identity & Access Mgmt)

Monitor resourcesManage users, groups &

permissions

贯彻始终的安全与监控

Page 39: 基于Aws的dev ops实践指南 王毅

Provision Deploy Monitor

Customization

Convenience

CloudFormation

CodeDeploy

CloudWatch

Beanstalk

OpsWorks

IAM

Page 40: 基于Aws的dev ops实践指南 王毅