タグ

ブックマーク / medium.com (250)

  • The beginning of the end for Terraform?

    Source:imgflip.comAs I write this on the 25th of April, I am still reeling from the announcement of IBM’s acquisition of Hashicorp. When I first heard the rumours yesterday, I was concerned about the future of possibly my favourite Infrastructure-as-code (IaC) tool. It has long been obvious that Hashicorp has been struggling to make money, making a $274 million loss in 2023. This undoubtedly led t

    The beginning of the end for Terraform?
  • BigQuery のアーキテクチャの変遷を論文 Dremel: A Decade of Interactive SQL Analysis at Web Scale から読み解いてみた

    はじめに皆様、こんにちは。Google Cloud Japan Customer Engineer Advent Calendar 2020 の 8 日目は 今年公開された BigQuery のリサーチペーパーを読んでみて個人的に興味があった点をまとめてみようと思います。2020 年で 10 周年を迎えた BigQuery の進化の過程が理解できるので皆様もお時間あればご一読を! TL;DRこのホワイトペーパーは、Dremel (BigQuery のクエリエンジン) が採用している主要なアーキテクチャや考え方(これらのいくつかはクラウドネイティブなデータウェアハウスではトレンドとなりつつあります)がこの10 年間でどのような進化を経て現在の BigQuery になったのかを、Seattle Report on Database Research というレポート内で述べられている主要な 5

    BigQuery のアーキテクチャの変遷を論文 Dremel: A Decade of Interactive SQL Analysis at Web Scale から読み解いてみた
  • Unlocking the Power of JunoDB: PayPal’s Key-Value Store Goes Open-Source

    Today we are delighted to share JunoDB as an open-source project on Github, allowing others to benefit from our efforts to have an extremely scalable, secure and highly available NoSQL infrastructure. JunoDB is a distributed key-value store that plays a critical role in powering PayPal’s diverse range of applications. Virtually every core back-end service at PayPal relies on JunoDB, from login to

    Unlocking the Power of JunoDB: PayPal’s Key-Value Store Goes Open-Source
  • TLSが難しい?RustとLinuxカーネルで実装しよう!

    TLS(Transport Layer Security)が難しすぎると、お嘆きのセキュリティファースト世代の皆様、RustLinuxカーネルを実装しながら学んでみましょう! カーネルモジュールの実装は難しい?それは誤解です。TLSをアプリケーションとして実装しようとすると、各種のライブラリを検索していたつもりが、SNSを眺めていて、一日が終わっていることありますよね。カーネルモジュールを実装するために使えるのはカーネルの機能だけです。検索する必要はなく、雑念が生じる余地はありません。その集中力があれば、カーネル開発は難しくありません。 TLSとLinuxカーネル皆様の中には、LinuxカーネルはTLSをサポートしているのでは?と思っている方がいるかもしれません。TLSは実際のデータの送受信の前に、ハンドシェイクと呼ばれる、暗号鍵の合意や相手の認証を実施します。ハンドシェイク後、Linu

    TLSが難しい?RustとLinuxカーネルで実装しよう!
  • ヒープについてわかりやすく解説してみた – Yasufumi Taniguchi – Medium

    的なデータ構造であるヒープについて、概要、計算量と実装、そして最もシンプルな応用であるヒープソートを紹介します。MITが講義や資料を公開しているMIT OpenCourseWareのアルゴリズムとデータ構造の講義 が非常にわかりやすかったので、その内容に沿ってまとめました。この記事ではHeaps and Heap Sortの内容を以下の順序で解説します。 ヒープの概要ヒープの表現ヒープの構築ヒープの計算量ヒープの実装ヒープソート1. ヒープの概要ヒープ (heap) は優先度付きキュー (priority queue) の実装の1つです。優先度付きキューは集合 (set) を扱うデータ型で、集合に含まれる要素が何らかの優先度 (priority) 順に取り出されるという特徴を持っています。学会のポスター発表を回るときや、旅行先での観光地巡りでは、優先度に基づいて要素を取り出すことが重要

    ヒープについてわかりやすく解説してみた – Yasufumi Taniguchi – Medium
  • Improving Distributed Caching Performance and Efficiency at Pinterest

    IntroductionPinterest’s distributed caching system, built on top of open source technologies memcached and mcrouter, is a critical component of the production infrastructure stack. Pinterest’s cache-as-a-service platform is responsible for driving down application latency across the board, reducing the overall cloud cost footprint, and ensuring adherence to strict sitewide availability targets. To

    Improving Distributed Caching Performance and Efficiency at Pinterest
  • AWS IAM セキュア化の取り組み

    鍵がいっぱいあるよこの記事は Eureka Advent Calendar 2021 の 13日目の記事です。 はじめにこんにちは、エウレカ SREチーム のハラダです! 2020年頃から今年にかけて、 エウレカのSREチームとSecurityチームではAWS IAMのセキュア化を注力ポイントのひとつとして、継続的に取り組んできました。 記事では、その実践から学んできたIAM管理で守るべき大原則および、具体的にどうやってセキュアな理想像に近づけてきたか、今後の方向性などを話したいと思います。 Why “IAM” so important ?そもそもなんでIAMが注力ポイントなの?と疑問に思われる方もいるでしょう。 クラウドの大きな強みである「すべてをAPI経由で操作できる」という性質ゆえに、IAMは大きなAttack Surfaceでもあります。 Gartner社の予測によると、2023

    AWS IAM セキュア化の取り組み
  • インフラエンジニアなら気になるQUICのロードバランサ (方式編)

    図1: QUICコネクションを振り分けるロードバランサはじめに記事では、バックエンドのWebサーバへリクエストを振り分ける装置の意味でのロードバランサ(図1)について、QUIC対応の議論状況を紹介します。方式編と実装編にわけて二編を予定しており、稿は方式についての解説です。 IETFでは、F5 Networksとマイクロソフトから提案されたロードバランシング方式が議論されています。稿では下記のインターネットドラフトをQUIC-LBと表記します。 QUIC-LB: Generating Routable QUIC Connection IDs https://datatracker.ietf.org/doc/html/draft-ietf-quic-load-balancers 執筆時点の -07 をベースとしますが、ドラフトですので今後の議論次第で改版が続きます。あらかじめご承知おき

    インフラエンジニアなら気になるQUICのロードバランサ (方式編)
  • NginxでのeBPFとSO_REUSEPORTを使ったQUICコネクション受信処理

    はじめに2021年7月12日にNgnixブログに掲載された記事 “Our Roadmap for QUIC and HTTP/3 Support in NGINX” では、QUICとHTTP/3機能を2021年末にはメインラインへマージする計画が言及されています。現在のHTTP3/QUIC対応Nginxは、専用の開発ブランチ (nginx-quic)で開発が進められていますが、常に最新のリリース (7月26日時点で1.21.1)を取り込んでおり、HTTP3/QUIC以外の最新機能も利用可能です。筆者も、昨年から開発ブランチの動作を試しており、HTTP3/QUICでの大きな負荷をかけても良好なパフォーマンスを示しています。 さて、Nginxブログで言及されたHTTP3/QUICに関する機能の一つとして、“eBPFを使ったマルチプロセスアーキテクチャ” という項目がありました。QUIC特有の仕

    NginxでのeBPFとSO_REUSEPORTを使ったQUICコネクション受信処理
  • RustでLinuxカーネルの機能を拡張しよう!

    Linuxカーネルの機能を安全に拡張できるeBPFのコードはC言語で実装する必要があると知り、がっかりしているクラウドネイティブ 世代の皆様に朗報です。実は、Rustで、eBPFのコードを実装することができます。今更、C言語(クラウドネイティブ ではない感じ)を学ぶ必要はありません! eBPFとプログラミング言語eBPFを活用するソフトウェアは、カーネルスペースで動作するeBPFバイトコードと、eBPFバイトコードを制御するユーザスペースのアプリケーションから構成されます。後者は、GoPythonRustなど様々なプログラミング言語で実装することができますが、前者は、制限のあるC言語で実装する必要があります。 eBPFの構成Rust用eBPFライブラリRustでeBPFを扱う一般的な方法は、libbpf-rsライブラリです。これは、C言語でユーザスペースのアプリケーションを実装するため

    RustでLinuxカーネルの機能を拡張しよう!
  • Generating UUIDs at scale on the Web

    TL;DR can you trust every browser to generate globally unique identifiers at scale? At Teads, we have tried, and the answer is yes, with a few caveats. This article describes the experiments we’ve run and the discoveries we made along the way. Why we need client-side unique identifiersGenerating unique identifiers is a common need that third-party scripts integrated on Web pages and e-commerce sit

    Generating UUIDs at scale on the Web
  • Linuxのネットワークスタックが遅すぎる?RustとXDPでパケット処理!

    Linuxのネットワークスタックが遅すぎる!」 詳細はわかりませんが、すごくエンジニアステージが高そうですね!ネットワークスタックの高速化は多くの前例があり、中途半端に試すと、周辺の詳しい人に一晩中、指導をうけるはめになりかねません。前例のないRustなら安心です。 典型的な高速化手法広く使われている高速化手法は、オペレーティングシステムのプロトコルスタックを使わずに、サーバアプリケーションが直接、NICにアクセスして、パケットを処理するというものです。Linuxの上で、FreeBSDのプロトコルスタックとサーバアプリケーションを統合するという、謎の組み合わせを運用しているクラウド事業者もいます。 上記の高速化手法のポイントの一つが、アプリケーションが、高速に、NICにアクセスするための手法です。たくさん提案されてきましたが、今回は、現在、人気があるXDPを使うことにします。聞いたことが

    Linuxのネットワークスタックが遅すぎる?RustとXDPでパケット処理!
  • HTTPサーバとcontext.Context

    golang で HTTP サーバを書く際に,どう context.Context を活用したら良いか,今考えていることをまとめておきます はじめにgolang における強力な道具の一つに context.Context interface というのがあります.キャンセルをサブルーチンに伝搬したり,限られたスコープ内で一貫してアクセスできるインメモリ KV ストア的な役目を担っています. サーバにおいても,リクエストがキャンセルされたら handler の内部で行う高コストな計算や外部リソースへのアクセスもキャンセルできるようにしておくのが望ましいはずです.また,リクエストスコープに閉じる値を保持するインメモリ KV ストアとしての役割も context で担えます. そこで,HTTP サーバを書く際にどのようにcontext.Context を活用するのが良いかをまとめたいと思います.

  • 「Infrastructure as Codeに疲れたので、僕たちが本来やりたかったことを整理する」を1年掛けて整理した

    こんにちわ。rwle1212です。 記事は JAWS Days 2020 で話す予定でしたが、昨今の事情によりオンライン開催となったため、登壇予定の内容を記事にしたものになります。 登壇していれば諸般の事情により左手首を骨折したネタが使えたのですが、ブログでは伝わらないので非常に残念な思いをしております。という話はどうでも良いので題に入ります。 50分の登壇内容なので少々長くなりますが、お付き合いください。 JAWS Days 2019で登壇した内容の振り返り昨年の JAWS Days 2019 で「Infrastructure as Codeに疲れたので、僕たちが来やりたかったことを整理する」という内容で登壇しました。 まずは上のリンクに添付されているスライドを5分位で読めると思うので一読頂いて、下の文に進んで頂ければと思います。 そもそもInfrastructure as Cod

  • Reducing UDP latency

    Hi! I’m one of Embox RTOS developers, and in this article I’ll tell you about one of the typical problems in the world of embedded systems and how we were solving it. Stating the problemControl and responsibility is a key point for a wide range of embedded systems. On the one hand, sensors and detectors must notify some other devices that some event occurred, on the other hand, other systems shoul

    Reducing UDP latency
  • バッチ処理のスケジューリングパターン

    この記事はこの記事は Google Cloud Japan Customer Engineer Advent Calendar 2019 の 12日目の記事です。 はじめにGoogle Cloud Platform (GCP) でバッチ処理を起動するための以下のパターンについてご紹介したいと思います。以下、8パターンあげてみました。とはいえ、最後の3つは GCP のバッチスケジューリングという観点からは少し外れますが、バッチの起動時に使われるということでご容赦を。 Cloud Scheduler : フルマネージドな cron ジョブスケジューラです。フルマネージドという点が非常に大きなメリットであり、多くの処理を自動化し実行することが可能です。Google App Engine cron サービス : HTTP GET を利用して、特定の URLを呼び出します。Google AppEng

    バッチ処理のスケジューリングパターン
  • Announcing GraalWasm — a WebAssembly engine in GraalVM

    We’re happy to announce the initial public work on GraalWasm — the WebAssembly engine implemented in GraalVM. GraalWasm currently implements the WebAssembly MVP (Minimum Viable Product) specification, and can run WebAssembly programs in the binary format, generated with compiler backends such as Emscripten. Supporting WebAssembly expands the set of languages GraalVM can execute with a whole other

    Announcing GraalWasm — a WebAssembly engine in GraalVM
  • プログラマーテストの原則 by Kent Beck

    チョコレート対バニラTDD対BDD。このテストツール対あのテストツール。テストビフォー対テストアフター対これは動くから俺を信じろ。ある時期から、こうした詳細に関する議論には飽きてしまった。もっと原則について議論したい。 詳細に関する議論はなかなか結論に至らずに、話が行ったり来たりする。チョコレート対バニラ。チョコレート。バニラ。チョコレート。バニラ。 詳細の議論に負けを認めさせられるようなことがあっても、その譲歩は絶対的なものではない。私の状況がチョコレートを勧めているのに、私にバニラをべさせてくれと言えるだろうか? これでは埒が明かない。 原則一方、原則は議論を生み出す基盤になる。原則には賛成しても状況が違っているのなら、答えは違ってくるかもしれないが、そこで論争になることはない。原則が、異なる状況における異なる答えを生み出したのである。 詳細で論争するよりも、原則で論争したほうが生産

    プログラマーテストの原則 by Kent Beck
  • 本番環境のマルチテナント Kubernetes クラスタへの Istio 導入

    これは Mercari Bold Challenge Month の3番目の記事です。 Mercari ではモノリスなサービスからマイクロサービスのアーキテクチャへと移行を行っている間、長期的な観点からみて、サービスメッシュの導入とその重要性を理解することが必要だと感じていました。ほとんどのインシデントレポートに対する現実的な対策としてあがるのが、レートリミットの導入、適切なカナリアリリースのフローの導入、適切なネットワークポリシーの導入などでした。そしてこれらこそがサービスメッシュによってもたらされる機能です。 前四半期では、私達はついに Istio の導入に挑戦することに決め、調査を開始しました。結果として、100 以上のマイクロサービスをホストするマルチテナント環境のシングル Kubernetes クラスタを深刻な障害を発生させずに番運用を行うことができています。この記事では Me

    本番環境のマルチテナント Kubernetes クラスタへの Istio 導入
  • Google の SQL parser/analyzer の ZetaSQL とは何であるか

    2019年4月に GoogleSQL parser/analyzer の ZetaSQL が公開されました。 現在 BigQuery Standard SQL や Cloud Spanner で実装されている SQL 方言であり、 Cloud Next 2019 で BigQuery UI から Cloud Dataflow で実行されるパイプラインを記述できる機能として発表された Cloud Dataflow SQL にも使われることがツイートからも見て取れます。 ZetaSQL については Google の外の人がまともに言及しているのを見たことがなく、聞いたことがないか様子見という人が多いと思うので分かっていることを書いていきます。 既存の文献から見る素性ZetaSQLSpannerSQL 実装について書かれた Spanner: Becoming a SQL Sys