概述
以下为个人学习环境搭建和多年积累经验。
接触软件开发环境从大学到现在差不多10年这样,这个过程不管是在自己学习的环境还有电脑等等都积累了大量的学习材料和资料,包括软件安装等大量的库存,这些材料当前基本上目前的环境是无法满足学习和进一步提升的要求点,考虑左右,综合各个成本点,搭建一套可以满足自己未来4年左右的学习环境。
整体阐述从以下思路进行阐述:
- 为什么要搭建个人学习环境
- 学习环境需要搭建哪些东西
- 怎么结合自动化运维来管理环境
- 这套环境搭建的成本是怎么样的
为什么要搭建个人学习环境
这个是一个过程中多次遇到的痛苦,迁移,丢失,迁移,丢失 … 以前代码仓库是放在阿里svn库,但是它一停,就没了 …
1、学习环境的限制
收费项目太多:
代码仓库的会员收费,运维告警的会员收费,在线流程图的收费,Git存储会员升级的收费,网盘资料大小限制,下载收费等等多种收费项目太多,转移过多次,成本太高;
资料长期的沉淀:
平时学习的项目,脚本,代码很多,这些一记录久了就慢慢变成一套东西,每一个技术的学习就会有一个例子,深入学习这个例子又丰富,还有各种github仓库的学习,修改还有笔记,10年下来,这些资料已经有上百个git仓库,十几G的项目代码,mysql数据库就有上百个,有些脚本也找不到了;
网络速度的限制:
自己验证安装过的软件库,也有近上百个,哪个可以使用,哪个不可以使用,另一个是下载的限制,每次下载大的软件都需要开通会员,速度极慢,影响学习环境和心情;
开发环境的限制:
我需要运行学习的项目,需要收集他们在网络运行的数据,需要计算大数据,需要利用大数据进行一些分析学习,开始阿里云,aws,oracle cloud等等免费的,但是发现这些限制只要想多加一点东西,硬盘就说不行,费用就需要添加,开始也不断的加,开始1k、2k、3k … 整合下来,一年的成本就是基本上过万了,过了两三年,这些服务器就不可用,数据又需要重新迁移,每次迁移的周期成本极高;
2、个人多年学习管理的丢失
过程笔记的丢失:
以前使用163博客,lofter博客等这些网络工具,后面印象笔记,再到有道笔记,最后发现这些笔记限制性大,另一个是博客的关闭,另一个是个性化的要求无法满足,最后使用了wordpress博客,一使用就是近乎8~9年,保存了我很多的历史笔记和记录,包括一些心得点,但是场景不能满足,比如在跟开源团队讨论会议的时候,做的笔记记录,又是放在gitee或者github上面,久了,不维护之后,原来的记录又很难找到。
成长管理计划的丢失:
每年事情都会有一个计划,自己每学习一样东西或者跟别人沟通的时候,都会有计划和图形规划,存在着大量的草图和自我管理过程,开始使用的是笔记本画草图,另一个是使用visio,再到其它的画图工具,然后计划使用gitbook和markdown,再到docsify等工具,最后再到vuepress,管理工具也由禅道、jira都使用,这些自己过程和记录,笔记本有可能丢失或者换一本就没有了,原来考虑过iPad,但是效果也不理想。另一个是电脑格式化,或者每3~5年一换,资料都有损失,大量的xmind导图不再找到。
个人时间的无形流失:
不管是资料还有环境,还有网络,还有各种切换过程中,学习材料 的流失,每次都需要重新再做一次,做的速度可能会更快了,但是无形之中,时间的流失,比如每切换一个电脑需要至少7天的环境适配,资料适配,每迁移一次数据环境,至少需要3天的导入导出,还有验证是否正常,每一次笔记的迁移,至少需要2~3天的迁移,包括图片,材料还有环境的准备等,而且这个过程,需要使用的服务,又需要重新的付费,这些周期整合下来,个人时间在无形当中消耗,同步还有初始过程的时间等。
个人学习需要搭建哪些东西
以前是ssh(ssm),再后来是devops,再到后来是微服务,中台,物联网,大数据AI .. 技术不断提高要求,传统的编程已经很难了
1、规划我的学习目标
在当前数字化、中台、物联网等,还有人工智能成熟的情况下,其它的AR,元宇宙等在不断的研发下,会不会下一个5年的突破,不知道,但是后面肯定又会有新的革新技术。搭建的环境为了数字化下的沉淀,包括主要以下几个点:
- 建立技术/研发/业务中台与业务
- 建立数据中心和大数据计算分析
- 建立物联网服务进行物联网互联
同步也会结合机器学习和人工智能场景,但是这个是在上面的环境进行,自己这里定义,机器学习属于大数据场景,人工智能属于业务中台场景。
2、服务器资源环境规划
这里规划的资源相对比较多,同时由于个人原因,分几个角度考虑,采购云服务器至少3年以上服务器,长久的云服务器至少10年以上,域名大概是10年以上,硬件服务器至少可用5年以上,需要保存的长久的资料和短期的资料就比较明确,同步是备份服务器分多地和稳定云盘,确保数据的不丢失,采购的整体计算资源:
CPU40核 500多G内存 10TB的算力和资源阿里云服务器、塔式服务器、MacPro等
规划了几个区域如下:
- 个人区:个人使用的
- 网络区(中转区):方便公网的访问使用
- 内网区(安全区):方便数据存储和重要资源
- 备份区(安全区):数据存储和恢复
个人区:
主要针对的是自己个人PC使用的,还有移动网络等便利的情况下使用
序号 | 服务器配置 | 年限 | 电脑服务器 |
1 | 开发笔记本MacBook | 4年 | 32G内存 1T硬盘 |
2 | 开发PC | 4年 | 32G内存 1T硬盘 |
3 | 移动端iPhone7 Plus | 4年 |
网络区:
主要是针对于公网部分的应用和数据,方便自己随时访问,比如放博客,放一些公共的环境元素,追求访问的速度
阿里云服务器是刚好21年双11活动采购的,相对比较划算
序号 | 服务器配置 | 年限 | 备注 |
1 | 4核32G内存250G硬盘 5M | 3年 | 阿里云 |
2 | 4核16G内存40G硬盘 5M | 3年 | 阿里云 |
3 | 2核4G内存40G硬盘 5M | 10年 | 阿里云(长期服务器) |
4 | 2核4G内存80G硬盘 8M | 3年 | 腾讯云(放弃,真的难用) |
5 | 16核64G内存500G硬盘 | 1年 | 阿里云 |
内网区:
内网区的建设主要针对于大数据存储使用,外网的磁盘和资源采购费用高,所以规划在内网区,追求稳定性
序号 | 区域 | 服务名 | 服务器配置 |
1 | 中台区 | platform-01 | 32核32G内存250G硬盘 |
2 | (技术/业务) | platform-02 | 32核32G内存250G硬盘 |
3 | platform-03 | 32核32G内存250G硬盘 | |
4 | platform-04 | 32核32G内存250G硬盘 | |
5 | platform-05 | 32核32G内存250G硬盘 | |
6 | platform-06 | 32核32G内存250G硬盘 | |
7 | platform-07 | 32核16G内存250G硬盘 | |
8 | 数据区 | bigdata-01 | 32核64G内存1T硬盘 |
9 | bigdata-02 | 32核64G内存1T硬盘 | |
10 | bigdata-03 | 32核64G内存1T硬盘 | |
11 | bigdata-04 | 32核64G内存1T硬盘 | |
bigdata-05 | 32核32G内存1T硬盘 |
备份区:
这部分主要利用公网第三方云平台,进行的数据备份和管理,或者分享等,比如github、网盘、海外区域等
序号 | 应用名称 | 备注 |
1 | 百度云 | 大型或者大软件的备份 |
2 | 七牛云 | 主要是cdn和常用软件,结合自动化使用 |
3 | github | 长期服务器 |
4 | gitlab | 长期服务器 |
5 | 阿里云 | 主要是容器镜像的管理备份 |
PaaS平台环境规划和搭建
主要是包括所有的管理过程,整合成一套体系,方便自己的工具管理整合起来,同时集成自动化部署操作,便于后期自动迁移
研发过程管理
序号 | 说明 | 应用 |
1 | 文档管理 | vuepress |
2 | wiki管理 | gitlab |
3 | 项目管理 | jira |
4 | 邮件通知 | 163邮箱 |
5 | 流程图管理 | drawio + gitlab |
容器云环境规划(公网)
序号 | 说明 | 应用 |
1 | 私有云管理 | kubernates |
2 | 私有云平台 | kuboard |
3 | 反向代码 | nginx |
4 | 注册中心 | docker registry |
5 | 负载均衡 | ingress |
6 | serverless服务 | OpenWhisk |
基础环境规划
序号 | 说明 | 应用 |
1 | 私有数据存储 | mysql |
2 | 开发数据库 | mysql |
2 | 代码管理(备份) | gitea |
3 | 反向代理 | nginx |
4 | 数据存储 | mysql |
5 | 短信通知 | 短信服务 |
6 | 缓存管理 | redis |
7 | 消息 | kafka |
8 | 消息管理 | kafka-manager |
9 | jdk环境 | jdk |
10 | 开发工具 | idea |
11 | 分布式存储 | minio |
12 | 分布式存储 | qiniu |
自动化环境规划
序号 | 说明 | 应用 |
1 | 代码管理 | gitlab+runner |
2 | 代码管理工具 | sourcetree |
3 | 持续集成平台 | jenkins |
3 | 持续集成平台(本地) | jenkins |
4 | 私有仓库 | nexus |
5 | 工程构建工具 | maven |
6 | 容器化 | docker |
7 | 自动化工作流 | github+action |
8 | 自动化脚本 | ansible |
9 | App构建工具 | hbuilder |
大数据环境
序号 | 说明 | 应用 |
1 | 大数据管理平台 | CDH |
2 | 数据采集 | Flume |
3 | 数据离线计算 | Spark |
4 | 流(实时)处理框架 | Flink |
5 | 数据总线 | Kafka |
6 | ETL数据采集工具 | Kettle |
7 | MySQL存储 | MySQL |
8 | 数据存储 | Hadoop |
9 | 数据存储 | Hdfs |
10 | 数据仓库 | Hive |
11 | 非结构化语言查询 | HBase |
12 | 数据可视化查询 | Hue |
13 | 分布式协调中心 | Zookeeper |
14 | Hadoop 资源管理器 | Yarn |
15 | Spark的Rest服务 | livy |
16 | 搜索引擎 | Solr |
17 | BI报表工具 | Superset |
个人的基础研发框架搭建
这里整合了很多内容,主要是结合自己的gitee和github学习基线来整合起来的,同时整合成一套东西,在上面建设业务系统,快速搭建成一套东西。
基础研发框架规划
序号 | 业务线 | 研发框架 | 工程名 |
1 | 技术 | DevOps 研发体系 | 文档 |
2 | 微服务研发引擎 | alinesno-cloud-core | |
3 | 前端框架 | alinesno-ui | |
1 | 运维 | 自动化运维体系 | 文档 |
2 | 应用监控预警服务 | alinesno-cat | |
3 | 审计日志监控服务 | alinesno-cloud-logger | |
4 | Ansible 自动化操作服务 | alinesno-cloud-operation | |
1 | 研发 | 基础权限管理服务 | alinesno-cloud-authority |
2 | 云门户管理服务 | alinesno-cloud-platform | |
2 | 会员管理服务 | alinesno-cloud-member | |
3 | 通知管理服务 | alinesno-cloud-base-notice | |
4 | 支付管理服务 | alinesno-cloud-base-pay | |
5 | 文档打印管理服务 | alinesno-cloud-base-print | |
6 | 存储管理服务 | alinesno-cloud-base-storage | |
7 | 工作流管理服务 | alinesno-cloud-base-workflow | |
8 | 网关管理服务 | alinesno-cloud-gateway | |
8 | 中台连接器服务 | alinesno-cloud-open | |
8 | 分布式定时任务服务 | alinesno-cloud-scheduler | |
11 | 单点登陆管理服务 | alinesno-cloud-platform-cas | |
13 | CMS 内容管理服务 | alinesno-cloud-cms | |
1 | 数据 | 数据仓库体系 | 文档 |
2 | 元数据管理服务 | alinesno-cloud-data-metadata | |
2 | 主数据管理服务 | alinesno-cloud-data-master | |
2 | 数据集成服务 | alinesno-cloud-data-etl | |
2 | 数据开放服务 | alinesno-cloud-data-open | |
2 | 数据开发服务 | alinesno-cloud-data-develop | |
3 | 数据分析展示服务 | alinesno-cloud-data-display | |
1 | 物联网 | 网关服务服务 | alinesno-cloud-gateway |
2 | 网关开放平台 | alinesno-cloud-gateway-open | |
2 | 物联网后台服务 | alinesno-cloud-iot | |
7 | |||
8 | 业务服务 | 低代码快速开发服务 | alinesno-cloud-lowcode |
9 | 代码生成器服务 | alinesno-cloud-initializr-admin |
怎么结合自动化运维来管理环境
一个人的管理,主要是结合自动化,达到发现问题,处理问题两个角度。
1、自动化运维的管理和规划
整个自动化的管理和通知,需要结合很多东西,整体环境怎么自动化操作和管理,这里主要是结合监控-巡检-预警-通知几个序列,监控从服务器-应用-日志-安全几个维度监控,应用交互(chatops/通知)从移动端来进行管理,毕竟一个人管理这些环境,没有工具是很难去集成管理的,自动化操作主要是集成jenkins和自研应用来进行管理。
2、自动化运维部署和搭建
运维管理平台
序号 | 说明 | 应用 |
1 | 自动化工具 | ansible+jenkins |
2 | 日志监控 | elk |
3 | 日志收集 | prometheus |
4 | 日志展示 | grafana |
5 | 监控报警 | dingtalk |
6 | 链路跟踪 | pinpoint |
7 | 运维交互(chat-ops) | DingTalk |
8 | 自动化工具 | ansible |
9 | 应用监控 | alinesno-cat |
10 | 监控通知集成 | 自研webhook平台 |
3、ChatOps自动化管理规划
整体收集大量的应用监控预警通知,通过监控通知集成,与dingtalk集成交互,形成有问题可发现,可处理,自动化,移动化的一体系。
整体结合钉钉进行ChatOps的自动化运维监控:
这套环境搭建的成本是多少
这个根据个人的情况来定,这里主要是结合自身的基础情况和评估来看,针对于这个成本来说,自己主要考虑的是时间成本,对自己而言时间是最大的成本点。
1、环境的采购费用
这里主要针对于个人和性价比考虑,这里不包括企业的,以下年限为一般生命周期多少年,这里只是做评估:
序号 | 服务器配置 | 价位(大概) |
1 | 开发笔记本MacBook | 23000 |
2 | 开发PC | 5000 |
3 | 移动端iPhone7 Plus | 4000 |
4 | 阿里云4核32G内存250G硬盘 5M | 2000 |
5 | 阿里云4核16G内存40G硬盘 5M | 1020 |
6 | 阿里云2核4G内存40G硬盘 5M | 4000 |
7 | 腾讯云2核4G内存80G硬盘 8M | 700 |
8 | 阿里云16核64G内存500G硬盘 | 20000 |
9 | 硬件服务器40核512G内存10T硬盘 5M(淘宝二手) | 20000 |
10 | 其它第三方(比如域名) | 1000 |
总和 | 预计8万左右 |
2、投入和产出的比
这里主要按个人的角度考虑,假设一天中,因为开发,笔记本快慢,工具便利速度,资料查看效率等,每天节省1.5个小时换算,按4年周期时间,则可节省90天左右。
按天收益角度考虑,天收益在1500~2500左右,则可节省13万~22万左右,而其它的个人提升另为算,所以整体来说,投入和产出比相对是比较高的。
总结
以上是自己搭建个人学习环境的情况和思路
注:以下为个人学习环境搭建使用记录,部分图片为网上获取,如侵权则删除。