CubicLouve

Spring_MTの技術ブログ

Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databasesを読む(その9 CONCLUSION)

9 CONCLUSION Auroraは,クラウドの環境で、可用性も耐久性も妥協しない、高スループットのOLTPデータベースとして設計した。 この大きなアイデアは、伝統的なデータベースのモノリシックなアーキテクチャからの脱却と、ストレージをコンピュートの分離であ…

Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databasesを読む(その7 LESSONS LEARNED)

7 LESSONS LEARNED ここでは、クラウドで一般的なシナリオとそれに求める期待にフォーカスして、新たな方向性を導き出す。 7.1 マルチテナンシーとデータベースの統合 AWSのユーザーの多くは、SaaSビジネスを展開している。 SaaSでは、一般的にschema/databa…

Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databasesを読む(その6 PERFORMANCE RESULTS)

6 PERFORMANCE RESULTS 2015年7月にGAとなったAuroraを本番環境で稼働させた際の経験を紹介する。 6.1 標準的なベンチマークでの結果 SysBenchやTPC-C 亜種などの業界標準のベンチマークを用いて、AuroraとMySQLの性能を比較する。 特に記載のない限り、32 v…

Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databasesを読む(その5 PUTTING IT ALL TOGETHER)

5 PUTTING IT ALL TOGETHER ここでは、Figure 5で示すAuroraの構成要素について説明する。 https://www.allthingsdistributed.com/files/p1041-verbitski.pdf 参照 データベースエンジンは "community" MySQL/InnoDBのフォークであり,主にInnoDBがどのよう…

Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databasesを読む(その4 THE LOG MARCHES FORWARD)

4 THE LOG MARCHES FORWARD ここでは、永続状態、実行状態、レプリカ状態で常に一貫しているように、データベースエンジンからどのようにログが生成されるかを説明する。(3つの状態があるってことか) 特に、コストが高い2PC(2 phase commit)のプロトコルを使…

Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databasesを読む(その3 ログ is データベース)

3. THE LOG IS THE DATABASE Auroraはセクション2で紹介したように、セグメントに分けられて複製されているストレージシステムになっている。 このようなストレージシステムを使って従来のデータベースを動かすと、ネットワークI/O、同期のストール(失速)の…

Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databasesを読む(その2 大規模における耐久性)

2 DURABILITY AT SCALE(大規模における耐久性) データベースとは一度書き込んだら読み込みができなければならないのですが、全てのシステムはそうはなっていない。 ここでは、クォーラムのモデルの背後にある理論的根拠を示す。 なぜストレージを分けるのか…

MySQL InnoDBにおけるPKにUUIDを使ったINSERTのパフォーマンスの調査

下記の記事を見て、PKにUUIDを使った際に内部的にどうなっているのかを確認してみました kccoder.com 比較対象として、PKにULIDを使った場合も調べてみました。 github.com ULIDはUUIDと互換性がある、ソート可能な識別子です。 MySQLのバージョン % mysql -…

Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databasesを読む(その1 Introduction)

論文はこちらです。 https://www.allthingsdistributed.com/files/p1041-verbitski.pdf Introduction 最近の分散型クラウドサービスでは、下記2つを実現することで回復力とスケーラビリティを実現するケースが増えている。 コンピュートをストレージから分離…

なぜUsersテーブルの行でロックを取るのか?

下記ツイートを見て改めて考えてみました。 更新系APIでDBトランザクション張る時、対象のリソース群の親となるリソース(大抵はUser)を無条件で最初にロックする手法が当たり前だと思っていたけど、もしかして世間ではそうではないのかな...デッドロックリ…

Java SDKでApache Beam(Dataflow)でGradleを使うサンプル

Java SDKを使ったApache Beamのパイプライン構築については公式ドキュメントなどを見るとMavenを使うことが多いのですが、Gradleを使った例が見当たらなかったので作ってみました。 github.com 個人的な感想なのですが、Mavenだと依存関係をpomで定義書くの…

Apache BeamでPTransformを使って分割したステップについてテストをする(Java)

簡単なまとめ Apache Beamでは PTransform PCollectionを使ってパイプラインを小さいステップに分割できる Apache Beamは分割してステップを簡単にテストできるテスティングフレームワークが整備されている パイプラインを細かく分割して、それらのテストを…

サービスを作る

雑多にまとめておく MVPとかPocとか InVisionやFigmaで作る。 それで、プロダクトのコアコンセプトのテスト、仮説検証できるところまでやる。 最初の文化 なぜこのサービスをやるのかを最初からチームで話す www.ryuzee.com blog.agile.esm.co.jp すべてのタ…

docker build時のキャッシュの判定

メモ書き スタートはdispatchersから https://github.com/moby/moby/blob/cf0ce96eb129ebcc7d07f0f47a8683c16f228c7d/builder/dockerfile/dispatchers.go ADD や COPY https://github.com/moby/moby/blob/cf0ce96eb129ebcc7d07f0f47a8683c16f228c7d/builder/…

"プログラミングの基礎" を読んだ

2ヶ月かけてプログラミングの基礎という本を読みました。 この本を読んだきっかけ この本は2013年くらいに @kis におすすめされた本でした。 購入日は2013/05/29 買ってすぐ読んだ記憶があるのですが、2章くらいまでで読むのをやめた気がします。 その後、数…

