= Lessons Learned = [[PageOutline]] == Network == * 跨不同 Data Center 的資訊架構要特別留意 data pipeline 會受制於 bandwidth / latency ,而且要額外規劃 high availability == Docker == * Docker 的精神是傾向單一 image 可以維持 stateless (至少要確保 state 存放於外部 storage 中) -- '''immutable''' == Fluentd == * 前提:不熟悉 Ruby 的開發團隊 * Fluentd 比較合適用在 input source 不是開發團隊可以控制,只能取得 log / syslog 等的場景 (扮演黏著不同 Data Pipeline 的角色) == DNS == * Azure Traffic Manager 是認 DNS Server 的位置,不是 Client 裝置的位置 == 時區 == * 由於不容易確保 Infra 的 default timezone 都有正確改到,最好在 Application Layer 也實作 * Java `-Duser.timezone=` == 字集 == * 確保讀寫都用 UTF-8 == 產品生命週期 == == 併購 & 知識管理 == * 場景:大公司併購小公司,產品從小公司 migrate 到大公司的資料中心或公有雲。 * 痛點:原開發團隊核心開發者離開,若沒有妥善交接,欠缺知識管理,維運團隊後續維運起來會很痛苦(因為很多事情都是黑盒子,無從得知過去為何會那樣開發,技術細節更不是單看程式碼就可以馬上理解。遇到緊急狀況,無法快速技術排除)。