由于云服务提供商(如AWS、微软和谷歌等)的激增,云原生已经成为嵌入到现代应用程序开发中的一个重要概念。简而言之,云原生应用程序就是为云构建的应用程序。
云原生应用程序是基于云计算基础设施设计的,云计算本身的应用程序开发并不是围绕内部服务器、数据库、连接等建立,而是依赖抽象出硬件和维护的服务,在某些情况下还包括操作系统本身,因此开发人员可以专注于真正重要的产品。
这些抽象虽然对保持团队和基础设施的可管理性非常好,但与标准的裸机和虚拟化解决方案相比,还有降低成本的空间:更少的开销意味着更低的风险、更少的资源和更少的人员。但是,云原生应用程序开发带来了不同的挑战,最常见的是将所有轻量级基础设施捆绑在一起。
首先,API优先原则
在传统的应用程序开发中,产品是围绕代码直接访问所需资源的理解而构建的。这导致了一个庞大的代码库,且非常难解耦。虽然云计算不再是像这样运行单一应用程序的任务,但它可能难以实现这种简化、可扩展和分布式基础设施的优势。
这是API优先开发可以作出的***的改变。对不熟悉API的人来说,优先开发API是在设计、记录和构建应用程序的API之前进行的。这意味着,在打开移动应用程序、网站、Alexa技术或物联网设备之前,API必须先存在。API优先开发的优势在于它将业务逻辑从客户端隔离并统一起来,同时为产品的工作方式建立单一的来源。
但在其他任何东西之前构建API可能会感觉不可接受的限制,幸运的是,得益于API文档标准(如API Blueprint),可以创建一个完全符合文档的模拟API服务器,允许您在API本身完成之前针对实际服务构建和测试API集成。
优先开发API的***优势在于不是让你避免重复开发或提供可靠的接口来处理业务逻辑,如果API优先的原则每次都没有意义,则完全可以放弃这一原则,而不会影响应用程序的开发进程。另一方面,如果在开发云原生应用程序不坚持API优先的原则,可能会一脚踩进技术的坑,需要数月的时间才能完成应用开发。
使其无服务(Serverless)
从表面上看,API优先开发和云原生应用程序开发不是相互排斥的。用户可以构建不带API的云原生应用程序,并且可以在不使用云的情况下构建一个API优先的应用程序,这两个概念***协调的地方是在无服务器环境中。
在无服务器环境中,用户不必处理服务器的环境,这意味着与其开发应用程序或API作为服务在服务器上运行,还不如将应用程序抽象为运行在指定运行时的单个函数,这是应用程序开发中***级别的抽象层次之一。
通过在API优先开发策略中构建无服务器API而不是传统的代表性状态转移API,用户可以充分利用任何云提供商提供的资源。当用户通过API把每个单独的方式变成有效的微服务时,最终的结果就是形成了一个广泛分布、***扩展且高度可靠的应用程序后台,可以处理任何事情。
开发一个应用程序首先应该回答三个问题:What、Where、Why,而不是How,云原生应用程序开发使得用户通过尽可能少的成本支出来处理这种情况,而API优先的原则能够为用户提供回答Where和Why的工具,这是API优先的云原生应用程序开发的真正意义。