# 什么是云原生
**云原生 = 微服務 + DevOps + 持續交付 + 容器化**

# 為什么選擇云原生

* 生產環境測試環境服務器資產利用如何提升,IT系統容量如何規劃?
* 新核心項目成立,研發組申請32U64G 服務器三臺?
* 生產業務系統如何快速分析定位?
* 系統BUG訂單串號,研發登錄生產服務器排查問題,三小時后BUG修復。
* 為什么系統故障最先發現的是我們的客戶,而不是我們的研發團隊?
## 云原生IT四化建設
## 金融科技應用架構變遷

## 微服務時代已經來臨

## **云原生核心優勢**
### **解耦軟件開發,提高靈活性和可維護性**
- 基于容器鏡像的軟件分層,清晰的依賴管理
- 玻璃程序、配置和微服務,讓開發者聚焦業務發展
- 通過拆分應用程序為微服務和明確的依賴描述
### **多云支持,避免廠商鎖定**
- 廠商基于標準接口提供服務,互操作性強
- 開源為主,豐富的標準軟件生態,用戶多樣選擇
- 支持在混合云、私有云或混合云部署
### **避免侵入式定制**
- 基于k8s松耦合平臺架構,易擴展
- k8s已經是被公認 platform for platform
### **提高工作效率和資源利用率**
- 通過中心編排過程動態管理和調度應用微服務
# 云原生應用與傳統應用區別
## **牛”和“寵物”的管理方法**

* **牛:** 容器及其基礎設施都是不可變的,我們一般在部署容器或服務器后就再也不會對其進行修改。**如果需要任何的更新、修復或修改某些內容,我們可以使用有適當更改的通用鏡像去構建新的容器或服務器,然后替換舊的容器和服務器。**這種方法就相當于在牛場管理牛。
* **寵物:** 另一方面,傳統的服務器以及虛擬機我們都認為是可更改的,它們更像是寵物,因此**不是一次性使用的**,我們需要一直關注它們,所以它們的維護成本很高。
| | 傳統 |云原生|
| --- | --- |---|
| 重點關注| 使用壽命和穩定性| 上市速度|
|開發方法|瀑布式半敏捷型開發|敏捷開發、DevOps|
|團隊|相互獨立的開發、運維、質量保證和安全團隊|協作式 DevOps 團隊|
|交付周期|長|短且持續|
應用架構|緊密耦合 <br> 單體式|松散耦合 <br>基于服務 <br> 基于應用編程接口(API)的通信|
|基礎架構 | 以服務器為中心 <br>?適用于企業內部 <br>?依賴于基礎架構 <br>?縱向擴展 <br> ?針對峰值容量預先進行置備|以容器為中適用于企業內部和云環境 <br>可跨基礎架構進行移植 <br>橫向擴展 <br>按需提供容量|
# DevOps簡述
顧名思義,DevOps就是開發(Development)與運維(Operations)的結合體,其目的就是打通開發與運維之間的壁壘,促進開發、運營和質量保障(QA)等部門之間的溝通協作,以便對產品進行小規模、快速迭代式地開發和部署,快速響應客戶的需求變化。它強調的是開發運維一體化,加強團隊間的溝通和快速反饋,達到快速交付產品和提高交付質量的目的。
DevOps并不是一種新的工具集,而是一種思想,一種文化,用以改變傳統開發運維模式的一組最佳實踐。一般做法是通過一些CI/CD(持續集成、持續部署)自動化的工具和流程來實現DevOps的思想,以流水線(pipeline)的形式改變傳統開發人員和測試人員發布軟件的方式。隨著Docker和Kubernetes(以下簡稱k8s)等技術的普及,容器云平臺基礎設施越來越完善,加速了開發和運維角色的融合,使云原生的DevOps實踐成為以后的趨勢。下面我們基于混合容器云平臺詳細講解下云平臺下DevOps的落地方案。
### 云原生DevOps特點
DevOps是PaaS平臺里很關鍵的功能模塊,包含以下重要能力:支持代碼克隆、編譯代碼、運行腳本、構建發布鏡像、部署yaml文件以及部署Helm應用等環節;支持豐富的流水線設置,比如資源限額、流水線運行條數、推送代碼以及推送鏡像觸發流水線運行等,提供了用戶在不同環境下的端到端高效流水線能力;提供開箱即用的鏡像倉庫中心;提供流水線緩存功能,可以自由配置整個流水線或每個步驟的運行緩存,在代碼克隆、編譯代碼、構建鏡像等步驟時均可利用緩存大大縮短運行時間,提升執行效率。具體功能清單如下:
- 緩存加速:自研容器化流水線的緩存技術,通過代碼編譯和鏡像構建的緩存復用,平均加速流水線3~5倍;
- 細粒度緩存配置:任一階段、步驟可以控制是否開啟緩存及緩存路徑;
- 支持臨時配置:用戶無需提交即可運行臨時配置,避免頻繁提交配置文件污染代碼倉庫;
- 開箱即用的鏡像倉庫;
- 提供完整的日志功能;
- 可視化編輯界面,靈活配置流水線;
- 支持多種代碼倉庫授權:GitHub、GitLab、Bitbucket等;
- 多種流水線觸發方式:代碼倉庫觸發,鏡像推送觸發等;
- 網絡優化,加快鏡像或依賴包的下載速度;
### 云原生DevOps實踐
- 容器基礎平臺
- 微服務應用發布平臺
- Istio微服務治理
- APM 應用性能檢測
## 容器基礎平臺

## 微服務應用發布平臺

- 云原生應用
- 容器化微服務改造方案
- 應用容器化上線規范
- 服務網格和傳統應用區別
- DevOps 管理規范
- 基礎架構管理規范
- 域名管理規范
- 主機名稱管理規范
- 應用域名管理規范
- 應用上線規范
- GIT分支及API JAR上傳規范
- 基礎架構設計
- 運維管理職責
- 基礎服務
- DNS 內部架構
- centos 及 kernel 版本標準
- Linux服務器OS標準配置
- Docker版本初始化
- kuberneter 集群方案
- kubernetes 命名規范
- Jenkins CI/CD
- nginx 配置文件變更流程
- Prometheus 容器監控
- 項目資源需求
- 應用服務
- 編譯和運行期標準
- 新核心系統基礎服務架構
- 安全防御
- 互聯網軟件可靠性工程及可靠性度量