2020/07から2020/10までのGKEのリリースノートからGKEの機能で気になる部分をまとめる

セキュリティ関連は書いてないです。 kubernetesのアップデート内容には触れていません。 July 2, 2020 https://cloud.google.com/kubernetes-engine/docs/release-notes#july_2_2020 NodeLocal DNSCacheがGA Setting up NodeLocal DNSCache | Kubernetes En…

macOSでKarabiner-Elementsが認識されなくなったら試すこと

リカバリモードで立ち上げる Mac の電源を入れた直後に、「command (⌘)」と「R」の 2 つのキーを押し続ける ユーティリティは選択せずにメーニューバーからユーティリティ -> ターミナルを選択 ターミナルが立ち上がるはず spctl kext-consent add G43BCU2T37…

Rails 5.2以降のRails 5系でDBに都度接続している場合においてはdatabase.ymlで `reaping_frequency: null` を設定する

Rails 5.2以降でDBに都度接続している場合においてはdatabase.ymlで reaping_frequency: null を設定しないと、スレッドが枯渇してサーバーにsshすらできなくなりサーバーの再起動が必要になります。 sshはこんなエラーになります。 shell request failed on…

bcryptの仕組み(とbcrypt-rubyの中身を見る)

Ruby(主にRails)でパスワードを扱う際のハッシュ化には bcrypt-ruby を使うことがほとんどだと思います。 github.com bcryptについて勉強しつつ、さらに実装を確認してみようと思います。 bcrypt-ruby は v3.1.15 を利用しています。 bcrypt 説明はwikipedia…

Railsのforce_sslとssl_optionsについて

Railsの force_ssl と ssl_options について知らないことが多かったのでまとめてみます。 railsguides.jp force_ssl force_ssl を有効にすると、ActionDispatch::SSL がミドルウェアとして差し込まれます。 rails/default_middleware_stack.rb at 5394c94a2b…

ブラウザのXSSフィルタはどうなったのか(2020/08/14 時点)

ブラウザのXSSフィルタを有効にするために、 X-XSS-Protection レスポンスヘッダーでブラウザの設定を上書きして有効にするという内容が徳丸本のp 135にでてきます。 XSSフィルターってどういう機能なんだろうと調べてみたところ、下記記事にある通り、2020/…

VS Codeでフォルダの階層をまとめない

Compact Folders を off or settings.jsonで下記を設定 "explorer.compactFolders": false, https://code.visualstudio.com/updates/v1_41#_compact-folders-in-explorer いつも忘れるのでいい加減メモっておく

React Navigationを4系から5系にバージョンアップする

ReactNative は 0.63.2 まで更新してある状態で、React Navigationのバージョンを4系から5系にバージョンアップしました。 その時の対応をまとめます。 React Navigation 5のアップデート内容 下記にまとまっています。 reactnavigation.org ここで取り上げ…

GKE上で動くPodでeBPFを使ってみる

GKEのバージョン 1.16.13-gke.1 Node Container-Optimized OS from Google コンテナのOS OSは下記を使うのでちょっと特殊 https://console.cloud.google.com/gcr/images/gcp-runtimes/GLOBAL/ubuntu_18_0_4?gcrImageListsize=30 # cat /etc/os-release NAME=…

Dockerコンテナのリソース利用状況をコンテナ内から把握する

dockerには docker stats というコマンドが用意されており、ホストからdockerコンテナの状態を知ることができます。 docs.docker.com www.datadoghq.com crate.io ホストからこのコマンドを叩けばdockerコンテナのリソース利用状況の一覧を取得できます。 ま…

suとsudo

su su コマンドは、PAM認証ユーザーの切り替えを行い、シェルの実行を行います。 su だけ打つとrootユーザーへ切り替え、rootユーザのシェルが実行されます。 su - は su -l と同じ意味をもち、ログインするときを全く同じになります。 su(1) manページ シェ…

ソフトウェアの資産計上について

よくわからんので、まとめていく 用語 説明 減価償却資産(有形固定資産) サーバーとか 減価償却資産(無形固定資産) ソフトウェアはここにあたる開発後一定期間継続的に利用することが想定されるので、そういうものに費やされた工数(費用)は減価償却する。 販…

ADMIN PINGとは

前提 Railsのバージョン https://github.com/rails/rails/tree/v4.2.6 ADMIN PINGの正体 ADMIN PINGというコマンドはありません。 実態はMySQLのCOM_PINGというコマンドになります。 https://dev.mysql.com/doc/refman/5.6/ja/mysql-ping.html https://githu…

JavaのJSONObjectのgetIntとoptInt

import org.json.JSONException; import org.json.JSONObject; public class HelloWorld { public static void main(String... args) { String json = "{\"screen_name\":\"katty0324\",\"age\":\"\"}"; JSONObject jsonObject = new JSONObject(json); Syst…

重回帰分析について

spring-mt.hatenablog.com から続く話です。 単回帰分析では、2つの変量しか扱っていませんでした。 重回帰分析では2変量以上の多変量とを扱います。 ただし、ある1変量を説明しようとするのは単回帰分析でも重回帰分析でもかわりません。 単回帰分析の回帰…