staging server, source congtrol, deply workflow using git
web项目开发中,有三个实践对于项目成功是非常重要的:
1. staging servers
2. Version control workflows
3. Tested, repeatable deployments.
Staging Servers:
什么是Staging server呢?基本想法是 staging=production-users。如果你是facebook,google那么你可能早已经有了成熟的工作流程,你已经有了一些具备多级staging/production的系统,你可以动态地更改他们。你已经有了一些天才为你工作,听听他们怎么想就可以了。这篇文章适合于那些没有为自己工作的天才的老板们,对于那些处于“要么在开发人员电脑上运行”,“要么在生产环境中运行”状态的团队。
为什么我们需要staging servers? 任何可能在生产环境会down机的情况都需要再staging server上首先发生!正是因为这个原因,你总是希望staging server环境和production server环境越接近越好。如果生产环境处理信用卡业务,那么staging环境同样也要处理信用卡。这意味着如果你的支付网关配置收到影响,那么你将在staging server上发现这个情况,而不是放到production server上才发现。如果你的production server使用ruby1.9,那么你的staging server也要使用ruby1.9.如果你的production server上使用memcache并放在12345端口,那么staging server上同样在12345端口上使用memcache.
配置一台staging server是很简单的。如果对你来说不简单的话,那么意味着你的infrastructure本身就存在问题了,只是你不知道而已:你可能是长时间地对你的production server粗制滥造,比如手工ssh到你的系统中,调整你的配置而没有任何关于你做了什么的log。你没有一个归档的过程或者自动化的脚本来从头创建你的production server.如果你有那个如何创建你的production server的归档记录或者自动化创建脚本,那么你一定可以在一个小时内把staging server搭建起来,而这个stagingserver基本上和production server是一样的。
大部分人可能没有能力这样做如果他们没有仔细思考这个问题的话。这是可以解决的,而且应该解决。这有实质性的好处:如果你有一个可以重复的过程来provisioning一个产品环境的话,那么有一天如果发生了系统崩溃,你将有信心在很快执行一个流程恢复系统。信心是很重要的,因为一旦发生灾难,你将无所适从,而无所适从的情况下,你是很难免于犯错的。所以一切有备无患。
保持你的服务器配置在一个脚本中比在服务器上分别配置多处(比如/etc/environment,/etc/crontab,/usrlocal/nginx/conf/apps/appname.conf etc)的好处是这个脚本可以放在版本控制系统中。你的cron jobs?如果他们本身也被版本控制,那么你将有你的系统变更的过程记录。
在你准备好了能够重复生产你的staging environment时,你可能希望做一个小小的修改。很多公司可能不希望他们的staging environment放到公网上,因为这样的话,客户不会在成熟之前看到系统的墨阳,而严重的问题永远不会影响到外面的世界。有很多种方式来这样做:理想地,你只要在防火墙上配置规则,任何从互联网上来的能够进入到你的staging environment.
我的staging environment仅仅包含ngix的一片小代码,它拒绝任何人的访问,除非一个特定的host被允许。这将会break和外部server的集成,比如twilio,spreedly,他们是需要callback的。所以我就对这两个url做一个例外,允许他们访问。
另外一个问题是:你如何populate一些数据到staging server上去呢?我通常使用seed脚本,手工增加一些数据。你也可以dump production DB并且加载到staging DB上去。
staging server, source congtrol, deply workflow using git的更多相关文章
- 什么是staging server
原文链接:http://blog.csdn.net/blade2001/article/details/7194895 软件应用开发的经典模型有这样几个环境:开发环境(development).集成环 ...
- Debezium SQL Server Source Connector+Kafka+Spark+MySQL 实时数据处理
写在前面 前段时间在实时获取SQLServer数据库变化时候,整个过程可谓是坎坷.然后就想在这里记录一下. 本文的技术栈: Debezium SQL Server Source Connector+K ...
- Windows server R2 2008上部署gogs git
所需的环境 1. 安装mysql 安装路径:F:\MySQL Server 5.7 2. 安装gogs ...
- mac os 利用ssh 搭建git server服务器详细教程,以及git基本用法
详细讲mac 连接mac的git操作 首先在服务端上 第一:新建一个仓库 1, cd /Users/userName/projects 用linux命令进入一个你想要创建与他人共享的文件夹. 2,su ...
- git workflow常用命令
git init git status git add readme.txt git add --all Adds all new or modified files git comm ...
- [Git] An efficient GIT workflow for mid/long term projects
reference : http://fle.github.io/an-efficient-git-workflow-for-midlong-term-projects.html Our full-w ...
- How To Use Git Source Control with Xcode in iOS 6
This tutorial is by Malek Trabelsi, a passionate iOS developer from Tunisia focused primarily on mob ...
- Windows下安装 msysGit 以及初始化 Git server环境
Windows下git工具msysGit使用以及Git server初始化 Windows下git工具,这里选择msysGit,版本为msysGit-netinstall-1.8.1.2-previe ...
- 小白也能用Git管理团队项目了:百度云同步+Git Extensions+Git Source Control Provider
百度云同步 百度云同步,会将本地的某个文件目录和云端进行同步.如果在本地将这个同步的目录设置为Git的中心服务器,那么本地push到中心服务器的内容也会被同步到云端.其他开发者只要也进行相同的设置,就 ...
随机推荐
- Linux配置防火墙,开启80端口、3306端口(转)
vi /etc/sysconfig/iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允许80端口通过防火 ...
- POJ 1634 Who's the boss?
题意: 一个员工A的直接上司是那些薪水大于A,并且身高>=A的人中薪水最少的一个. 主席CEO的薪水最高,且身高也是最高的. 有多组数据. 每组数据给出m个员工,和q个询问. 每个员工有id.薪 ...
- UVA 562 Dividing coins (01背包)
题意:给你n个硬币,和n个硬币的面值.要求尽可能地平均分配成A,B两份,使得A,B之间的差最小,输出其绝对值.思路:将n个硬币的总价值累加得到sum, A,B其中必有一人获得的钱小于等于sum/2 ...
- YAPF:Google开源的Python代码格式化工具
点这里 现在的大多数 Python 代码格式化工具(比如:autopep8 和 pep8ify)是可以移除代码中的 lint 错误.这显然有些局限性.比如:遵循 PEP 8 指导的代码可能就不会被格式 ...
- C# static方法-使用迭代器循环遍历文件中的额行
//封装的方法 //读取文件的值,放入集合中 public static IEnumerable<string> ReadLines(string fileName) { using (T ...
- 项目上线与LOG记录
如果项目上过线的话,那你一定知道Log是多么重要. 为什么说Log重要呢?因为上线项目不允许你调试,你只能通过Log来分析问题.这时打一手好Log的重要性绝不亚于写一手好代码.项目出问题时,你要能拿出 ...
- JDBC第二次学习
脑子太笨,必须得记录下来一些文字,方便回来查询. 这是我的第二次学习JDBC的笔记,看的是传智播客——李勇老师的JDBC系列,已看到第23集. 分析在实际项目中该如何应用JDBC 一个简单用户相关的数 ...
- x64 结构体系下的内存寻址
欢迎转载,转载请注明出处:http://www.cnblogs.com/lanrenxinxin/p/4735027.html 在阅读NewBluePill源码的时候,看内存的那一块简直头疼,全是x6 ...
- sublime3可用key
—– BEGIN LICENSE —–Nicolas HennionSingle User LicenseEA7E-8660758A01AA83 1D668D24 4484AEBC 3B04512C8 ...
- 安卓app缓存设置
无论大型或小型应用,灵活的缓存可以说不仅大大减轻了服务器的压力,而且因为更快速的用户体验而方便了用户. Android的apk可以说是作为小型应用,其中99%的应用并不是需要实时更新的,而且诟病于蜗牛 ...