読者です 読者をやめる 読者になる 読者になる

Serverlessconf Austin のビデオ

セクションナイン吉田真吾@yoshidashingo)です。

先月のServerlessconf Austinの動画が上がったようです。

個人的な見どころ

  • Nodeはサーバーレス(イベントドリブンなプラットフォーム)向けの言語じゃないという話
  • サーバーレスラップ
  • 百貨店なのにサーバーレスをガンガン使っているNordstromのアーキテクチャ変遷
  • 事例山盛りなLambda
  • 多機能(多接続)化が顕著なAzure Functions+Logic Apps
  • 実は日本の事例であるTrek10のServerless GraphQLの話
  • マルチベンダーのFunctionの共有、検索、実行ができるstdlibというプラットフォーム
  • オープン化でオンプレでもBlueMixでもとにかく面で導入を押し進めるOpenWhisk
  • 開発者に大人気なFirebase

などなど…ぜひ見てみてください。

www.youtube.com

DMSを使って非暗号化RDS MySQLから暗号化Auroraに無停止で移行する

セクションナイン吉田真吾@yoshidashingo)です。

DB無停止移行は人類の夢

暗号化していないRDS MySQLから暗号化済みのAuroraに移行したいけど、スナップショットの復元でもAurora Read Replicaのマスター昇格でも一発ではリソース暗号化ができませんが、そんなときに便利なのがDatabase Migration Service(DMS)です。

DMSを使えばどちらかがリソース暗号化されたデータベースであってもフルデータロード+継続レプリケーションができます。

今回はDMSからの接続に必要な移行元のbinlogのフォーマットを変えずに(DMSでレプリケーションできないDBが移行元であっても)レプリケーションするために、間にAurora Replicaを用いて実装してみます。

f:id:yoshidashingo:20170509204051p:plain

利用する特徴

  • Aurora Read Replicaはbinlog_formatがROWでないRDS MySQLから簡単に継続レプリケーションできる
  • DMSは非暗号化<->暗号化データベース間の読み書きをサポートしている
  • DMSのターゲットデータベースのロジカルレプリケーションはターゲットへの書き込みもできる

少しAWSに覚えのある方であればこの特徴だけでどうやればよいかわかると思うので、後は読まなくても大丈夫です、これを組み合せることで無停止で移行します。

手順

説明用の3種類のデータベースインスタンス名は以下のような名前になっています。

  • 移行元データベース(MySQL) mydbinstance
  • 中間データベース(DMSのソースデータベース: Aurora) mydbinstance2
  • 移行先データベース(DMSのターゲットデータベース: Aurora) mydbinstance3

移行元データベース(MySQL)

移行元のRDS MySQLではデフォルトのパラメータグループを作成している想定です。

f:id:yoshidashingo:20170509210044p:plain

バックアップは1日以上(今回の場合は2日)設定されているものとします。ストレージ暗号化はされていないので、この状態からでは暗号化済みのAuroraに一発で移行することはできません。

f:id:yoshidashingo:20170509210535j:plain

中間データベース(Aurora Read Replica)

CDCを利用した継続レプリケーションを行うために、移行元のRDS MySQLのAurora Read Replicaを作成します。

Auroraのbinlogからレプリケーションを有効にするためにDBクラスターパラメータグループの設定変更をします。デフォルトのものは設定変更ができないので、あらかじめ新規にDBクラスターパラメーターグループを作成して以下の値を変更しておき、Aurora Read Replicaの作成時にこれを適用してインスタンスを作成します。

  • binlog_checksum NONE
  • binlog_format ROW

f:id:yoshidashingo:20170509211020p:plain

また、mysqlクライアントで接続し、binlogの保持期間の変更を行っておきます。エラーでレプリケーションが止まっても十分に対応できる程度の時間にしておきましょう。今回は12時間に設定しておきました。

mysql> CALL mysql.rds_set_configuration('binlog retention hours', 12);

移行先データベース(暗号化済みAurora)

移行先は(せっかくの機会なので)暗号化しときましょう。デフォルトのDBクラスターパラメータグループだと後で設定を返るときに不便ですが今回は無視します。こちらのbinlogは今回不要です。

f:id:yoshidashingo:20170509212314j:plain

DMS

適当なサイズでDMSインスタンスを作っておきます。

