kenju's blog

About Programming and Mathematics

AWS

会社ブログに Go x AWS で作ったログ基盤のアーキテクチャについて公開しました

書きました。 『cookpad storeTV の広告配信を支えるリアルタイムログ集計基盤』https://techlife.cookpad.com/entry/2018/10/18/100000 もしここらへんの技術に興味ある方がいらっしゃったら、ぜひ Twitter なりでご連絡ください。 こんにちは。最近 Go x A…

Reading Notes of "Designing Data-Intensive Applications" Chapter 5: Replication

Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems作者: Martin Kleppmann出版社/メーカー: O'Reilly Media発売日: 2017/04/02メディア: ペーパーバックこの商品を含むブログを見る 社内の輪読会…

論文『Dynamo: Amazon's Highly Available Key-value Store』を読んだ

AWS DynamoDB がサービスとしてローンチする前、Amazon 社内でショッピングカート機能などに利用されていた "Dynamo" の設計について書かれた論文。DynamoDB を普段使う身として、そもそもどういう課題を解決しようとしていたのか、そのためにどういった解決…

"Serverless Streaming Log Architecture ~ Theory & Practice ~" Presentation Slides

I had a talk at "adtech研究会", where we learn, discuss, and hands-on advertisement technology with other programmers from adtech companies in Tokyo. https://speakerdeck.com/kenju/serverless-streaming-log-architecture-theory-and-practice

Write Kinesis Firehose Lambda Translation Layer in Golang

You can use Lambda to convert data of Kinesis Data Firehose. This is the transformation process of ETL, and called "Data Transformation Flow" officially. https://docs.aws.amazon.com/firehose/latest/dev/data-transformation.html Data Structu…

『Amazon Web Services 定番業務システム 12 パターン設計ガイド』読書メモ

Amazon Web Services 定番業務システム12パターン設計ガイド作者: 川上明久出版社/メーカー: 日経BP社発売日: 2016/07/12メディア: Kindle版この商品を含むブログ (1件) を見る Why reading this book? 今のチームになってから、仕事で AWS の各種サービスの…

スライド『Black Belt Online Seminar Amazon CloudWatch』メモ

資料:https://www.slideshare.net/AmazonWebServicesJapan/black-belt-online-seminar-amazon-cloudwatch CloudWatch システム監視(死活監視、性能監視、キャパシティ監視) Metrics, Namespace, Dimension が基本的概念 標準メトリックスの他、独自メトリ…

AWS Lambda の Versioning と Alias 機能についてメモ

資料:AWS Black Belt Techシリーズ AWS Lambda Updates https://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-aws-lambda-updates tl;dr Lambda は明示的にバージョン管理ができる エイリアス機能を使うことで、「本番用」かどうかなど…

スライド『AWS Black Belt Online Seminar 2017 Amazon Kinesis』メモ

AWS

資料:https://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-online-seminar-2017-amazon-kinesis Amazon Kinesis Streams ストリームデータを処理するためのアプリケーション開発 3AZの永続ストレージに強い整合性でデータを複製 順序付きイ…

スライド『AWS Black Belt Online Seminar 2017 Amazon DynamoDB』メモ

資料:https://www.slideshare.net/AmazonWebServicesJapan/20170809-black-belt-dynamodb 自分用メモ。 学び: capacity を安易に減らすことはリスクであることがわかった Auto Scaling, LSI/GSI は知っていはいたけどまだガッツリ使っていない Atomic Coun…

Cookpad TechConf 2018 で LT『広告配信サーバーと広告配信比率最適化問題』で話してきました

https://techconf.cookpad.com/2018/ 本日のLTを公開しました。質問お待ちしております。 #CookpadTechConf https://t.co/m4UqB2CNmU— kenju (@itiskj) February 10, 2018

動画配信におけるHTTP Live Streamingの概要について

