caitiao的博客

就现在,Just do it

0%

现代应用程序

现代应用程序(Modern Application)是通过采用云原生体系结构来快速响应事件,满足客户多变需求的一种方法,它的构建采用了容器化,松散耦合的微服务架构模式,Serverless运行模式和DevOps自动化软件交付流程。

什么不是现代化应用

单机应用(不联网,不可扩展的单例),数据存在内存中,不使用源代码控制,不用工具来自动构建和发布新版本,不具备扩展性和适配性。
不是说用了容器技术或跑在k8s上就是现代化应用,在裸机或虚拟机上运行的应用不一定表示它不是现代化的,微服务可以跑在裸机上或虚拟机上运行。
一个应用应该从不同的角度(比如构建,运行,管理,连接和保护)具有某些特质,才能称之为现代化的应用。

现代化应用的特征(微服务,弹性,多云)

  • 微服务
    作为现代化应用的组成部分,服务倾向于遵循UNIX原则,做一件事情,并且做得很好。服务是独立的,意味着服务是可以独立运行,根据访问策略被消费者调用。
  • 弹性
    现代软件理论认为任何系统都一定会发生故障,需要面向故障或失败去设计我们的应用及服务。应用应具备弹性设计原则,以平均无故障时间(MTBF)和平均恢复时间(MTTR)来度量应用的弹性能力。
  • 多云
    随着云计算的普及,面对多云厂商供给,我们在应用设计的时候不可避免的需要考虑多云部署场景。我们通常通过抽象将应用和底层运行环境的硬件和平台解耦来提高了可部署性。
  • 灵活部署
    从裸机到虚拟机,从容器到无服务器的每项技术改进都显示出软件可部署性的提高,每次转换都是软件对运行代码的环境依赖性降低。
  • 虚拟机,容器和无服务器
    围绕应用构建,运行和管理的工具和流程自动化和协调来实现现代化应用部署裸机,容器或虚拟机中。

从部署方式看应用程序

  • 传统应用程序
    直接部署在云服务器(如阿里云的ECS)上,我们一定会经历部署环境的安装及配置(java+nginx,php+apache等),本地编译代码,上传代码到指定的云服务器。
  • 环境无关的现代应用
    通过CI/CD工具来将应用构建打包成Docker镜像,通过k8s或阿里云的ack来部署Docker镜像来实现现代化应用的部署。