IndexTank 的設計

IndexTank 是在 xdite 的個人板上看到的網站,號稱真正 Scalable 的 Search Engine,看了他的架構設計後看起來應該是真的 Scalable。

由於是屬於 SaaS 服務,對於 startup 不想自己做 search engine 的可以直接套上去。而對於技術人員真正有價值的是他的 API 設計文件中的 function definition syntax:「function definition syntax」,雖然故意寫個 coming soon,但實際上可以在 client library 裡看到範例:「Python client」。

先內建一些基本的數學函數,像是四則運算、power、log,並且內建一些很常用到的變數。接下來定義出來的函數可以再重複使用,不斷累積上去,最後在 query 的時候就可以 ORDER BY 某個 score...

IndexTank 告訴你「利用 API 讓前端程式設定 function 以降低 denormalization 的複雜度」時要怎麼設計 API,當你自己建立 search engine 時,新增的 function 還可以在後端用 MapReduce 把資料補上去...。

另外可以再參考「How Hacker News ranking algorithm works」這篇文章。(這篇文章的 comment 裡面有其他的 ranking code 可以看)

AWS RDS 支援 Read Replication

AWS RDS 支援 read replication 了:「Amazon RDS: Announcing Read Replicas」。

不過常見到的問題還是會有,像是 replication lag 以及所產生的 read-after-write 問題。但對於許多 read 需求遠大於 write 需求的應用來說,RDS 新推出的功能可以再簡化 MySQL 的設置...

AWS EC2 可以匯入自己的 SSH public key 了...

今天 AWS EC2 一口氣丟出一堆小功能:

其實這些功能都沒什麼大不了的,Idempotent Instance Creation 可以避免重複產生 instance,而 Resource Tagging 暫時想不到用途,Filtering 則是 describe 的功能加強...

對現在最有幫助的是第四個,ssh 時可以不用指定 -i .ssh/ooxx.pem 算是有直接影響的吧?目前還不能透過 Web Console 匯入,必須用 ec2-import-keypair 指令匯入。

AWS EC2 推出 Amazon Linux AMI (Beta)

Amazon Web Services 推出了 Amazon Linux AMI (Beta),讓想要用新版 Linux kernel 的人可以在 EC2 上測試:「Announcing the Amazon Linux AMI」。

包括了 32bits/64bits 以及 S3/EBS boot 的版本 (所以總共四種版本),基本的系統都是 Fedora。其中 EBS 版本可以直接用 t1.micro 跑起來,以目前跑起來的版本 uname -a 可以看到:

Linux domU-12-31-38-02-55-4B 2.6.34.6-54.21.amzn1.i686 #1 SMP Sun Sep 12 06:48:07 UTC 2010 i686 athlon i386 GNU/Linux

依照 kernel.org 的資料可以看到 2.6.34.6 是 2010/8/26 釋出,算是蠻新的版本了...

接下來就是要找方法把 EC2 上 Fedora 系統換成 Debian,這個倒是有不少文件,像是:「Building EC2 Images from Scratch with ec2ubuntu-build-ami」...

Update:依照 Eric Hammond 的說法,不建議使用 ec2ubuntu-build-ami 這個 script 產生 AMI,參考他在 9/18 的回覆。目前建議的方式是「Building EBS Boot and S3 Based AMIs for EC2 with Ubuntu vmbuilder」以及「Building EBS Boot AMIs Using Canonical's Downloadable EC2 Images」這兩篇。

Ubuntu 針對 EC2 發展出的 CloudInit

CloudInit (cloud-init) 是 Ubuntu 針對 EC2 所發展出來的套件,以 EC2 instance 傳入的 userdata 解決每一台 instance 差異化的問題...

對於 userdata 最大只能吃 16kbytes 的問題,也可以用 gzip 或是 #include 的方式解決。其他的範例可以在 ~cloud-init-dev/cloud-init/trunk 這邊找到。

等下再開一台 instance 測試看看...

AWS EC2 最新的 Micro On-Demand Instances

AWS EC2 剛剛公佈新的 instance 叫做「Micro On-Demand Instances」,公告在這:「New Amazon EC2 Micro Instances - New, Low Cost Option for Low Throughput Applications」、「Announcing Micro Instances for Amazon EC2」。

