应用程序接口可以成就一项云服务,同样也可以毁掉它——为什么这么多API的设计这么差?
API是细粒度的服务,其他系统、应用,甚至个人会使用API来调用云服务。可以用API 将在云网盘里存取信息、更新云数据库、验证数据、监控网络——任何你能想到的服务。
但是当你考虑这些API的设计的时候问题就出来了:有经过深思熟虑的设计,有良好测试过的,还有正确部署到系统里的。这些天我看到的有问题的API设计居多。
以下是我对云计算系统的API设计提出的两点主要意见,无论是为了简单的云存储还是为了接入高级的、高性能的云计算系统。
1. 细粒度的API和服务胜过粗粒度的
关于API的功能一直有争议,但是最好的做法是每个API承载尽量少的内容。尽管这个方法意味着为了实现某一操作你要同时调用很多初始API,不过更细粒度的API 能够更好地控制云服务。
有人称多个细粒度服务会降低系统的性能,而几个粗粒度的服务就不会。我遇到过这样的问题,因此我的建议是,遇到相应问题的时候,可以选择合并细粒度的服务及其API 为一个粗粒度的版本。
2. 设计API 时应把处理错误和功能恢复考虑在内
API 常会出错,然而一个整体的应用是建立在数百个API之上的。如果一个API出错,这个系统就会受到影响。
API开发人员需要设计处理错误和功能恢复机制来应对任何潜在的失败,以保证API及其服务的可用性。这意味着资源需要自动重启,沟通渠道需要重新建立,等等,——API 和它们的服务要有连续性。
我相信开发人员在未来几年会花更多的精力来设计和部署云计算API。随着公有云和私有云更加流行,任何脆弱的API都会对公有云或私有云服务造成严重的问题。我相信云服务商迟早会应对这一调整。