ちなみにこの状態だとMySQLとAurora Read Replicaのテーブルにはデータが入ってますが、ターゲットにはデータが入っていない状態になります(上から1号機/2号機/3号機)

f:id:yoshidashingo:20170509213904p:plain

ソース/ターゲットデータベースに接続する

f:id:yoshidashingo:20170509212944p:plain

タスクを作成して実行する

対象のスキーマを指定してマイグレーションタスクを投入します。マイグレーションタイプには初期データのフルロードと継続レプリケーションを選択しましょう。

f:id:yoshidashingo:20170509213302p:plain

このタスクを実行すると、フルデータロードされてターゲットにもデータが同期されます。

f:id:yoshidashingo:20170509214019p:plain

このタイミング、あるいはフルデータロード後に一時停止しておいて一度「Analyze Table」しておきましょう。

継続レプリされているか確認する

もう一行挿入して継続レプリされているか確認しましょう。

f:id:yoshidashingo:20170509214311p:plain

アプリ切替

移行元ではなくターゲットに直接データを書き込んでみましょう。

f:id:yoshidashingo:20170509214636p:plain

ターゲットにのみデータが書き込まれました。

移行元にデータを書き込む

この状態で一部のトランザクションが移行元側に入ってしまっても、ターゲットにまで伝搬するので問題ありません。

f:id:yoshidashingo:20170509215125p:plain

よって、複数のアプリの切替が必要な場合でも、このレプリケーションが継続レプリケーションを行い始めた後であれば、それぞれ任意のタイミングで切替が可能になりうるということが分かります。

まとめ

手順を見れば分かるとおり、同一レコードへのトランザクションが移行元/移行先に別々に入ってしまう場合や、Auto Increment属性が付与されているテーブルに移行元/移行先に別々に入ってしまう場合などについての考慮は必要になりますが、そういう条件が発生しえない場面においては、レプリケーションを切り離すタイミングとアプリの切替を同期する必要がなくなるのは嬉しい方法ではないかと思います。

また、統計情報の再作成のためのAnalyze Tableのタイミングについては今回適当に継続レプリケーション中に行いましたが、実際はターゲットデータベースにかかるワークロードを考慮したタイミングを精査しておく必要があると思います。実際DMSではフルデータロード後で継続レプリケーションを開始する直前に一時停止させることができるので、そのタイミングでAnalyzeさせることも可能です。

また、データベースの移行・切替は非常にセンシティブな作業ですので、実際に作業する時は事前に十分な検証したうえで実行しましょう。

参考

docs.aws.amazon.com

docs.aws.amazon.com

Future Visions: マイクロソフトリサーチからインスパイアされたオリジナルSF短編集

セクションナイン吉田真吾@yoshidashingo)です。

Future Visions: Original Science Fiction Stories Inspired by Microsoft という、SF作家をMicrosoft Researchに招き、彼らの研究内容からインスパイアされたSF短編小説集が、2015年11月から無料公開されているんですが、日本であまり話題になってないので紹介しとこうと思います。

news.microsoft.com

目次

  • Hello, Hello by Seanan McGuire
  • The Machine Starts by Greg Bear
  • Skin In The Game by Elizabeth Bear
  • Machine Learning by Nancy Kress
  • Riding with the Duke by Jack McDevitt
  • A Cop’s Eye by Blue Delliquanti and Michelle Rosenthal
  • Looking For Gordo by Robert J. Sawyer
  • The Tell by David Brin
  • Another Word for World by Ann Leckie

SFが科学技術の未来を牽引し、科学技術の進歩がSFにもっと未来を想像させる

マイクロソフトのテクノロジー・アンド・リサーチ 上級副社長のハリー・シャム氏は、1960年代の中国で育った自身のキャリアにおいて、科学技術や宇宙開発やコンピューティング技術が発展し、同時にSF小説やSF映画がメジャーになるなどで、SFも科学技術も、ともに発展した時代だったと振り返っています。

たしかにその頃思い描いていたような未来の技術はすでに多くが実現していることを考えると、SFと現代の科学技術の乖離はより小さくなってしまっているかもしれません。

www.microsoft.com

pc.watch.impress.co.jp

そこで、現在活躍するSF作家をマイクロソフトリサーチに招聘し、現在研究開発している内容からインスパイアされたSF短編をまとめて公開したのがこのアンソロジーです。

