一种适合创业公司的技术架构方案

7,376 阅读4分钟
原文链接: blog.12xiaoshi.com

创业公司,觉得很重要的一点,是快速的以市场行动去验证业务方向的可行性。对于在创业公司的技术团队,一支作为服务支撑的团队,应该遵循的设计原则是:

在此前提下,老夫基于阿里云服务实践(是实践不是YY)了一套技术架构方案,如果你不幸步行于此,希望下图没有坑害到你。



与其说是架构方案,还不如说是脚手架,因为你所看到的,都是我们最常用的框架和技术,可能不同的是,用了一些阿里云的一些服务。

对于上图,老夫解答一些可能会存在疑问的点。

问题1:用了阿里云负载均衡(SLB),nginx做什么用?

SLB的主要作用的是负载均衡,同样nginx也可以做。如果只是单纯考虑负载均衡,阿里云的SLB优越性更高。

但nginx可以做的更多,如反向代理、HTTP服务器,灵活性更高。所以如果要精简,阿里云的SLB确实可以拿掉。

在实践的过程中,老夫同时用了nginx和SLB,除了反向代理,nginx还承担了一个静态站点的HTTP服务。

问题2:nginx可以换成apache吗?

别废话,白菜萝卜各有所爱,关于nginx和apache的对比自己google去。

问题3:图中,一台阿里云ECS只部署一个Tomcat服务么?

没错。这里没有统一的解决方案,你可以选择在一台服务器上开多个Tomcat端口,而对我来说一台服务器一个Tomcat配置更精简,再说这台ECS挂了也不至于一个集群挂了,有钱任性!

问题4:Spring Session的应用效果如何?

互联网技术架构很难不涉及到分布式,关于session共享的技术方案是必须要考虑的,它需要一套完整的session框架来做这件事。Spring Session提供了一套分布式Session的解决方案,默认采用的是redis来管理session(目前最新的版本已经支持DB、redis、mongodb、gemfire等方式存储管理session)。

老夫实战过程中,Spring Session的Cookie和Header方案搭配使用,session存储阿里云redis,目前没有遇到任何障碍。

问题5:Swagger是什么鬼?

如果你涉及到APP的开发,一定涉及API管理与文档的书写,Swagger是一个方便管理项目中API接口的框架。如果服务端开发同学,想更好的管理API文档,不妨尝试下Swagger,你一定会爱上它的。
哦,对了,忘记告诉你,老夫其实用的是Springfox-一个基于SwaggerUI的库。

问题6:如何评估阿里云redis、OSS、MQ?

在分布式session的解决方案中,session的最优存储位置是redis,如果前期用户量少,甚至可以存储在数据库中,不建议维护在memcached中。初创型公司,不建议自己维护一套redis的集群环境,成本略高。所以,如果能使用阿里云的服务,就使用之。

关于阿里云的对象存储OSS,它应该出自淘系内部的TFS,搭配阿里云CDN使用效果是毋庸置疑的。而我们基本上用到最多的就是图片、css、js的存储,这块业界有很多免费也较稳定的存储,初创企业老夫更倾向于七牛云存储。相比OSS,免费额度高,文档较完善,基本上需要的支持都有,比如图片压缩、水印、语音视频分片等。

MQ,消息队列服务。老夫其实没用,因为我用Reactor取代了,至少对于我目前的业务是可以满足的,不过分布式消息队列的重要性毋庸置疑,初创企业自己运维不及直接使用有优势。

业务量上来后,怎么玩?

先呵呵一下,再放一图,各位看官欢迎楼下PK

老夫深深的吸一口烟,缓缓吐出一团云圈,心中嘀咕一下:支撑的业务可以赶上淘宝了……

友情告知:以上使用阿里云的服务,可以在公司的不同阶段,自行替换为开源实现or自行实现和运维。