大家好,我是编程小6,很高兴遇见你,有问题可以及时留言哦。
树立正确认知,从另一个角度看Java系统开发
技术不会孤立存在,它是为业务服务的;
技术人员有业务思维是迈入职场的第一步;
技术实现业务系统的发展历程
入门偏偏基本停留在”用“和”实现“的层面
客户端客户端服务器端服务器端请求响应
客户端的形态 从最开始的GUI 发展到后来 基于浏览器的web页面 再到现在的移动端应用(wap - 原生应用 - H5 - 各厂家的小程序)
对于java程序员(后端工程师),我们课程主要是在服务器侧。
产品经理产品经理开发开发测试测试运维运维输出PRD(用户故事)提测(按照PRD实现的系统)提交bug上线(测试完毕无bug)
开发一般分为前端工程师、后端工程师,也有全栈工程师(一般全栈在小公司和个人工作者中居多),特殊领域还有安全工程师等等。
在正常工作中,开发一般和产品经理、测试工程师、运维工程师(有些公司并无此岗位,开发会做对应的工作)打交道比较多,大体上的分工和协同见上图所示。
从开发的内部来看,一般分为几方面的工作:
理解需求(是我们和产品经理、前端工程师、测试工程师高效沟通的基础);
系统分析和设计;
工作量估算和排期;
编码(包括前后端联调);
提测;
修复bug;
上线;
线上问题排查和解决;
架构,是一个比较抽象的概念。
架构的几种阐述:
软件架构是指在一定的设计原则基础上,从不同角度对组成系统的各部分进行搭配和安排,形成系统的多个结构而组成架构,它包括该系统的各个组件,组件的外部可见属性及组件之间的相互关系。
“系统在其环境中的最高层概念”,还包括“符合”系统完整性、经济约束条件、审美需求和样式。它并不仅注重对内部的考虑,而且还在系统的用户环境和开发环境中对系统进行整体考虑,即同时注重对外部的考虑。
软件系统的构架(在某一给定点)是指系统重要构件的组织或结构,这些重要构件通过接口与不断减小的构件与接口所组成的构件进行交互。
综上,架构是一个丰富的概念,它的适用范围非常广泛,既可以是狭义的也可以是广义的。我们简单点理解,可以和建筑的架构相类比。
架构的分类:
逻辑架构;
物理架构;
系统架构;
举几个例子:
前面我们讲过系统可能有几种形态:GUI、web等,那么对应的就会有 C/S架构、B/S架构 (现在讲的已经比较少了)
单体架构、微服务架构、Serverless架构;
分层架构、SEDA架构、管道-过滤器架构、代理架构、P2P架构;
MVC、MVP、MVVM架构;
主从架构、主主架构;
架构师的称谓:
首席架构师、总架构师、系统架构师、业务架构师
那么我们要实现电商系统,架构是怎样的呢?
首先,它是前后端分离的架构;其次它是一个单体架构。
浏览器浏览器web服务器web服务器业务服务器业务服务器数据库服务器数据库服务器其他中间件服务器其他中间件服务器页面代码、css代码、js代码等文件返回ajax/普通形式的api请求JDBC(隐性)调用【可选】数据返回各种协议的调用【可选】响应返回业务数据返回
web服务器代码由前端工程师开发;
业务服务器代码由后端工程师开发,数据库、其他中间件内部设计由后端工程师开发(都属于后端工作范畴)
单体架构指的是业务服务器实现层面的架构,单体架构的应用比较容易部署、测试, 在项目的初期,单体应用可以很好地运行。
因为单体架构简单易上手,所以我们的系统初期采用单体架构。
对架构有了简单模糊的认知之后,我们需要对技术框架也有基本的认识,这属于代码实现的范畴。
以下我们讲的是业务服务器端的代码实现,我们使用目前流行的技术框架Spring(SpringBoot)+SpringMVC+Mybatis ,接下来,我们就进入这几个框架的学习,最终我们可以实现基于这些框架完成整个系统的开发。