Parquetは便利なファイル形式で、列志向のフォーマットとしてはデファクトの1つと言っても過言ではないでしょう。 ですが、jsonやcsvとは違い、ファイルを見ただけでどんな構造かわかるものではありません。 この記事は、Parquetの具体的な構造について記述…
はじめに バグのないコードは書けないません。 それを前提に、ブルーグリーンデプロイやカナリアリリースが実践されています。 それらの方法ではどのように問題を発見するかが重要になります。 この記事で紹介するGandalfは、Azure内で稼働する障害検知のた…
はじめに 最近、マイクロサービスの拡大と共にキューやストリームを使用した非同期処理が増えたと思います。 この記事では、Netflix・Pinterest・Airbnbが公開した、各社の非同期処理の具体例を紹介します。 (各事例は簡単な概要の紹介しか書かないので、よ…
はじめに AWSのALBでも重み付けルーティングが採用されたように、LBでは重み付けの機能がよくありますが、Facebookでは時間やイベントなどによるトラフィック変化に対応するため、エッジサーバー上のLBの重み付けを動的に変化するようにしています。 この、…
はじめに RistrettoはグラフデータベースのDgraph内のキャッシュが遅いという問題から生まれたキャッシュライブラリです。 GolangWeekly(@golangweekly)で紹介されていたのを見つけて気になったので、動きを追ってみました。 Ristrettoは、以下の特徴を持っ…
はじめに Googleの提供するサービス郡が共通して利用している認可システムにはZanzibarという名前がついています。ZanzibarはGoogleDrive・Google Map・Youtubeなどの巨大なサービスにも使用されています。 そのため、利用量も凄まじく 数10億のユーザー 数…
はじめに Amazon Auroraは、AWSを触る人ならほとんどの人が利用を検討したことがあるでしょう。 Amazon社内ではOracleを止めたというtweetもありました SHUTDOWN ABORT the last Oracle database running Amazon Fulfillment! pic.twitter.com/DorqTua2Lt— J…
Krakenとは Uberから、Krakenという拡張性と可用性に焦点を当てたP2P型のDocker registryが公開されました。 3Gのdocker imageを2,600ホストから同時にダウンロードしても、半数以上のホストが10秒で完了し、99%のホストで18秒以内にダウンロードを完了する…
はじめに CoreDNSはサービスディスカバリ機能を持ったDNSです。 CNCFでGraduatedになっているプロジェクトで、KubernetesのデフォルトDNSにもなっています。 公式: https://coredns.io/ GitHub: https://github.com/coredns/coredns この記事では、CoreDNSは…
サービスを長く継続すると避けられないのが「マイグレーション」です。 しかし、マイグレーションには多くの手間がかかる上に致命的なバグも出やすく、難しい作業です。 そんなマイグレーションを実践し、詳細を公開している企業があります。 それを参考にど…
はじめに 分散ストレージであるCephについての論文を読んだので紹介します。 最近CybozuのNecoプロジェクトが始まり、面白そうなことをやっているな、と思っていたたところ、Cephについてのブログが出ました。 これを読んで、「Ceph読んでみたいな」と思った…
はじめに この記事は設計・アーキテクチャ Advent Calendar 2018の1日目の記事です。 大きなサービスを支えるのは一筋縄では行かず、考えることは多くあります。しかし、ありがたいことに巨大な企業の中にも自社のサーバー構成やそれを支えるツールを公開し…
はじめに 以前Dynamoの論文を読んだので、ついでにGoogleのF1についての論文読んだ。 Dynamoは古かったが、こちらは2018年発表と新しい。 以下のリンクから手に入る。 https://ai.google/research/pubs/pub47224 F1はSpannerと一緒の文脈に居ることが多くSpa…
yarn add から webpackがimportを解決するまでを追う Javascriptでは、Yarnとwebpackを使うのが主流なので、それらがどのような動きをしているかを追った。 事前準備 動きを追うために以下を用意した コード Verdaccio コード コードの配置は以下 . ├── buil…
はじめに AmazonがDynamodbを紹介した論文を読んだ。 2007年のもので、NoSQLブームの走りとなったものだったと思う。 コンピュータ・サイエンス関係の「おすすめの論文」のようなもので、よくおすすめされるので読んでみたが、意外と面白かったので、面白か…
GitHubのを眺めていたら、ORYのoathkeeperを見つた。 これがGoogleが社内で使用している「BeyondCorp」を参考にしているということが書いてあったので、その論文を読んだ。 BeyondCorpとは GoogleがVPNの代わりに使用している、認証・認可のシステム。 人・…
gh-ostとは gh-ostは、binlogを利用したmysql用のデータベースマイグレーションツールです。 大抵のマイグレーションツールがtriggerを使いつつ移行するのに対して、gh-ostはbinlogを使うことで、負荷制御やテスト可能性を実現しています。 githubはここ。 g…
Web業界で働いていて、普段はRubyを書いているエンジニアがVRに手を出して、なんとか自分がしたかったことが形になりました。 その経験から、「VR開発ってこんな感じ」というのを伝えられればと思います。 結論を言えば、「Webエンジニアにとってはブラウザ…
gVisorが面白そうだったので、どんな風に動いているか書きます。 使用したコミットは、 GitHub - google/gvisor at c400a0356b856e71fd30e3fe10372d7bb94356cb です。 gVisor概要 gVisorは、先日googleが公開した、アプリケーションとホストの分離を目指した…
JS記号プログラミング入門 - Qiita で紹介されていた記号プログラミングがとてもおもしろかったので、chromeで作ってみました コンソールに大きめの文字で「hello crazy hacker」と出力するコードです。 綺麗な書き方は、 console.log('%chello crazy hacker…
データベースのスキーマを変更するということはデータをいじる行為であり、最悪の場合データが消えます。 最悪の事態にはならなくとも、思わぬ場所に影響が起きたり、データの不整合が発生する恐怖と戦う必要が有ります。 テストや切り戻しを含めて計画し、…
grpcがどんな風に動いているかを覗いてみます。 grpcとは 下の画像のようにgoogle製のrpcフレームワーク言語をまたいで扱えるのが特徴です。 クライアントは言語ごとに作られていて、grpcのリポジトリに直接入っているものと、別リポジトリに分けられている…
Dapperとは googleが社内で利用している、分散トレーシングツール https://research.google.com/pubs/pub36356.html この論文から出来たOSSとしてはtwitterによるzipkin(github)、uberによるjaeger(github)が有る。 内容 マイクロサービスだと1つのリクエス…
サービスを海外展開したり日本にいる外国人にアピールしたくなった時、国際化対応が必要になります。 この記事を通して、「国際化対応したい」という話が出た時に「どこをどのように」対応することになるのか、対応範囲や見積などがなんとなく伝わればと思い…
Webサイトを多言語化する 最近多言語化に関する仕事をしている関係でi18n(l10n)用のライブラリを色々と見たので、 i18nライブラリによくある使い方を紹介します。 とは言ってもほとんどのライブラリは同じような書き方をするのでJavaScriptを例にします。 ラ…