架構師需要懂的環境配置標準化

架構師需要懂的環境配置標準化

基本概述

在真實的研發環境中,一般存在localdevelopertestproduct等等環境。

如何在這些環境中,實現統一的、標準化的配置問題是架構師需要考慮的一件事情。

每種環境一般都需要配置如下部分:

  1. 組件(MySQL、Redis、MongoDB等)
  2. 數據(MySQL中的表結構、特定的表數據,如:省市區數據)
  3. 應用參數

組件標準化

除線上環境需要考慮到穩定性外,在運維角色沒有對容器化有豐富經驗的情況下,可以考慮線上環境傳統部署,如:自己搭組件集羣或者使用雲服務。

其餘環境皆使用容器化部署。

可以考慮的部署方案有如下:

  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:docker-compose官方文檔

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 發佈!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章