Amazonの社内で使用されているツール事情がいかに時代遅れでひどいものだったかということを、かつてAmazonでエンジニアをしていたジャティン・シュリダーさんがブログにまとめています。

JS - On Internal Engineering practices at Amazon

https://jatins.gitlab.io/me/amazon-internal-tools/

シュリダーさんは大学を卒業した後2年間Amazonで働いていたそうですが、そのころAmazon社内で利用されていたツール群はあまり優れたものではなかったそうです。

◆デプロイツール

開発したアプリをサーバー上に展開して利用可能にすることをデプロイと呼び、通常、エンジニアはデプロイを簡単に行うために何らかのツールを利用します。シュリダーさんによれば、Amazonが使っていたのは独自開発の「Apollo」という、オートスケールに対応していないというツールでした。さらに別のリージョンへとデプロイを行う際、その環境設定は2つのタブを開いて右から左へと設定をコピーする必要がある状態だったそうです。

◆ログ

サービスを複数のサーバーにまたがって展開している場合、そのサービスのログは一元管理できるようにするべきです。しかしAmazonの社内ツールにはそうしたシステムはなく、それぞれのサーバーに接続してログを確認していたとのこと。なお、シュリダーさんの在籍中にMove to AWSという活動が行われており、今ではCloudWatchというログ管理ツールが使用できる環境になっているかもしれないと補足されています。

◆サービスの管理

Amazonではオーナーという仕組みが存在しており、それぞれのサービスはオーナーとなったチームが管理しています。しかし、オーナーには自分が管理しているサービスを誰が利用しているのかを知るすべは存在せず、サービス間の連携についてもよくわからない状態になっていたとのこと。シュリダーさんはあるサービスのアップデートを命じられた際、誰が利用しているのかを突き止めるために一度サービスを停止してみたのですが誰も文句を言わず、そのサービスは停止されたままとなったそうです。

◆コンテナ技術

コンテナとは仮想化技術を利用してマシン環境を再現し、一つのプログラムをさまざまな場所で動作させるために利用される技術です。Amazon内部ツールにおいてはコンテナ技術は使用されておらず、無数の工数が無駄になっていたとのこと。

また、シュリダーさんはAmazonについて「実験的なことを行い、技術を先導するべきだ」と述べ、オープンソースの開発で遅れを取っていることを批判しています。



他の企業に目を向けると、FacebookはReactと呼ばれるWebページを構築するためのツールをオープンソースで開発しており、Googleは機械学習に使用されるTensorFlowやコンテナデプロイツールのKubernetesをオープンソースで開発しています。他にもMicrosoftやTwitter、LinkedIn、Square、AirBnbなど名だたる企業がオープンソースに貢献していますが、Amazonはその成果物をAWSに乗せて販売するだけだとシュリダーさんは述べています。

さらにシュリダーさんはAmazonはオープンソースと同様に研究開発でも遅れを取っていると批判しています。Facebookはプログラミング言語のPHPを改良するために新たにHackという言語を開発しました。GoogleはJavaやC++を多用していますが、さらに良いサービスを提供するためにGoという新たな言語を開発しました。しかしAmazonの社内ではJava以外の言語はほぼ使用できないものとなっているそうです。

ただし、Hacker Newsに投稿されたコメントでは現在のAmazon社内では上記のような社内ツール群をとりまく状況はかなり改善されているという報告が多数上がっています。