云原生学习路线总结避坑版

287 阅读6分钟

云原生概述

云原生的代表技术包括容器、服务网络、微服务、不可变基础设置和声明式API等。

采用云原生技术有利于组织在公有云、私有云和混合云等新型动态环境中构建和运行可弹性扩展的应用。

可以将云原生解释为是基于微服务的架构而开发的应用业务,在开发的最开始就按照微服务架构进行开发和部署,即以容器的方式进行打包、上云,并由云基础设施进行调度和管理。

云原生架构有两个核心:一是应用要以微服务方式构建;二是在应用要面向容器部署。

微服务

微服务将原有业务功能分解成多个小的服务,每个服务运行在其独立的容器中,服务于服务间采用轻量级的通信机制(通常是REST API),每个服务都围绕具体业务进行构建,并且能够被独立部署到生产环境。

微服务的特点

  • 将复杂的业务逻辑剥离成小而专一、耦合度低并且高度自治的一组服务,每个服务都是很小的应用。
  • 微服务有独立性。在微服务架构中,每个服务都是独立的业务单元,这个业务单元在部署形态上,是独立的业务进程。对于每个微服务都是独立的代码库,该微服务的代码修改不会影响其他的微服务
  • 从通信效率将,应选择轻量级的通信机制,比如REST API
  • 微服务间松耦合,多个微服务之间没有部署先后顺序的依赖

微服务的典型架构

image.png

将一个大型的单个应用或服务拆分为数个乃至数十个微服务之后,为了便于微服务的查找、配置和服务间的通信,通常需要配置统一的服务注册中心和服务配置中心。另外拆分微服务后,会出现大量服务和接口,因此微服务的调用需要通过统一的服务网关进行,用于权限校验等。

容器

典型的容器就是docker,docker作为一个资源隔离的技术,在比虚拟机轻量级的同时,也能提供较好的隔离机制。在docker基础之上,配合kubernetes,可以做到容器集群的统一管理。

serverless无服务器

让开发者不需要过多考虑服务器的问题,只需要依赖第三方资源服务器后端。

BaaS:后端即服务,它的应用框架由大量的第三方云服务器和API来提供,只需要调用服务器提供商提供的API即可完成相应的功能。

持续集成和持续交付

一个软件在其团队开发周期中,通常有一个master主分支,而新添加的功能都是编写好集成到主分支上,如果集成的频率不高,而主分支发展的又快,那么很有可能写好子功能后集成不到主分支上或者集成上之后会出现很多bug。持续集成就是一种软件工程方法,加快子功能集成到主分支上的频率,可以更快的发现和定位bug。

交付对于不同的团队有不同的含义。对于开发人员来说,开发出需求的功能即可交付;对于部署人员来说,将项目部署好即为交付;对甲方来说,上线新功能可以使用即为交付。持续交付也是一种软件工程的方法,加快软件开发过程中的交付,缩短软件开发周期。

DevOps

个人将其理解为一种开发方法或者开发过程。可以促进开发人员和运维人员之间的沟通合作,通过自动化的流程来达到项目的持续集成和持续交付。

软件开发必须包含两个团队:开发团队和运维团队

  • 开发团队负责开发项目,系统迭代更新
  • 运维团队负责项目测试以及部署上线,维持系统稳定运行

一个软件周期中是由这两个团队相互协作完成的,开发人员写好一部分功能后交给运维人员,就需要等带运维人员的反馈,导致延长软件开发周期。而现在推崇敏捷开发模型,加快软件开发效率,DevOps就可以达到这个效果。

DevOps是敏捷开发方法的进一步发展。它是一种将开发和运营团队整合在一起的文化转型

DevOps核心就在于简化Dev和Ops两个团队之间的工作流程,让软件的整体开发过程更加快捷。

可以把它理解为是一种软件开发模型,在这个开发模型中可以整合各种工具来配合从而加快项目开发

image.png

  • PLAN:开发团队根据用户的目标制定开发计划
  • CODE:根据plan进行编码
  • BUILD:构建项目并运行
  • TEST:测试代码
  • DEPLOY:对项目进行部署
  • OPERATE:运维团队将代码部署到生产环境中
  • MONITOR:项目部署上线后持续监控产品
  • INTEGRATE:将监控阶段收到的反馈发送回 PLAN 阶段,整体反复,持续集成、持续部署

DevOps 工具链主要有两种形式:一体式开放式的工具链。

一体式DevOps工具链可提供完整的解决方案,通常不会与其他第三方工具集成。

开放式工具链可以根据团队的需求使用不同工具进行定制。

发现:主要是对产品进行设计,工具有:Jira Product Discovery, mural, miro

规划:尽早从用户那里获取信息,并根据用户反馈优化产品。工具:Jira Software, confluence, slack

构建

  • 项目的开发环境。工具:kubernetes, docker
  • 源码控制和协作。工具:github, gitlab
  • 持续交付。工具:jenkins

测试:Zephyr Squad, mend, veracode, stackhawk等

部署:部署仪表板或者自动化部署:Jira Software, bitbucket

运维:Jira Software

观察:应用程序和性能监控:appdynamics, slack等

持续反馈:持续反馈包括定期收集反馈的文化和流程,以及从反馈中获取洞察信息的工具。持续反馈实践包括收集和审查 NPS 数据、客户流失调查、缺陷报告、支持工作单,甚至还有推文。工具:slack等

学习资料

docker, kubernetes, 线上托管服务腾讯云容器服务(TKE)等。

云原生基金会CNCF

kubernetes学习链接

https://kuboard.cn/learning/

https://docs.k3s.io/zh

https://www.yuque.com/wukong-zorrm/qdoy5p/rg4ewv

阿里云云原生技术公开课https://developer.aliyun.com/learning/roadmap/cloudnative#course

b站有对应的视频https://www.bilibili.com/video/BV1Et411j7R2/

  • 入门课程腾讯云燎原社https://tke-2gipdtus3676b965-1251009918.ap-shanghai.app.tcloudbase.com/docs/intro
  • 阿里云云原生技术公开课 https://www.bilibili.com/video/BV1r7411r7h7
  • Awesome Cloud Security 云安全资源汇总 https://github.com/teamssix/awesome-cloud-security
  • 深入剖析Kubernetes https://learn.lianglianglee.com/%E4%B8%93%E6%A0%8F/%E6%B7%B1%E5%85%A5%E5%89%96%E6%9E%90Kubernetes/
  • k8s教程 https://kuboard.cn/learning/
  • Kubernetes 从上手到实践 https://learn.lianglianglee.com/%E4%B8%93%E6%A0%8F/Kubernetes%20%E4%BB%8E%E4%B8%8A%E6%89%8B%E5%88%B0%E5%AE%9E%E8%B7%B5
  • 《自己动手写docker》 https://pan.baidu.com/s/1oXQmW9dFAQ3yQM6yyBXJEg 提取码pngk
  • 《云原生安全:攻防实践与体系构建》 https://yd.qq.com/web/bookDetail/31c32c40727786b731c5111