架构师需要懂的环境配置标准化

基本概述

在真实的研发环境中,一般存在 localdevelopertestproduct等等环境。
如何在这些环境中,实现统一的、标准化的配置问题是架构师需要考虑的一件事情。

每种环境一般都需要配置如下部分:

组件标准化

除线上环境需要考虑到稳定性外,在运维角色没有对容器化有丰富经验的情况下,可以考虑线上环境传统部署,如:自己搭组件集群或者使用云服务。
其余环境皆使用容器化部署。
可以考虑的部署方案有如下:

  1. local部署: docker-composedevelopertest部署: docker-swarm or kubernetes
  2. 所有环境都基于 kubernetes部署。

PS:部署脚本一般由运维角色维护, local部署脚本从运维角色获取。

附上一个 local部署 docker-compse脚本

  • docker-compose.yml
version: '2'

services:
  mysql:
    image: mysql:5.6
    command: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci]
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    # For testing from the host:
    # mysql --host=127.0.0.1 --port=3306 --user root -p
    ports:
      - "3306:3306"
  redis:
    image: redis:3.0
    command: ['redis-server', '--requirepass 123456']
    expose:
    - 6379
    ports:
    - "6379:6379"
  mongo:
    image: 'umputun/mongo-auth'
    environment:
      - MONGO_PASSWD=123456
    ports:
      - "27017:27017"

PS:按需使用相应组件,也可以自己添加需要的组件, local环境没做数据持久化处理,如需用在其余环境,请参考文档配置。

数据标准化

数据标准化主要解决的是各环境表结构不一致的问题。
线上环境一定要关掉该功能。
线上环境的数据变更一定要按规范、走变更流程,经 DBA或者 运维角色执行。
其余环境个人解决方案: flyway

flyway:
  enabled: true
  baseline-on-migrate: true
  locations: "db/migration"
  schemas: table_name

应用参数标准化

配置中心解决 apollonacosspring cloud config local环境可以从配置中心拉一份 developer环境配置下来,更改参数至 local环境组件。

PS:各环境重要参数,通过配置中心配置,而不是放在项目目录,上传至 git。这样配置信息不会有配置文件级外泄风险。

分享并记录所学所见

Original: https://www.cnblogs.com/switchvov/p/15093853.html
Author: switchvov
Title: 架构师需要懂的环境配置标准化

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/572876/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球