单体应用可能是很多人刚接触软件开发时所最常用到的开发模式了,现在大部分的企业或应用都还是采用此种开发模式,单体应用有着庞大的体量,用来支撑不同的客户端,例如桌面浏览器,移动应用或移动端浏览器,同时还有可能要暴露一些API给第三方的应用来使用,也有可能通过消息中间件来和其它应用集成,整个应用还要处理复杂的业务逻辑,访问数据库等等,总的来说,就是功能复杂,难以扩展和维护。

DecomposingApplications.011.jpg

但是单体应用也带来很多的好处

  • 容易开发
  • 容易部署
  • 容易扩展

但是成也萧何,败也萧何。随着业务不断的发展和壮大,单体应用会引出很多的问题:

  • 难部署
  • 难维护和扩展
  • 技术可能较为陈旧,不易新加入的成员融入,也难以升级

我目前所在的项目就出现过这样的问题,早前的单体应用每次本地启动要10分钟,且占用内存高,团队庞大,所使用的底层架构还是jdk7,WAS,很难应用到新的特性来提升开发进度,最终严重影响了交付进度,变革的时期来了!