由于之前经验不是很丰富,写的C#系统太过复杂,所以一直想重写,但学的越多越觉得自己懂的越少,越觉的底气不足。所以一直不敢动手,在内心深处对自己讲,要静下心来认真学习,继续沉淀沉淀。这两年多以来找各种机会去参加各种沙龙或交流会,有空时就啃啃技术书籍,又或者看看一些文章或源友,努力向博客园大牛们学习。
由于工作关系,这两年很少接触C#,一直在做产品设计、项目设计、架构设计,15年底公司有机会参加了个小项目开发,使用的是python语言开发web版的TMS,从而一发不可收拾喜欢上了python。在体验了python开发的便捷以后,接下来就有了python开发的第二个、第三个web项目。
第一个项目是在运维同事小戴(运维大牛)的指导下,花了三天时间学习python基本语法,然后花了一天时间熟悉小戴写的Python框架,就马上进入开发写业务,大概花了一个月左右时间就完成了公司安排的项目并上线了。学习的第一个python框架是一个轻量级、直白、简单的框架(大家可以上小戴的博客http://www.linuxyw.com/去学习,有详细的教程和源码),这个框架的代码追求的是让没什么基础的人也能很容易看明白每行代码的用途,让初学者容易上手开发维护,降低系统的维护难度。通过这个项目的开发让我重新反思以前自己所写的代码与框架的利弊,过多的使用一些技术与模式,让自己的框架表面看功能很强大,但入门门槛就非常高了,虽然有很多文档与注释,但要学会并灵活应用就不是那么容易的事情,维护起来也比较困难,反而反朴归真的编码方式让人有另一种感受。
由于第一个项目完成的不错,所以很快公司就安排了第二个python项目。有了之前的项目经验后,发现原框架有好多重复的代码存在,代码的重用率不高,所以花了三周时间对项目底层进行了重构,根据自己的需要开发了一个全新的ORM模块,对很多工具函数进行了重构,优化了数据层代码,增加了逻辑层,根据需要在IDE中整合了多项目共享同一模块代码......当然这个过程中踩了很多很多坑,在跌跌碰碰的过程中完成了第一版的python快速开发框架。然后使用这个框架和另一位后端开发人员+10位前端开发(android/ios/web)用了三个月左右时间完成了一个中型项目开发,并通过测试上线运行。
创业型公司的生命是短暂的,在16年的10月份公司进入了清盘,公司解聘了所有员工,拿了补偿后应广东老东家邀请回到了广州上班,广州公司业务比较复杂,原系统的扩展性不强,每增加一个电信运营商就得部署一套差不多的代码,如果合作的APP同时接入不同的运营商,就得部署多套类似的接入不同运营商的服务,也就是说合作越多部署的服务就会越多:运营商*N个*N个APP合作商=xx个服务。维护起来非常麻烦,且数据不能共享,需要重新开发一套系统来代替原来系统。由于python开发效率高速度快、维护方便等原因考虑,就有了我第三个python web项目,同时也是我独立设计的第一个分布式微服务架构的项目,通过一个多月孤军奋战,对原python框架进行了全面重构和重写,python快速开发框架2.0版终于出来了,接着在另一位同事的共同努力下,用了一个月时间完成了旧系统业务功能往新系统迁移开发,并交付给客户使用,与客户们的旧版APP实现了无缝平滑对接。
在学习并使用python开发的过程中我经常在思考,一个好的框架会用到各种封装、设计模式、面向对象的各种原则与准则,而想要让一个初学者快速上手马上进行业务开发却很难。因为封装多了,代码简练了,重用性高了,而带来的结果是可读性可理解性却下降了,如果没有完善的文档或花大量的时间去了解,很难学得透。这两年时间自己也在尝试学习别人写的框架,学习别人写的教程,虽然说自己已经有十多年的开发经验,可学习起来经常也会感到力不从心,很吃力,因为拿到一份源码后,发现代码量太大,无从下手。而自己在使用自己写的框架时就不会出现这种情况,为什么呢?经过深入思考发现自己写的框架也不是一步到位一开始就很复杂的,它也是开始很简单,当开发经验累积以后,为了应付各种业务状况不停的重构与修改,慢慢变的越来越复杂,功能也越来越强大,而框架的可读性也慢慢随着下降了。当这样的框架给到别人学习时,他们不了解框架的发展历程,不了解很多功能模块、变量、参数......为什么要这么设计,不了解模块与模块、函数与函数等它们之间的关系,要想快速掌握新的框架可想而知难度有多大。所以即使学会了新框架的使用与开发,对于框架中存在的bug却不知怎么去修改,更不用说根据业务的需要有针对性的去改造框架底层不合理的地方了。
为了方便同事们的学习,也完成自己的承诺,于是就有了本系列文章。
本系列博文主要讲述的是一个小菜鸟,刚学会python就接了一个外包,写了一个很简单的web企业网站,而随着这个企业的发展,需求的不停变更,继续不停的改造与重构,企业网站变成一个小型电商平台、大型电商平台的过程(是否写一个大型电商平台暂时未定案,也有可能开发一个企业管理系统)。而代码也通过不停的重构,从一个简单得不能再简单的几行代码变成能应付各种业务需求变更,能快速完成开发任务的成熟框架。当然中间也经历了各种各样的坑与障碍,希望大家能喜欢这个故事,并与小菜鸟共同成长。
本系列文章会分为几大部分,第一部分主要讲的是一些基础、开发常识、开发环境与运行环境等内容,代码也会非常简单直接;第二部分是以重构为主,即主角稍微成长起来了,发现有很多重复的代码,加上出现一些突出事件,需要对系统进行重构,完善系统功能;第三部分是随着企业业务的发展,对IT会越来越依赖,提出了各种各样的需求,针对这些需求对系统进行完善;第四部分主题是变革,随着系统的完善,在这个过程中会发现代码变得复杂,应对爆增的数据和访问,现有架构体系无法负载,需要对系统框架进行变革,升级服务器架构与系统框架,往分布式、高可用、微服务架构发展变化;如果还有第五部分的话,将会讲解企业架构方面的内容,IT系统根据企业的发展战略和现有业务能力,增加用户行为分析、业务数据分析等大数据分析系统,推动企业的发展。
如果从企业架构成熟度来讲,第一、二部分,是处于项目驱动技术阶段,一切以项目决策为主;第三、四部分,是处于业务驱动阶段,业务开始依赖技术,技术根据技术需要完善与促进业务发展;第五部分是战略驱动阶段,企业慢慢对技术熟悉,会更多的利用数据分析来进行战略决策,而技术在企业方面也占据着越来越重要的角色,通过大数据来指导企业的发展。
由于我平常工作很忙,所以暂定写这几个部分,到底能否全部写完还不知道,只能走一步是一步了。前面两三部分应该没有问题,后面两部分涉及的内容太多,不好规划,章节数量恐怕会很多,如果写不完大家有兴趣的话,也可以加群一起讨论探讨一下。
作者:AllEmpty
出处:http://www.cnblogs.com/EmptyFS/
有兴趣的朋友可以加加python开发QQ群:669058475,大家一起探讨。大家有问题的话可以在群里发问,当然我平时工作也非常繁忙不一定会及时回复。
本文为AllEmpty原创,欢迎转载,但未经同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。