並び順

ブックマーク数

期間指定

  • から
  • まで

441 - 480 件 / 3293件

新着順 人気順

チューニングの検索結果441 - 480 件 / 3293件

  • 話題の AlloyDB は本当に凄いデータベースなのでプレビューを使い倒した #devio2022 | DevelopersIO

    ウィスキー、シガー、パイプをこよなく愛する大栗です。 この度クラスメソッド株式会社で開催している技術イベント DevelopersIO 2022 のアーカイブ動画セッションに登壇しましたので、ブログで解説を行いたいと思います。なお本内容は2022年6月時点の内容となっていますので、現在の状況とは異なっている場合がございますのでご了承ください。 AlloyDB for PostgreSQL は2022年7月27日現在において、プレビューのステータスです。このプロダクトまたは機能は、Google Cloud Platform の利用規約の一般提供前のサービス規約の対象となります。一般提供前のプロダクトと機能では、サポートが制限されることがあります。また、一般提供前のプロダクトや機能に変更が加えられると、他の一般提供前バージョンと互換性がない場合があります。詳細については、リリースステージの説明

      話題の AlloyDB は本当に凄いデータベースなのでプレビューを使い倒した #devio2022 | DevelopersIO
    • Webフロントエンドの秩序を維持する体制を作る

      Hatena Engineer Seminar #15 (2020/12/23) での発表資料です。 https://hatena.connpass.com/event/198892/ 動画もあります: https://youtu.be/Xb5bPaTO7fs?t=376

        Webフロントエンドの秩序を維持する体制を作る
      • 1KBのWebフレームワークをつくる - ゆーすけべー日記

        1KBのWebフレームワークをつくりました。 名前は「Pico」。 minifyしてビルドした模様。 コードはこれだけ。依存なし。ほんとにこれだけです。 Cloudflare WorkersとDenoで動きます。 今回はこのPicoというフレームワーク、 それに必要不可欠なURLPattern、実装について、 そして僕がつくっているもう一つのフレームワークHonoとの関係などを紹介します。 Hello World text/plainでレスポンスを返す、“Hello World"相当のコードは4行で書けます。 import { Pico } from "@picojs/pico"; const app = new Pico(); app.get("/", (c) => c.text("Hello Pico!")); export default app;

          1KBのWebフレームワークをつくる - ゆーすけべー日記
        • 負荷テストツール「k6」入門

          こんにちは。 PharmaX でエンジニアをしている諸岡(@hakoten)です。 この記事の概要 APIの負荷テストツールにGrafana Labs社が開発している「k6」というツールがあります。 k6はオープンソースのCLIツールですが、 「Grafana Cloud k6」というクラウドベースSaaSツールも提供されている便利なツールです。 ローカルのk6は、負荷テストの時に使ったことはあったのですが、真面目に負荷テストの設計をするにあたり、ちゃんと理解したかったため、改めて基本から調べてみました。k6の入門記事としてお役に立てれば嬉しいです。 インストール Macでは、k6を「Homebrew」でインストールすることができます。

            負荷テストツール「k6」入門
          • MySQLでUUIDv4をプライマリキーにするとパフォーマンス問題が起きるのはなぜ?(N回目)

            はじめに こんにちは、令和トラベルでバックエンドエンジニアをしている飯沼です。 MySQLでは、UUID (v4)などのランダム性の高いIDをプライマリキーに設定すると、パフォーマンスが低下すると言われています。私自身もこの問題については認識しておりアンチパターンとして避けて来ましたが、イマイチ理由を理解できず何度も調べていたので自分の理解を整理しました。 ※ この記事は令和トラベルのTech LT会で共有した内容を記事にしたものです。社外の方にもご参加いただけるTech LT会は connpass にて告知しています。 UUIDをプライマリキーにするユースケース そもそもUUIDをプライマリキーにするユースケースはどのようなものがあるのでしょうか? いくつかの観点から考えてみます。 パフォーマンス観点 大量の同時書き込みが発生するような状況でauto incrementを利用してIDを発

              MySQLでUUIDv4をプライマリキーにするとパフォーマンス問題が起きるのはなぜ?(N回目)
            • Pythonは遅い遅い言われてJITとか中途半端なことせずにフルネイティブコンパイラを作ったらどうですか?

              回答 (13件中の1件目) JIT方式は中途半端なものではありません。もちろん万能でなんでも優れているわけでもありませんが以下の利点があります。 * プログラムは単一の機械独立、OS独立の形式で配布できる(実行時に実行環境の機械語に変換できる) * 配布形式が小さくなる。マシン中立なバイナリ表現にした場合は特に。 * 全体をネイティブコンパイルするのではなく、速度にシビアに関わる最内周ループや何度も実行される場所に限ってネイティブコンパイルすることで実行に必要なメモリフットプリントを減らすことができる。 * 実行時だけわかる情報を元にした最適化やコード生成が可能。例えば、 *...

                Pythonは遅い遅い言われてJITとか中途半端なことせずにフルネイティブコンパイラを作ったらどうですか?
              • Webサービスエンジニアが教えるサーバサイドのログ分析 情報を可視化して負荷状況を見よ

                ログ分析勉強会は、日々の業務に役立てられる「ログ分析」についての情報交換を目的として活動しています。オンライン開催となった今回、AWSに詳しい山口氏がWebサービスのパフォーマンス改善に必要なログ分析について、日々の業務から得た知見を共有しました。後半は、サーバーサイドから見たログ分析について。 サーバ情報を可視化して負荷状況を見る 続いて、サーバの負荷状況を見るところですね。リソースの情報をコマンドで取得してサーバ情報を可視化しましょうというところです。 よく使うのは、1つ目はhtopですね。htopでプロセスごとにどれくらいのメモリやCPUを使っているかを取っていくのがあります。リクエストが多いときにこれを取っていって、どこが重たくなっているかを見るというのがいいかなと思っています。 例えばアプリケーションサーバと同梱されているものだったりとかすると、アプリケーションサーバの負荷がいき

                  Webサービスエンジニアが教えるサーバサイドのログ分析 情報を可視化して負荷状況を見よ
                • オレ的EXPLAIN技を語っちゃうゾ - Qiita

                  メリークリスマス 本記事はPostgreSQL Advent Calendar 2021の25日目です。今年も面白い記事がたくさん揃いましたね!!! さて、みなさん今年のPostgreSQLライフはどんな感じでしたでしょうか? 私はというと、なんだかチューニングばっかりやってました。1案件でいろいろお手伝いすることはまあまああったのですが、複数から次々チューニングの相談をもらって、歴代継承者の個性を発現したデクくんのごとく駆け回ったのが今年のハイライトです。 (この綱渡り感、、、伝われ!!!) 俺たちは雰囲気でチューニングしている 今回上手くいったけど、あの時たまたまひらめいた1案をぶつけてみたら効果でたのであって、次善の策なんてなかったけど??って毎回思ってるから、雰囲気でやっていると思う、マジで。コミュニティのノリだと笑いが起きていいんですけど、少しでも勝率を上げるために、若手の前でド

                    オレ的EXPLAIN技を語っちゃうゾ - Qiita
                  • [初級編] なぜ「AWS で負荷分散は3AZ にまたがるのがベストプラクティス」と言われるのか 可用性の面から考えてみた | DevelopersIO

                    水平分散のアーキテクチャを考えるときに、「負荷分散装置の下に並べる分散先 (サーバ) は3台以上がよい」「AWS であれば3 AZ にまたがるとよい」とはよく聞かれます。それがどういう意味をもつのか、主に可用性の面から考えてみました。 みなさん、AWS使ってますか!(挨拶 AWSに限らず、ある程度の規模の何かしらの本番システムを組もうというときに、こういう言葉を聞いたことはないでしょうか。 「負荷分散装置の下に並べる分散先 (サーバ) は3台以上がよい」 「AWS であれば3アベイラビリティゾーン (AZ) にまたがるとよい」 負荷分散装置(ロードバランサー)は負荷を分散するのがお仕事です。分散するだけなら 2 台でもよさそうですよね? AWS の3 AZ に至っては、そもそも AZ 単位の障害なんてそうそうないし、あったとしてももう片方の AZ が生きていればなんとかなりそうに思えます。

                      [初級編] なぜ「AWS で負荷分散は3AZ にまたがるのがベストプラクティス」と言われるのか 可用性の面から考えてみた | DevelopersIO
                    • 日本のSREの火付け役ともなったエンジニアが貫く信念 ─ すべてはログの向こうにいるエンドユーザのために - Findy Engineer Lab

                      こんにちは、はじめまして。さくらインターネット株式会社の長野雅広(@kazeburo)です。Webの業界に入ったのは学生だった2000年頃で、キャリアは20年以上になります。おそらくこの業界でも長い方ではないでしょうか。20年の間にmixiやlivedoor、メルカリといった企業で働く機会を得て、どの職場でもサービスの裏側にあるインフラや、Webアプリケーションの運用を支える仕事、今ではSREと呼ばれるような業務に携わってきました。 そして今年の1月から、さくらインターネットにてクラウドを中心にサービスの開発を行っています。つまり、インフラやクラウドを利用して一般のお客様向けにサービスを作るという仕事から、クラウドを作ることを仕事にする、という選択をしました。 この記事では、どのような経験からSREとして働くようになったのか、また現職に至る選択をした経緯について語りたいと思います。加えて、

                        日本のSREの火付け役ともなったエンジニアが貫く信念 ─ すべてはログの向こうにいるエンドユーザのために - Findy Engineer Lab
                      • Reactで再レンダリングを抑えるシンプルな方法

                        はじめに 「React で再レンダリングを抑えたい...」となった場合、多くの人が React.memo や useMemo、useCallback などのいわゆる 「メモ化」 を思い浮かべることでしょう。 しかし、そういった「メモ化」を用いなくても再レンダリングを抑える方法が実は存在しています。 今回はその代表的な例を2つ紹介していきたいと思います。 よくある例 まず例として、以下のような 「パフォーマンスに問題を抱えたコンポーネント」 を考えてみましょう。 import { useState } from "react"; export default function App() { let [color, setColor] = useState("red"); return ( <div> <input value={color} onChange={(e) => setColo

                          Reactで再レンダリングを抑えるシンプルな方法
                        • Cloudflare Workers それは Frontend / Node.js が CDN Edge Side まで拡張されるもの

                          最近は Cloudflare Workers が熱くて、週末はずっとその調査しています。この記事はそのまとめです。 注意点として、手元でいろいろなパターンで動かして試してはいますが、プロダクション環境で運用したわけではないです。それを踏まえた上でお読みください。 特に断りが無い限り、引用文は DeepL で翻訳したものです。 Cloudflare Workers とはなにか Cloudflare Workers | サーバーレスコンピューティング | Cloudflare 一言でいうなら 「ServiceWorker の API が CDN Edge 上で動く JavaScript 処理系」 です。 Technology Radar では、まだ ASSESS(調査) フェーズという扱いです。 Cloudflare Workers | Technology Radar | ThoughtWo

                            Cloudflare Workers それは Frontend / Node.js が CDN Edge Side まで拡張されるもの
                          • 「自分でLLMを動かすことでイメージがつきやすくなる」 ローカルで使うメリットと、日本語特化LLMを動かすために必要なスペック

                            システムから言語モデルがどのように使えるか、その時どういうことに気をつける必要があるかを考える「『ChatGPTなどの言語モデルはどのようにシステムで使えるか』きしだなおき氏」。ここで、LINE Fukuoka株式会社のきしだなおき氏が登壇。続いて、システムがChatGPTをどのように使うかと、日本語特化のLLMについて話します。 システムはChatGPTをどのように使うか きしだなおき氏:今、人間がどう使うかという話を中心に話しました。(次に)じゃあシステムからどう使うかとなると、APIを使った利用になりますね。 今日(2023年6月14日時点)朝起きたら「関数定義が可能になったよ」みたいなものが出ていて。今回の(セッションで話した)概要(の内容)とか…。(この概要は)昨日になってやっと(運営に)送ることができたんですけど、「どういう話をしようか」と思って朝起きたら、毎日状況が変わってい

                              「自分でLLMを動かすことでイメージがつきやすくなる」 ローカルで使うメリットと、日本語特化LLMを動かすために必要なスペック
                            • React Server Componentsの仕組み:詳細ガイド | POSTD

                              React Server Components(RSC)は、ページの読み込みパフォーマンスやバンドルサイズのほか、Reactアプリケーションの書き方に近い将来大きな影響を与えることになる、素晴らしい新機能です。 Plasmicでは、Reactのビジュアルビルダーを開発しており、Reactのパフォーマンスには大きな関心を持もっています。 当社のクライアントの多くは、Plasmicを使用して高いパフォーマンスが求められるマーケティングサイトやECサイトを構築しています。 したがって、RSCはまだReact 18の初期実験機能ですが、Plasmicではその仕組みを詳しく調べています。 このブログ記事では、これまでに分かったことを紹介したいと思います。 Plasmicのメンバーによるツイートまとめもご覧ください。 React Server Componentsとは何か サーバサイドレンダリングとの

                                React Server Componentsの仕組み:詳細ガイド | POSTD
                              • 知っておきたいトマホークについて7つのこと : 海国防衛ジャーナル

                                話題の「トマホーク」について。 導入反対派からは、「型落ちで遅い」と侮られる一方で、「飽和攻撃に使うから敵が危険」という懸念も抱かれる不思議兵器と化したトマホーク。もとより政治的なポジションで様々な主張があることは当然ですが、ここで我が国が導入するトマホークについてちょっとだけまとめておこうと思います。 トマホーク導入の目的なぜ今スタンド・オフ兵器が必要なのか型落ちトマホーク?亜音速で遅い飽和攻撃専守防衛との関係トマホークを超えるスタンド・オフ兵器 1. トマホーク導入の目的我が国は、スタンド・オフ防衛能力[1]を構築中で、トマホーク巡航ミサイルもこのスタンド・オフ兵器のひとつとして米国から調達します。 トマホーク取得にあたり、防衛装備庁が次のように言及しています。 島嶼部を含む我が国に侵攻する上陸部隊等に対処するために導入します。国産のスタンド・オフ・ミサイルを所要量整備するためには一定

                                  知っておきたいトマホークについて7つのこと : 海国防衛ジャーナル
                                • Nimを知ってほしい2022

                                  Nimを知ってほしいという記事があり、Nimを知らなかった人々向けに最初の紹介として大変な貢献をしてくださりました。 しかしまだNimを使ったプロダクトというのも少なく、競プロではチラホラ見かけるものの、人々の中にある意識としては「気になっています」という域を越えられていないのも事実です。 そこで今回は企業での意思決定をする人や、5年以上の経歴があるエンジニア向けに、Nimを書いてみようと感じてもらうことを目的に、先日私が登壇したみんなのPython勉強会#79 『Pythonistaに伝えたいNimの魅力』に加筆して投稿してみたいと思います。 Nimって何? 2008年から開発が始まった新しいプログラミング言語です。 「Pythonに型が付いて、Goみたいに高速に、バイナリになってOSの実行環境に依存しないで動いてくれる言語ないかな〜」という全プログラマーの夢を叶えてくれる言語です。 書

                                    Nimを知ってほしい2022
                                  • 大規模リポジトリで高速にgit cloneするテクニック - DeNA Testing Blog

                                    ニッチな話題ですが、業務におけるCI/CDの現場では避けることのできない大規模リポジトリと戦うためのgit cloneのテクニックを紹介します。 この記事はDeNA Advent Calendar 2020の10日目の記事です。 CI/CDマニアの@Kesin11です。SWETではCI/CDチームの一員として、CI/CDの啓蒙活動やJenkinsを必要とするチームのサポートなどの業務を行っています。 はじめに おそらくどこの会社でも1つぐらいは巨大なリポジトリが存在しているかと思いますが、歴史あるリポジトリはgit cloneするだけで数分を要し、checkout後のリポジトリサイズがGB単位になることも珍しくないでしょう。業務で古くから存在するプロジェクトのリポジトリを触ったことがある方はきっと経験があるかと思います。 git cloneを実行するのは最初のセットアップ時だけなのであまり

                                      大規模リポジトリで高速にgit cloneするテクニック - DeNA Testing Blog
                                    • PayPayカード、メインフレームの基幹システムをAWSに移行--業界で前例なき規模

                                      PayPayカードは4月21日、メインフレームで運用していた基幹システムのインフラをAmazon Web Services(AWS)に移行して4月に本格稼働を開始したと同日開催の「AWS Summit Tokyo」で発表した。国内クレジットカード業界では前例のない規模といい、専務執行役員 最高技術責任者(CTO)の信太宏之氏がその舞台裏を語ってくれた。 同社は、1963年設立の国内信販を源流として楽天KC、KCカードと変遷し、現在はPayPayの完全子会社として「PayPayカード」ブランドのクレジットカード事業などを手掛ける。2022年3月に1000万会員を突破し、5500万の決済ユーザーを抱えるPayPayとの連携推進など事業拡大を図り、会員数の倍増を目指している。 2015年にソフトバンクグループとなってからビジネスが大きく変わり、「『ネット屋の金融を目指す』というトップのビジョンの

                                        PayPayカード、メインフレームの基幹システムをAWSに移行--業界で前例なき規模
                                      • explainだけじゃわからない!MySQLのindexの考え方 - BASEプロダクトチームブログ

                                        はじめに こんにちは、バックエンドエンジニアのSakiです!バックエンドでPHPを書いたり、PHPという言語そのもののメンテナーもしています。 この度、注文データダウンロードAppのパフォーマンスをアップさせるため、とても入念にデータベースまわりの処理を見直しました。その中でも特に速度に関わってくる「index」についての考え方をまとめたいと思います。 この記事はMySQL(InnoDB)についての記事であり、他のRDBについては当てはまらない場合もあるということにご注意ください。 indexとは何か、おさらい ご存知の方ももちろん多いと思いますが、indexについておさらいさせてください。 indexとは辞書でいうところの目次に相当するもので、目的のデータをいち早く検索するために重要なものです。もし辞書に目次が存在しなかった場合、目的の情報を探すのにとても苦労するだろうというのは想像しや

                                          explainだけじゃわからない!MySQLのindexの考え方 - BASEプロダクトチームブログ
                                        • JavaScript 実行エンジン V8 の JIT 出力コードを読んでみよう

                                          Chrome の JavaScript はとても高速なことでも有名ですが、その実行エンジンは V8 と呼ばれます。V8 自体は独立したモジュールであり、Node.js 等にも使われております。 V8 が JavaScript を高速に実行する技術の一つが JIT (Just In Time) コンパイルです(一般的に JIT と呼ばれます)。これは、そのまま実行すると遅い JavaScript を実行中にリアルタイムに直接マシンコードに変換し(これが Just In Time と呼ばれる所以です)、途中からそのコードに入れ替えて実行することで高速化を達成しています。特に何度も実行される関数で効力を発揮します。 JIT という名前は聞いたことがあろうとも、実際に JIT がどのようなコードを実行しているのかを確認する機会は滅多にないでしょう。この記事では、実際に V8 の JIT の出力を確

                                          • スケールアウトの落とし穴から学ぶ、SREチームでのダッシュボードのアップデート術 - MonotaRO Tech Blog

                                            どんなことが起こったのか? モノタロウのサイトの監視について レイテンシ監視 トラフィック監視 エラー監視 リソース監視 ログ トラブルシュートの進め方 発生検知 発生箇所の特定 根本原因の調査 強化 課題 おわりに SREチームの市原(@ichi_taro3) です。 モノタロウでは、www.monotaro.com という大規模なECサイトを自社で開発、運用しています。 Webアプリケーションの運用ではトラブルはつきものです。今回は、とあるトラブルシュート事例を軸に、どのように運用を改善しているのかについて紹介します。 どんなことが起こったのか? あるとき、モノタロウのWebサービス全体でレイテンシ悪化やバックエンドAPIへのタイムアウトの増加が頻発したことがありました。 当然これらは歓迎される状況ではなく、すぐに開発者やSRE、インフラチームの担当者が集まり調査を開始しました。現象は

                                              スケールアウトの落とし穴から学ぶ、SREチームでのダッシュボードのアップデート術 - MonotaRO Tech Blog
                                            • Next.js製アプリケーションのコンパイルを約100倍高速化した話

                                              Next.jsアプリケーションの開発時においてコンパイルが長時間に及ぶ問題が起きていたので、その原因を特定した手法と採用した解決策について記載します。 今回は結果的にコンパイル時間を100倍以上高速化することができました。 前提 今回の対応は以下のバージョンで行いました。 React@18.2.0 next@12.2.4 tailwindcss@3.2.4 postcss@8.4.14 Next.js の開発中に、コンパイル時間が長くなっていることに気づく 最近、Next.jsアプリケーションのローカル開発時に待ち時間が長くて生産性が低いのでなんとかしたい、という相談を受け、調査を開始しました。 まず、おもむろにyarn devでプロセスを立ち上げてみたところ、以下のようなコンパイル時間を示すログが表示されました。 yarn dev yarn run v1.22.19 $ next dev

                                                Next.js製アプリケーションのコンパイルを約100倍高速化した話
                                              • クラフトワークの「フクシマ 放射能」パフォーマンスが差別なのか、Xで議論に

                                                Manabu Murata a.k.a J @muratamuramura KURUUCREW所属 & AKBK所属 & GuitarFeedbacker VS NoiseDestroyer(w/ Napalm K)所属 & 海風土(w/ tentenko)所属 稀にサブカルコマンドーJ p-vine.jp/artists/kuruuc… Manabu Murata a.k.a J @muratamuramura クラフトワーク今年5月のライブでもno nukes坂本教授バージョンのRadio-Activityやってた。12年経ってもこのバージョンを世界中でパフォーマンスしてる事実に感謝しかない。今日の苗場でもこれやるだろうし、何か感じたら浪江から楢葉まで6号線を車で走ってみるだけでも思う事はあると思います。 pic.twitter.com/sdE2QwnGAJ Manabu Murata

                                                  クラフトワークの「フクシマ 放射能」パフォーマンスが差別なのか、Xで議論に
                                                • AWS、高速起動にこだわった軽量なJavaScriptランタイム「LLRT」(Low Latency Runtime)をオープンソースで公開。AWS Lambdaでの利用にフォーカス

                                                  AWS、高速起動にこだわった軽量なJavaScriptランタイム「LLRT」(Low Latency Runtime)をオープンソースで公開。AWS Lambdaでの利用にフォーカス Amazon Web Services(AWS)は、実験的な実装としてサーバレス環境のAWS Lambdaで使うことにフォーカスした軽量なJavaScriptランタイム「LLRT」(Low Latency Runtime)をオープンソースで公開しました。 LLRTはRustで開発され、JavaScriptエンジンにはQuickJSを採用しています。 LLRTの最大の特徴は、現在のJavaScriptランタイムにおいて性能向上のために搭載されているJITコンパイラをあえて搭載せず、よりシンプルで軽量なランタイムとして実装することで高速に起動することにこだわっている点です。 これにより(Node.jsやDenoや

                                                    AWS、高速起動にこだわった軽量なJavaScriptランタイム「LLRT」(Low Latency Runtime)をオープンソースで公開。AWS Lambdaでの利用にフォーカス
                                                  • 開発生産性を標榜して効率に拘泥するチームはゆるやかに衰退する

                                                    この記事は前作 開発生産性の可視化サービスから何を見いだして何ができるのか、あるいはすべきで無いこと に続き、開発生産性へのスタンスを整理したい2作目です。 効果・成果よりも効率を優先することは生産性か? 開発生産性と言いながら単なるアクティビティの量や時間を見て効率改善を志してしまういくつかの状況、一部の風潮に対して疑問を呈したい。 例えば、PRやイシューの起票数などアウトプット量の高低に一喜一憂する 例えば、変更のリードタイムやデプロイ頻度の増進を過度に重視する 例えば、サイクルタイムの各時間を人間の努力のみで短縮しようとする それにも関わらず、開発がもたらしたユーザーへの効果やビジネス上の成果に無関心というのは順序おかしいよね、という話。 などと考えていたら開発生産性カンファレンス2024 - 登壇資料まとめ|610を見る限り、近しい主旨の論説を散見するに至り、もしかしたら世間の議論

                                                      開発生産性を標榜して効率に拘泥するチームはゆるやかに衰退する
                                                    • 【やじうまPC Watch】 Windows 11のタスクバーの時計で「秒」表示が完全に無効化されたワケ

                                                        【やじうまPC Watch】 Windows 11のタスクバーの時計で「秒」表示が完全に無効化されたワケ
                                                      • はじめてのPostgreSQLモニタリング入門 / PostgreSQL 11 Monitoring

                                                        多言語化対応における TypeScript の型定義を通して開発のしやすさについて考えた / TSKaigi TypeScript Multilingualization

                                                          はじめてのPostgreSQLモニタリング入門 / PostgreSQL 11 Monitoring
                                                        • スタディサプリ最大のRailsアプリケーションにYJIT+pitchforkを導入してメモリ使用量を劇的に削減するまで - スタディサプリ Product Team Blog

                                                          こんにちは。SREのkyontanです。Rubyが大好きなのでRubyの話をします。ちなみにリクルートはRubyKaigi 2024へGold Sponsorとして協賛しています! *1。ぜひ沖縄でお会いしましょう。 これはあるアプリケーションのメモリ消費量を示すグラフなのですが、まさかgemを入れ替えるだけでこんなに嬉しい変化が見られるとは思っていませんでした。今日はそんなgemの話をします。 話は遡って2023年4月のある日、インターネットを眺めていたところ、ShopifyがpitchforkというOSSを公開したという情報が目に留まりました。 調べてみると、どうやら著名なRackサーバー実装の1つであるunicornの派生版であり、メモリ使用量の削減に特化しているらしいのです。 github.com これはスタディサプリ小中高のあのリソースドカ食いマイクロサービス第一位である api

                                                            スタディサプリ最大のRailsアプリケーションにYJIT+pitchforkを導入してメモリ使用量を劇的に削減するまで - スタディサプリ Product Team Blog
                                                          • MySQL(InnoDB)のSQLパフォーマンスチューニングのエッセンス

                                                            はじめに MySQL(InnoDB)でSQLのパフォーマンスチューニングをするときに役に立つ知識をエッセンスとしてまとめました。結合(JOIN)やB-treeインデックスの探索の仕組み、実行計画の基本的な見方を紹介します。 想定する読者は、SQLのパフォーマンスを改善する必要があるが実行計画をみてもいまいちピンと来ない方です。インデックスの作成の経験や、複合インデックスやカーディナリティの知識があることを前提にしています。目標は、実行計画の内容がよく分からない読者が、実行計画をみただけでクエリが実行される様子をイメージでき、自信を持ってクエリの改善にあたることができるようにすることです。 ストレージエンジンはInnoDBを前提としています。また、インデックスはB-treeインデックスを想定しています。全文検索の転置インデックスや空間検索のR-treeインデックスについては触れません。 イン

                                                              MySQL(InnoDB)のSQLパフォーマンスチューニングのエッセンス
                                                            • LINEユーザー8300万人を対象とするアンケートを1週間で開発するには? コロナ禍におけるLINEの施策とフロントエンド開発

                                                              2020年6月17日に行われたイベント「UIT meetup vol.9『The new normal for frontend』」に、LINE株式会社のフロントエンドエンジニアであるChanghee Kim氏が登壇しました。「コロナ禍、私たちにできたこと」という講演タイトルで、新型コロナ対策のための全国調査を行った際のフロントエンド開発について紹介しました。講演資料はこちら コロナ禍での仕事の変化 Changhee Kim氏:それでは「コロナ禍、私たちにできたこと」というタイトルで発表させていただきます。まず自己紹介ですが、Kim Changhee(キム・チャンフィ)と申します。LINEでは2018年からフロントエンドエンジニアとして働いています。 LINEではたくさんの外国籍社員が働いています。私もその1人で、韓国出身のエンジニアです。ふだんはLINE公式アカウントの管理画面アプリを開

                                                                LINEユーザー8300万人を対象とするアンケートを1週間で開発するには? コロナ禍におけるLINEの施策とフロントエンド開発
                                                              • setTimeout の真の力、あなたは知っていますか? - Qiita

                                                                こんにちは。ぬこすけ です。 皆さんは「 setTimeout とはどんな関数でしょう?」と聞いたら、どう答えますか? おそらく、ほとんどの人が「指定した時間に処理が走るようにする関数」と答えるのではないでしょうか? function main() { console.log('動いたよ!!'); } // 大体 3 秒後に main 関数が動き出す setTimeout(main, 3000); 大雑把な理解としては問題ないですが、実は setTimeout の隠された能力はそれだけではありません。 setTimeout の隠された能力を知るとどんな良いことがあるのでしょうか? 例えば、次のような良いことがあります。 ブラウザに対する理解が深まる Web サイトのパフォーマンスを向上させることができる ドヤれる まず、 ブラウザに対する理解が深まります 。 かのアリストテレスはこう言い残

                                                                  setTimeout の真の力、あなたは知っていますか? - Qiita
                                                                • MySQLでIn句に大量の要素を渡すとまずい理由

                                                                  概要 MySQLでIN句を使用する時はIN句に渡す要素数に注意する必要があるとよく先輩エンジニアの方から聞いていたのですが、実際に大量の要素を渡すと何がまずいのかはっきり分かっていなかったので調べてみました。 この記事で伝えたいこと MySQLでIn句に大量の要素を渡すとまずい理由 まずい状況を回避するために気をつけるべきポイント 先に結論 MySQLでIN句に大量の要素を渡すとインデックスを貼っていたカラムだとしてもフルスキャンが発生しスロークエリになる可能性があります。 フルスキャンが発生してしまう条件はテーブルに設定してあるインデックスの内容とrange_optimizer_max_mem_size の設定値に依存しており、MySQL8でデフォルトの設定値 & シンプルなテーブルであってもおおよそ数万件の要素数をIN句に渡すとフルスキャンが発生する可能性があると考えられます。 検証環

                                                                    MySQLでIn句に大量の要素を渡すとまずい理由
                                                                  • GYAO!トップページの表示パフォーマンス改善 〜 GraphQLアーキテクチャへの移行

                                                                    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは、映像サービスプロダクト本部の浜田(@narirow)です。 GYAO!では最近トップページの大規模な変更が行われました。本記事では映像サービスのバックオフィスを含む大規模な構成変更と、その成果として得られたスケーラビリティ・ページの表示速度の向上についてをお話しします。 GYAO!のトップページの特徴 映像サービスであるGYAO!のトップページは、豊富なラインアップの中から作品を厳選して掲載しています。有名作品をただ並べるだけではなく、レコメンデーションやターゲティングの技術を使って、閲覧者の趣向にあった作品を一覧しています。大量の画像が表示されていることに加え、縦に長いページ構成となっています。 課題と解決のアプロー

                                                                      GYAO!トップページの表示パフォーマンス改善 〜 GraphQLアーキテクチャへの移行
                                                                    • 5000万件越えのRDS大量データをFirestoreに移行する勘所 - ANDPAD Tech Blog

                                                                      はじめまして、開発部の@taikishiinoです。 2020年3月にアンドパッドにジョインし、約一年が経ちました。 現在、チャットサービスの開発・運用をするチームに所属しており、その中で最近、RDSからFirestoreへのデータ移行を行いました。 本記事では、その際の課題やそれに対して実際に行ったことなどを中心にご紹介していきます。 データ移行の背景 僕たちのチャットサービスを開発するチームでは、現在、プロダクトのデータベースをRDSとFirebase RealtimeDatabaseのミックスからFirestoreに移行する大規模プロジェクトが行われています。 旧環境「RDSとFirebase RealtimeDatabase」の課題として、 チャットのアクセスを処理しているAPIサーバーのバックグラウンド処理は複数プロダクト共通で利用しており、チャット起因で負荷が高まってしまうとい

                                                                        5000万件越えのRDS大量データをFirestoreに移行する勘所 - ANDPAD Tech Blog
                                                                      • Record, replay, and measure user flows  |  DevTools  |  Chrome for Developers

                                                                        Take a glance at the new Recorder panel (preview feature) with the video below. Complete this tutorial to learn how to use the Recorder panel to record, replay, and measure user flows. For more information on how to share the recorded user flows, edit them and their steps, see the Recorder features reference. Open the Recorder panel Open DevTools. Click on More options     > More tools > Recorder.

                                                                        • 大量データの JSON serialize 処理を高速化し、レスポンスが倍速になった話 - freee Developers Hub

                                                                          こんにちは、freee会計でワークフロー機能の開発をしている @mitubaEX です。 先日 freee会計のパフォーマンスチューニングに取り組みました。本記事では、調査の流れ、改善の事例を紹介します。 問題発覚までの流れ freee では自社の経理業務に freee会計を利用しており、その中でも経費精算の機能はほぼすべての従業員が利用しています。そのため日々多くのフィードバックをもらえます。そのフィードバックの1つで、「経費精算の一覧を開くのが遅い」という報告をもらいました。幸い表示件数を指定できるので調整すれば遅くはならないのですが、一覧性が下がってしまうため有用な解決策ではありません。 そこでワークフローを開発しているチームで、このパフォーマンスイシューの調査を始めました。 調査する まず事前調査として Datadog*1 で一覧画面を表示するリクエストの処理を確認しました。 一覧

                                                                            大量データの JSON serialize 処理を高速化し、レスポンスが倍速になった話 - freee Developers Hub
                                                                          • git statusが43秒かかっていたのを1秒に高速化する大規模Gitリポジトリの操作を高速化するためのscalarを紹介 | Act as Professional

                                                                            Git 2.38がリリースされました。 このバージョンから大規模Gitリポジトリの操作を高速化するscalarが同梱されるようになりました。 今回はこのscalarによって、どれぐらいGitの操作が高速化されるのかを簡単に検証します。 結論から言うとgit statusが約43秒かかっていたのが約1秒で操作できるようになります。 Install Git 2.38Git 2.38からscalarが同梱されましたので、各自の環境にあわせてInstallなりVersionUpなりをしてください。 $ git --version git version 2.38.0 Before大規模Gitリポジトリとしてchromiumを利用しました。 普通にgit cloneしてきて、git statusを実施すると約37秒かかります。 ❯ time git status On branch main You

                                                                              git statusが43秒かかっていたのを1秒に高速化する大規模Gitリポジトリの操作を高速化するためのscalarを紹介 | Act as Professional
                                                                            • パーシャルクローンとシャロークローンを活用しよう

                                                                              Git のリポジトリが大きくなると、新しい開発者がクローンして作業を始めるのが難しくなります。Git は 分散 バージョン管理システムとして設計されています。つまり、リポジトリとのやりとりを管理する中央サーバーに接続しなくても、自分のマシンで作業ができるということです。これが完全に実現できるのは、すべての到達可能なデータがローカルリポジトリにある場合だけです。 もっと良い方法があったらどうでしょうか?Git の全履歴にあるすべてのファイルのすべてのバージョンをダウンロードしなくても、リポジトリで作業を始めることができたらどうでしょうか?Git の パーシャルクローンやシャロークローンという機能は、こういったケースで役立ちます。その一方でこれらの機能にはトレードオフもあります。これらの選択肢は Git の分散という性質によってもたらされる可能性を少なくとも一つは壊してしまうため、こうしたトレ

                                                                                パーシャルクローンとシャロークローンを活用しよう
                                                                              • JestでTypeScriptを高速化する | miyauci.me

                                                                                JestでTypeScriptを高速化するJestでテストの高速化させる方法を紹介します。トランスフォーマーとしてesbuildやswcを紹介し、TypeScriptで遅くなりがちなトランスパイルを高速化させることで、テストを自体を高速化します。 はじめにesbuild の登場により、フロントエンドの世界は、開発環境により速度を求めるようになりました。vite の隆盛はその最たるものといってもいいでしょう。 esbuild や swc は高速な Go や Rust によって書かれ、更に多くの場合、Typescript の型チェックを省略しています。 tsc の型チェックは、大抵 IDE やワークフローで行われているので、これらを削ぎ落とすことで、純粋なコンパイラとして JavaScript への変換に特化しているということですね。 さて、Typescript コードをテストする際、多くの場

                                                                                  JestでTypeScriptを高速化する | miyauci.me
                                                                                • 【SQL】ちょっとしたパフォーマンスチューニングまとめ - Qiita

                                                                                  SELECT table_a.id, table_a.name FROM table_a INNER JOIN table_b ON table_a.id = table_b.id; メリットとしては、 どちらかのテーブルのid列のインデックスを使用可能 サブクエリがないことで中間テーブルが作成されない しかし、インデックスがない場合はEXISTSの方が良い場合があります ソートの回避 SQLでは暗黙的にソートが発生する演算が存在するので、 パフォーマンスにも影響するため、ソートが必要ない場合は考慮する必要があります ソートが発生する演算 GROUP BY句 ORDER BY 句 集約関数(SUM, COUNT, AVG) DISTINCT 集合演算子(UNION, INTERSECT, EXCEPT) ウィンドウ関数(RANK, ROW_NUMBER 等) メモリ上でのソートだけではなく

                                                                                    【SQL】ちょっとしたパフォーマンスチューニングまとめ - Qiita