系统服务化、API化,需要管理大量的API,这对于API的提供者和使用者来说,都存在很大的管理与沟通成本,这将是企业发展API经济的瓶颈。
1.建立统一的API管理平台
1)实现API完整生命周期管理
完成API从开发、测试、上线、下线,以及对API运行情况的监控、出现异常轻狂时及时报警等。
2) 有良好的API服务发现机制
API需要给给客户提供API的发现途径,每当API增加或调整时,能有让客户及时发现。
3)提供API文档和SDK
给各开发者提供API的说明文档,包含Request和Response的描述,还应为各种客户场景提供多种语言的SDK,让用户很简单的操作就能调用API,且为了保证用户能够及时、准确的获得SDK和API文档,最好能够自动生成。以降低API开发和迭代成本。
2. 建立安全防护体系
API带来便利的同时,也带来了风险,需要对API进行相应的用户认证、权限控制、限流流量控制等手段来保证服务的安全,防止数据泄漏。
而对于攻击,需要做好相应的防护机制,如流量清晰、流量识别、使用高防IP等等,来保证服务的稳定。防攻击是一个预成本,不管攻击有没有来,都要先付出防护成本。
1)身份认证
为保证请求安全、不被恶意调用,且安全性较高的API需要增加设置,保证请求不在网络传输中被篡改,具有一定的时效性,且不允许重复使用。
这需要每个请求都附带上身份信息,API身份认证包含很多种,有HTTP Basic、API KEY/APP KEY、Oauth、openConnectid、JWK等方式。
2)权限控制
为保证数据的安全,需要有完整的体系,实现对API访问权限管理和数据权限。
3)请求加密
重要的API使用加密传输,比较流行的做法是使用https,但使用https会有一定的性能损耗,必要时可以区分对待。
4)流量控制
即在开放API时,根据服务能力、业务场景,对API增加API、用户等多维度请求频率控制,以保证服务的可用性,避免恶意调用。
- API流量控制:根据端服务能力和业务的重要程度进行业务分层,对不同的API进行差异化的流量控制。以保证重要业务的延续性。
- 用户流量控制:在API上的用户分层,防止用户间相互挤占资源。
3. 运行情况监控
要提供一个稳定的API服务,才能有人敢用, 所以API服务的稳定非常重要。但实际情况是,我们总被各式各样的问题扩扰。为了不断改进用户体验,需要监控API的运行情况。
1)监控
监控提供信息,可以直接观察到API的运行情况和用户的使用习惯,为API的运维和运营提供依据。
2)调用量
掌握并分析API的调用量,可以了解客户的偏好(哪些API用户习惯使用,哪些不是),了解服务的负载情况,从而合理的安排资源;也能了解到我们的API设计是否合理,如用户进行一次业务操作需要多次调用同一API。
A. 错误率
错误率是API评价的重要指标,造成错误率高可能的原因有:
a. 后端服务不达标,经常报错;
b. API设计过于复杂,用户不理解;
错误率是系统健康状况的重要衡量指标,针对不同的错误,需要不同测应对策略。
B. 错误分布
一个好的监控可以看到错误的详细信息,可以了解到,错误原因,如:
a. 某个入参错误率高,需要调整API设计,优化复杂入参,避免理解偏差;
b. 很多用户调用超出了流量控制的限制,需要扩充服务能力,并调整流控;
c. 服务超时严重, 需要检查代码是否高效,是否需要适当增加后端服务能力。
B. 报警
针对重要指标进行报警通知,如:突增的流量、飙升的错误率、服务响应缓慢等,需要立即处理,以免造成故障。
c. 原则
a. 只有关键指标才设置报警,不是越全越好
b. 仔细分析报警阈值,不是越低越好
c. 报警标题及内容要言简意赅,不是越详细越好
d. 报警短信和邮件结合使用