互联网产品的架构很复杂,需要分成几个部分去考虑。 (1)**服务器配置**。网站的结构是什么样子的,几台服务器,它们之间什么关系,以后如何扩展。最好还能考虑上线时的拓扑以及3个月后可能的拓扑。 (2)**服务端架构**。打算用什么技术/框架/库/开源软件实现服务器端软件。例如,用什么搜索框架,用什么缓存框架,用什么消息队列,用什么协同过滤/推荐引擎。 (3)**前端架构**。打算用什么技术/框架/库实现客户端软件(包括Web客户端和App客户端)。例如,以Web客户端为例,用什么DOM框架,用什么MVC框架,用什么库来简化开发,用什么UI组件,用什么CSS框架。 (4)**软件架构**。系统有几大对象,它们之间是什么关系,模块怎么划分,关键路径的数据流怎么走。关于架构,一定要多问有经验的人士,因为,有时候你自己没有某方面的感觉,甚至不会想到问自己什么问题(答案是什么有时候并不重要,重要的是问对了问题)。