每一个程序员都是架构师。平时在我们工作的时候,架构师这个Title都被那些非常有经历的开发人员占据着。然而,如果你喜欢刷刷Github,喜欢做一些有意思的东西,那么你也将是一个架构师。
先问一个问题,如果要让你搭建一个博客你会想到什么技术解决方案?
这只是基本的骨架。因此如果只有这点需求,我们无法规划出整体的方案。现在我们又多了一点需求,我们要求是独立的博客,这样我们就把第4个方案去掉了。但是就现在的过程来说,我们还是有三个方案。
接着,我们就需要看看Ta需要怎样的博客,以及他有怎样的更新频率?以及他所能接受的价格?
先说说介格——从价格上来说,静态博客是最便宜的,可以使用AWS S3或者国内的云存储等等。从费用上来说,一个月只需要几块钱,并且快速稳定,可以接受大量的流量访问。而动态博客就贵了很多倍——我们需要一直开着这个服务器,并且如果用户的数量比较大,我们就需要考虑使用缓存。用户数量再增加,我们就需要更多地服务器了。而对于半动态的静态博客来说,需要有一个Hook检测文章的修改,这样的Hook可以是一个客户端。当修改发生的时候,运行服务器,随后生成静态网页。最后,这个网页接部署到静态服务器上。
从操作难度上来说,动态博客是最简单的,静态博客紧随其后,半动态的静态博客是最难的。
整的性价比考虑如下:
x动态博客静态博客半动态的静态博客价格几十到几百元几元依赖于更新频率 几元~几十元难度容易稍有难度难度稍大运维不容易容易容易数据存储数据库无基于git的数据库
现在,我们已经达到了一定的共识。现在,我们已经有了几个方案可以提用户选择。而这时,我们并不了解进一下的需求,只能等下面的结果。
客户需要可以看到文章的修改变化,这时就去除了静态博客。现在还有第1和第3种方案可以选,考虑到第3种方案实现难度比较大,不易短期内实现。并且第3种方案可以依赖于第1种方案,就采取了动态博客的方案。
但是,问题实现上才刚刚开始。
作为一个团队,我们需要优先考虑这个问题。使用怎样的技术解决方案?而这是一个更复杂的问题,这取决于我们团队的技术组成,以及未来的团队组成。
如果在现有的系统中,我们使用的是Java语言。并不意味着,每个人都喜欢使用Java语言。因为随着团队的变动,做这个技术决定的那些人有可能已经不在这个团队里。并且即使那些人还在,也不意味着我们喜欢在未来使用这个语言。当时的技术决策都是在当时的环境下产生的,在现在看来很扯的技术决策,有可能在当时是最好的技术决策。
对于一个优秀的团队来说,不存在一个人对所有的技术栈都擅长的情况——除非这个团队所从事的范围比较小。在一个复杂的系统里,每个人都负责系统的相应的一部分。尽管到目前为止并没有好的机会去构建自己的团队,但是也希望总有一天有这样的机会。在这样的团队里,只需要有一个人负责整个系统的架构。其中的人可以在自己擅长的层级里构建自己的架构。因此,让我们再回到我们的博客中去,现在我们已经决定使用动态的博客。然后呢?
作为一个博客我们至少有前后台,这样我们可能就需要两个开发人员。
(PS:当然,我们也可以使用React,但是在这里先让我们忽略掉这个框架,紧耦合会削弱系统的健壮性。)
接着,作为一个前端开发人员,我们还需要考虑的两个问题是:
第二个问题不需要和后台开发人员做沟通就可以做决定了。而第一个问题,我们则需要和后台开发人员做决定。单页面应用的天然优势就是:由于系统本身是解耦的,他与后台模板系统脱离。这样在我们更换前端或者后台的时候,我们都不需要去考虑使用何种技术——因为我们使用API作为接口。现在,我们决定做成单页面应用,那么我们就需要定义一个API。而在这时,我们就可以决定在前台使用何种框架:Angular.js、Backbone、Vue.js、jQuery,接着我们的架构可以进一步完善:
在这时,后台人员也可以自由地选择自己的框架、语言。后台开发人员只需要关注于生成一个RESTful API即可,而他也需要一个好的Model层来与数据库交付。
现在,我们似乎已经完成了大部分的工作?我们还需要:
相信看完之前的章节,你也有了一定的经验了,你也可以成为一个架构师了。
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
添加我为好友,拉您入交流群!
请使用微信扫一扫!