(Photo by:Quentin Meulepas)
このような方におススメ
- どこからどこまでオープンソースなのか気になる。
- 良く使われるオープンソースを知りたい。
GNU is Not Unixのような再帰的な言い回しのように、オープンソースではオープンソースが使われ、さらそのオープンソースが他のオープンソースでも使われてと循環関係あります。この記事ではオープンソースがどのようなオープンソースのソフトウェアに依存して構成されているのか、Googleのクラウド環境パフォーマンスのベンチマークツール「PerfKit Benchmarker」から開始してGNU Cライブラリ「glibc」まで追っていきます。
Googleのクラウド環境パフォーマンスのベンチマークツール「PerfKit Benchmarker」
クラウド環境のパフォーマンス測定の難しさは良く話題に上がります。各社で仕様が違うという点もありますが、サーバー台数とそこで動くアプリケーション、ミドルウェア、ディスク、ネットワーク状況など多くの要素が絡み合っている事も要因にあります。
このパフォーマンス測定の問題に対して、2015年にGoogleからクラウドサービスのパフォーマンスのベンチマークツール「PerfKit Benchmarker」がオープンソースで公開されました。
PerfKit Benchmarker URL: https://github.com/GoogleCloudPlatform/PerfKitBenchmarker
公開されているGitHubプロジェクト内で利用しているベンチマークツールの多さを見るとオープンソースで構築されているオープンソースなツールと確認できると思います。
(Photo by:Ministry of Information and Communications Technology)
aerospike: Apache V2 for the client and GNU AGPL v3.0 for the server (http://www.aerospike.com/products-services/)
bonnie++: GPL v2 (http://www.coker.com.au/bonnie++/readme.html)
cassandra_ycsb: Apache v2 (http://cassandra.apache.org/)
cassandra_stress: Apache v2 (http://cassandra.apache.org/)
cluster_boot: MIT License
coremark: EEMBC (https://www.eembc.org/)
copy_throughput: Apache v2.
fio: GPL v2 (https://github.com/axboe/fio/blob/master/COPYING)
hadoop_terasort: Apache v2 (http://hadoop.apache.org/)
hpcc: Original BSD license (http://icl.cs.utk.edu/hpcc/faq/#263)
iperf: BSD license(http://iperf.sourceforge.net/)
memtier_benchmark: GPL v2 (https://github.com/RedisLabs/memtier_benchmark)
mesh_network: HP license (http://www.calculate-linux.org/packages/licenses/netperf)
mongodb: Deprecated. GNU AGPL v3.0 (http://www.mongodb.org/about/licensing/)
mongodb_ycsb: GNU AGPL v3.0 (http://www.mongodb.org/about/licensing/)
netperf: HP license (http://www.calculate-linux.org/packages/licenses/netperf)
oldisim: Apache v2.
object_storage_service: Apache v2.
ping: No license needed.
silo: MIT License
scimark2: public domain (http://math.nist.gov/scimark2/credits.html)
speccpu2006: Spec CPU2006 (http://www.spec.org/cpu2006/)
sysbench_oltp: GPL v2 (https://github.com/akopytov/sysbench)
unixbench: GPL v2 (https://code.google.com/p/byte-unixbench/)
ycsb (used by mongodb, hbase_ycsb, and others): Apache V2 (https://github.com/brianfrankcooper/YCSB/blob/master/LICENSE.txt)
この中から利用しているデータベース「Aerospike」を追っていきます。
インメモリ型のリアルタイムNoSQLデータベース「Aerospike」
Aerospikeはリアルタイムな高速動作を売りとして、分散配置とリニアなスケール、サービスダウンがないローリングアップグレードを備え信頼性が高いと説明されています。
Aerospike URL: http://www.aerospike.com/
オープンソース版でAerospikeのサーバーとクライアントの両方が公開されています。ここではオープンソース版のサーバーを取り上げて話を進めて行きます。
Aerospike Server URL: https://github.com/aerospike/aerospike-server
GitHubのプロジェクトを見ると依存するライブラリにOpenSSL、Lua、jansson、jemallocなどの記載があります。ここでは去年から今年も何かと話題になるOpenSSLを見て行きます。
SSL/TLSのツールキット「OpenSSL」
セキュリティの各方面に影響を与えたハートブリード(Heartbleed)が見つかったのがこのOpenSSLです。Heartbleedが発見された2014年から今に至るまで、脆弱性の発見が相次いでいます。
Open SSL URL: https://github.com/openssl/openssl
Open SSLはHTTPSなどのSSL/TLSを利用する暗号化通信のデファクトスタンダードとしてUnix系で広く使われています。そのため脆弱性が見つかるとUnix系OSで公開されているウェブーサーバーのほぼ全てが影響を受けます。OpenSSLの影響を受けないものにはWindows系OSのIISがあります。
Open SSLが利用しているオープンソースを追うために、Open SSLが依存しているライブラリを表示します。以下コマンドはUbuntu環境内でのものです。
$ apt-cache show openssl
Depends: libc6 (>= 2.15), libssl1.0.0 (>= 1.0.1)
依存しているライブラリにlibc6(GNU Cライブラリ、glibcの事)とlibssl1.0.0が見つかりました。libsslはOpenSSLの一部なのでlibc6を追って行きます。
GNU Cライブラリ「glibc」
GNUプロジェクトによる標準Cライブラリです。ものすごく久しぶりに「標準C」という単語を聞いた方も多いかも知れません。標準入出力やシグナル操作、文字列操作、日付時間操作などC言語でプログラミングする上での標準として利用できるライブラリをまとめたものです。
Glibc URL: https://github.com/lattera/glibc
多くのLinuxディストリビューションで採用されており、Linux上で稼働するC言語で書かれたソフトウェアで広く利用されています。libc6が依存するライブラリを見てみると、コンパイラのライタイムライブラリ「libgcc」がありました。
$ apt-cache show libc6
Depends: libgcc1
コンパイラに到達したので追うのをここまでとしたいと思います。依存するライブラリはコマンドよりもMakefileを見る方が早いかも知れません。
(Photo by:Patrick)
要約・まとめ
「オープンソースは,今,黄金時代を迎えた ─LinuxCon Japan 2015基調講演レポート(URL:http://gihyo.jp/news/report/2015/06/1101)」の記事ではセキュリティ確保の必要性と重要性が書かれており、オープンソースが社会インフラや企業活動に多大な影響を与えている事は誰もが認める所だと思います。
GNUプロジェクト、Linux OS、Linux上で動くライブラリ、それらを組み合わせたミドルウェアと一連の流れがオープンソースで構築されています。企業は用途に合わせてオープンソースを選定する事でアプリケーションの開発を行えるようになりました。
20年前にオープンソースのLinuxが商用利用で登場し始めた頃と比べると、現在のオープンソースを取り巻く環境は大きく変わりました。しかし多くのオープンソース開発・メンテナンスはプログラマのボランティアによって成り立っている点は変わりません。
今のように多くの企業がオープンソースの利益を享受し続けるためには、オープンソースへの貢献が企業から理解されるようになり、小さな協力を得られやすくなる社会に少しだけ変化する事が求められるのかも知れません。
本ブログは、Git / Subversionのクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。
エンタープライズ向け Git / Subversion 導入や DevOps による開発の効率化を検討している法人様必見!
「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。
No Comments