如果你觉得这篇文章对你有帮助,请不要吝惜你的“关注”、“点赞”、“评价”,我们可以进一步讨论实现方案和细节。你的支持永远是我前进的动力~~~
许多公司在做转型,原来做私有化部署的项目,想改造为SaaS,迁移至云上,同时给多个客户提供服务。这样既节省了资源,也能快速拓客。
下面从如下几点探讨下改造方案,欢迎大家一起探讨
面向K8S的云原生架构设计
SaaS运行环境运行在阿里云ACK中,私有化部署项目运行的K3S中
研发与线上运行的一致性
可观测性设计
云原生设计
业务运行环境:虚拟机、容器、k8s、k3s
基于阿里云PaaS产品:各类中间件、sls、镜像仓库、代码库、maven仓库等
成本控制:serverless产品、按需扩容
便于私有化部署的架构、一致性:虚拟机、k3s、预留组件的可选择性
可观测系统
日志、监控、报警,全链路追踪,验证ARMS、SLS的能力
DevOps
试用云效、自研DevOps平台、多阶段构建
安全性
操作安全、审计:堡垒机
服务器尽量不要开放外网访问
IP访问白名单设置(如xxl-job/nacos等管理平台)
VPN:非办公网访问
业务系统安全问题:越权(水平、垂直)、等保三级测评(云产品上线前做一次安全测评)
运维支持
云产品开通
堡垒机、DNS、VPN部署
办公网与阿里云VPC网络打通
办公网与测试环境Pod互通
SaaS改造
不少操作没有租户参数,需要改造:私有化部署时只有一个租户,使用的时候不会有问题,但上云后给多个租户同时使用,问题就会暴露出来,要提前处理掉
全局变量存放的信息,在多租户下会存在重复的问题
定时调度:使用分布式
事务检查:是否有事务注解等
返回错误码而非异常信息或堆栈输出
日志输出统一使用log,不要用sysout和printstacke。接入sls。log增加输出至控制台
代码注释补充
使用NLB解决非http下自定义TCP协议的方式
有状态服务:调用的精准调用、使用分布式缓存解除状态(设备数据统计)
有效状与无状态服务分离:如websocket服务
定时轮询可能导致的高并发量问题?推拉接合,分布式缓存的应用
私有化部署支持:虚拟机、k3s部署,统一架构
客户端版本采集,升级方案