规划怎样做网站,仿摄影网站,手机报价网站大全,有哪些网站制作公司快速了解云计算与云原生 云计算云原生DevOps容器持续交付微服务 云计算
在讲云原生之前#xff0c;先来讲讲云计算
其中云原生属于技术架构理念#xff0c;而云计算提供应用所需的基础资源#xff0c;云计算是云原生的基础#xff0c;两者是相辅相成的
云计算简单来说先来讲讲云计算
其中云原生属于技术架构理念而云计算提供应用所需的基础资源云计算是云原生的基础两者是相辅相成的
云计算简单来说就是一种随时随地给大家提供解决网络资源的一种计算服务和应用
关于云计算的三种服务模式
Saas(软件即服务)运用到我们的生活中就是各种云存储云文档等等完全不用自己去开发直接拿来用就可以Paas(平台即服务)服务商提供给你一个框架还有各种基础功能你可以在这个平台上开发不同的软件Laas(基础设施即服务)服务商只出租硬件设施比如服务器硬盘或者网络等给需要这些基础设施资源的人
三种模式也可以这样理解 假如你有一个业务是需要用 Word写东西做记录 最基础版本就是laas是服务商租你一台没有系统的电脑 中间版本paas是服务商租你一个带win10的电脑 最高版本就是saas就是服务商租你一台带win10还预装了word的电脑
专业图理解
云原生
云原生(Cloud Native)是一种构建和运行充分利用云计算模型优势的应用程序的方法
云原生概括为4个要点DevOps持续交付微服务容器 符合云原生架构的应用程序采用开源堆栈K8SDocker进行容器化基于微服务架构提高灵活性和可维护性借助敏捷方法、DevOps支持持续迭代和运维自动化利用云平台设施实现弹性伸缩、动态调度、优化资源利用率
DevOps DevOps中的Dev指的是Development开发Ops指的是Operations运维用一句话来说DevOps就是打通开发运维的壁垒实现开发运维一体化 DevOps是为了填补开发端和运维端之间的信息鸿沟改善团队之间的协作关系实际上DevOps应该还包括测试
关于软件行业的研发模式大致有三个阶段瀑布式开发、敏捷开发、DevOps
瀑布式开发传统的软件开发流程软件开发人员花费数周和数月编写代码然后将代码交给QA质量保障团队进行测试然后将最终的发布版交给运维团队去布署。所有的这三个阶段即开发测试布署
也叫瀑布(Waterfall)模型就是等一个阶段所有工作完成之后再进入下一个阶段
敏捷开发是一种能应对快速变化需求的软件开发能力。就是把一个大项目分为多个相互联系但也可独立运行的小项目并分别完成在此过程中软件一直处于可使用状态
敏捷开发优势在于把一艘大船变成许多条小船每条小船各司其职分配小目标所有的小目标合起来就能完成大目标。效率高每个人职责分明。
不足之处在于小团队做不到拥有开阔的视野看不到所有团队都在一起做什么事情大家只知道埋头苦干做好自己的部分就可以但看不到全局不知道全局发生了什么事情。对于一些不可分割的大需求需要一次性派很多人手同时做的需求敏捷开发就不再合适
虽然敏捷开发大幅提升了软件开发的效率和版本更新的速度但是它的效果仅限于开发环节对于运维人员来说就是不要出问题但是发生改变的时候最容易出问题。因此运维非常排斥“改变”。
因此才出现了DevOps从目标来看DevOps就是让开发人员和运维人员更好地沟通合作通过自动化流程来使得软件整体过程更加快捷和可靠 容器
在软件开发过程中通常会涉及以下几种环境 开发环境用于开发人员编写、调试和测试软件的环境包括开发工具、集成开发环境IDE、调试器、编译器等软件工具以及开发人员个人的计算机或开发服务器。 测试环境用于软件测试的环境包括测试服务器、测试数据库、测试数据等用于进行单元测试、集成测试、系统测试、性能测试等各种测试活动。 集成环境用于集成开发人员编写的各个模块或组件的环境以验证它们在一起工作的正确性和稳定性。 部署环境用于将开发完成的软件部署到生产环境中的环境包括部署服务器、部署工具、配置管理工具等用于将软件部署到生成环境中进行实际运行和使用。 生产环境软件部署和运行的环境包括服务器、数据库、网络设备、负载均衡器等硬件设备以及用于部署和管理软件的相关软件工具用于提供稳定、可靠的环境使软件能够正常运行并满足用户需求。
对于容器技术来说对软件开发环境带来了许多好处主要包括以下几点 环境一致性 容器技术可以确保开发、测试和生产环境之间的一致性。开发人员可以在他们的开发机器上构建容器然后将这些容器部署到测试环境和生产环境中从而避免了“在我的机器上可以工作”的问题。 快速部署 容器可以快速部署因为它们包含了应用程序及其所有依赖关系。这意味着开发团队可以更快地构建、测试和部署应用程序从而加快软件开发和交付速度。 资源利用率 容器可以更有效地利用计算资源因为它们可以在单个物理服务器上运行多个容器实例而无需为每个应用程序实例分配独立的虚拟机或物理服务器。 隔离性 容器提供了应用程序之间的隔离这意味着即使在同一台物理服务器上运行多个容器实例它们之间也是相互隔离的。这有助于减少因应用程序之间的冲突而导致的问题。 可移植性 容器可以在各种不同的环境中运行包括开发人员的个人计算机、本地数据中心、云基础设施等。这种可移植性使得开发团队能够更轻松地在不同的环境中部署和运行应用程序。 微服务架构支持 容器技术与微服务架构天然契合。通过容器化应用程序可以更轻松地将应用程序拆分成小型服务并通过容器编排工具如Kubernetes来管理这些服务的部署和伸缩
目前最常用的容器是docker使用go语言编写
持续交付
CI/CD是持续集成Continuous Integration和持续交付/持续部署Continuous Delivery/Continuous Deployment的缩写。它是一种软件开发实践旨在通过自动化的流程和工具来加速软件的开发、测试和部署
持续集成(Continuous integration简称 CI)
持续集成指的是频繁地一天多次将代码集成到主干。它的好处主要有两个
快速发现错误。每完成一点更新就集成到主干可以快速发现错误定位错误也比较容易。 防止分支大幅偏离主干。如果不是经常集成主干又在不断更新会导致以后集成的难度变大甚至难以集成
持续集成强调开发人员提交了新代码之后立刻进行构建、单元测试。根据测试结果我们可以确定新代码和原有代码能否正确地集成在一起
持续交付
持续交付Continuous delivery指的是频繁地将软件的新版本交付给质量团队或者用户以供评审。如果评审通过代码就进入生产阶段
持续交付可以看作持续集成的下一步。它强调的是不管怎么更新软件是随时随地可以交付的
持续交付地将经过测试的代码部署到生产环境中以便随时进行发布。持续交付旨在确保软件在任何时候都是可发布的状态从而降低发布新功能或修复bug的成本
持续部署
持续部署continuous deployment是持续交付的下一步指的是代码通过评审以后自动部署到生产环境它通过自动化的流程将经过测试的代码自动部署到生产环境中从而实现快速、频繁地发布软件
持续部署的目标是代码在任何时刻都是可部署的可以进入生产阶段
持续部署的前提是能自动化完成测试、构建、部署等步骤 CI/CD的实施需要借助各种工具和技术例如版本控制系统如Git、自动化构建工具如Jenkins、Travis CI、自动化测试工具、部署工具如Docker、Kubernetes等。通过CI/CD实践开发团队可以加快软件的交付速度提高软件质量降低风险并提高团队的生产力。这种实践在现代软件开发中被广泛采用并成为提高软件开发效率和质量的重要手段 微服务
讲到微服务架构是以单体架构为基础的就像springcloud是以springboot为基础
通过微服务可将大型应用分解成多个独立的组件其中每个组件都有各自的责任领域。在处理一个用户请求时基于微服务的应用可能会调用许多内部微服务来共同生成其响应
多个独立的组件指的就是微服务独立服务一般有明确定义的API用于通信独立服务通常由一个小型团队负责针对每个独立服务的开发部署运营维护扩展等都不应该影响其他服务每个服务应该针对一组功能进行设计专注于解决特定的问题每个服务不强调使用同一语言这种称之为技术自由
容器是微服务架构的绝佳示例现代云原生应用使用容器来构建微服务