下哉k程
:https://www.sisuoit.com/2811.html
什么叫云原生应用?
简单来说就是满足云原生最佳技术实践和管理实践要求,应用从需求提出开始就使用云原生资源和服务能力,并最终能够持续交付到云平台的应用;同时在该应用交付完成后还需要具备足够的管控治理能力和可观测性。
微服务开发就是云原生应用?
注意微服务只是云原生应用的一个关键技术实践,采用微服务开发是构建云原生应用的必要条件而非充分条件。云原生应用的判断条件是生在云上,并向云持续交付的能力。
比如你采用微服务开发,最终将开发完成的应用,申请虚拟机资源部署到云平台上,那么不能叫云原生应用,不符合上面谈到的重复利用云原生服务,持续向云交付的能力。
从技术服务到BaaS后端服务
在ServerLess无服务器化里面会谈到BaaS后端能力即服务。ServerLess开发期望的就是FAAS开发足够轻,甚至连笨重的开发框架都没有,最终是函数编程并调用后端能力。
企业级应用开发暂时无法做到这点。
云原生强调从资源到服务,那么自然涉及到类似数据库,消息,缓存等各种技术服务能力提供。但是任何传统单体业务系统开发,底层都是一个技术平台。
这个技术平台一般来说包括了通常说的系统管理和流程引擎这两个关键能力。
单体拆分为微服务后,这两个能力必须下沉为后端共性服务提供。
相反,对于数据库,消息反而不是重点。
原因就是你在开发阶段还是采用的传统的自己搭建数据库,JDBC连接等方式,你会发现迁移到云服务后,可以很方便的迁移为云平台提供的数据库服务能力。你需要的仅仅是更换JDBC连接或JMS消息订阅地址。
也就是说对于中间件资源池这种关键技术服务能力迁移很容易实现。
反而是对于类似4A,流程平台等共性平台服务层能力要及早构建,作为PaaS技术服务平台的一个关键组成。
微服务和前后端分离
在很早我谈微服务的时候,一直在说微服务并没有明确指出一定要前后端分离。
如果你是开发的APP移动应用,你会看到APP前端应用和后端服务自然是分离的。而且前端APP也不会再进行拆分。即变成了。
一个前端APP=>多个后端微服务Service
如果你是开发传统PC桌面端的应用,前端通过浏览器访问。那么一个微服务本身是可以包括前端,或者说前后端不分离的。只是为了更好地贯彻横向分层和服务解耦。
即使PC端应用开发也推荐前后端分离开发。
前后端分离开发实际带来几个变化。
其一是团队人员分工更加细化,前端开发人员和后端开发人员本身也分离。其二是前后端分离后更加容易保证后端Service服务的稳定性,不少的需求变更或变化更多的是发生在前端模块。其三是前后端分离后方便我们后续抽象服务编排和组合层能力。
开发阶段只使用SpingBoot
微服务开发框架,大家说的最多的就是SpingCloud,本身具备了微服务开发,运行,管控治理所需要的各种能力。
但是个人提出微服务开发阶段只使用SpingBoot能力。能够确保开发出一个独立的微服务模块,并暴露Rest API接口服务即可。在开发阶段不应该引入太多的微服务管理需求,这些管控治理能力应该是后续通过ServiceMesh服务网格增加边车代理的思路来实现。