架构

有一段时间,Mishap的架构由大约15万行java代码组成,一个真正的单体应用!但现在已经拆成了400个由不同语言组成的微服务,语言包括:Node.js,Lua,Ruby,java,PythonOCaml。 所有的东西都由API组成。

Mashape ID,举个例子,是一个由API运作的身份验证平台。任何时刻一个新的产品创建好了,我们只要简单的将他植入到Mashape ID;它可以提供自带账单微服务,并有拆箱即用的账户邮件管理功能。

我们的一个新项目是用Ruby API实现的,同时前端应用使用Ember.js。相反的,Mashape的市场有很多由Java构建的内部API并被Express.js的微服务作为web前端来消费;我们所有的应用&API都遵循12-factor(http://12factor.net/) 技术。

在我们所有的应用和API之前是Kong , 我们使用ElasticSearch来搜索,也将数据存储在很多数据库,包括:MongoDB,PostgreSQL,RedisCassandra(每个都解决一种不同的问题域)。我们所有的产品都运行在AWS,偶尔我们会使用Heroku和DigitalOcean在小项目做一些原型实验或测试环境。Spunk使我们的中心化日至系统,Datadog作为标准化的监控大盘,PagerDuty用来报警。

Mishap通过Chart.io将商业智能度量带入到我们所有的产品.额外的,我们用Mashape Analytics来监控和可视化我们平台管理的API流量。TravisCI用来测试,CodeClimate用来做质量控制,用Chef做部署。我们所有的代码都在Github。代码片段生成我们使用我们自己的HTTPsnippetMockbin做模拟&测试API原型。

所有这些应用和系统,部署,监控&度量工具看起来可能很多,但使用12-factor方法和微服务结合,让这一切变得简单起来。

我们有约400个内部服务跑在一个有上百个EC2机器的集群上。微服务架构允许我们速度更快并更独立,我们能明显看到过渡期的收益。但理解我们为什么这么做是很有帮助的。


本文来自微信公众号「麦芽面包,id「darkjune_think」
转载请注明。
微信扫一扫关注公众号。
图片描述


祝坤荣
1k 声望1.5k 粉丝

科幻影迷,书虫,硬核玩家,译者