Presented by: Tomoki Nishinaka, Yu Zhouxun PayPayの機能の一つとして2020年4月に新たにリリースされた通知サービスでは、スケーラビリティとパフォーマンスを重視し、数々のデータストアソリューションの中からDynamoDBを採用しました。通知センターの設計からリリースまでにおける検討プロセスや、DynamoDBを使った開発/運用手法、及びテーブル設計のtipsについてご紹介します。
概要 AWS で人気のサービス DynamoDB についての論文が公表され巷で噂になっていたと思う。 今回は、その論文を読み込んでいき、ざっくりまとめていくという記事になります。 完全趣味な記事なので、興味ある人がいれば幸いです笑 Abstract まず論文のタイトルですが、「Amazon DynamoDB: A Scalable, Predictably Performant, and Fully Managed NoSQL Database Service」と題したものとなっています。 Amazon DynamoDB は、NoSQL とよばれる部類のデータベースサービスです。 一貫した耐久性、可用性、パフォーマンスを提供してくれるマネージドなサービスなのが特徴ですね。 冒頭、2021年に66時間にわたる「Amazon Prime Day」中にピーク時8920万リクエスト/秒をさばいてい
ありがたいことに、3年前に#ssmjp 2017/06で話したスライド AWS LambdaとDynamoDBがこんなにツライはずがない #ssmjp をTwitterで紹介して頂いた*1 ようで、当時から大幅に改善しているところを振り返りたいと思います。あと、ついでに最近やっているAzureに関しても少し触れていきます。 サーバーレスアーキテクチャ #とは 当時はこう説明したのですが、今でもそんなに悪くない表現かなと思います。 書籍は現在「Serverlessを支える技術 第3版」まで出ていますので、BOOTHからどうぞ(隙あらばダイマしていく方針)。 サーバーレス三種の神器 今このスライドを作るなら、認証認可の話を入れるかなと思います。システム内のAWS IAMとクライアント側のCognitoどちらも重要です。 ちなみにAzureを含めておさらいすると、こんな感じの対応になります。 勝
3. サーバーレスアーキテクチャ #とは • 視点1:3種類の「サーバ」を捨てていく 1. 自分で管理する物理的・仮想的な「サーバ」を捨てて、 上の「機能」だけを利用する 2. プロビジョニング単位としての「サーバ」を捨てて、 確保サーバ数から消費したリソース量への転換 3. 処理全体に責任を持つ「指揮者としてのサーバ」を捨てて、 リアクティブな非同期メッセージングでシステムを構成 • 視点2:クラウドが提供する「ありもの」を最大限に活用する 4. 続きは書籍で! • SoftwareDesign 2016/04号 • 電子版が技評で買えます https://gihyo.jp/dp/ebook/2017/978-4-7741-8409-8 • サーバーレスの薄い本 • 電子書籍版 https://gumroad.com/l/memotr201608 • ダイジェスト https://www
この記事について 本記事は、筆者が普段AWSの各種サービスを使って感じた感想・気づきをもとに、クラウドアーキの設計やサービスのより良い使い方Tipsを考察するシリーズです。 第二弾も第一弾に引き続きDynamoDBについてです。 DynamoDBはkey-value型のNoSQLであり、従来よく使われていたRDBとは異なるDB特性・クエリ特性を持っています。 そのためRDBを設計するときと同じようなノリでスキーマ設計・テーブル設計を行うと、後から「この操作をやらせるならDynamoDBじゃないほうが良かったんじゃないか?」ということが発覚しがちです。 本記事では筆者が遭遇した「DynamoDBでやらせてみたら苦労した・できなくて設計変更を強いられた」というユースケースをまとめることで、DynamoDBのクエリ特性や適性を考察することを目指します。 使用する環境・バージョン 2024/1/1
Amazon DynamoDB の特性 フルマネージド型の NoSQL データベースサービス 3つの Availability Zone に保存されるので信頼性が高い 性能要件に応じて、テーブルごとにスループットキャパシティを定義するキャパシティの Auto Scaling、オンデマンドキャパシティといった設定も可能 ストレージの容量制限がない DynamoDB のテーブル DynamoDB におけるテーブルはRDBMSにおけるテーブルと概念が異なります。 テーブルを作成する際に、Primary Key を指定する必要があります。 Primary Key はテーブルの各項目を一意に識別するために使います。Primary Key は、Partition Key および Sort Key で構成されます。(Sort KeyがなくPartition Keyのみの場合もあります) Item は R
Serverless Meetup Tokyo #11 での発表で使用したスライドです。 外部リンク: Serverless Meetup Tokyo #11 https://serverless.connpass.com/event/119559/ HiCustomer https://hicustomer.jp ServerlessなサービスのBlue/Greenデプロイメントの現実 | HiCustomer Tech Blog https://tech.hicustomer.jp/posts/blue-green-deployment-in-serverless/ サーバーレス失敗談 - テーブル設計編 | HiCustomer Tech Blog https://tech.hicustomer.jp/posts/serverless-fails/
こんにちは。 株式会社CHILLNNという京都のスタートアップにてCTOを務めております永田と申します。 弊社では宿泊施設様向けに宿泊施設の予約管理用のSaaSを提供しており、現時点で1000近くの施設様にご利用いただいています。 現在、これまでに溜め込んだ日本最大級の宿泊コンテンツの検索エンジンを構築しており、その過程でさまざまなデータベースを探索しています。 本記事では、AWSのKVSであるDynamoDBを題材に、公式ドキュメントに書かれているキー設計のベストプラクティスの背景を理解することを目的とします。 なお、本記事の執筆にあたって、こちらの動画を大変参考にさせていただきました。 DynamoDBとは DynamoDBとは、AWSで利用できる、あらゆる規模に対応する高速で柔軟なNoSQLデータベースサービスです。 DynamoDBが登場した背景は、アプリケーションの大規模化です。
【Unit4 ブログリレー4日目】 こんにちは、エムスリーエンジニアリンググループの福林 (@fukubaya) です。 今回は、SNSではごく一般的ないいねとその通知機能をDynamoDBを利用して実装したら思ったより大変だったので、その詳細をご紹介します。 キャナルシティ劇場は、福岡県福岡市博多区の複合商業施設「キャナルシティ博多」のシアタービル最上階に位置する劇場。本文には特に関係ありません。 m3ラウンジ m3ラウンジのいいねとその通知の要件 RDBで実装したらどうなるか いいね機能 通知機能 DynamoDBで実装する いいね機能 通知機能 いいねする いいねを取り消す 通知を表示する 未読の通知の取得 未読の通知数 未読の通知を既読にする テーブル設計むずい PKとSKに何を選ぶか LSIは途中から作れない DynamoDBをローカルで動かして設計する まとめ We are h
こんにちは。サーバーワークス こけし部 部長でCS課の坂本(@t_sakam)です。前回に続いて、Serverless Frameworkの話題です。 前回は、Serverless Frameworkのドキュメントに沿って、簡単に使い方を確かめてみました。今回は、API GatewayやDynamoDBをからめた使い方をみてみたいと思います。 Serverless Frameworkを使うと、設定ファイルのserverless.ymlに必要な設定を書いて「serverless deploy」とコマンドを打つだけで、必要なリソースの作成ができます。Lambdaファンクションのデプロイだけでなく、API GatewayとDynamoDBのリソース作成もServerless Frameworkでやってしまいましょう。 Serverless Frameworkのアップデート サービスの作成 必要な
Amazon DynamoDBは、RDSのようなインスタンスサイズによる課金モデルではなく、ストレージのデータ使用量とスループットを基にした課金モデルになっている。 インスタンスサイズによる課金モデルでないデータストア系サービスとして、他にはS3、Kinesisなどがある。 これらは、AWSの中でも、フルマネージドサービスと呼ばれる位置づけとなるサービスだ。 フルマネージドサービスは、ElastiCacheのようなそうでないものと比較し、AWSに最適化されていて、サービスとしてよくできていると感じている。 Mackerelの時系列データベースのスタックの一つとして、DynamoDBを採用している。 時系列データベースの開発は、コストとの戦いだったために、それなりにコスト知見が蓄積してきた。(時系列データベースという概念をクラウドの技で再構築する - ゆううきブログ) (※ 以下は、2018
NoSQLのAmazon DynamoDBがJSONドキュメントに対応、25GB/月間2億リクエストまで無料枠も拡大 Amazonクラウドが提供している「Amazon DynamoDB」は、フルマネージドのNoSQLデータベースです。ほぼ無限にデータベースをスケールさせることができるため容量のことを気にする必要がなく、固定されたスキーマを持たない柔軟性と、SSDを利用することによる高いスループットを実現。NoSQLでありながら一貫性を制御するオプションも備えています。 まさにクラウドの特長を活かしたサービスであるDynamoDBが、JSONドキュメントをデータ型としてサポートしたと発表されました。 これでDynamoDBのスケーラビリティや性能はそのまま、キーバリュー型だけでなくJSONドキュメントも扱えるようになりました。 キーバリューに加えてJSONドキュメントも JSONとは、Jav
9月20日に発生したAmazonクラウドのDynamoDB障害。原因はセカンダリインデックス増大によるメタデータ処理のパンク Amazonクラウドが提供しているDynamoDBは、キーバリュー型のNoSQLデータベースサービスです。運用管理はクラウドに任せられて簡単に利用でき、高速かつ非常に大規模なスケールで展開できることなどを特長とする、クラウドならではのサービスの1つです。 そのDynamoDBで、米東リージョンにおいて9月20日午前2時頃(太平洋夏時間)から午前7時頃まで障害が発生。DynamoDBを利用しているEC2 Auto Scaling、Simple Queue Service、CloudWatch、そしてコンソールなどにも一時的な障害が発生していました。 また、この障害はAmazonクラウドを利用している他社のさまざまなサービスにも影響を与えたと報じられています。 Amaz
AWS CDKを始めるハンズオン ─ IaCの第一歩をAWS LambdaとDynamoDBのシンプルな仕組みで学ぶ アマゾン ウェブ サービスが提供するIaC(Infrastructure as Code)の開発キットがAWS CDK(AWS Cloud Development Kit)です。本記事はAWS CDK入門者向けのチュートリアルとして、AWSでソリューションアーキテクトを務める吉川幸弘(@WinterYukky)さんによる、AWS Lambda関数でDynamoDBテーブルをスキャンするシンプルなハンズオンです。 みなさん、こんにちは。アマゾン ウェブ サービス ジャパン合同会社でソリューションアーキテクトを務めている吉川幸弘と申します。私は普段、西日本のお客様を中心に技術的なご支援や課題解決などをしています。 さっそくですが、みなさんはInfrastructure as C
サーバーサイドエンジニアこそAngular2をやるべきかもしれない – Heroデータを AWS Lambda+DynamoDB で取得する はじめに 私自身は普段サーバサイド(主にWeb API)の開発を行っているのですが、業務外でAngular2を触ってみたところかなり好感触だったのでブログにしました。この記事では、Angular2のTutorialを終えた状況から、データ取得部分をモックではなく外部サーバに置き換える例を示し、Angular2の考え方、サーバサイドとの連携方法について記録したいと思います。 Angular2をはじめたときの筆者の状況 フロントエンドスキルセット jQuery、CSSを利用したウェブページの開発経験あり とはいえ、アニメーションや色彩に明るいわけではなく、ほとんどWebアプリケーションフレームワーク任せ JavaScriptはDOM操作用の言語という考え
はじめに 私ごとではありますが、現場でdynamodbをメインのデータベースとして採用してから約2ヶ月が経ちました。 たった2ヶ月いう期間で、何度も心身ともに崩壊し、そして粘り強く復活を遂げ、かろうじて奇跡的にレベルアップをしてきました。 今回の記事では、これからdynamodbの導入を検討しているエンジニアの皆様に向けて、わずかながら現場で(汗と血を流しながら)得た知見を共有したいと思います。 主にdynamodbを導入するときに楽できる部分、楽できない、苦労する部分がどんな感じか、この記事でなんとなく伝えられたら嬉しいです。 以下では、4つの項目(採用基準、設計、開発、運用)に分けて、知見を羅列していきますが、私もまだ駆け出しdynamodberの域を出ないので、誤りやアドバイス等ございましたら、是非コメントいただきたいです! なお、ここで紹介する内容は基本的にはAWSの公式ドキュメン
動機など 最近、Serverlessの文脈からDynamoDBのテーブル設計の相談を受けることが多くなってきていて、Podcastでも話したけどけっこう図とかが無いと説明しづらい領域なので、まとまった資料がほしいなということでまとめてみる。 cloudinfra.audio どう考えても長編大作エントリ不可避なので気力が続けば第二巻以降に続きます…!(フィードバックが多いと頑張れるかも…!) 本巻の対象と前提知識 本巻はDynamoDBのデータモデリングにスコープを絞っています。DynamoDBおよびデータベースの一般用語などについての説明は省きます。 前提知識としては以下のようなものになるかと思います。 DynamoDBのサービスとしての概要や用語( WCU , RCU , GSI , LSI など)を知っている Hash TableやB-Tree(B+Tree)といったデータ構造がどん
AWSはNoSQLデータベースサービスのDynamoDBが、SQLで操作可能になるSQL互換のクエリ言語「PartiQL」に対応したことを発表しました。 You now can use PartiQL (a SQL-compatible query language) to query, insert, update & delete table data in DynamoDB. PartiQL makes it easier for you to interact with DynamoDB & run queries in the AWS Management Console. https://t.co/qlRwzYZCPC pic.twitter.com/pVaX5xlEDu — DynamoDB (@dynamodb) November 23, 2020 DynamoDBはキーバ
はじめに 概要 DynamoDBのテーブルの用語やテーブルの検索方法がまっっったくわからなかったので、イラストをまじえながらいつでも見返せるように書いてみました。 この記事で得られること DynamoDBのテーブルの基礎概念についてイラストで理解できます。 テーブルの操作はaws cliで行なっていますが、もちろんコンソール画面からもできます。 全体の概要を理解したいので、aws cliのコマンドについては軽く読み流してもらって大丈夫です。 用語 DynamoDBのテーブルには色々な用語があります テーブル パーティションキー ソートキー Item(項目) Attribute(属性) index その他もろもろ… 何を言っているのかよく分かりませんね。 そこで、今回は私たちに馴染みのある「学校」をテーマにイラストを使って解説をしていきます。 みなさんは先生になった気持ちでどうすれば生徒たち
今年は始めて、re:Inventに参加してきたので、その際に見た「Amazon DynamoDB: Data Modeling and Scaling Best Practices」というセッションの内容を共有したいと思います。 内容をだいぶ端折ってるので、間違っている場合には、びしばしツッコミいただければと思います。 では、まいります。 1. CacheはCashなり なんでDynamoDBを使うかといえば、やっぱり、ポチポチっと設定するだけで簡単に読み込み、書き込み性能を上げたり、下げたりできるっていうのが大きなポイントかと思います。 ただ、設定した性能も、データのアクセスパターンによっては思い通りの性能が出ないことがあります。 例えば、ReadCapacityを 100から5,000 に上げたとします。そうると、DynamoDBは、「オレ1人では捌き切れない」と思って、パーティション
CTOの椎名アマドです。 今回は、Pairyのチャットデータを全てRedisからAmazon DynamoDBに移行した話をしたいと思います。 我々が 2012年6月に カップル専用アプリ Pairy をリリースした時には、 データベースは MySQL と Redis の両方を利用するところで始めました。 Redis の役割は: 1. MySQLレスポンスのキャッシュ 2. プッシュ通知等のキュー 3. チャットのデータを全保管 サービスローンチ直後はまだ Appサーバー(EC2)1台と、MySQL & Redisを両方走らせてる DBサーバー(EC2)1台で十分だという判断で、しばらくはそんな構成でやってました。(S3などは省略) しかし、いざサービスが成長してくるともちろん MySQL & Redis を1台でまかなうのはキツくなり、MySQL と Redis を別々のEC2インスタン
はじめに DynamoDBは上手く使えば非常に強力なDBMSですがRDBとの違いは大きく、「RDBの代わりにDynamoDBを使おう!」と深く考えずに提案/採用することが難しいことから、その理由についてみていきます。 DynaomoDBの難しさ DynamoDBの利点と表裏一体である、DynaomDBの主要な難しさについて順番に見ていきます。 1. 提供されているクエリモデルでできることが非常に限定されている DynamoDBは次の公式サイトに記載がある通り、どんな規模でも数msの一定のパフォーマンスを発揮でき、無尽蔵にスケールできるという特徴があります。 Fast, flexible NoSQL database service for single-digit millisecond performance at any scale この特性を上手く活用すると次の実例のように高可用性、
Amazon Web Serviceが提供する、SSD上に構築された高速でスケーラブルなNoSQLデータベース「Amazon DynamoDB」が、東京データセンターでも利用可能になりました。 DynamoDBは、単にNoSQLの持つ高いスケーラビリティを提供するだけではなく、一貫性の制御が可能で、必要なスループット性能も自由に設定できるなど、従来のNoSQLとは一線を画す高性能を、メンテナンスなどの管理の手間をまったく必要とせずに提供するサービスです(関連記事「Amazonクラウド、SSD上の新NoSQLデータベース「DynamoDB」を公開。性能をダイナミックに上げ下げ可能」)。 このDynamoDBの開発経緯や技術について、Amazonのバイスプレジデント兼最高技術責任者(CTO) ヴァーナー・ボーゲルズ(Werner Vogels)氏に、テレビ会議を通じてインタビューを行いました。
DynamoDBを大雑把にさくっと日本語で理解したい方向けの説明。 (まだ書き途中) API Version 2012-08-10 を元に書いています。 印象と感想 管理が楽! 容量の増加を気にしなくていい! スループットやパフォーマンスの監視、管理が楽! ソーシャルゲームでは、一部のデータではすごく良さそう 検索や集計は弱いから、MySQLと併用 レイテンシが低いと書いてあるが、memcache の方が当然早い テーブル設計の理解と指定方法がちょっと面倒 料金体系の理解がちょっと面倒 DynamoDBとは何か? 大雑把に NoSQL, スキーマレスなAWS上のデータベースサービス スケールに関して何も気にしなくていい まずは、公式サイトを読むと概要はわかります。 Amazon DynamoDB (フルマネージドNo SQLデータベースサービス) | アマゾン ウェブ サービス(AWS 日
はじめまして。カヤック技術部の杉山です。 主にクライアントワークでサービスを開発しています。 今回は、クライアントワークで運用している、テストサイトの仕組みに関して書きます。 「テストサイト」の概要 クライアントワークでは、日々たくさんの案件を開発しています。 それぞれの案件では、多くの場合、Webサイトもしくは、WebAPIを公開するためのサーバーが必要になります。 実際の公開時には、案件ごとに専用のクラウドコンピューティングサービスを契約し、セットアップすることになりますが、 利用して良いサービスの確認が必要であったり、サービスの契約まで時間がかかったりするため、すぐには決まらない場合があります。そのため、開発時や検証時には、カヤック側でテストサイトを用意し、確認やプレビューを行っています。 さらに以下のような要望にも対応する必要があります。 出来るだけ時間をかけず開発環境を用意したい
Amazonクラウド、SSD上の新NoSQLデータベース「DynamoDB」を公開。性能をダイナミックに上げ下げ可能 「DynamoDBは、15年にわたる大規模なNoSQLデータベースとクラウドサービスから学んだことの集大成だ」(DynamoDB is the result of 15 years of learning in the areas of large scale non-relational databases and cloud services.)。Amazon Web Serviceが新サービスとしてβ公開したDynamoDBについて、Amazon.comのCTOであるWerner Vogels氏は自身のブログAll Things Distributedのエントリ「Amazon DynamoDB – a Fast and Scalable NoSQL Database
前巻のおさらい 前巻はDynamoDBのデータモデリングをする前に知っておいた方が良いDynamoDB自体の仕組みやデータ構造のお話でした。 marcy.hatenablog.com 今回は 今回はデータモデリングを行う際に必要なマインドセット、つまり「考え方」について書き記したいと思います。非常によく聞かれる「RDBとの考え方の違い」といった切り口で進めていきたいと思います。 RDBとはアプローチが真逆 RDBのデータモデリングをする場合、まず正規化されたデータのスキーマを決めることから始めると思います。慣れてくると律儀に第一正規化から始めずにいきなり第三正規形あたりから設計しだすことも多いと思います(私もそうです) そして、データのスキーマが決まってからそれに対してどのようにアクセスするか(=SQL)をアプリケーションを設計する際に考えていくというのがRDBでの一般的なアプローチではな
AWS News Blog New – Amazon DynamoDB Transactions May 20, 2024: As of September 2022, DynamoDB now supports 100 items per transactions. March 13, 2020: Post updated to clarify how to use transactions with global tables and the increase in the maximum number of items per transaction from 10 to 25. Over the years, customers have used Amazon DynamoDB for lots of different use cases, from building micr
はじめに CX事業本部の佐藤智樹です。 今回はAWSが提供しているDynamoDB用のアプリ「NoSQL Workbench」の機能を使ってデータモデリングする流れを解説します。 最近案件でテーブル設計を再検討する必要がありNoSQL Workbenchを使ったところ、サンプルデータを入れながら設計が正しいか検証でき非常に便利だったので紹介します。 他の記事でもアプリの紹介はありますが本記事ではデータモデリングに絞って解説を行います。題材として多対多のデータをモデリングしながら設計する方法を紹介します。 本記事を読めば今までDynamoDBのデータ設計に悩んでいた方の検討時間をかなり減らすことができます。自分ももっと早く「NoSQL WorkbenchのData modeler はこう使って欲しい!」という記事があれば良かったなあと思ったので記事にしました。 NoSQL Workbench
AWS SDK for JavaScriptでAmazon S3とDynamoDBをクライアントサイドJavaScriptのみで操作する 久保田です。 AWS SDK for JavaScriptのデベロッパープレビューがリリースされました。AWSは今までウェブサービスのサーバサイドからしか扱えませんでしたが、このライブラリを用いることで、AWSのサービスをクライアントサイドのJavaScriptからでも操作できるようになります。つまり、IaaSとして利用できるAWSをサーバサイドのプログラム無しでBaaSのように扱うことができます。最も有名なBaaSの一つであるParse.comもバックエンドにはAWSを利用していることが知られていますが、今回登場したAWS SDK for JavaScriptを用いるとParse.comのようなBaaSと同じようなことがAWSでもできるのではないかと注
Tomcatのセッション管理 Tomcatでクラスター構成にする場合、課題となるのがセッション管理です。ロードバランサーでセッションIDを保持することで、毎回同じサーバーにリクエストが向かうのであれば問題なさそうに見えますが、あるサーバーがダウンしてしまうとセッション情報が消えてしまいます。これを解決する方法として、データベースにセッション情報を保持する方法が一般的ですが、データベースへ負荷が掛かりますし、データベースが落ちたら困ります。何かもっと良い方法は無いかと皆さん思っていたはずです。そこで、AWSですよねー。AWSでは、ElastiCacheやDynamoDBがサービスとして提供されています。ここで、永続化をしっかりやってくれるのはDynamoDBであり、AWS SDK for Javaでの登場が待たれていたわけです。そして、このたび出てきました! スティッキーセッション ロードバ
はじめにTIG真野です。失敗談をテーマにした連載で、ちょうどプロダクト開発的に良い区切りのタイミングでもあるため、振り返りがてら、DynamoDB,Go,AWS Lambdaの技術要素について自分自身の理解・見込みの甘さについて反省します。 DynamoDBのシステム項目created_atとかupdated_atのタイムゾーンはJSTにすれば良かったDynamoDBは日付型を直接サポートしておらず、文字列型で保存することになります。 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes.String データサイズや諸々の理由でUnixTime 勢力もあるかもしれませんが、アプリケーションから直接参照
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く