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

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

[TOC]mysql

基本概述

在真实的研发环境中,通常存在 localdevelopertestproduct等等环境。

如何在这些环境中,实现统一的、标准化的配置问题是架构师须要考虑的一件事情。git

每种环境通常都须要配置以下部分:github

  1. 组件(MySQL、Redis、MongoDB等)
  2. 数据(MySQL中的表结构、特定的表数据,如:省市区数据)
  3. 应用参数

组件标准化

除线上环境须要考虑到稳定性外,在运维角色没有对容器化有丰富经验的状况下,能够考虑线上环境传统部署,如:本身搭组件集群或者使用云服务。redis

其他环境皆使用容器化部署。spring

能够考虑的部署方案有以下:sql

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

PS:部署脚本通常由运维角色维护,local部署脚本从运维角色获取。docker

附上一个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:docker-compose官方文档springboot

PS:按需使用相应组件,也能够本身添加须要的组件,local环境没作数据持久化处理,如需用在其他环境,请参考文档配置。架构

数据标准化

数据标准化主要解决的是各环境表结构不一致的问题。

线上环境必定要关掉该功能。

线上环境的数据变动必定要按规范、走变动流程,经DBA或者运维角色执行。

其他环境我的解决方案:flyway

springboot环境中flyway的使用

  1. application.yml中填入相应配置文件
flyway:
  enabled: true
  baseline-on-migrate: true
  locations: "db/migration"
  schemas: table_name
  1. 在指定目录下设置配置脚本

    • 脚本命名规范:V{版本}__{脚本名}.sql
  2. 配置数据库环境
  3. 启动springboot项目
  4. 在数据库中查看表结构、表数据

PS:flyway官网

应用参数标准化

配置中心解决

apollonacosspring cloud config

local环境能够从配置中心拉一份developer环境配置下来,更改参数至local环境组件。

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

PS:apollo

PS:nacos

PS:spring cloud config

本文由博客一文多发平台 OpenWrite 发布!
相关文章
相关标签/搜索