新的 micro instance 有幾個特性:

  • 便宜,USD$0.02/hour 換算成一個月才 USD$14.4/month (以 30 天計算),與 Linode 的 Linode 512 USD$19.95/month 有得拼 (不過 Linode 的 package 包括 200GB 頻寬與 16GB 空間)。
  • 可偶而超量使用的 CPU 資源 (可超量到 2 ECU,m1.small 才 1 ECU!),這是 AWS EC2 第一個可以 burst CPU resource 的 instance。
  • EBS-boot only,完全不管 image 更新的問題。
  • 雖然只有 613MB RAM,但可跑 32bits 與 64bits 作業系統。

在公告內有提到,除了拿來測試以外, 跑 DNS server 或是 Load Balancer (而不使用 AWS 自己的 ELB) 會比以前的 instance 適合。另外也可以跑 monitor service...

這種型態的 instance 也可以 spot 競價倒是沒什麼特別的,不知道 CPU resource 可以 burst 到什麼程度...

公告出來第一個感想就是很多 Cloud VPS 要倒楣了,因為這個價錢並不差,如果再加上在 AWS 同一個 zone 裡面內的頻寬不用錢,以及諸多服務 (尤其是 MySQL 資料庫服務 RDS) 及延伸性 (更不用提 Amazon 的「名牌」了),對於許多在家 startup 的吸引力就更大了...

Rackspace 的 OpenStack

Rackspace Cloud 提出了 The OpenStack Project,以 Apache License 2.0 公開了兩個專案:OpenStack Compute (Nova) 以及 OpenStack Object Storage (Swift) (目前 Swift 需要登入)。

兩者的文件可以在「Welcome to nova’s documentation!」與「Welcome to Swift’s documentation!」這兩邊看到,都是以 Python 開發出來的架構。對應到 AWS 的架構分別是 EC2S3。由於剛被丟出來,還沒有什麼測試資料與數據可以看,不過文件還蠻完整的,應該很快就有人將測試結果與感想丟出來。

除了底層的基礎建設外,在 Launchpad 上可以看到其他的專案在發展,像是 OpenStack Web Control Panel

AWS S3 的 Bucket Policy

以 Referer 決定是否可以存取的功能等了好久:「Amazon S3 Bucket Policies - Another Way to Protect Your Content」。

Bucket Policy 必須以 Amazon 自訂的語法設定條件,可以看某些 header 設定是否允許存取 S3 的物件,像是 User-agentReferer

不過看了文件,沒有 regular expression 可以用?只有 shell expression (支援 *? 而已),應該是夠用但感覺還是怪怪的...

Amazon Web Services (AWS) S3 可以透過 AWS Management Console 管理了...

大約是兩個禮拜前的消息了。

不過因為用到 Flash,所以使用 Flashblock 的人要把 console.aws.amazon.com 這個 site 加到白名單內 (頁面上沒出現 Flashblock 提供的 active button)。另外因為 flash policy 用到 port 843,所以連外 port 843 必須是通的。官方的公告可以參考「AWS Management Console adds support for Amazon S3」這篇。

不過這東西問題還不少,跑一跑就讓我的 Firefox 當掉... 無論如何,畢竟是多了一種選擇,如果要透過網頁管理 S3 內的資料,不用再透過第三方的網站處理,而是改由本來就存取的到的 Amazon 來提供,會比較放心一點。

Amazon CloudFront 支援 HTTPS 並且降價

Amazon CloudFront 宣佈支援 HTTPS,北美增加紐約 PoP,並降低單一 request 的費用:Amazon CloudFront: HTTPS Access, Another Edge Location, Price Reduction

HTTPS 的部份,因為 SSL Certification 是 *.cloudfront.net,所以不能使用自己的名稱 (CNAME 過去的那個名稱),否則在瀏覽器裡會出現警告視窗。像是 https://test.gslin.org/jquery-1.4.2.min.js 會出現警告視窗,但 https://d709c28ax59vf.cloudfront.net/jquery-1.4.2.min.js 則不會。

除此之外,可以設定只能透過 HTTPS 傳輸,如果透過 HTTP 則擋下來不讓他用。價錢部份,HTTP 的單一 reuqest 價錢則是降了 25%,而 HTTPS 的價錢剛好是原來 HTTP 的價錢。

另外一個比較意外的消息是,CloudFront 之前在紐約沒有 PoP,這次建好上線使用... 先前應該是透過 Newark, NJ 的 PoP 服務東岸北部?