容器技术带来的好处:
-
极其轻量:只打包了必要的Bin/Lib;
-
秒级部署:根据镜像的不同,容器的部署大概在毫秒与秒之间;
-
易于移植:一次构建,随处部署,因为本身是一个自包含镜像;
-
弹性伸缩:Docker、Kubernetes、Mesos这类容器管理平台有着与生俱来的弹性管理能力;
Serverless
-- Lambda是个事件驱动的弹性计算平台。用户可以写一段代码,AWS为其创建一个Lambda资源,这样,当指定的事件来临的时候,AWS的runtime会创建相应运行环境,执行代码,执行完毕(或者timeout)后,回收相应资源。
AWS Lambda是基于容器技术实现的,它把核心函数和服务包装成容器,相信也同样打包了用户代码,同时高度优化了容器的管理和调度,实现快速几乎实时的大规模scale out和scale down。也就是说,同样的业务场景,容器技术让AWS Lambda和IFTTT产生了完全不同效果。同样,也正是容器易于部署,编排的特性,让用户专注于应用本身而不是计算资源的管理,这就催生了Serverless的概念。
Lacalytics的例子很好说明了容器技术以应用/服务为中心的(application centric),而传统基于虚拟化技术的云平台是以机器(虚拟或真实的物理资源)为中心,后者势必让我们去考虑很多所谓DevOps的工作,而显然那将是需要不断提高但却永无止境的付出。
Immutable Infrastructure
(不可变基础架构)-- 所谓不可变基础架构,就是说系统一旦部署,就不再更变升级。当服务/应用需要升级时,只要部署一个新版系统,摧毁旧版就好了。在这个过程中,系统对外服务几乎是持续的。
-
Automate the setup and deployment for every part and every layer of your infrastructure.
-
Never change any part of your system once it is deployed. If you need to change it, deploy a new system.
Immutable Infrastructure vs. Artisanal Infrastructure
(手工艺架构)
Microservice架构
微服务的几个主要特征:
-
组件化的服务(封装)
-
围绕业务能力组织
-
是独立产品不是项目
-
简化的通讯与连接
-
去中心管理
-
去中心数据管理
-
基础架构自动化
-
容错设计
-
递进设计
从这些特性看,容器技术及其相关的编排管理框架是得它成为实现Microservice架构最自然的载体。比如,通常一个Container镜像是一个应用/服务的独立完整的封装,一般要求是Stateless,而且从管理角度看,Container平台都提供自动化的生命周期,scale out和scale down的管理。
Amazon Container Cheat Sheet
Amazon ECS VS
Amazon EKS VS
AWS Fargate