架构
有一段时间,Mishap的架构由大约15万行java代码组成,一个真正的单体应用!但现在已经拆成了400个由不同语言组成的微服务,语言包括:,,,,和。 所有的东西都由API组成。
Mashape ID,举个例子,是一个由API运作的身份验证平台。任何时刻一个新的产品创建好了,我们只要简单的将他植入到Mashape ID;它可以提供自带账单微服务,并有拆箱即用的账户邮件管理功能。
我们的一个新项目是用Ruby API实现的,同时前端应用使用。相反的,Mashape的市场有很多由Java构建的内部API并被Express.js的微服务作为web前端来消费;我们所有的应用&API都遵循12-factor() 技术。
在我们所有的应用和API之前是 , 我们使用来搜索,也将数据存储在很多数据库,包括:,,和(每个都解决一种不同的问题域)。我们所有的产品都运行在,偶尔我们会使用Heroku和DigitalOcean在小项目做一些原型实验或测试环境。使我们的中心化日至系统,作为标准化的监控大盘,用来报警。
Mishap通过Chart.io将商业智能度量带入到我们所有的产品.额外的,我们用Mashape Analytics来监控和可视化我们平台管理的API流量。TravisCI用来测试,CodeClimate用来做质量控制,用Chef做部署。我们所有的代码都在Github。代码片段生成我们使用我们自己的和做模拟&测试API原型。
所有这些应用和系统,部署,监控&度量工具看起来可能很多,但使用12-factor方法和微服务结合,让这一切变得简单起来。
我们有约400个内部服务跑在一个有上百个机器的集群上。微服务架构允许我们速度更快并更独立,我们能明显看到过渡期的收益。但理解我们为什么这么做是很有帮助的。
本文来自微信公众号「麦芽面包,id「darkjune_think」
转载请注明。微信扫一扫关注公众号。