开始前的准备
产品理念
在开始之前,我们需要先理清产品的理念,这是指导整个产品走向的关键部分。只有清晰地知道想要打造一个怎样的产品才能很好地落地。这是一个垂直类的搜索引擎,但不仅限于搜索,应该是一个真实有效信息和价格分析的集合。
准备
以下罗列的一些技术上的选型不一定适合每个项目,但技术选型从来都是根据实际情况和技术储备来做决定的。
语言的选择
这似乎是每一个互联网创业团队首要面临的问题;也是各语言攻城狮之间争论不休的话题。作为一个对语言没有偏见的程序猿,这将不会局限于采用哪种语言来实现。我想每种语言存在肯定有其存在的理由,只是适用于不同场景而已。因此,在这个项目程序分如下几个部分:
数据采集使用scrapy
(python)
之所以选择scrapy
是由于scrapy
是一个现成完善的爬虫框架,更重要的是本人用这个框架采集过相应的数据。对这个框架不了解的同学,可以参考之前写的scrapy爬虫系列文章。
后台权限管理使用django
(python)
django
是一个完善的权限管理系统,可以最大限度降低不必要的编程工作。可以非常简单地上手使用,但前提是有一定的编程基础。有关django
快速入门可参考:django快速入门
搜索部分使用elastic search(java)
elastic search
是一个java编写的分布式搜索引擎,提供restful
接口的数据,无论是python还是java都可以很好地通过api获取相应的搜索数据。
前端呈现部分,django/php
前端搜索结果的呈现可以采用django或者pyton,样式采用简单易用的bootstrap。这样可以较好地降低不必要的开发工作,以最低成本另项目上线。
数据库
毫无疑问是mysql
操作系统
拥抱开源,操作系统centos 7
docker
的使用
为了快速搭建一套可运行的环境,这期间将采用docker搭建所有可能的运行环境。避免在环境上耗费过多的精力。
主机购买
- 阿里云
- 腾讯云
域名的购买和备案
- 万网
- 西部数码等
域名解析
- dnspod
持续集成和自动化部署
- jenkins
上述提到的各个部分,不一定在某一个时间段内完成。也许是穿插在整个产品开发的始终。也许有人会有疑问,一个产品需要使用这么复杂的技术面吗?一个Java就可以搞定,又python,又php。确实,上述提到的技术Java都可以搞定,但作为一个对技术语言没有偏见的人来说,什么语言适合干什么事情就用什么语言。这样可以简单高效地达到目的再好不过了。
这只是开始前的一个大体思路,也许在执行过程中会有很大的出入。例如持续化集成和自动话部署
刚开始肯定没有,甚至有可能到很后期都不会有。因为在人员不多的情况下,自己写个脚本部署一下即可。没有必要耗费太多的精力在这些无关紧要的事情上;技术应该是为产品服务的,而不应该为了用而用。