Openpanel:Mixpanel 的 Open Source Clone

在「Show HN: Openpanel – An open-source alternative to Mixpanel (github.com/openpanel-dev)」這邊看到的專案,GitHub 頁面在「Openpanel」這邊。

主要是因為 Mixpanel 的價錢很詭異,另外作者也希望可以同時追蹤一般常見的 pageview 資訊 (像是 GA4 或是 Plausible),所以作者就跳下來自己寫了...

除了 self-hosted 版本以外,也有 cloud 版本可以先看看介面,或是丟一些量進去看看操作起來如何。

AlmaLinux 放棄 1:1 clone RHEL

上個禮拜的資訊了 AlmaLinux 最後決定放棄 clone RHEL:「The Future of AlmaLinux is Bright」。

After much discussion, the AlmaLinux OS Foundation board today has decided to drop the aim to be 1:1 with RHEL. AlmaLinux OS will instead aim to be Application Binary Interface (ABI) compatible*.

這樣在市場上有 Rocky LinuxSUSE 也打算要搞自己的 RHEL clone 的前提下,沒有使用 AlmaLinux 的誘因,標題說的 bright 就是講講而已。

SUSE 參戰:SUSE 宣佈投入 RHEL clone

Hacker News 上看到「SUSE is forking RHEL (suse.com)」這個,原文的確就是 SUSE 決定參戰,跳進去 clone RHEL:「SUSE Preserves Choice in Enterprise Linux by Forking RHEL with a $10+ Million Investment」。

第一段把重點講完了,手上自己有 SUSE Linux Enterprise 的 SUSE 決定要維護一套 RHEL clone:

Today SUSE, the company behind Rancher, NeuVector, and SUSE Linux Enterprise (SLE) and a global leader in enterprise open source solutions, announced it is forking publicly available Red Hat Enterprise Linux (RHEL) and will develop and maintain a RHEL-compatible distribution available to all without restrictions. Over the next few years, SUSE plans to invest more than $10 million into this project.

然後 Hacker News 討論裡面看到這個資訊頗有趣:SUSE 的 CEO Dirk-Peter van Leeuwen 才來三個月,先前在 Red Hat 待了十八年:

> Dirk-Peter van Leeuwen, CEO of SUSE, said,

According to LinkedIn Dirk-Peter started at Suse 3 months ago as CEO and worked for Red Hat for 18 years and was a Senior VP at Red Hat.

I think this move of Suse could be a credible threat to IBM / Red Hat's RHEL.

LinkedIn 上的經歷,應該算是純業務出身... 這算是什麼操作?

Git v2.25.0 的 Partial Checkout

Git v2.25.0 出了一個大家等了很久的功能 Partial Checkout,可以只抓取部份的內容:「[ANNOUNCE] Git v2.25.0」。另外也可以看 GitHub 的整理:「Highlights from Git 2.25」。

這個功能正式名稱是 sparse-checkout

* Management of sparsely checked-out working tree has gained a dedicated "sparse-checkout" command.
* "git sparse-checkout list" subcommand learned to give its output in a more concise form when the "cone" mode is in effect.

這個功能目前還是 experimental,目前 GitHub 還沒有支援,如果要玩的可能要用自己的 server 來測:

Partial clones are still considered an experimental feature from Git’s point of view. For instance, many providers (such as GitHub) don’t support this feature yet, and it’s continually changing and evolving within Git from release to release.

看了一下公告,這個功能的主力是 Microsoft 的 Derrick Stolee 推進來的,再等幾個版本應該有機會在各大平台上用。

Amazon Aurora 支援快速複製

Amazon Aurora 宣佈支援快速複製:「Amazon Aurora Fast Database Cloning」。

對於 2TB 的資料大約五分鐘就完成了:

This means my 2TB snapshot restore job that used to take an hour is now ready in about 5 minutes – and most of that time is spent provisioning a new RDS instance.

主要是得力於後端 storage 的部份可以實做 copy-on-write 架構:

