软件理论及思想
低至一折起
Write the Code,Change the World!!!
展开
-
SaaS应用12原则:简介
简介如今,软件通常会作为一种服务来交付,它们被称为网络应用程序,或软件即服务(SaaS)。12-Factor(12 原则,或 12 要素)为构建如下的 SaaS 应用提供了方法论:使用标准化流程自动配置,从而使新的开发者花费最少的学习成本加入这个项目和操作系统之间尽可能的划清界限,在各个系统中提供最大的可移植性适合部署在现代的云计算平台,从而在服务器和系统管理方面节省资源可以在工具、架...原创 2019-08-12 14:29:38 · 358 阅读 · 0 评论 -
SaaS应用12原则:(十一)日志
把日志当作事件流日志使得应用程序运行的动作变得透明。在基于服务器的环境中,日志通常被写在硬盘的一个文件里,但这只是一种输出格式。日志应该是事件流的汇总,将所有运行中进程和后端服务的输出流按照时间顺序收集起来。尽管在回溯问题时可能需要看很多行,日志最原始的格式确实是一个事件一行。日志没有确定开始和结束,但随着应用在运行会持续的增加。12-factor应用本身从不考虑存储自己的输出流。不应该...原创 2019-08-12 14:40:42 · 435 阅读 · 0 评论 -
SaaS应用12原则:(十)开发环境与线上环境等价
尽可能的保持开发,预发布,线上环境相同从以往经验来看,开发环境(即开发人员的本地部署)和线上环境(外部用户访问的真实部署)之间存在着很多差异。这些差异表现在以下三个方面:时间差异:开发人员正在编写的代码可能需要几天,几周,甚至几个月才会上线。人员差异:开发人员编写代码,运维人员部署代码。工具差异:开发人员或许使用 Nginx,SQLite,OS X,而线上环境使用 Apache,MySQ...原创 2019-08-12 14:39:58 · 297 阅读 · 0 评论 -
SaaS应用12原则:(九)易处理
快速启动和优雅终止可最大化健壮性12-Factor 应用的进程是*易处理(disposable)*的,意思是说它们可以瞬间开启或停止。这有利于快速、弹性的伸缩应用,迅速部署变化的代码或配置,稳健的部署应用。进程应当追求最小启动时间。理想状态下,进程从敲下命令到真正启动并等待请求的时间应该只需很短的时间。更少的启动时间提供了更敏捷的发布以及扩展过程,此外还增加了健壮性,因为进程管理器可以在授...原创 2019-08-12 14:39:19 · 273 阅读 · 0 评论 -
SaaS应用12原则:(八)并发
通过进程模型进行扩展任何计算机程序,一旦启动,就会生成一个或多个进程。互联网应用采用多种进程运行方式。例如,PHP 进程作为 Apache 的子进程存在,随请求按需启动。Java 进程则采取了相反的方式,在程序启动之初 JVM 就提供了一个超级进程储备了大量的系统资源(CPU 和内存),并通过多线程实现内部的并发管理。上述 2 个例子中,进程是开发人员可以操作的最小单位。在 12-factor...原创 2019-08-12 14:38:34 · 341 阅读 · 0 评论 -
SaaS应用12原则:(七)端口绑定
通过端口绑定(Port binding)来提供服务互联网应用有时会运行于服务器的容器之中。例如 PHP 经常作为 Apache HTTPD 的一个模块来运行,正如 Java 运行于 Tomcat。12-Factor 应用完全自我加载而不依赖于任何网络服务器就可以创建一个面向网络的服务互联网应用 通过端口绑定来提供服务,并监听发送至该端口的请求。本地环境中,开发...原创 2019-08-12 14:37:41 · 416 阅读 · 0 评论 -
SaaS应用12原则:(六)进程
以一个或多个无状态进程运行应用运行环境中,应用程序通常是以一个和多个进程运行的。最简单的场景中,代码是一个独立的脚本,运行环境是开发人员自己的笔记本电脑,进程由一条命令行(例如python my_script.py)启动。另外一个极端情况是,复杂的应用可能会使用很多进程类型 ,也就是零个或多个进程实例。12-Factor 应用的进程必须无状态且无共享任何需要持久化的数据都要存储在...原创 2019-08-12 14:36:53 · 181 阅读 · 0 评论 -
SaaS应用12原则:(五)构建,发布,运行
严格分离构建和运行基准代码 转化为一份部署(非开发环境)需要以下三个阶段:构建阶段是指将代码仓库转化为可执行包的过程。构建时会使用指定版本的代码,获取和打包依赖项,编译成二进制文件和资源文件。发布阶段会将构建的结果和当前部署所需配置相结合,并能够立刻在运行环境中投入使用。运行阶段(或者说“运行时”)是指针对选定的发布版本,在执行环境中启动一系列应用程序进程。12-facto...原创 2019-08-12 14:36:09 · 252 阅读 · 0 评论 -
SaaS应用12原则:(四)后端服务
把后端服务(backing services)当作附加资源后端服务是指程序运行所需要的通过网络调用的各种服务,如数据库(MySQL,CouchDB),消息/队列系统(RabbitMQ,Beanstalkd),SMTP 邮件发送服务(Postfix),以及缓存系统(Memcached)。类似数据库的后端服务,通常由部署应用程序的系统管理员一起管理。除了本地服务之外,应用程序有可能使用了第三方发...原创 2019-08-12 14:35:07 · 413 阅读 · 0 评论 -
SaaS应用12原则:(三)配置
在环境中存储配置通常,应用的配置在不同部署(预发布、生产环境、开发环境等等)间会有很大差异。这其中包括:数据库,Memcached,以及其他后端服务的配置第三方服务的证书,如 Amazon S3、Twitter 等每份部署特有的配置,如域名等有些应用在代码中使用常量保存配置,这与 12-Factor 所要求的代码和配置严格分离显然大相径庭。配置文件在各部署间存在大幅差异,代码却完全一...原创 2019-08-12 14:34:12 · 356 阅读 · 0 评论 -
SaaS应用12原则:(二)依赖
显式声明依赖关系( dependency )大多数编程语言都会提供一个打包系统,用来为各个类库提供打包服务,就像 Perl 的 CPAN 或是 Ruby 的 Rubygems。通过打包系统安装的类库可以是系统级的(称之为 “site packages”),或仅供某个应用程序使用,部署在相应的目录中(称之为 “vendoring” 或 “bunding”)。12-F...原创 2019-08-12 14:33:16 · 188 阅读 · 0 评论 -
SaaS应用12原则:(一)基准代码
一份基准代码(Codebase),多份部署(deploy)12-Factor 应用(基于 12 原则设计的应用称为 12-Factor 应用)通常会使用版本控制系统加以管理,如 Git,SVN 等。一份用来跟踪代码所有修订版本的数据库被称作代码库(code repository, code repo, repo)。在类似 SVN 这样的集中式版本控制系统中,基准代码 就是指控制系统中的这一份...原创 2019-08-12 14:31:54 · 606 阅读 · 0 评论 -
SaaS应用12原则:(十二)管理进程
后台管理任务当作一次性进程运行进程构成(process formation)是指用来处理应用的常规业务(比如处理 web 请求)的一组进程。与此不同,开发人员经常希望执行一些管理或维护应用的一次性任务,例如:运行数据移植(Django 中的 manage.py migrate, Rails 中的 rake db:migrate)。运行一个控制台(也被称为 REPL shell)...原创 2019-08-12 14:41:23 · 320 阅读 · 0 评论