動画配信プラットフォームを設計している。 Streaming/Download2種類の配信方法がある 配信方法には大きく分けるとStreaming/Downloadの2種類 + 他の動画プラットフォームを利用する手法が考えられる。 Streaming Download Pre Download Progressive Downloa…

TerraformでModulesを用いてResourcesの保守性UP

Terraformでは、Modulesを使うと、リソースを分割管理することができる。 保守性・メンテナンス性が向上するので、Terraformで複数リソースを管理している場合にはおすすめ。 www.terraform.io メリット main.tfの肥大化を避けられる git submodulesに切り出…

「CloudFrontのPolicyに複数のStatementを定義することはできない」件をAWSサポートチームに確認した

tl;dr 「CloudFrontのPolicyに複数のStatementを定義することはできない」件をAWSサポートチームに確認した オフィシャルチームに明確な回答を得ることで、今後ドキュメントに書かれていない使用を確認するために、無用な労力をかける人が減ることを期待して…

AWS SDK for RubyでS3のファイルを扱う時はdownload_file/upload_fileを使う

tl;dr S3へのファイルのアップロードには、#putも#upload_fileもいずれも使えるが、特別な理由がない限り#upload_fileを使うべき 同様に、ダウンロードする際は#download_fileを使う s3 = Aws::S3::Resource.new(...) obj = s3.bucket('bucket-name').object…

CloudFrontにおける署名付きCookieの悪用防止対策について

署名付きCookieを利用する場合、Cookieの悪用を防止するため、公式ドキュメントでは実装時に考慮すべきポイントについて↓でまとめられています。 このエントリーでは、一つ一つについて深掘りします。 docs.aws.amazon.com tl;dr CloudFrontで署名付きCookie…

CloudFrontで署名付きCookieで配信する場合のPolicy Statementsについて

署名付きCookieでコンテンツを配信する場合、コンテンツにアクセスできるユーザーを制御するため、ポリシーを適用することになると思います。 その場合、選択肢としては 既定ポリシー 独自ポリシー の二つが存在します。 既定ポリシーと独自ポリシーの違い ↓…

CloudFrontを経由してS3のPrivate Objectsを配信する実装方法まとめ

tl;dr CloudFrontを経由してS3のPrivate Objectsを配信する実装方法には「署名付きURLを用いた認証」と「署名付きCookieを用いた認証」の2パターンが存在 サービスの要件として「絶対にURLの漏洩によるデータ流出のリスク」を避けなければならない場合、「署…

S3 Lifecycle Ruleに設定したExpiration/Transitionの期間はいつから有効になるか

tl;dr Expiration/Transitionに設定した日付は、翌日の午前 00:00(UTC)に丸め込まれた上で加算計算される つまり、経過日数で設定した場合、常に 00:00(UTC)で移行・削除アクションが実行される より詳細な時刻でObjectのExpiration/Transitionのタイミ…

Versioningが有効なS3 Bucketsにライフサイクルポリシーを設定する

ObjectsのLifecycle設定について S3に配備したObjectsに対して、 一定期間経過したら、AWS Glacierなどの別サービスに移行する 一定期間経過したら、S3 Bucketsから削除する という設定をすることができます。これは、「Lifecycle設定」と呼ばれています。 d…

CloudFrontのPolicyに複数のStatementを定義することはできない

元ネタ:“Multiple Policy Statements for CloudFront Custom Policy (Signed Cookies) ” CFのリソースを複数定義したいとする。ドキュメント を読む限り、 { "Statement": [ { "Resource":"URL or stream name of the object", "Condition":{ "DateLessThan…

書評『Serverless Single Page Apps: Fast, Scalable, and Available』を読んで

購入した本 Serverless Single Page Apps: Fast, Scalable, and Available作者: Ben Rady出版社/メーカー: Pragmatic Bookshelf発売日: 2016/06/24メディア: ペーパーバックこの商品を含むブログを見る なぜ買ったか 仕事で一部導入しているSPAへの知見を深…