現代の研究開発の未来の姿を描いているので、期待したほど突拍子もない設定になっているわけではないですが、どのエピソードも近い未来に「ありそうだな」というストーリーになっているのが特徴です。

Machine Learning / ナンシー・クレス

ひとつ面白かったのが、機械学習のモデルづくりのためのデータ収集のために、人間のための学習(ピアノの練習やフライトシミュレーション)にAIを活用するというコンセプトの「Machine Learning」です。

現状、機械学習のプロジェクトでは「教師データをいかに集めるか」が競争力の源泉として非常に大事ですが、これは採用できる場面が非常に限定的で、面と向かって感情を伝えるような「お世辞を見抜いて学習する」ような場面でデータを収集する際には、収集するデータ量の面でも、データの質的な面においてもうまくワークしそうには思えませんが、これがうまくワークすれば活用の場面は一気に拡大するし、なにより人の機会を奪うのではなく、人の学習に役立てるというコンセプトが面白いです。

主人公のイーサンはそのモデルづくりをする研究者で、かつ社内で研究が大詰めにまで進んでいる、この世界での不治の疫病によって娘を亡くしてしまった研究者なのですが、彼が自分の研究である機械学習で娘の人格をAIとして構築し、VRやマネキンを使って具現化しようと奔走するというストーリーです。

HololensとMLを活用すると近い将来本当にAI上での人格形成もできちゃいそうですし、機械学習の結果から効率よく人間が学習させてもらうというのもありえそうな話です。

その他のエピソード

マイクロソフトのリック・ラシッド氏の紹介文を引用して最後に紹介しておきます。

Seanan McGuire questions the limits of machine translation in her story “Hello, Hello.” In “The Machine Starts,” Greg Bear considers the intended—and unintended—consequences of quantum computing. Elizabeth Bear’s “Skin in the Game” imagines a world in which technology can be used to share emotions. Nancy Kress explores the frontiers of machine intelligence with the aptly titled “Machine Learning.” In “Riding with the Duke,” Jack McDevitt investigates the social and emotional implications of immersive technologies. The graphic novel “A Cop’s Eye,” by Blue Delliquanti and Michele Rosenthal, creates a future world in which a policewoman’s sidekick is an artificial intelligence. Robert J. Sawyer explores the possibilities that computer science could bring to our hunt for alien civilizations in “Looking for Gordo.” David Brin examines the science of prediction in “The Tell.” And in “Another Word for World,” Ann Leckie explores the immense power of tools that facilitate communication across cultures.

ショーニン・マグワイヤは、彼女のストーリー「Hello, Hello」で機械翻訳の限界について疑問を投げかけています。「The Machine Starts」でグレッグ・ベアは、量子コンピューティングにおいて意図された、あるいは意図していない結果について考慮しています。エリザベス・ベアの「Skin in the Game」では、感情を共有しあうことができるテクノロジーの世界を想像しています。ナンシー・クレスは機械の知性の最前線を「Machine Learning」と題して探究します。「Riding with the Duke」でジャック・マクデビットは、没入型技術の社会的、感情的な影響を調査します。 ブルー・デリクァンティとミシェル・ローゼンタールによるグラフィック小説「A Cop’s Eye」では、警察官の相棒が人工知能であるという将来の世界観を作り出します。 ロバート・J・ソーヤーは「Looking for Gordo」でコンピュータサイエンスが地球外生命体を探求する可能性を模索しています。ディビット・ブリンは「The Tell」で予測の科学を扱っています。「Another World for World」においてアン・レッキーは、異文化コミュニケーションを促進するツールの巨大な力を模索しています。


興味があれば、無料で公開されているのでぜひ読んでみてください。

また、マイクロソフトさんにはぜひ日本語訳したものも公開してもらえると嬉しいなと思ってます。

【2017/4/16追記】ここで紹介したナンシー・クレスは今話題の「2050年の技術 英『エコノミスト』誌は予測する」にも特別SF2として「博士の救済」が掲載されています。遺伝子組み換え技術で環境破壊を食い止めようと励む科学者セスの話で、ナンシー・クレスが十八番とする、科学と人間事象との兼ね合いがストーリーの主軸になっています。だいたい15分くらいで読めるので、それなりにボリュームもある18章の未来予測の合間の息抜きとして楽しむとよいかな、と思います。

2050年の技術 英『エコノミスト』誌は予測する

2050年の技術 英『エコノミスト』誌は予測する