• 效率方案:快速切换联调、测试、正式环境


      在项目的开发过程中,为了保证软件质量,服务端软件会被部署到多种环境中,目的是隔离开发、测试、正式环境。

      按照我们公司目前的架构,服务端软件会经历 “联调环境” -> "测试环境" -> "正式环境" 的环境切换。

      1. 联调环境,部署在本地服务器上,主要是用来给 APP 开发人员对接调试

      2. 测试环境,部署在线上服务器的测试环境,主要是用来给测试人员进行功能测试

      3. 正式环境,提供给正式用户使用

      以前我们公司的方式是,在同一份代码的基础上,打不同环境的安装包出来,但这种方式很容易出错,例如,QA 使用一个正式环境的包进行测试,发现数据不正确,然后向开发人员进行反馈,最后几经周折才发现是用错了安装包。

      二、任务需求

      当 APP 打好包之后,在不同的环境下,访问同一接口的时候,APP 将自动请求相关环境下的服务:

      1. 在联调环境中,APP 将自动请求联调服务器,api.local.odirus.me

      2. 在测试环境中,APP 将自动请求测试服务器,api.test.odirus.me

      3. 在正式环境中,APP 将访问正式服务器,       api.online.odirus.me

      三、解决方案

      我们进行了第一次尝试,使用记录的方式,大致流程如下:

      购买两台极路由,安装 Hosts 插件;在内网部署两台 Linux 服务器,安装 Nginx 软件。

      1. 在第一台路由器 router-a 上修改记录: api.online.odirus.me ->  nginx-1 服务器的 IP ,并且在 nginx-1 上做好 HTTP 转发规则:api.online.odirus.me ->  api.local.odirus.me

      2. 在第二台路由器 router-b 上修改记录: api.online.odirus.me ->  nginx-2 服务器的 IP,并且在 nginx-2 上做好 HTTP 转发规则:api.online.odirus.me -> api.test.local.me

      在使用APP的过程中,当设备连接 router-a 时,访问的接口服务将自动切换为 api.local.odirus.me;当设备连接 router-b 时,访问的接口服务奖自动切换为 api.test.local.me

      这种方案,看似很美好,不过在实际工作过程中,会遇到很多诡异的问题,例如设备连接 router-a  的时候,APP 最终还是请求的 api.online.odirus.me 线上服务,所以极路由的 Hosts 插件还是不太稳定。

      四、改进后的解决方案

      经过摸索,我们认为自建 DNS 服务器将会更加稳定,大致流程如下:

      在内网部署两台服务器,分别都安装 Nginx、dnsmasq,对应的IP、Nginx、dnsmasq 分别称为 server-1-ip, server-2-ip;server-1-nginx, server-2-nginx;server-1-dns, server-2-dns

      1. 在第一台服务器上,设置 dnsmasq 的域名配置为 api.online.odirus.me ->  server-1-ip,并且在 nginx-1 上做好 HTTP 转发规则:api.online.odirus.me ->  api.local.odirus.me

      2. 在第二胎服务器上,设置 dnsmasq 的域名配置为 api.online.odirus.me ->  server-2-ip,并且在 nginx-2 上做好 HTTP 转发规则: api.online.odirus.me -> api.test.odirus.me

      在使用APP的过程中,当设备的 dns 修改为 server-1-dns 时,访问的接口服务将自动切换为 api.local.odirus.me;当设备的 dns 修改为 server-2-dns 时,访问的接口服务奖自动切换为 api.test.local.me

  • 相关阅读:
    数据库范式
    SQL--使用NewID函数,创建GUID列
    初学Python
    Artificial intelligence(AI)
    Concurrency in csharp (Asynchronous, Parallel, and Multithreaded Programming)
    MySQL 5.7 create VIEW or FUNCTION or PROCEDURE
    csharp: Oracle Stored Procedure DAL using ODP.NET
    csharp: ODP.NET,System.Data.OracleClient(.net 4.0) and System.Data.OleDb读取Oracle g 11.2.0的区别
    csharp:ASP.NET SignalR
    csharp: MySQL Stored Procedure using DAL
  • 原文地址:https://www.cnblogs.com/odirus/p/8350630.html
Copyright © 2020-2023  润新知