灰度发布

如何利用cookie实现灰度发布?

144 
作者  简公介 
2017.03.07 21:51*  字数 457  阅读 126 评论 0

生产环境

生产环境是直接面对用户的环境。

灰度概念

灰度是介于在内网环境和线上环境中间的一层服务层。灰度属于生产环境中的测试环境。可以让部分用户,去使用所更新代码的所提供的服务,去进行更加有安全性保证的测试。

解决痛点

1.内网无法测试环境

这里举一个比较典型的例子:
1.微信登陆需要安全域名认证。

2.内网无法完全保证环境与线上一致

灰度除代码外,其他环境完全一致。
在极大的可能性下,排除对线上用户服务造成影响。

代码上线流程

一般代码会经过

内网测试 -> 灰度测试 -> 上线生产

在经过内网和灰度的双重保证,可以超大概率保证生产环境不会产生较为严重的错误。而且能够使灰度使用的域名,数据源等保持一致。

以 NGINX 为例

NGINX 是一个比较著名的反响代理服务器,可以根据相关条件对 http 请求进行转发。这里要做的就是,准备两份代码,一份生产目录,一份灰度目录。检测COOKIE标记,如果有我们所做的灰度标记,就把 http 请求转发到灰度代码的目录。

当然

在处理程序当中要有通过GET方法设置 cookie 灰度标记位的相关处理。

就这么简单

下面开始做

server {
    listen 80;

    #首先设置生产代码的目录
    set $root_dir   "/product_code_dir";
    if ($http_cookie ~* "IS\_GRAY=1")
    {
        #这里以IS_GRAY标记为例,如果检测到的话,就设置为灰度代码目录
        set $root_dir  "/gray_code_dir";
    }

    root $root_dir;
    index index.html index.htm index.php;

    # 域名配置
    server_name www.domain-name.com;

  #尝试寻找文件配置
    location / {
        try_files $uri $uri/ =404;
    }

  #这里是NGINX转发给PHP-FPM的配置,可以忽视
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

进入灰度

只要 GET 请求带有IS_GRAY=1,经过代码的set_cookie操作就可以进入灰度了!

http://www.jianshu.com/p/9736cb8e2129


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值