记一个本身项目上线的全过程

我的终于第一次完成了一个java web项目从策划到最终上线的全过程,虽然项目十分简单,但全流程跑通的感受仍是倍爽的,以后再作项目则只是各个环节上的细化了。html

如今我将个人“第一次”分享给你们前端

项目名称最美80周年,共同记录java

开发文档https://www.showdoc.cc/rucday?page_id=15376272mysql

源码地址https://github.com/sunym1993/dataU-RUCDay.gitlinux

项目简介:本身作着玩的一个项目,为某校80周年校庆准备的,页面模仿微信聊天界面,用户可在上面说话。git

 

1、准备阶段

服务器:阿里云服务器ECS(2核4G ¥825/年)github

  买了一年的阿里云服务器,我的感受仍是很值的,内部装好了空的CentOS 6.9 64位 linux系统。首先第一步就是安装java环境,以便以后我在上面跑的程序可以运行起来。总结起来我须要jdk,mysql,redis。安装linux系统环境每次都要查找各类教程,索性总结成了一篇清单文章给本身看:linux的java环境搭建清单web

  固然后续,还在阿里云买了域名,域名须要备案才能用的事,留在后面吐槽。ajax

文档管理:showdoc文档,poccessOn流程图redis

  showdoc在线文档清晰明了,很适合我的或者小型团队用来共享开发文档。配合poccessOn流程图软件(我买了专业版 ¥115/年),已经能够很好完成开发文档方面的工做了。固然工具的选择只是我的喜爱问题。

代码管理:github

开发工具:idea

  应该是最智能的编辑器了,但我仍是更佩服用notepad或者txt写代码的人。

开发环境:jdk1.8,mysql,redis,springboot

  如今是springboot的时代咯,打成一个jar包直接就能跑web项目,也能够跑微服务,十分便于管理。

 

2、疯狂打码阶段

   开发过程总结起来能够说很简单,一、写好开发文档; 二、建好数据库; 三、写好代码并打成jar包。描述起来真的特别简单,并且基本都是这样的流程。

  困难之处就在于,开发文档写得糟糕,数据库设计得糟糕,代码老是出一堆bug。因而可能回过头再改开发文档,改数据库。因而再次遇到开发文档改得糟糕,数据库改得糟糕,如此往复。最终的结论就是代码愈来愈难以维护。因此若是不是在最初设计的时候就能预料到以后的各类坑,回过头改则会越改越糟,除非推倒重来。

1.写开发文档

  因为自身比较追求代码的质量,实现所谓的高内聚、低耦合,因此在乎识上仍是很明白设计阶段的重要性的,虽而后面看来一开始的设计简直是糟糕透顶。

  我给本身的原则就是文档写完以前一行代码都不要写,文档写好以后代码天然就出来。虽然花了近一周时间在写文档阶段(抛去上班时间其实就两天),但仍然不够,代码写到后面已经彻底抛弃文档了。我后来总结本身代码时能够明显感受到,文档中设计好的部分代码仍是很清晰整洁的,但其他部分就有点混乱不堪的意思了。尤为是对cookie和session的忽略致使一些问题直到上线也没能很好地解决,只能采用临时的,不可拓展的垃圾代码顶替,看得我本身都想吐。

2.建数据库

  其实若是开发文档设计好,数据库天然也不用再考虑。但是我写开发文档懒了,只考虑了表的字段,没有涉及到具体类型、索引等信息。这致使了我以后写代码的时候修改了几个表字段的数据类型。虽然形成的改动量不大,但修改底层每每是很心累的。咱们都但愿封好了一层以后就不在打开这个封条,站在新一层的高度考虑问题,显然此次的实践没有处理好。

