推上云端
服务器硬件的购买和维护成本很高。大流量很难通过适当扩展服务器去处理,这种做法在某些组织中甚至是禁忌。现如今,相比在自己的数据中心运行应用程序,把它们部署到云上是更引人注目,而且划算的做法。
目前有多个云平台可供选择,而那些提供Platform as a Service(PaaS)能力的平台无疑是最有吸引力的。PaaS提供了现成的应用程序部署平台,带有附加服务(比如数据库和消息代理),可以绑定到应用程序上。除此之外,当你的应用程序要求提供更大的马力时,云平台能轻松实现应用程序在运行时向上(或向下)伸缩,只需添加或删除实例即可。
之前我们已经把阅读列表应用程序部署到了传统的应用服务器上,现在再试试将其部署到云上。我们将把应用程序部署到Cloud Foundry和Heroku这两个著名的PaaS平台上。
小结
Spring Boot应用程序的部署方式有好几种,包括使用传统的应用服务器和云上的PaaS平台。在本章,我们了解了其中的一些部署方式,把阅读列表应用程序以WAR文件的方式部署到Tomcat和云上(Cloud Foundry和Heroku)。
Spring Boot应用程序的构建说明经常会配置为生成可执行的JAR文件。我们也看到了如何对构建进行微调,如何编写一个SpringBootServletInitializer实现,生成WAR文件,以便部署到应用服务器上。
随后,我们进一步了解了如何将应用程序部署到Cloud Foundry上。Cloud Foundry非常灵活,能够接受各种形式的Spring Boot应用程序,包括可执行JAR文件、传统WAR文件,甚至还包括原始的Spring Boot CLI Groovy脚本。我们还了解了Cloud Foundry如何自动将内嵌式数据源替换为绑定到应用程序上的数据库服务。
虽然Heroku不能像Cloud Foundry那样自动替换数据源的Bean,但在本章最后,我们还是看到了如何通过添加Spring Cloud Foundry库来实现一样的效果。这里使用绑定的数据库服务,而非内嵌式数据库。
在本章,我们还了解了如何在Spring Boot里使用Flyway和Liquibase这样的数据库迁移工具。在初次部署应用程序时,我们通过数据库迁移的方式完成了数据库的初始化,在后续的部署过程中,我们可以按需修改数据库。