re:invent2016参加レポート(1)

![image](https://qiita-image-store.s3.amazonaws.com/0/52184/1668cc26-0e9e-413b-38bb-c43eeba1cee1.png)

# はじめに

AWSの年次最大イベント、re:Invent2016 に参加してきました。5回目となる今年の参加者は32,000人を超えるとのことで、インフラ系サービスとしては非常に大きなイベントでした。日本からも公式ツアーだけで350人以上参加されているとのことです。

エムスリーは古くからオンプレ主体でやってきていますが、最近ではフルAWSで提供しているサービスも増えてきており、また、マネージドサービスのありがたさも実感しているところです。re:Invent2016 は AWS活用方法についてじっくり考える良い機会になりました。

今年は例年よりも非常に多くの新サービスが発表されていました。サービス全体として利用者含めて大変盛り上がっている印象です。

個別の発表内容やイベント全体の報告については、各所で大変すばらしくまとめられているのでそちらを紹介します。

- [AWS Japanさんの Update速報スライド](http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-online-seminar-2016-aws-reinvent-2016)
- [AWS Japan公式サイトでの新機能説明の一覧](https://aws.amazon.com/jp/new/reinvent/)
- [クラスメソッドさんの非公式まとめ（圧巻!）](http://dev.classmethod.jp/cloud/aws/reinvent-2016-matome/)

新機能について、個人的には Athena と Aurora PostgreSQL対応、が期待大です。

この記事ではイベント参加の流れや、実際に参加したセッションについて報告します。

# 参加まで

10月末ごろ、どのセッションに参加するのかの予約が始まります。これがかなり混雑していて、面白そうなものはほとんど埋まってしまっていました。その後、かなりの量のセッションが日々追加され、それなりに選べるようにはなりましたが、最終的には再演含めると400ほどのセッションがあり選ぶのだけでなかなか大変です。

今回はデータベース関連とコンテナ関連を中心に、あとは幅広い感じにセッションを選んでみました。セッションIDの先頭の3文字は ARChitecture や DATabase などカテゴリを表し、数字の先頭桁は 2が初心者向け、3が中級向けです。

* ARC204 - From Resilience to Ubiquity - #NetflixEverywhere Global Architecture
* ARC208 - Hybrid Architectures: Bridging the Gap to the Cloud
* GAM302 - Sony PlayStation: Breaking the Bandwidth Barrier using Soft State and ELB Properties
* WWPS302 - Governance Strategies for Cloud Transformation
* CMP301 - Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization Best Practices
* ARC301 - Architecting Next Generation SaaS Applications on AWS
* ARC318 - Busting the Myth of Vendor Lock-In: How D2L Embraced the Lock and Opened the Cage
* WWPS401 - Data Polygamy: The Many-Many Relationships among Urban Spatio-Temporal Datasets
* DAT320 - AWS Database State of the Union
* DAT301 - Amazon Aurora Best Practices: Getting the Best Out of Your Databases
* DAT303 - Deep Dive on Amazon Aurora
* CON310 - Running Batch Jobs on Amazon ECS
* CON313 - Netflix: Container Scheduling, Execution, and Integration with AWS
* CON309 - Running Microservices on Amazon ECS


実際に現地に行ってみると、新サービス系のセッションなどは当日まで公開されないので、予約なしでその場で参加することもそこそこできそうでした。

また、12月頭にAWS Japan さんから参加の事前説明イベントがあり、面白そうなセッションや参加時の工夫など教えていただきました。他社の参加予定メンバーと事前に知り合えたのもよかったですね。

会社のパーカーを着ていると話のきっかけになるよ！というアドバイスが面白かったので、パーカーを作ってみました。デザイナーKさんにお願いしたところいつも通りカッコいいデザインを上げてくれました！

![image](https://qiita-image-store.s3.amazonaws.com/0/52184/3cb30469-6c09-7525-d5e9-b46452671790.png)



# 0日目

成田からシアトル経由で会場のラスベガスに向かいました。日本時間16:30ごろ出発で現地17:00ごろ到着、計17時間の移動と時差ボケでかなり疲れます。

レジストレーション受付の人は会場に流れている音楽にノリノリでこちらに挨拶もしません(ﾟдﾟ;) アメリカンな感じです。レジストレーションを済ませると、Echo dots とカッコいいパーカーをもらいました。

# 1日目

![image](https://qiita-image-store.s3.amazonaws.com/0/52184/9cb9d9be-03da-a816-299d-b596e9e4806f.png)


初日はまだ前夜祭という位置づけですが、セッションは目白押しです。

## ARC204 - From Resilience to Ubiquity - #NetflixEverywhere Global Architecture
[公式](https://www.portal.reinvent.awsevents.com/connect/sessionDetail.ww?SESSION_ID=9411
) | SlideShare | [YouTube](https://www.youtube.com/watch?v=leqUbSY55hY)

最初に参加したセッションがこれです。前評判どおり内容も充実していました。負荷状況をビジュアライズするツール（[動画のこのあたり](https://youtu.be/leqUbSY55hY?t=819)や[このあたり](https://youtu.be/leqUbSY55hY?t=2030)）があるのが印象的でした。

NetFlixが耐障害性を高めるためにこれまでやってきたことを紹介しています。

サービスダウンのインパクトはとても大きく、これまでAWSへの全面移行を含めて大きなチャレンジをやってきています。

* 2008年8月に自社データセンター障害でDVD発送ができなくなった。2010年にAWSに移行した。同じトラブルは2回起こさない、というポリシーでやっている
* 2007年にはPCだけだったデバイスが今ではスマホ、テレビ、ゲーム機など多数に増えいる。地理的にも言語的にも拡大してきている
* マイクロサービス構成の耐障害性を高めるため、Hystrix というオープンソースでサービスのダウン検知と切り替えを行っている（これはエムスリーの [Octoparts](http://m3dev.github.io/octoparts/) でもバックエンドとして使っています！）
* Cassandraを使っていたが、速度が十分でなく EVCache (memcachedベース) を作った。複数AZにまとめてする仕組みや、リージョンをまたいで同期させる仕組みがある
* サービスをランダムにダウンさせる ChaosMonkey を作り、実際にそれを運用するチームを発足させた
* US-West-1、US-East-1、EU-West-1 の3リージョンで運用している。例えばUS-West-1でダウンが発生すると、US-East-1の負荷をEU-West-1に逃がしたうえで2リージョンで負荷分散する、など合理的な負荷分散をしている
* 今ではリージョン切り替えを40分でできるようになった

今後はフェイルオーバーをさらに短くしていきたい、またキャッシュとDBの統合、コスト削減も進めたいという話でした。

## ARC208 - Hybrid Architectures: Bridging the Gap to the Cloud
[公式](https://www.portal.reinvent.awsevents.com/connect/sessionDetail.ww?SESSION_ID=9500) | SlideShare | [YouTube](https://www.youtube.com/watch?v=76lpflc55k)

エンタープライズのオフィス環境移行についてのセッションでした。

* ゼロか全部かという議論は間違い。段階的にやっていく必要がある
* 最初は ファイルサーバ一つだけの環境を考える
  * 最初にやることはIAM
  * つづいて Storage Gateway でファイルサーバを同期する
  * そしてVPC
  * FSをAWSに乗せるときにはADも持っていく必要がある。
  * DFS Replcationを使うのがオススメ
* Amazon Workspaces はWindowsからだけではなくMacOSからも使える仮想デスクトップ環境

## GAM302 - Sony PlayStation: Breaking the Bandwidth Barrier using Soft State and ELB Properties
[公式](https://www.portal.reinvent.awsevents.com/connect/sessionDetail.ww?SESSION_ID=9295) | [SlideShare](http://www.slideshare.net/AmazonWebServices/aws-reinvent-2016-gam302-sony-playstation-breaking-the-bandwidth-barrier-using-soft-state-and-elb-properties
) | [YouTube](https://www.youtube.com/watch?v=EMPr7opM8m0)

普段見ない系統のものも少しは……と思い人気のあったプレイステーションネットワークのセッションを聞きに来ました。

PSNの中で6500万人のアクティブユーザーのネットワークを扱うと、N×Nでデータ量が爆発してしまうため、それをどのように扱うかという話でした。

* ステートレス、サーバレスが必須。しかしステートが残る部分もある。FriendFinderがそう
* Solrを使って、ユーザ間の距離でソートしている。属性の近い順、共通の友人の数が多い順、など
* 独自のIndexerを作る手もあったが、すでにその仕事は他人がやっている。Luceneを使った
* スキーマを作ってほかのユーザーの情報をすぐにとれるようにした……が、キャッシュが必要。しかしキャッシュ更新を全キャッシュに同期するのが大変
* 一人のユーザーに関するデータはそのユーザーが検索をしている局所的な時間帯にしかアクセスされないことに気づいた
  * Cookie で ELBの振り分け先を固定することにした（これはエムスリーの某巨大システムと非常に似ていますね……）

内容も興味深かったですが、ゲーム系のセッションは観客のノリも違いますね！

## WWPS302 - Governance Strategies for Cloud Transformation
[公式](https://www.portal.reinvent.awsevents.com/connect/sessionDetail.ww?SESSION_ID=9261) | [SlideShare](http://www.slideshare.net/AmazonWebServices/aws-reinvent-2016-governance-strategies-for-cloud-transformation-wwps302
) | [YouTube](https://www.youtube.com/watch?v=b59nWVe2dKc)

クラウド移行では、特にアクセス管理などのルールとその遵守も整備しておかなければ、後々規模が大きくなった際に（監査対応など）大変なことになります。そのあたりのセッションも参加してみました。

* なぜガバナンスが必要か？組織が、組織のために正しい判断をするため
* ガバナンスとは何をすることか？ルールを作り、ルール自体を管理し、ルールに沿って判断し、合意したゴールに向かってリソースをアサインすること
* CCoE (Cloud Center of Excellence) という体制を作る
  * 4つのリードの役割：インフラ、DevOps、アーキテクチャ、セキュリティ＆コンプライアンス
* ガバナンスには段階がある。中間段階は、CCoEがあり、プロセスがルールにのっとっており、コストを意識できている段階
* ベストプラクティス
  * CCoEを立ち上げルールを作る。自組織にあったものにする。既存プロセスを生かすか新規に作るかを決める。できるだけ軽く始める。ユースケースのレビューをする。
* Monash大学（オーストラリア、マレーシア、南アフリカ、中国、インド、イタリアにある大学）の事例
  * 成功のカギ：Culture change, Top down, Chain of command, Increased communication
  * テンプレートを作り、パターンを整理し、ブループリントに詳細化し、具体的な施策にした
    * テンプレートを作ることが効いた
* Maryland大学の事例
  * AWSに詳しいCIOが参加した。オンプレのデータセンター4つをAWSに移行した
  * 役職×アクションのマトリックスを作り、それぞれのアクションに対してどういう責任があるのかのかのRACIマトリックスを作った。RACI: Responsible, Accountable Consulted, Informed

この領域の話は、特定の事例のマネをしたからとしてって自分の所でうまくいくわけではないものの、面倒に見えることをきちんとやるのが近道ということを再確認しました。また、自動化より先に体制、というのは優先度の考え方として参考になりました。

## CMP301 - Deep Dive on Amazon EC2 Instances, Featuring Performance Optimization Best Practices
[公式](https://www.portal.reinvent.awsevents.com/connect/sessionDetail.ww?SESSION_ID=8453) | [SlideShare](http://www.slideshare.net/AmazonWebServices/aws-reinvent-2016-deep-dive-on-amazon-ec2-instances-featuring-performance-optimization-best-practices-cmp301) | [YouTube](https://www.youtube.com/watch?v=agQMFIWr2h4)

このセッションはマニアックですが大変面白かったです。EC2インスタンスの性能改善のための考え方やTipsが大量に紹介されていました。スライドの中で、実際にたたくべきコマンドもそのまま紹介されています。

* t,r,mなどインスタンスファミリーの説明
* 仮想CPUは Hyper Threaded な 1CPU。2コア分と思ってほしい。lstopo というツールで見れる
* Hyper Threading を止めるとシングルスレッドの性能は高まる。 `/sys/devices/cpu/cpu*/online` でもできるが GRUB のオプションが安全
* タイマは XenClock を使わずに TSC（CPUクロックに基づくタイマ) を使うと劇的に早くなる
* 省電力のC-Stateを使わないようにすると早くなる
* こういうチューニングはOSのバージョンによってデフォルト設定が変わる。ローカルマシンで性能評価するときは最新のOSにするとよい


## Tuesday Night Live with James Hamilton
[YouTube](https://www.youtube.com/watch?v=AyOAjFNPAbA) | [ITPro社の記事](http://itpro.nikkeibp.co.jp/atcl/column/16/112500274/113000003/)

火曜日の夜は Amazon社のDC戦略統括 Vice President、James Hamilton による講演です。途中、発表者を交代してAI関連の新サービスの発表とNASAのチャレンジの話もはさみつつ、ハイテンションな90分でした。

* 海底ケーブルの工夫（+1000V と -1000V で送電していて、万一片方が漏電して0Vになっても、もう片方を2000Vに引き上げればよい、すごいアイデアだろう？というくだりが印象的でした）
* ネットワーク機器も、業界標準の40Gに対応するのではなく、コストを考えて 25Gbps x 2 の 50Gbpsを実現した
* ネットワーク用に自前のASICまで作った！（会場が反応する暇もなくしゃべり続ける）
* 1%電力効率を改善すれば、非常に大きな改善になる
* 再生可能エネルギー利用率100%を目指している。今は40%まで来た

# 初日を終えて

1日目からかなり濃い内容でした。[re:Invent2016参加レポート(2)](http://qiita.com/reki2000/items/8b181763d3f67ea4aaeb) に続きます。