初创型公司软件孵化(五)

585 阅读3分钟

“这是我参与更文挑战的第5天,活动详情查看: 更文挑战

架构设计

应用架构

技术选型

编程语言

以web类型为例(统计类型、嵌入式类型、桌面类型、游戏、人工智能暂不在讨论范围类) 后端有:javac#gophppython;前端有:vuereactangular;那么如何选型呢?笔者认为,首先得从客户那边了解是否存在对编程语言的要求,其次有良好的生态环境,开源社区活跃度良好。在国内属于大众化,方便招聘和避免人事变动的高耦合。

总结:笔者认为首选java,但是考虑到oracle原因导致java8以后存在版权问题,当然也可以选择开源的openjdk,毕竟java从95年到现在已经有20多年的发展了,生态和解决方案都已十分成熟。绝大部分问题都有对应的解决方案。当然目前go语言发展趋势也是挺好的。但生态和解决方案相比之下可能要踩的坑比老牌的java更多。至于前端vue是不二的选择了,当然reactangular也是不错的,只是上手和文档这块vue更加的友好,毕竟是国人开发的。至于移动端的话建议首选uniapp吧。

框架方面

那么上面笔者建议使用java和vue的结合,那么如何选择对应的框架和UI呢?首选所用新技术不建议大于已知的知识储备的百分之三十,为什么要这么定义呢?原因很简单那就是技术风险的把控。当然如果公司原因承担这类风险,那随便怎么玩都行。因为大于了这个百分比,会导致增加过多额外的时间去研究。

强烈建议不要一上来就是微服务,但是在总体的设计层面要有这方面的考虑,比如如何划分模块,如何定义包结构,模块与模块之间的调用方式等,这些都需要大量的积累和思考。第一版架构的生命周期一般建议在3年内。周期太短太长都不易维护。考虑3年内数据量并发数就可以了; 关于分布式事物这块的解决方案,笔者想说的时能在设计层面规避的尽量规避,虽然业界早已有了成熟的解决方案,但是能在设计层规避的尽量规避,还有什么长链接。能用轮询就用轮询吧,实在业务需要建议数据量几万以下没有问题,但是一旦大于这个级别建议底层使用netty + mq,当然前提是对应的web容器底层也是netty,是否考虑淘汰策略、心跳机制的处理等。关于认证授权能用session就用session吧,虽然界内流行jwt,基于token机制,但是token续期和token安全、超时问题有待考虑,当前若是没有这样方面安全的要求可以忽略。如果是移动端,那没有办法毕竟没有session这个概念的。