淘先锋技术网

首页 1 2 3 4 5 6 7

我是一个假的架构师,真的程序员。

现在所在的项目,是去年八九月份启动的,虽然不是一个网站,但是大部分工作都是类似的,那么我给大家介绍一下这半年我做了哪些工作。

一般新建一个项目有两种背景:

  • 一种是没有系统,需要重新建立;

  • 一种是有老系统,但是因为种种原因,需要新建一个系统把老系统替换掉(或替换部分功能);

  • 我们算是后者,老系统已经运行多年,主要工作是对外提供接口服务,现在服务的效率和抗压性都无法满足业务需求。

需求梳理

需求,在开发之前一定要明确需求。因为是对老系统的改造,所以需求相对来说比较明确。

  • 梳理老系统有多少接口,压力比较大的接口有哪些,确定接口迁移的优先级。

  • 确定第一批迁移的接口之后,需要对接口的处理逻辑进行梳理,包括出参入参都是什么,对参数有哪些校验,出参的是从什么表的什么字段取得,查询条件是什么,是否对数据进行了加工、转移等处理。

  • 主要是通过“扒代码”的手段,这一步很痛苦(程序员们都懂的)。

压力预估

因为是老改新,压力容易预估出来,我们主要关注的几个点:

  • 现有系统的数据量有多少,年增长的数据量是多少。

  • 多少系统在调用,大概服务器的数量是多少。

  • 平均每天的调用量,如果业务几种在某些时间段内,比如工作时间,那么就要估计出每小时的量大概是多少。

  • 业务高峰期的时候,量有多少。

架构设计

其实我也是野路子出身,我在做这一步所做的工作有这些:

  • 整理项目的功能点,比如我们这个项目主要功能有:数据抽取、数据存储、数据加工、服务提供;这一步形成整体的功能架构。

  • 对每个大的功能点,评估需要使用的资源,拿数据加工为例:数据加工主要就是批处理,需要Tomcat部署Java程序,需要Redis做分布式锁和缓存,需要MongoDB做加工后的数据存储;这一步形成整体的方案规划。

  • 继续详细的评估,根据前期统计的数据量,对MongoDB的部署进行评估:是否需要分片,如果分片的话,前期部署几个分片,容量申请多少;当这些评估都做完之后,就可以把一个一个的点汇总起来,就形成了物理部署架构。

  • 到了这一步,基本上技术架构图也就出来了。

  • 在设计过程中,还要和很多人进行沟通,比如DBA、比如领导。

开发

到了开发阶段,我依然在。

  • 这时候,一边招人(招人有些晚了),一边搭框架;一边面试,一边写代码。

  • 最后开发人员招的差不多的时候,我从无到有,第一个接口基本上开发完成了...


现在嘛,我依然在项目里面,沟通需求、设计、任务分配、写写代码、看看开发人员写的代码再给他们提提意见,如果别的项目组有设计或开发方面的问题,我也会帮忙处处主意;

我总觉得我是个假的架构,真的程序员。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。