株式会社overflowによって開催された、開発組織のあり方について考える1ヶ月「CTOWeek 2023 by Offers」。Week2に登壇したのは、株式会社LayerX 執行役員の名村卓氏。開発スピードを落とさないために必要な、イネーブルメント組織について話しました。全3回。2回目は、「Enabling Team」の役割について。前回はこちら。 サービスの完全なオーナーシップを持っているのはすごく大事 名村卓氏(以下、名村):それをする(認知負荷を下げる)ために何をするかというと、Cognitive Load、認知負荷は見ている領域が広がると結果的にキャパシティを超えちゃうので、そもそも絶対量を減らす必要があります。ドメインフォーカスをするんだけど、そのドメインが大きすぎるとそれだけでキャパシティがオーバーフローするので、サービスのサイズやチームが見るべき領域をできるだけ最小化して
記事作成時点で開発中のLinux 6.8カーネルでは、ネットワークに関する部分にいくつかの重要な改良が加えられており、多数の同時接続を伴うTCPパフォーマンスが最大40%向上しているとのことです。 [PATCH v8 net-next 0/5] Analyze and Reorganize core Networking Structs to optimize cacheline consumption - Coco Li https://lore.kernel.org/netdev/[email protected]/ Linux 6.8 Network Optimizations Can Boost TCP Performance For Many Concurrent Connections By ~40% - Phoronix https://www.phoronix.com/ne
プロセッサの進化だけではない細かなアップデートM2を搭載したMacBook Airは大胆に設計変更された最初のモデルとは思えないほど、高い完成度の仕上がりだった。しかし、M3 MacBook Airは、その高い完成度にさらに磨きをかけて、見た目はほとんど同じながら、細かな使い勝手や満足感を高める工夫がされている。 M3搭載が大きな要素として語られる面がある今回のアップデートだが、実はそうした細かなアップデートこそが、今回の新製品における1番の魅力だと思う。 例えば、人気モデルであるがゆえに可能なカラーバリエーションの展開だが、その中でもミッドナイトの仕上がりに関しては、今回細かなチューニングが行われた。 M2 MacBook Airで導入されたミッドナイトは、久々に黒に近いMacBookとして発売当時から人気を誇っていたが、一部には指紋が目立ちやすいという不満の声があった。しかし今回は新し
search infra teamのmrkm4ntrです。我々のチームではElasticsearchをKubernetes上で多数運用しています。歴史的経緯によりElasticsearchのクラスタは全てElasticsearchクラスタ専用のnode pool上で動作していました。ElasticsearchのPodは使用するリソースが大きいため、このnode poolのbin packingが難しくコストを最適化できないという問題がありました。そこで全てのElasticsearchクラスタを専用のnode poolから他のワークロードと共存可能なnode poolへ移行しました。ほとんどのクラスタが問題なく移行できたのですが、唯一移行後にlatencyのスパイクが多発してしまうものがありました。 この記事では、その原因を調査する方法と発見した解消方法について説明します。 発生した現象 共
こんにちは、Web チームの井手です。今日は私たち Web チームが作っている SSR フレームワーク(以下 FW)にについて紹介します。 記事を書くモチベーション 私たちのメインプロダクトである日経電子版においては k2 という自作 SSR 基盤を 2020 年から運用しています。SSR FW といえば多くの方が Next.js を想起すると思いますが、私たちは自作しています。一方で最近は Next.js の進化が凄まじく、自作 SSR 勢としても意識せざるを得なくなっています。もしかしたら「あぁ Next.js で作っておけばよかった」と思う時が来るかもしれません。特に k2 を保守する際には Next.js では実現できない機能を実現するために様々な手法や工夫を編み出していましたが、Next.js の進化に伴ってその必要性はだんだん減ってきているのを実感しています。そのためいつか N
こんにちは、配配メール開発エンジニアのhiro_jiです。 突然ですが、負荷テストの進め方ってイメージできますか? ある程度経験があれば難なく進めることができると思いますが、そうでない場合はそもそも進め方のイメージが湧きづらいかと思います。 かくいう私も最初は何から手を付ければよいか分からなかった記憶があります。。。 そこで今回は負荷テスト初心者の方向けに、私の所属するチームで実施している手順を紹介します! 負荷テストとは? 負荷テストのフロー 全体像 方針検討 詳細計画 テスト準備 テスト実施 評価 分析・チューニング おわりに 負荷テストとは? 本題に入る前に、負荷テストとは何かについて軽く触れておきます。 負荷テストとは、特定の条件下でシステムやアプリが示す性能を評価、検証するものであり、運用中の障害を未然に防いだり、パフォーマンスの問題やボトルネックを改善するために非常に重要な役割
はじめに こんにちは!私がつとめている CastingONE という会社の SaaS には、テーブル形式のデータ一覧ページがあります。この一覧ページですが、最近データ数が増えれば増えるほど、じわじわとパフォーマンスが悪くなっていってました…。そこで今回は、そのリストデータ取得におけるパフォーマンス改善を行なった時の、パフォーマンス計測方法や検討内容、最終的な結果をまとめてみました。 対象読者 バックエンドのパフォーマンス改善の方法や改善の流れに興味がある方 ちなみに私がこの改善を行なった時のスペックですが、パフォーマンス改善については初心者寄りでした。「パフォーマンス改善って何それ美味しいの?」というレベル感だった当初、「達人が教える Web パフォーマンスチューニング 〜ISUCON から学ぶ高速化の実践」という本には基礎を知るところから大変お世話になったので、ご興味のある方はぜひ読んで
困っていた内容 ALB(Application Load Balancer)への急激なアクセス増加により処理が遅延し、一時的にサーバーエラーとなる事象が発生しました。ボトルネックが ALB 側か、もしくはバックエンドサーバー側かを切り分けたいのですが、ALB の性能限界に達していたか確認する方法を教えてください。 どう対応すればいいの? ALB は負荷状況に応じて内部的にスケーリングが行われるため、最大接続数などの情報は非公開となっています。 そのため ALB の性能限界を明確に確認することはできませんが、以下 (1) ~ (3) の指標を確認することで、ALB もしくはバックエンドのどちらがボトルネックになっていたかを推測できます。 (1) 当該時刻に ALB のスケーリングが行われていたかを確認する ALB への接続数が物理ノードの限界に達すると自動的にスケーリングが行われ、その際には
パフォーマンスの高みを目指せ! CDNのエッジサーバーでSSR - CloudflareでViteを動かす手順 ウェブサイトの高速化はあらゆるウェブ制作者の悲願です。1ミリ秒でも早くコンテンツを届けるために、エンジニアたちは血と汗と涙を流します。しかし、ウェブサイトの高速化は、ウェブサイトの構成要素を最適化するだけでは実現できません。 大きな課題として次の2つが挙げられます。 コンテンツの転送量が大きく、表示までに時間がかかる 物理的なクライアント/サーバー間の距離が遠く、転送に時間がかかる これらの課題を解決するため、様々な技術が発展してきました。今回はその中でもSSR(サーバーサイドレンダリング)と、CDN(コンテンツデリバリーネットワーク)に注目します。 本記事ではSSRとCDNの概念について解説し、実際にCloudflareというCDNからコンテンツを配信する方法を紹介します。フレ
データ分析基盤室の otobe(𝕏@UC_DBengineer) です。 事業規模が拡大し、大規模なデータの管理が必要になるにつれて、SnowFlake や BigQuery のようなハイパワーな DWH サービスでデータを加工するケースは多いです。 その際、想定外な高額請求が起こる原因のひとつに、クエリが最適化されておらずスキャン量が増大しているケースがあります。 そのため、クエリのスキャン量を監視・管理することが課金額を減らすうえで有効な手段となることがあります。 本記事では、前半で BigQuery で課金されるスキャン量を監視・管理するまでのプロセスを振り返り、 後半で BigQuery の課金額を減らすために簡単にチェックできることについてお話しします。 BigQuery クエリにおけるスキャン量を監視・管理するに至った理由 BigQuery の課金額が想定より大幅に増加してい
はじめに React は内部でのパフォーマンス最適化により UI 更新に必要な DOM 操作の数を軽減しています。本記事では、さらに React アプリケーションを最適化するテクニックを紹介します。 前提知識 以下にレンダリングの仕組み等を解説します。すでにご存知の方は飛ばしてテクニックの章をお読みください。 React がどのように UI を更新するのか レンダリングされたコンポーネントを作成した時、React はコンポーネントの要素木に対してvirtual DOMを作成します。コンポーネントの状態が変わるたびに React は virtual DOM 木を作成し以前のレンダリング結果と比較します。それらの違いのみを変更された要素の実際の DOM に反映します。 実際の DOM は操作するのにパフォーマンスコストがかかるため、React は virtual DOM を用いることで再レンダ
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Performance impact of the memoization idiom on modern Ruby | Rails at Scale 原文公開日: 2024/02/14 原著者: Jean Boussier(byroot) Ruby 3.2における主要な内部変更のひとつに、オブジェクトシェイプ(object shape)の導入があります。 本記事では、オブジェクトシェイプが導入された理由、仕組み、制限事項について解説します。 🔗 オブジェクトのインスタンス変数はどのように保存されるのか Rubyは非常に動的な言語なので、インスタンス変数へのアクセスという単純な操作でも多くの作業を伴います。 Rubyオブジェクトは、ほとんどの場合インスタンス変数を「参照の配列」に保存します。 たとえば、インスタンス変数を2個持つ
大変ご無沙汰しております、今年度もあと少しです。この記事ではAutoReserveでのCLS改善についてお話します。 Web高速化シリーズ第2弾となります、第1弾「メンバーを巻き込み、分析基盤を整える」も併せてご覧ください。 CLSはきちんと改善を行えば必ず満点の25点を取ることができる、Page Speed Insightsの中でもある意味特別な指標です。CLS以外の指標は「~するまでの”時間”」を示しますが、CLSだけは「1画面のなかでコンテンツがずれた”総量”」を示しているためです。秒数を削るのはある程度限界がありますが、「コンテンツがずれないようにする」のはほぼ完璧に対応することができます。 Page Speed Insightsが登場してすぐの頃はCLSは5点しか持っていませんでした。 5点にしてはUXへの影響が大きいなあと思っていたら、バージョン8で15点、現在のバージョン10
はじめに こんにちは、ML・データ部MLOpsブロックの岡本です。 MLOpsブロックでは機械学習モデルの実験基盤の作成、機械学習モデルを組み込んだAPI・Batchの開発・運用・保守を行なっています。APIを開発する際には負荷試験を実施し、本番環境で運用する際に求められるスループット・レイテンシを達成できるか確認します。 MLOpsブロックでの従来の負荷試験実施には人手を要する定型的な作業が複数ありました。また頻繁に行う作業でもありトイルとなっていました。 本記事ではMLOpsブロックで抱えていた負荷試験実施の課題と、解決のために開発したOSSのCLIツール、Gatling Commanderについて紹介します。Gatling Commanderが負荷試験の実施におけるトイル削減の一助になれば幸いです。 github.com 目次 はじめに 目次 背景・課題 従来の負荷試験実施の方法 分
本連載は分散型マイクロブログ用ソフトウェアMisskeyの開発に関する紹介と、関連するWeb技術について解説を行っています。 Misskeyでは、新機能の追加や改修・バグ修正はもちろんですが、運営者がより少ないコストでサーバーを維持できるよう、Misskeyのスケーラビリティ改善も継続して行っています。 今回はそういった最近のMisskeyのパフォーマンス改善の取り組みについて紹介します。 Fan-out Timeline Misskey v2023.10.0[1]では、以前より検討を重ねていた、タイムラインのアーキテクチャをPull型からPush型に変更する改修を行いました。 Note:MisskeyではこのPush型アーキテクチャ実装を「Misskey®︎ Fanout Timeline Technology™︎ (FTT)」と名付けています。お察しのように、Intel社の技術のネーミ
こんにちは! Tech KAYAC Advent Calendar 2023 11日目を担当する荒賀(@ken39arg)です。 在籍期間15年と弊社の中でかなり古参になってしまった私ですが、アドベントカレンダーを年に2本書くのは初めてです。1 今回の内容は、今年7月に無事に成功したお仕事の話で、完了したらブログに書くように言われていたものです。 が、どうしても筆が進まず、のらりくらりと逃げていたのですが、良い年越しをするためにいい加減書いておくか〜という内容です。 TL;DR Rails + PostgreSQL + Apartment という構成のサービスで下記の1行の設定変更コミットを取り込んだ結果・・・ $ git log -n1 -p 64b39f258e9adde2e55752e4f1d5b6be12bcb216 commit 64b39f258e9adde2e55752e4f
これはなに? 新しくリリースされた ChatGPT (GPT-3.5 Turbo) の Fine-tuning を試してみたメモ。 ChatGPTに最新の知識や専門知識を注入できるかどうかをテストしてみた。 結局、自分が想定した動きにはできなかったので記事にして供養します🙏 tl;dr 一晩試してみた程度では、ChatGPTに最新の知識を教え込む目的での Fine-tuning はうまく動かなかった。 OpenAIが提示している想定のユースケースとずれている利用方法なので、もう少しトライしても上手くいかないんじゃないかなと思う。 学習データに入れた質問をそのまま投げてあげると回答できることもある程度だった。(このままでは到底使えない…) 出力のトーンや言語の指示にプロンプトの文字数を大量に使っていて、それを大幅に削減したい、という時には使えそうだなという印象だった。 学習データの自動生成
Next.jsの認証チェックどこでするか問題 基本的には middleware.ts で行うと思うのですが、肥大化を避けたり、ちょっとした共通処理は layout.tsx に書くこともあるでしょう。今回は layout.tsx で認証チェックをした場合に、実装によっては意図せず認証ユーザにしか表示したくない情報が漏洩してしまうかもしれないケースを紹介します。 問題のあるコード import { redirect } from "next/navigation"; export const dynamic = 'force-dynamic'; function currentUser() { // ここでセッションデータから認証ユーザ情報を取得する関数 // デモ用にログインしていないユーザを再現したいのでfalseを返す return false; } export default fun
この記事は 一休.com Advent Calendar 2023 6日目の記事です。 一休レストランの開発チームでエンジニアをしている香西です。 今回は Solr クエリの速度改善についてお話します。 背景 2023年10月、一休レストランのスマートフォン用 レストラン詳細ページをリニューアルしました! UI/UX の見直しとともに、使用技術も一新しました。 バックエンド言語:Python から Rustへ フロントエンドフレームワーク:Nuxt.js から Next.jsへ*1 スマートフォン用 レストラン詳細ページ 課題 「日付を選ぶカレンダーの表示が遅い」 社内限定リリースの直後、多方面からこの声が聞こえてきました... レストランへ行く日付を選ぶカレンダーは予約フローの第一ステップなので、表示速度が遅いことは致命的です。 特に、設定データ(料理のコース種類・席の種類など)が多いレ
Memray公式サイトのキャプチャ インストール方法は以下のとおりです。 $ pip install memray Memrayの基本的な使い方 Memrayがインストールされていると、memrayコマンドが使えるようになります。 プロファイリング対象のスクリプトをmemrayから実行すると、スクリプトを実行した同じフォルダに実行時のプロファイリング結果がバイナリ形式でファイルに保存されます。 プロファイルの実行 サンプルのPythonスクリプトとしてsample.pyを準備します。以下のコードでは、状態表示をわかりやすくするために1秒間の待ちを入れています。実行内容は、リスト内包表記で要素数が約1億個のリストを生成しています。 sample.py - リスト内包表記でリストを作る import time time.sleep(1) # 状態表示をわかりやすくするために1秒待つ resul
この記事は、『Software Design 2024年6月号』(2024年5月17日発売)の第1特集「SQLチューニングする前に知っておきたい 実行計画&インデックスのしくみ」の連動企画です。ぜひ本誌特集1もお読みください。 適切なインデックスを設計する インデックスの調整によるクエリの高速化は、RDBMSを使用する際の数あるチューニングテクニックの中でも最もお手軽なものです。テーブルのカラムの定義を変えるわけではないので、クエリの結果に違いが生じず、アプリケーションを変更する必要性がないからです。適切なインデックスを付与するだけでチューニングが済むというのは極めて効率的です。それでは適切なインデックスとはどのようなものでしょうか。本記事では、まずインデックスを設計する際に重要なポイントを解説します。 インデックスとSQL構文 「どのカラムの組み合わせに対してインデックスを作成すべきか」
TL;DR TiDBにおけるパフォーマンス検証をどうやって行ったか パフォーマンス検証を行ったときにつまづいた問題とその対応策 TiDBの仕様やアーキテクチャなどの話はありません 前提 対象のDBはAmazon Auroraで稼働中 DBエンジンはMySQL TiDBに移行できないかPoCを実施 DB周りにいろんな課題があり、TiDBで解決できないか検証 TiDB Cloudで検証 本番運用を想定してTiDB Dedicatedを利用 先にお伝えしたいこと TiDB導入したいとか言う前に、今使っているRDBで発生しているスロークエリとかIndex設計を見直した方が良いです笑 理由はこの記事を見てもらえるとわかると思いますw パフォーマンス検証の進め方 1. パフォーマンス検証に利用するクエリを洗い出す 観点としては以下の2つ 実行される頻度が高いSQL 実行速度が遅いSQL(スロークエリ)
AWS News Blog AWS Fargate Enables Faster Container Startup using Seekable OCI While developing with containers is becoming an increasingly popular way for deploying and scaling applications, there are still areas where improvements can be made. One of the main issues with scaling containerized applications is the long startup time, especially during scale up when newer instances need to be added.
先日、統計ダッシュボード機能(β)をリリースしました。記事をひとつでも公開している場合、Zennにログインすればどなたでも統計情報を表示できます。執筆頻度の確認や閲覧回数の参考にお役立てください。 本稿ではどのように実現したかについて課題とともに記録します。 TL;DR 投稿ページの表示イベントは Google Analytics から BigQuery へ連携しており、イベントデータ(BigQuery)と記事データ(Cloud SQL)をどうJOINさせるかが課題 外部接続でBigQueryからCloud SQLつなぐことにした 統計データ読み出し時、BigQueryを直接使うとクエリ毎に課金されてしまうため、BigQuery BI Engine を使うことにした スケジュールクエリを使い、BI Engineの容量に収まるように集計データを最小限にまとめる チャートは Chart.js
「Startup Day 2023」は日本中のAWSを利用するStartupが、AWSの知見を披露するHubとなる1日です。2023年はサブテーマに「スタートアップ冬の時代を共に乗り越える」を掲げて、スタートアップが面しているこの逆境をどうやって跳ね除け、成長につなげていけるかを共有します。ここで、株式会社SODAの林氏が登壇。まずは、「SNKRDUNK」(スニダン)におけるコスト削減の方針について話します。 本セッションの目次 林雅也氏:林と申します。本日は「AWS月額利用料を$137,000→$87,000に削減して信頼性に投資した話」をします。 さっそくタイトルの訂正で恐縮ですが、このセッションの準備にあたっていろいろと数値を振り返っていると、最大値は$146,000だったので、いきなりですが$137,000から訂正します。 そして今日のキーワードから共有したいと思います。今日のキー
はじめに 言語として高速だと謳われているRust。そのRustを使用してDynamoDBへのデータ登録処理を直列処理と複数の並列アルゴリズム処理で速度比較してみました。 DynamoDB DynamoDBは公式で以下のように謳われています。 Amazon DynamoDB の応答時間は 1 桁ミリ秒で、最も要求の厳しいアプリケーションでも一貫してこのパフォーマンスを発揮できます。例を挙げると、2022 年の Amazon プライムデーに Amazon DynamoDB は、1 桁ミリ秒のパフォーマンスで、数兆回の API コールに対して 1 秒あたり 1 億 520 万件のリクエストを確実に処理しました。 上記だけみると爆速のようにも思われますが、読み込みと書き込み双方に以下の制限があります。 BatchWriteItemのデータ投入は1回で25リクエストまで、Queryのデータ取得は1回
新型「iPad Pro」がM3チップをスキップした理由 現地でM4チップ搭載モデルと「iPad Air」に触れて驚いたこと:本田雅一のクロスオーバーデジタル(1/6 ページ) Appleが行った新しいiPadシリーズの発表は、実に多くの情報を含んだものだった。その全体像は、発表された製品のレポート記事にある通りだ。 →iPadに“史上最大”の変化 「Appleスペシャルイベント」発表内容まとめ 発表に伴うスペシャルイベントは米国のニューヨーク、イギリスのロンドン、そして中国の上海(翌日開催)の世界3拠点で行われる大規模なものになった。事前のうわさ通り「iPad Pro」が刷新された他、M2チップを搭載した上で13インチモデルも追加された「iPad Air」、そして日本では1万円値下げされた「iPad(第10世代)」など、iPadに焦点を絞ったとは思えないほどに“盛りだくさん”だったといえる
CPUやGPU、ストレージの性能を簡単に測定できるベンチマークソフト「CrystalMark Retro」が2024年3月31日にリリースされました。CrystalMark Retroはストレージベンチマークソフト「CrystalDiskMark」やストレージ管理ソフト「CrystalDiskInfo」といった定番ソフトの作者であるhiyohiyo氏の新作ということで、CrystalMark Retroも定番ソフトに仲間入りしそうな気配を感じます。そんなCrystalMark RetroをダウンロードしてPCの性能を測定するまでの手順を確認してみました。 CrystalMark Retro - Crystal Dew World [ja] https://crystalmark.info/ja/software/crystalmarkretro/ CrystalMark Retroをダウン
当ブログで行ったGoogle Fontsの読み込み最適化を紹介します。CLSを大幅に改善できたので個人的にはこれが最適解だと思っています。 結論いきなり結論ですが、次のHTMLのhrefの値を使用しているGoogle Fontsのそれに変更し、head内で読み込んでください。 <link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <link rel="preload" as="style" fetchpriority="high" href="{href}" /> <link rel="stylesheet" href="{href}" media="print" onload='
日本でもついに「ラズパイ5」が発売された。新機能を紹介すると共に、ベンチマークテストで性能を検証する。 2023年9月末に英Raspberry Pi財団がRaspberry Piシリーズの最新版となる「Raspberry Pi 5」(以下、ラズパイ5)を発表し、海外では同年11月から販売が始まっています。日本でも2024年2月13日に販売が始まりました。本稿では海外版のラズパイ5*1を基に、その特徴や注意点、性能をまとめていきます。 *1 海外で購入したラズパイ5はいわゆる「技適」がありませんが、「技適未取得機器を用いた実験等の特例制度」(https://exp-sp.denpa.soumu.go.jp/public/)に基づく申請をした上で動作・検証しています。 PCのマザーボード並みの機能と性能を実現 ラズパイ5は、2019年に発売されたRaspberry Pi 4 Model B(以
2023/11/13追記以下の記事は、Llama2が公開されて数日後に書いた内容です。 公開から数ヶ月経った23年11月時点では、諸々の洗練された方法が出てきていますので、そちらも参照されることをおすすめします。 (以下、元記事です) 話題のLamma2をファインチューニングします。 QLoRAライブラリを使うパターンと、公式推奨の2つを試しました。前者が個人的にはオススメです。 前提Hugging faceで配布されている公式のモデルが必要です。以下を参考に、ダウンロードしておきます。 データセット作成 (7/20 15:20追記 設定ミスってたので修正しました) test.jsonを適当に作ります。 [ { "input": "", "output": "### Human: 富士山といえば?### Assistant: なすび" }, { "input": "", "output":
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く