前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微服务与云原生,你真的需要吗?还需要学、需要懂吗?

微服务与云原生,你真的需要吗?还需要学、需要懂吗?

原创
作者头像
一凡sir
修改2023-07-17 10:51:01
3990
修改2023-07-17 10:51:01
举报
文章被收录于专栏:技术成长

什么是微服务、云原生,它们的特点以及优缺点,关于系统架构的发展和演进等等,这里就不再赘述了,有需要的同学可以直走 yifan-online.com

这里,咱们直接讨论两个问题:

一个是,你真的需要微服务与云原生吗?

一个是你需要学、需要懂这些技术吗?

先说结论:

问题一,不一定需要。

微服务和云原生架构,在大的公司和团队,是一定需要的。

中小规模的公司和团队也越来越多的在应用了。

规模很小的团队,业务还很简单的公司,则不那么需要微服务和云原生。

问题二,一定要学、要会。

不论你是否需要和使用它们,你都应该立刻马上去学和掌握它们。

我们不可能一直停留在微小公司和团队的状态,即使眼前没有需求,但是技术发展以及业务变化,或者是个人职业选择,咱们都需要学会和掌握微服务和云原生架构。

下面用两个经历来详细聊一聊这两个问题,大家可以更加容易的来理解。

1 大公司,业务多,团队多,技术栈繁多

在使用微服务和云原生之前的状态:

  • 新产品开发,需要申请开发、测试、线上的各种资源,配置和验证服务环境,这一个基本的过程每次都要消耗一周以上的时间。
  • 现有产品的发布,由于项目代码的影响面非常大,每次的上线前和上线后的覆盖行测试都非常累,提心吊胆,哪怕是很小的改动,都怕触发了隐藏 bug,导致其它的功能出现罢工。
  • 尤其是出现资源变更时,比如:机房的搬迁,服务器故障,需要增加新的机房和更多的服务器时,又是一个巨大的工程,开发、测试和运维同学有需要有专人好几天才可能搞定。
  • 技术栈方面,各种服务器的软件、组件、服务的依赖,更是让运维同学忙得不亦乐乎,也导致服务器很难做到通用和共用。慢慢的,需要维护很多的服务器集群。
  • 业务和团队规模的变化,需要传承交接和完善的资料、文档也会很棘手。团队间的协作,同样是困难重重,很多时候都需要成里专项组来维护系统间的协作和互通,代价巨大。

大家对照着看下,自己所在的公司和团队,是否还有出现上面的这些情况呢?

在公司采用微服务和云原生架构之后,上面的问题是否都完美解决呢?又是怎样一种状态呢?其中有需要做那些事情,投入更多在哪些方面呢?

  • devops 以及微服务平台,简化开发、测试、线上的各种环境依赖。容器化技术让服务器环境标准化,新增加服务器资源时,再也不用担心环境的差异了。
  • 微服务拆分之后,每次的功能变更粒度变得更小,可能前端改几个样式或者布局,不用担心会影响到后端的其他功能变更。后端子系统的变更,也不用担心把其它子系统未经过测试的功能一起发布出去了。这样,也就可以让大家更专注在自己的产品和系统,把精力更好的投入在子系统的优化和可用性等方面。
  • 资源变更在k8s弹性云服务方面就更加简单了。弹性扩缩容变得非常容易,随时都可以按需申请服务器资源,不用担心资源紧张和资源浪费的情况。多地部署也变得极其简单,可以更进一步提高系统的可用性。
  • 再多的技术栈,再复杂的服务依赖,都可以在 docker 中提前制作好,下载构建好的镜像就不再担心有遗漏了。在微服务平台提供的接口中心、权限中心,统一管理服务之间接口依赖,不再需要团队之间一对一的协调和联调,更加成熟的产品化和文档化。
  • 业务和团队规模的变化,都不需要通过同事之间的口口相传,全部知识和依赖都在微服务平台上,只要把权限转移过去就可以了。

通过 devops 以及微服务平台,貌似解决了上面的所有问题,但也带来了一些新的问题。运维开发和平台带来了效率,也会把很多的工作和权限以及责任下放给了开发团队。微服务平台的能力非常多,意味着有大量的配置和操作。有些配置和操作在以前,都是由专业的运维团队来操作的,现在却要开发团队来处理,这也是一大难题。有些配置(如:健康监测、配置文件)如果出现问题,可能会导致集群和服务的不可用,这也是非常严重的风险。

2 微小公司和团队,产品、系统简单,人员少

看到上面大公司遇到的问题,使用微服务和云原生架构之后的情况,是不是感觉所有人都想要了?

而回到现实情况,小的团队可能连微服务平台都无法支撑,更何况定制各种环境和配置呢。

无米之炊,望梅止渴也不是办法呀。

公司的产品可能只需要 1-5 台服务器就可以支撑。这么多的服务器没必要都用来部署k8s集群了。

单一的开发环境,一个 shell 脚本就可以把开发环境以及系统部署、检测都搞定,也就没必要引入容器化和 devops 来支持。

一个人就可以完成全栈开发,没必要再把他分裂成多个角色来左右互搏和互动了。

一个文档可以写清楚的内容,也没必要细分成各种设计、流程、接口文档了。

上面说了这么多,其实不是不需要,不想要,而是条件不成熟,不具性价比。

不使用微服务架构,也需要做好前后端分离,也要做好模块和接口设计。

不使用云原生架构,也可以考虑采购云服务器,也可以考虑使用一些成熟的云服务。当然,也是要权衡成本收益,可以考虑自己来部署和维护一些开源产品。

总结

可见,不论是在大公司还是在微小公司,不论是否急切需要微服务与云原生架构,作为开发工程师,这里的技术和知识,我们都需要立刻马上学习和掌握。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 大公司,业务多,团队多,技术栈繁多
  • 2 微小公司和团队,产品、系统简单,人员少
  • 总结
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档