go9

module
v0.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 25, 2023 License: MIT

README

go9

项目课程样例代码仓库, 所有的项目都会放到这个仓库里面, 所有项目集中在一起方便查看与管理

自己写项目或者练习的时候, 使用独立代码仓库

该仓库配套适配视频一起观看, 每天都会有一个对于的tag, 比如看项目课第一天的适配,配套的代码就是 day01 tag

前提

  • 语法
  • 脚本化编程能力
    • 程序配置
    • CLI
    • 核心逻辑
  • 开发简单项目的能力
    • Gin
    • Http标准库
    • sql原生用法
    • gorm 的使用
    • 编写简单的 HTTP API
    • oop 面向对象编程的思想

介绍

项目分为3个阶段, 前面2个阶段: 以标准的后端开发为主, 阶段3准备针对运维

纯后端开发: 角色划分的很细(微服务团队, 一个功能包含所有角色)

  • 产品 (需求), 业务流程设计, 产品原型(草稿)
  • UI/UE 产品界面设计(高保真, 这个时候的页面,最终的成品已经非常一致)
  • 项目架构设计, 把业务流程 拆解成不同的服务, 每个服务的功能
  • 开发阶段(前后端分离)
    • 前端开发: 需要原型 + 需要接口定义(Mock)
    • 后端开发: Web API开发(给前端使用) + 内部调研RPC开发(给内部服务使用)
  • 测试阶段(QA)
    • 功能测试: 基础功能的测试, 下单功能
    • 场景测试: 站在用户的使用, 默认用户的场景, 比如购物
    • 性能测试: 项目对资源的需求能力(计算,存储, 网络), 你需要几核几G的服务器, 上限测试
    • 回归测试: 后期开发了一些新功能, 会影响到一些老接口(老功能)
  • 线上部署
  • 业务发展
  • 业务重构
  • ...

开发业务方向:

  • 业务开发(商业模型): 完整的后端开发角色,划分的很细
    • 电商
    • 游戏
    • 区块链
    • 云厂商
    • ...
  • 企业内部系统开发(IT系统,支持企业内部): 企业数字化转向(飞书IM), 可以选择使用商用, 或者自己开发, 有完整的开发流程
    • 财务系统
    • IM系统
    • 工单系统
    • CRM/ERP
  • 基础平台(支持业务的系统): 业务的程序, 需要有配置中心, 网关, 需要部署, 需要trace排除问题, 一般情况这种平台有开发人员之间开发, 框架部门
  • 运维开发: 可能会被包含在 基础平台开发内部, 需要部署, 资源管理, 成本管理, 监控告警 。。。。
Web开发

以一个单体应用进行教学, 单体服务 也是前后端分离的, 只有1个前端,1个后端(后端仅仅由1个服务提供), 后端模块的调用都是进程内调用(pkg.xxxx)

web 单体应用开发的业务: vblog, 微博客, 功能很简单: 管理员后台发布markdown的博客, 游客在前台浏览博客内容

教学重点:

  • 如何架设一个后端服务(难度不大)

  • 如果编写项目前端(难度比较大)

  • 后端开发: 给前端提供接口, web Service, HTTP 接口

  • web基础: html, css, js, 不包含TS

  • Vue全家桶: vue3, vue-router, pinia, vueUI组件库(arco-design, 头条的开源Vue3组件库)

  • 项目前端: 编写Vblog项目前端, 组合使用所有技能

微服务开发

以devcloud为项目原型, 功能是 研发云(微服务管理平台, 包含部分运维平台能力), 微服务的治理:

  • 用户与权限(辅助): 用户认证与用户权限鉴定 , 需要做又给中心化的用户系统: 用户中心

  • 审计中心(辅助): 用户在你的系统里面做了一些操作, 需要报操作记录下来, 比如用户删除又给订单, 一个是为了溯源用户行为,避免不必要的纠纷,如果你的系统要过 等保, 也是需要你符合这些标准的

  • 资源中心(业务: CMDB): 负责业务使用到的资产的管理

  • 服务间的调用: RPC, GRPC

  • 服务发现: 不适用服务发现(直接配置服务地址, 或者使用有grpc协议代理里面的网关), 使用服务发现(用户中心会提供服务发现的能力, 可选)

  • 加入缓存: redis

  • 消息总线: kafka

  • Web框架: go-restful, k8s做API Server使用的那套

  • 数据库: 用户中心,审计中心: mongoDB, 资源中心: MySQL

运维开发二开项目
  • Prometheus 相关开发: 开发Prometheus Exporter开发, 如何与Cmdb对接 实现监控发现(选项)
  • K8s 相关开发: 基于client-go 提供服务部署能力, 如何使用client-go, Operator开发, 一个简单的demo, CRD定义, Watch Pod变化, 把服务注册到注册中心(未实现)

如何跟进项目

关键: 跟着练(不能只是上课时 听, 上课的时候听思路), 做开发: 自己解决问题的能力(debug), 不要copy的代码, 你的项目的代码 要自己一行一行的写

怎么练: 自己在github/gitee/gitlab/coding 公开的git服务 创建一个自己的用户, 每个项目放到自己的代码仓库里面, 你们有什么问题,可以把你的代码仓库地址发出来, (其他同学可以帮你发现问题, 也可以看别人怎么写的)

把项目可上的工程, 转化成你的项目工程(一个工程, 就是一个go module)

Directories

Path Synopsis
micro
projects
devcloud/cmdb Module

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL