多環境多語言下保持生產環境獨立的軟體開發方式:在容器內開發 / Programming in Container

Programming in Container - Docker

這篇文章會分享我如何利用容器 (Container) 來依據產品或專案,分門別類的管理並隔離各種程式語言開發環境及其版本。

為了解決各種疑難雜症,我很常需要在各式各樣的開發環境來回切換,諸如 PythonGoPHPNodeJava 等,若再加上版本號,如 Python 2 / 3、Node 8 / 12、Java 1.8 / 11,則組合方式更為多元且複雜。這不僅容易弄亂生產環境,有時還會彼此發生衝突。

過去我會採用系統預載的版本,例如 Ubuntu 18.04 預設為 Python 2.7,然後再加上 Version Control 工具 (如 pyenv) 來新增 Python 3 環境,再用 virtualenv 來隔離模組。但到了容器化 (Containerization)時代,我們可以有更整潔的解決辦法。

軟體技術架構如何正確與商業需求快速對齊:談 MAU 換算至 RPS,SLA 回推至 SLI

Software Architecture meet Business Requirement

軟體技術架構應該要如何正確與商業需求對齊?很多人有不同的想法,而依據我多年的經驗,不外乎就是

有很多檢測依據可以評斷軟體技術架構是否符合商業需求,而因為時間與篇幅有限,這裡我先提出兩個最基本的對齊方式。

  1. 在商業需求就是 SLA (Service-Level Agreement, 服務等級協議),即公司提供給客戶的服務品質保證。
  2. 在商業需求就是 MAU (Monthly Activited Users, 月活躍客戶),即公司商業希望達成的每月活躍客戶數。有些人可能會用 DAU (Daily Active Users,日活躍用戶)。