3.写代码

  写代码的过程真心能够总结为,从条理清晰到无论三七二十一。

  初步搭建框架的时候思路仍是很清晰的,代码写的也比较干净,由于毕竟以前练习时搭建过不少次。web层、业务层、持久层,再封装一层redis,整个过程一鼓作气。

  但到后面遇到实际业务时就慌乱了。首先,我遇到了之前没用过的redis数据结构list,我把用户的消息,群内的消息都存到了redis的list里,如何索引这个list里的数据成了困扰个人地方,虽然最后都经过记录其索引值解决,但感受并非长久之计。以后,session中存哪些信息又成为了一大乱点,最后发现不少地方都要用到,不得不不断往里面存数据。有时执行某个方法时会忘记同步更新session中的数据。致使了不少bug。还有数据的同步问题,数据库,redis,session中的数据如何保持同步,我目前只在逻辑上去保证,只能祈祷系统不出问题。消息的实时更新,我用了ajax长回调机制,听说是效果最好也最节约开销的方式。页面啊!页面真是救命了,对于一个后端开发人员,我对页面的美观简直毫无办法,只能找网上的模板,还好找到了一个仿微信页面的前端模板,拯救了我

  这部分确实比较乱,没经验,赶着项目上线不少问题都没能很好解决,往后将一一总结。

 

3、上线前

   上线前遇到的一些问题让我一度想要放弃,有些跟代码无关,给你们讲讲。

一、阿里云有安全组策略的

  以前不知到,数据库、redis什么都配置好了,也容许外网访问,但是就是一直访问不了。一直找配置中的错误,不断从新安装,一度想要放弃。结果后来发现问题很简单,阿里云有本身的安全组策略,你必须配置以容许外放访问这个云的哪些端口才行,不配置默认就是拒绝访问。找到问题根源时我笑哭了。。。

二、大天朝的域名是须要备案的

  直到最后我才把项目端口改为80,也用了本身的域名,结果发现没法访问,跳出来一个“友好页面”。后来知道,在中国域名是须要备案的,因而走阿里云备案流程,发现须要25天(北京),还要邮寄幕布让你来拍照什么的,上线时间紧迫,一度要放弃的时候,想到了“某宝”,因而。。。

    

三、微信须要域名加标准端口才能直接跳转

  若是你用微信访问一个 http://185.10.10.195 这样的地址,它会先跳出

  

  若是你用微信访问一个 http://www.datauuu.com:7001 这样的地址,它会先跳出

  

  也就是说,只有域名配web标准80端口,微信才能直接打开本身的浏览器作跳转。这个也是我购买域名以及想到要备案的缘由。哎真是经验不足啊,否则上线前没必要为这些事操心

 

4、上线后

  没有日志系统,没有监控系统,没有管理系统。只有一个本身作的超简单的管理页面,只能初始化数据库数据,同步数据库和redis,全部查询都是直接用sqlyog看数据库。

  如今明白为何一个项目要如此重视日志系统和监控系统了,真是太有用了。我这个项目好在比较简单,最重要的是我只是玩一玩,出问题那就出了也不用负责人。要是一个正规的系统,我如今的状态只能用听天由命来形容了。

  总之在作一个项目以前,如下事情仍是比较重要的。

  一是各类“常识”,好比阿里云的一些事,还有域名备案这种事,不过本身经历过一遍就都明白了,这些坑也是必须本身踩过一遍才行的,不难,但很讨厌。

  二是架构设计,真的很是很是重要!就不说三遍了。你代码中遇到的几乎大部分的坑,都源于设计阶段的不合理,也都是能经过重视设计来解决的。并且设计阶段能够弱化其实现过程,把精力用在模块与模块,接口与接口的交互之间,站在一个高度上看问题,就不会被细节影响了大方向。

  三是多学知识,这个我便没有作好,不少功能都是想用我现有的知识去解决。其实优秀的解决方案有不少种,不妨多多参考别人优秀的设计,切记不能为了暂时解决问题用不合适的方式。

  四是要作日志系统和管理系统,这在项目上线后是很重要的,即便是练习项目,也能经过它们发现项目的更多问题。虽然不会影响项目的使用效果,有些人会以为多余,但这实际上是必要的。

  总的来讲,我发现我用在实际写代码上的时间并很少,大多都在设计、修改代码、还有搞阿里云啊这些杂事上,你们必定要重视这些环节,码代码只是其中一小部分而已。一个优秀的设计会让你的代码写起来轻松高效,出错的几率也小不少。

 

下个项目酝酿中。。。嘿嘿

相关文章
相关标签/搜索