Search on the blog

2017年8月17日木曜日

KMSを使ってみた

はじめに

 AWSのKMS(Key Management Service)を使ってみた。
KMSを使うと以下のようなことができて嬉しい。
  • ソースコードに載せたくない情報(認証情報など)を暗号化できる
  • 暗号化した鍵の管理をAWS側でやってくれる

やってみたこと

1. キーの作成
AWSコンソール画面 > IAM > 暗号化キー > キーの作成
からキーを作っておく

2. キーのAmazon Resource Nameをメモ
1.で作成したキーのリンクをクリックして、arn:aws:kms:xxxxxxxxxxxxxxのところをメモっておく

3. 検証に使うec2を起動
KMSにアクセスできるロールを適用したec2の起動する

4. 3.のロールから1.のキーのアクセスを許可
AWSコンソール画面 > IAM > 暗号化キー > キーユーザー

4.の操作はec2ロールにアタッチしたポリシーに応じて必要だったり、不要だったりする。
  • ec2にPowerUserAccessポリシーをつけていれば、3.の操作は不要。
  • AWSKeyManagementServicePowerUserポリシーしかつけてない場合は、3.の操作が必要。
5. 検証用Pythonコードを実行


注意事項
キーを作成したリージョンとキーを利用するリージョンが異なると以下のようなエラーがでるので注意。
botocore.errorfactory.NotFoundException: An error occurred (NotFoundException) 
when calling the Encrypt operation: Invalid arn

2017年7月31日月曜日

論文英語

 論文を書くときに使うと良さそうな英語表現をまとめたページ。

adaptively: 適応的に
It encodes the input sentence into a sequence of vectors and chooses a subset of these vectors adaptively while decoding the translation.(引用元

outperform: 〜より性能がすぐれている
It is clear from the table that in all the cases, the proposed RNNsearch outperforms the conventional RNNencdec. (引用元

qualitative analysis: 定性的な分析
We also present some qualitative analysis of the output from our models. (引用元

quantitative results: 定量的な結果
In conjunction with the quantitative results presented already, ... (引用元



2017年7月19日水曜日

[Blog Reading] Hiring SREs at LinkedIn

 SREの採用プロセスに関する話。SREに限らずエンジニアの採用プロセスについてのいい話が書いてある。

https://engineering.linkedin.com/blog/2017/07/hiring-sres-at-linkedin

  • 人を雇いたいときは、その人に満たしてほしい特定のニーズがある
    • その特定のニーズを満たすために必要なスキルはなにか
    • 採用試験ではそのスキルだけをテストする
  • まず電話・オンラインで試験をする(スケールしやすい)
    • オンサイトでの試験は受験者/採用者ともにコストがかかる
  • 複数回のオンライン試験をパスした有望な求職者のみをオンサイト試験に招待する
    • オンサイト試験ではオンライン試験でやらなかったことをやる

2017年7月10日月曜日

Nat Gatewayが意外と高かった

最近AWSでネットワークの勉強をしているのだけど、請求書を見てみたら予想外にコストがかかっていた。

EC2は都度停止しているはずなのに何故かなと思って明細を見ていたら、Nat Gatewayだった。

1時間あたりのコストがt2.microインスタンスの4倍近くかかるらしい。VPC自体は無料で作れるので、NATも無料だろうと思って油断していた。


(追記)
マネージドなNATがなかった頃は、EC2インスタンスを立ててNAT用のマシンにしていたらしい。NATが落ちるとprivate networkのマシンからインターネットが見れなくなるので冗長化したり、パフォーマンスを考えてそこそこいいEC2を使ったりしないといけなかったらしく、それを考えると妥当な値段だということが分かった。
ただし、個人で学習用に使う場合はやはり高いので、動作確認ができたらさっさと削除しましょう。

2017年7月9日日曜日

並行と並列の違い

並行(concurrent)処理とは、複数のタスクを非同期で同時に実行すること。
並列(parallel)処理とは、複数のCPUを使って複数のタスクを同時に実行すること。

つまり、並行の方が広い概念で、並列処理は並行処理の一種。

並行処理にはいくつかの実現方法が考えられるが、複数のCPUを使って物理的に同時に複数の命令を走らせているものを並列処理と呼ぶ。

ということで、場面によって使い分けた方がいいかもしれない。

  • 複数のサーバを立てて並列処理をする
  • マルチコアCPUで並列処理をする
  • シングルコアマシン上でマルチスレッドを使って並行処理をする
  • コルーチンで並行処理をする
並行の方が広い概念なので、並行処理と言っておけば間違いは少なそうだが、物理的に同時に実行するということを強調したい場合は並列と言った方がいいかもしれない。

並列処理

並列ではない並行処理


2017年7月6日木曜日

[Blog Reading] Neflix Platform Engineering — we’re just getting started

 エンジニアリングの世界に終わりはない、常に新しいチャレンジが待っているという内容のブログ。


  • 2, 3年ほど前にKafkaを使うようになった
  • 最近はApache Flinkをストリーム処理に使うようになった
  • AMI/VMからcontainer technologyに移行
  • 数100のマイクロサービスが動いている
  • Chaos Monkey(NetflixのOSS)からChaos Engineeringという規範が生まれた

2017年6月27日火曜日

[Blog Reading] Building a Real-Time Streaming ETL Pipeline in 20 Minutes

Confluentのブログを読んだ。
最近KafkaまわりのOSSにプルリク送ってみたりして、Confluent熱が個人的に高まっている。

Building a Real-Time Streaming ETL Pipeline in 20 Minutes

以下、感想・考えてみたことなど。

  • Kafkaってなんなのか一言で説明するのは難しいが、このブログにあるように「分散ストリーミング基盤」というのが良さそう。
  • Streaming ETLという概念がやばい。Batch ETLでやっているような集計処理をバックグラウンドでリアルタイムに実行できるやつ。
    • ブログの下の方で引用されているが、簡単なサンプルアプリがあるので見てみるとイメージがわく
  • 「複数のアプリが同じデータソースを参照していると密結合になる」みたいな話を聞いたことがあったが、その感覚が分かった。例えば、アプリAがデータ生成するテーブルAがあったとして、これをみたい他のアプリB, C, D, ..があったとする。アプリB, C, D, ..からテーブルAを直接参照すると以下のような問題が起こる。
    • 参照者が増えてくると、テーブルAのアクセス負荷が増える(Producer:Consumer = 1:N)
    • アプリAが自由にテーブルAのスキーマを変更できない(テーブルAの変更は参照側のアプリに影響を与える)
    • 参照で集計処理をしたい場合は、日次バッチになってしまう(負荷が高いのでリアルタイムで集計できない)