我在家搭建了一套混合云学习环境

概述

以下为个人学习环境搭建和多年积累经验。

接触软件开发环境从大学到现在差不多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年的突破,不知道,但是后面肯定又会有新的革新技术。搭建的环境为了数字化下的沉淀,包括主要以下几个点:

  1. 建立技术/研发/业务中台与业务
  2. 建立数据中心和大数据计算分析
  3. 建立物联网服务进行物联网互联

同步也会结合机器学习和人工智能场景,但是这个是在上面的环境进行,自己这里定义,机器学习属于大数据场景,人工智能属于业务中台场景。

搭建的整体架构(图片来源于断点科技官网,后期更新)

2、服务器资源环境规划

这里规划的资源相对比较多,同时由于个人原因,分几个角度考虑,采购云服务器至少3年以上服务器,长久的云服务器至少10年以上,域名大概是10年以上,硬件服务器至少可用5年以上,需要保存的长久的资料和短期的资料就比较明确,同步是备份服务器分多地和稳定云盘,确保数据的不丢失,采购的整体计算资源:

CPU40核 500多G内存 10TB的算力和资源阿里云服务器、塔式服务器、MacPro等

内网区的服务器

规划了几个区域如下:

  1. 个人区:个人使用的
  2. 网络区(中转区):方便公网的访问使用
  3. 内网区(安全区):方便数据存储和重要资源
  4. 备份区(安全区):数据存储和恢复

个人区:

主要针对的是自己个人PC使用的,还有移动网络等便利的情况下使用

序号服务器配置年限电脑服务器
1开发笔记本MacBook4年32G内存 1T硬盘
2开发PC 4年32G内存 1T硬盘
3移动端iPhone7 Plus4年

网络区:

主要是针对于公网部分的应用和数据,方便自己随时访问,比如放博客,放一些公共的环境元素,追求访问的速度

阿里云服务器是刚好21年双11活动采购的,相对比较划算

序号服务器配置年限备注
14核32G内存250G硬盘 5M3年阿里云
24核16G内存40G硬盘 5M3年阿里云
32核4G内存40G硬盘 5M10年阿里云(长期服务器)
42核4G内存80G硬盘 8M3年腾讯云(放弃,真的难用)
516核64G内存500G硬盘1年阿里云

内网区:

内网区的建设主要针对于大数据存储使用,外网的磁盘和资源采购费用高,所以规划在内网区,追求稳定性

序号区域服务名服务器配置
1中台区platform-0132核32G内存250G硬盘
2(技术/业务)platform-0232核32G内存250G硬盘
3platform-0332核32G内存250G硬盘
4platform-0432核32G内存250G硬盘
5platform-0532核32G内存250G硬盘
6platform-0632核32G内存250G硬盘
7platform-0732核16G内存250G硬盘
8数据区bigdata-0132核64G内存1T硬盘
9bigdata-0232核64G内存1T硬盘
10bigdata-0332核64G内存1T硬盘
11bigdata-0432核64G内存1T硬盘
bigdata-0532核32G内存1T硬盘

备份区:

这部分主要利用公网第三方云平台,进行的数据备份和管理,或者分享等,比如github、网盘、海外区域等

序号应用名称备注
1百度云大型或者大软件的备份
2七牛云主要是cdn和常用软件,结合自动化使用
3github长期服务器
4gitlab长期服务器
5阿里云主要是容器镜像的管理备份

PaaS平台环境规划和搭建

主要是包括所有的管理过程,整合成一套体系,方便自己的工具管理整合起来,同时集成自动化部署操作,便于后期自动迁移

DevOps 实践体系和流程总结- 知乎

研发过程管理

序号说明应用
1文档管理vuepress
2wiki管理gitlab
3项目管理jira
4邮件通知163邮箱
5流程图管理drawio + gitlab

容器云环境规划(公网)

序号说明应用
1私有云管理kubernates
2私有云平台kuboard
3反向代码nginx
4注册中心docker registry
5负载均衡ingress
6serverless服务OpenWhisk

基础环境规划

序号说明应用
1私有数据存储mysql
2开发数据库mysql
2代码管理(备份)gitea
3反向代理nginx
4数据存储mysql
5短信通知短信服务
6缓存管理redis
7消息kafka
8消息管理kafka-manager
9jdk环境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
9App构建工具hbuilder

大数据环境

序号说明应用
1大数据管理平台CDH
2数据采集Flume
3数据离线计算Spark
4流(实时)处理框架Flink
5数据总线Kafka
6ETL数据采集工具Kettle
7MySQL存储MySQL
8数据存储Hadoop
9数据存储Hdfs
10数据仓库Hive
11非结构化语言查询HBase
12数据可视化查询Hue
13分布式协调中心Zookeeper
14Hadoop 资源管理器Yarn
15Spark的Rest服务livy
16搜索引擎Solr
17BI报表工具Superset

个人的基础研发框架搭建

这里整合了很多内容,主要是结合自己的gitee和github学习基线来整合起来的,同时整合成一套东西,在上面建设业务系统,快速搭建成一套东西。

暂时使用网上的图片

基础研发框架规划

序号业务线研发框架工程名
1技术DevOps 研发体系文档
2微服务研发引擎alinesno-cloud-core
3前端框架alinesno-ui
1运维自动化运维体系文档
2应用监控预警服务alinesno-cat
3审计日志监控服务alinesno-cloud-logger
4Ansible 自动化操作服务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
13CMS 内容管理服务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开发笔记本MacBook23000
2开发PC 5000
3移动端iPhone7 Plus4000
4阿里云4核32G内存250G硬盘 5M2000
5阿里云4核16G内存40G硬盘 5M1020
6阿里云2核4G内存40G硬盘 5M4000
7腾讯云2核4G内存80G硬盘 8M700
8阿里云16核64G内存500G硬盘20000
9硬件服务器40核512G内存10T硬盘 5M(淘宝二手)20000
10其它第三方(比如域名)1000
总和预计8万左右
采购的资源列表

2、投入和产出的比

这里主要按个人的角度考虑,假设一天中,因为开发,笔记本快慢,工具便利速度,资料查看效率等,每天节省1.5个小时换算,按4年周期时间,则可节省90天左右。

按天收益角度考虑,天收益在1500~2500左右,则可节省13万~22万左右,而其它的个人提升另为算,所以整体来说,投入和产出比相对是比较高的。

总结

以上是自己搭建个人学习环境的情况和思路

注:以下为个人学习环境搭建使用记录,部分图片为网上获取,如侵权则删除。