プログラミング
はじめに 最近、マイクロサービスの拡大と共にキューやストリームを使用した非同期処理が増えたと思います。 この記事では、Netflix・Pinterest・Airbnbが公開した、各社の非同期処理の具体例を紹介します。 (各事例は簡単な概要の紹介しか書かないので、よ…
はじめに RistrettoはグラフデータベースのDgraph内のキャッシュが遅いという問題から生まれたキャッシュライブラリです。 GolangWeekly(@golangweekly)で紹介されていたのを見つけて気になったので、動きを追ってみました。 Ristrettoは、以下の特徴を持っ…
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は…
サービスを長く継続すると避けられないのが「マイグレーション」です。 しかし、マイグレーションには多くの手間がかかる上に致命的なバグも出やすく、難しい作業です。 そんなマイグレーションを実践し、詳細を公開している企業があります。 それを参考にど…
はじめに この記事は設計・アーキテクチャ Advent Calendar 2018の1日目の記事です。 大きなサービスを支えるのは一筋縄では行かず、考えることは多くあります。しかし、ありがたいことに巨大な企業の中にも自社のサーバー構成やそれを支えるツールを公開し…
yarn add から webpackがimportを解決するまでを追う Javascriptでは、Yarnとwebpackを使うのが主流なので、それらがどのような動きをしているかを追った。 事前準備 動きを追うために以下を用意した コード Verdaccio コード コードの配置は以下 . ├── buil…
gh-ostとは gh-ostは、binlogを利用したmysql用のデータベースマイグレーションツールです。 大抵のマイグレーションツールがtriggerを使いつつ移行するのに対して、gh-ostはbinlogを使うことで、負荷制御やテスト可能性を実現しています。 githubはここ。 g…
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のリポジトリに直接入っているものと、別リポジトリに分けられている…
Webサイトを多言語化する 最近多言語化に関する仕事をしている関係でi18n(l10n)用のライブラリを色々と見たので、 i18nライブラリによくある使い方を紹介します。 とは言ってもほとんどのライブラリは同じような書き方をするのでJavaScriptを例にします。 ラ…