[和訳] ZENLY + DOCKER 1.12 + 100万人のティーンエイジャーたち #docker
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本稿は Zenly + Docker 1.12 + 1M Teenagers(2016/7/1) の和訳記事です。
Zenlyはあなたの友達が今どこにいるかをリアルタイムに知らせてくれるモバイルアプリケーションです。最近Zenlyは100万ユーザーの登録を記録しましたが、その半分が直近3ヶ月以内にサインアップをしました
Zenly社のエンジニアリング担当副社長であるSteeve Morinは、「ティーンエイジャーの力に注目する必要がある。」と言っています。
ユーザーの急激な増加により、そのトラフィックとそこから生成されるデータポイントはZenlyチームにとって新たなチャレンジとなりました。
Docker1.12の早期ユーザーとしてZenlyチームは2016年のシアトルDockerConにおけるキーノートプレゼンテーションでその体験をシェアしました。
以下はSteeve ,JB DaildoとCorentin Kerisitが語ったストーリーです。
急激なトラフィックの増加は驚異的であるとともに、我々の製品群だけではなく、我々のアプリケーションの分析パイプラインをスケールするという、大きなチャレンジでもありました。我々のアプリは1日に5億ものイベントを生成し、その数が増加していきます。我々の分析製品群には、スケーリングの問題によって不具合が出始めていました。クラウド上でどのようにクラスタを実行するかによってコストが増加するという問題や、構築、スケーリングおよびZenlyアプリケーションのサポートに6人のチームでチャレンジしていたのでした。
我々が期待していたのは、新しい分析パイプラインをコストパフォーマンスの良いベアメタルで構築することでした。しかし、オーケストレーションやベアメタルクラスタや潜在的な欠陥に対する管理に費やす時間もリソースもありませんでした。
Dockerエンジニアリングチームから連絡があり、Docker1.12を提案されたのはその頃でした。我々は、試しにDocker1.12を使い、分析製品群をベアメタル上に構築し始めました。
我々の製品群にはいくつかのクラスタにおいてKafka、 Zookeeper やSparkのノードがあります。このクラスタ上でSparkの定期バッチジョブと高い信頼性を必要とするいくつかの長期的なSparkストリーミングジョブが同時に稼働しています。例えば、それらの一つがKafkaを利用し、リアルタイムでのアクティブユーザーの分析を行います。そして、リアルタイムのダッシュボード表示にはwebsocketと、REST APIを通して結果の表示をします。
このデプロイメントの一部は、持続力を高めるために専用の分析へ我々の製品のサブセットであるKafkaをミラー化することを必要とします。このミラー化は我々が内部で開発した、カスタムKafka GRPCプロキシによって行われます。
Docker 1.12のおかげでセットアップが非常に簡単になりました。ベアメタルマシンが設定されると、Swarmをセットアップします。たったの2分間でフル稼働するSparkクラスタがセットアップされますが、それはおおよそ新しいサービスコマンドを学ぶ時間とそれを2回ローンチする時間に等しいものです。Sparkの意図するように、ZookeeperやKafkaからelasticsearchまで、どんなシステムでも我々のデータパイプラインで稼働するようにしてきました。最初の30分以内に製品群を完全に稼働させ、その途中で良いオプションを発見しました。他のステップで行ったように、vipsを無効にし、DNS discoveryのみを実行することを可能にしました。無効にしたものは必要なときに有効化することも可能です。Docker 1.12は正に我々のセットアップに適していました。
我々は既にDockerコンテナを商用環境で実行していたため、既に多くのDockerイメージを持っていました。Docker 1.12が動き出したあと、我々の持っているイメージがDocker1.12で動作するためにどれだけの作業が必要か気にしていましたが、実際には作業は必要ないということがわかりました。
1.12の早期バージョンをテストするプロセスにおいて、いくつかのバグに遭遇しました。しかし、ありがたいことにDockerチームが力を貸してくれました。インプリメンテーションを助けて頂き、また、フィードバックもさせて頂きました。我々は1.12の正式リリースを嬉しく思うと共に、新しい分析製品群で(処理速度を)どれだけ圧縮できるか確認したいと思います。
Dockerに関してさらに学ぶには
・Docker初心者は、10分のオンラインチュートリアルをご覧ください。
・画像、自動構築などを無料のDocker Hubアカウントでシェアしてみましょう。
・Docker 1.12リリースノートを読んでみましょう。
・Docker Weeklyを購読してみましょう。
・次に予定されているDockerオンラインMeetupに登録してみましょう。
・次に予定されているDocker Meetupに参加してみましょう。
・DockerCon 2016に登録してみましょう。
・DockerCon EU 2015のビデオを見てみましょう。
・Dockerコミュニティへの貢献を始めましょう。