By taking advantage of Aurora’s underlying distributed storage engine you’re able to quickly and cheaply create a copy-on-write clone of your database.

可以快速複製就可以很快的驗證一些事情,像是可以直接測試 ALTER TABLE 需要的時間,或是事前演練...

Amazon Aurora 可以 clone 了...

Amazon Aurora 可以 clone 複製資料庫了:「Amazon Aurora Introduces Database Cloning Capabilities」。

而且是 COW 架構 (Copy on write),所以複製出來的部份不需要額外付儲存費用,只有修改的部份才要付費,這點相當殺啊:

A cloning operation does not incur any storage charges. You will only be charged for additional storage space if you make data changes.

這對於「測試」這件事情變出不少變化可以用...

清出一個乾淨的 Git Repository

自動化機制中,要確保可以拿到最新的 Git Repository 最保險的方法是 rm -rf 掉再重新 clone 一份,但對於稍微大一點的 repository 速度就太慢了,所以得想辦法保留 repository 加快速度。

目標是想要處理 submodule 的變更,並且仍然可以處理 force push 時的災難,避免需要人工介入... 這在建各種自動化機制時常常會用到,像是用 Fortify SCA 白箱掃描,或是 CI & CD 機制上。

BRANCH=master
git fetch --force
git reset --hard origin/"${BRANCH}"
git submodule sync --recursive
git submodule update --init --force
git clean --force --force -d -x
git checkout "${BRANCH}" --force

用了很多 --force 主要是要處理 force push 後的收拾 :o

其實如果想要處理的更好的話,可以在發生錯誤時改走 mv (保留屍體) + 重新 clone 的機制,並且發警報出來讓管理者事後研究,這樣發生問題當下還是可以先提供服務。

不過這個想法還只在腦袋裡還沒寫... XD

Square 放出的 git-fastclone

Square 放出 git-fastclone:「Introducing git fastclone」,會生出這個軟體的原因是 git clone 的速度太慢,對於 CI 的速度影響頗大:

Square uses git-fastclone as part of our iOS and hardware CI systems. Being able to quickly clone into an empty directory, saves us time and ensures we always know the starting state for our builds — no matter what has happened in previous builds. This in turn increases the reliability of the system overall and benefits our engineers.

Ruby 寫的,可以用 gem install git-fastclone 直接安裝起來。

又一個 Open Source 版本的 Slack Clone:Mattermost

在「Open source Slack-alternative reaches 1.0: Self-host ready, Slack-compatible, MIT licensed」這邊看到 Mattermost 這套 Slack clone,而 Mattermost 的標語是:

Mattermost is an open source, on-prem Slack-alternative

後面也是弄了一個團隊 (Team),有種 GitLab 的感覺...

做 Ubuntu 14.04.1 的 VMware Template

公司有買 VMware license,但一直沒研究要如何做一份 VM template 出來,所以花了點時間研究到底怎麼做才會比較好。

這邊提供的方法是為了之後的通用性 (像是之後有可能用 KVM 堆虛擬機),所以不使用 VMware 獨規的設計,因此有些設定需要手動調整。

首先是先生出一台 Ubuntu 14.04.1 的 VM,在裝完基本系統後有些要先處理的:

  • 可以考慮用 DHCP 或是不開啟網路設定,反正不要設固定 IP address,以免同時裝多台機器時發生狀況。
  • 因為是 VMware 裡面,安裝 open-vm-tools 可以省下一些 puppet 安裝的時間。
  • 砍掉 /etc/ssh/ssh_host_*,每台機器的 host key 應該要不一樣。

做好 VM 後轉成 Template,之後每次在 deploy 完、開起來後,還要做這些事情:

  • /etc/hostname/etc/hosts 裡的機器名稱。
  • /etc/network/interfaces 裡的網路設定。
  • dpkg-reconfigure openssh-server 重新產生 SSH host key。

有些參考資料:

過程其實還蠻簡單的,只是有一些眉眉角角的東西要注意...