devops及混合云
devops技术栈持续集成CI(Continuous Integration):gitlab ci。开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。持续交付CD(Continuous Delivery):gitlab cd。完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续
目录
devops
技术栈
持续集成CI(Continuous Integration)
:gitlab ci。开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。
持续交付CD(Continuous Delivery)
:gitlab cd。完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境中。
容器
:Docker。
编排
:K8S。
服务注册与发现:Consul / etcd
日志管理
:Cat+Sentry,还有种常用的是ELK。
系统监控
:Prometheus。
负载均衡
:Nginx。
网关
:Kong,zuul。
链路追踪
:Zipkin。
报警
:推送到工作群。
SRE
Site Reliability Engineering 的缩写。其中 site 是指 website,可以翻译为网站可靠性工程师。
SRE 的首要工作任务是保证 SLA。SLA 是 service-level agreement 的缩写,没有贴切的中文翻译,我们继续用缩写好了。SLA 一般指的是系统的功能指标,比方说系统可用性(availability)达到 99.99%;对于 95% 的请求,响应延迟(latency)低于 200 毫秒等等。
容量规划与实施
要回答两个基本问题:要支持每秒 X 个请求的流量,需要多少台机器?给你 Y 台机器,如何部署服务栈(serving stack)使其服务容量(capacity)最大,即每秒支持的请求数最多。serving stack 由很多服务程序(server)构成,各个 server 有各自的资源需求(每个进程用多少内存,多少CPU)。每个 server 有多个 replica,我们要算出各个 server 的 replica 的合理数目,让计算资源得到充分利用。SRE 开发了专门的工具来做这件事件,因为我们不想对全球多个数据中心都分别手算一遍。 server 的性能会随时间变化(新版本通常会变慢,因为加了更多的功能),我们要及时调整 replica 的数目。每个 server 的性能变化不一样,replica 的数目要“配平”。
部署新的服务集群(serving cluster)
每年都有新的数据中心(Data Center)上线,也有旧的数据中心下线,那么我们的 serving stack 也会跟着迁移。“部署”不是去机房安装机器,实际上工作这么多年,我一次也没有见过跑我写的服务程序的机器。新的数据中心通常会有新一代的硬件,我们的容量规划工具要能适应多种的硬件类型(CPU 数目、内存大小)。
冗余与容错
在 Google,我们有数据中心级别的容错,任何一个数据中心可以随时下线维护,对外服务不受影响。进一步说,我们的容量规划要做到允许两个数据中心同时下线。比方说某个数据中心正在例行下线维护,这时另外一个数据中心受突发事件影响必须立刻下线,那么我们的系统还要能正常提供服务。
负载均衡
上线新的服务(on-boarding service)
监控(Monitoring)
几个最基本的监控指标:
- 流量 traffic, eg. queries per second
- 延迟 latency
- 错误率 error ratio
- 资源使用率 utilization
值班(on-call)
救火(Firefighting)
混合云
混合云融合了公有云和私有云,是近年来云计算的主要模式和发展方向。我们已经知道私有云主要是面向企业用户,出于安全考虑,企业更愿意将数据存放在私有云中,但是同时又希望可以获得公有云的计算资源,在这种情况下混合云被越来越多的采用,它将公有云和私有云进行混合和匹配,以获得最佳的效果,这种个性化的解决方案,达到了既省钱又安全的目的。
基础架构即服务(IaaS)也称为云基础架构服务, 是广泛认可的三个云服务模型之一(另外两个分别是平台即服务(PaaS)和软件即服务(SaaS)),它可以让用户享受到本地计算资源的所有优势,而又不会有额外的开销。在 IaaS 模型中,用户负责处理应用、数据、操作系统、中间件和运行时。
平台即服务(PaaS)是一种由第三方提供硬件和应用软件平台的云计算形式。PaaS 主要面向开发人员和程序员,它允许用户开发、运行和管理自己的应用,而无需构建和维护通常与该流程相关联的基础架构或平台。
SaaS 是一项通常通过 Web 浏览器将服务提供商管理的 Web 应用交付给用户的服务。该服务会为用户完成软件更新、漏洞修复及其他常规软件维护工作,而用户将通过控制面板或 API 连接至应用。此外,SaaS 还消除了在每个用户计算机上本地安装应用的必要,从而使小组或团队可根据需要使用更多方法来访问软件。
参考:什么是混合云?
更多推荐
所有评论(0)