虚拟机 -> 容器 -> 函数计算

昨天看到AWS STEP FUNCTIONS支持嵌套的工作流

,当时就被震惊了。 AWS早些年推出SWF框架提供工作流服务,

后来工作流服务就没有大的工作,SWF框架的核心开发者一部分

离职去了UBER开发Cadence。没想到沉寂了多年的AWS会在STEP FUNCTIONS

支持工作流,看来这个千亿规模的市场又快被颠覆了。

20多年来,工作流都是超大型企业的配置专利,而STEP function的推出

可以预计,高大上的工作流服务会很快走进很多中小企业工作台并被普及应用。

回顾一下自己的工作历史:

从以前的数据中心服务器SA(2006), 到虚拟主机ESX,

再到OPENSTACK(2010)搭建混合云,

然后利用K8S(2014)搭建PaaS,现在SERVERLESS,

计算架构正在发生快速的演进。本文梳理了算力演进历史和未来

内容

  • 从虚拟主机到容器

  • 从容器到unikernel

  • 函数计算的蓬勃发展

什么是虚拟计算

hypervisor分类

  • Type-1 裸机

KVM, QEMU, VMWare, Virtualbox

  • Type-2 托管

XenServer, Hyper-v, KVM, ESX, Xen

虚拟机的问题

一台云主机(8G/4Core/500MBps)在2017年的超过6000元/年

  • 操作慢

一个普通的镜像在2G左右,再加上JAVA应用,一个镜像需要10G.

启动,备份非常不便。

容器计算

|虚拟机| 容器 |:—|:—|:—| 构件| 完整的操作系统和应用| 微内核和应用 虚拟技术| 硬件虚拟化| 操作系统虚拟化

容器计算带来什么好处

  • 容器镜像小

alpine的容量是2M

  • 容器占用的硬件资源更少

一台PC可以启动上百个容器

  • 容器启动快

一般几毫秒可以启动

  • 容器不用备份

容器创建只需要一个Dockerfile,容器镜像是只读镜像

  • 容器和微服务器架构,DevOps, CI/CD天然融合

容器存在的问题

  • 安全

容器共享操作系统内核,具体较低的隔离级别,

如果内核出问题,其他的容器也会处于风险之中

  • 网络

如何在足够的隔离级别和复杂的高效网络连接权衡

容器编排

  • K8S

  • EKS

  • SWARM

  • MARATHON

  • MAGNM

  • FLEET

用户轻松在计算集群里面部署,管理,扩展基于容器的应用而

不用关心容器和服务器的绑定,系统扩容等问题

容器网络

  • CNM

DOCKER规范,libnetwork实现

内置的驱动包括none, host, bridge , overlay, MACvlan

$ docker network ls
 NAME                 DRIVER              SCOPE
68343147e103        bridge               bridge              local
5d7df1d8f633        docker_default       bridge              local
d3990aab14a9        host                 host                local
fe4ec77439f4        none                 null                local

  • CNI

COREOS规范,被K8S, MESOS, CLOUD Foundry采用

json格式的网络模式定义

docker的核心组件

  • LXC

  • AUFS

DOCKER的优势

  • 镜像不可修改

  • 部署没有第三方依赖

  • 注册器简单且容易扩展

  • 容易回滚

对DOCKER的误解:

  • 如果学习了docker就不必学其他的系统知识了

  • 每个容器只能有一个进程

  • 用容器了就不必使用其他的配置管理工具了

  • 必须使用容器才能达到高效敏捷和一致性状态优势

Open Containers Initiative

UniKernel

函数计算的兴起

No server is easier to manage than no-server

背景:

  • 前端技术演进
  1. 强大的原生客户/移动客户端让开发者通过调用各种云服务

编写大规模互联网应用,替换传统的后台服务

  1. HTTP/S应用接口及基于token的安全认证成为工业标准
  • 后台的定制化开发

基于云服务器定制开发

ServerLess VS PaaS

PasS可能是ServerLess的一个迭代

总结

  • 虚拟机是一种更成熟的技术,更安全

  • 容器虚拟化是一个更适合微服务器架构的方案

  • 虚拟机和容器并不是互斥而是互补

  • 函数计算是一下个…