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