タグ

ブックマーク / inside.pixiv.blog (16)

  • pixivの全文検索基盤とElasticsearchによるリプレイス - pixiv inside

    まもなく17周年を迎えるpixivでは、長年にわたり作品などの全文検索基盤としてApache Solrを使用してきました。 しかし、サービスの規模が拡大する中で、従来の基盤に問題が生じていました。これを受けて、pixivでは全文検索基盤のリプレイスを実行しました。 今回のリプレイスにより、pixivでは検索結果の更新反映時間や検索APIのレイテンシが大幅に短縮されました。また、今後のスケールに対応可能になり、新機能開発においても全文検索が容易に利用できるようになりました。 記事では、pixivの全文検索基盤の歴史や、今回オンプレミス環境でElasticsearchクラスタを構築し、リプレイスを完了するまでの取り組みについてご紹介します。 こんにちは。pixivのnamazuです。最近、私たちのチームで進めていたpixivの全文検索基盤のリプレイスが完了しました。この機会に、pixivの全

    pixivの全文検索基盤とElasticsearchによるリプレイス - pixiv inside
    gfx
    gfx 2024/08/26
    偉業じゃん。各種メトリクスの改善度合いも素晴らしい。
  • クレジットカード決済システムの可用性向上とそれに伴うサービス共通利用規約の改定について - pixiv inside

    こんにちは、CTOのharukasanです。私が担当しているファイナンシャルサービス部ではピクシブが運営している各サービス(pixiv、BOOTH、pixivFACTORY、pixivFANBOXpixivコミック、Pastelaなどなど)においてご利用頂く、決済・送金といったお金のやりとりに関するシステムの構築・運用を行っています。 ピクシブでは決済に関する手続きを変更することを目的に、2024年8月1日にサービス共通利用規約の改定をします。この記事では今回の規約改定を行う理由である、クレジットカード決済システムの可用性向上のために行うクレジットカード決済の転送サービス導入について、クレジットカード決済の仕組みも踏まえてご説明します。 ピクシブのサービスにおけるカード決済の仕組み ピクシブでクレジットカード決済を使った場合のお金の流れを簡単に図示してみました。実際にはもうちょっと複雑

    クレジットカード決済システムの可用性向上とそれに伴うサービス共通利用規約の改定について - pixiv inside
    gfx
    gfx 2024/06/26
  • pixivのブックマークに関する負荷対策をしました - pixiv inside

    10/22(金) 追記 この記事で解説している内容について解説する勉強会を開催することとなりました。以下のconnpassよりお申し込みください。 pixiv.connpass.com 10/22(金) 追記 pixivのブックマークについて ブックマークDBの問題について 具体的な対策内容 論理削除廃止・index追加・ブックマークタグのテーブル分割 適応ハッシュインデックスの無効化 アプリケーションコードのリファクタリング・全発行クエリの列挙と見直し 大きな更新処理の非同期化 結果 あわせてよみたい pixivではサービスの成長に伴い、気に入った作品に対して付けることができるブックマークの総数が急速に増加しており、ユーザーの皆様に滞りなくサービスを提供し続けるためブックマークに関するデータベース(以後DB)の負荷対策が必要になりました。 2021年2月より対策を行うプロジェクトを発足し

    pixivのブックマークに関する負荷対策をしました - pixiv inside
    gfx
    gfx 2021/10/22
    リアルISUCONだ。大変だけど楽しそう。
  • Herokuから ECSに 移行した - pixiv inside

    こんにちは、インフラ部の id:sue445 です。私事ですが先日GCPの Professional Cloud Architect を取得しました。 そういうわけで今日はGCPではなくAWSの話をします。 tl;dr; 劇的ビフォーアフター 構成 移行のモチベーション パフォーマンス向上 コスト圧縮 アーキテクチャの採択理由 やったこと 1. DB作成 2. MySQL 5.7 -> 8.0 MySQL 8.0でハマったこと MySQL 8.0からデフォルトの認証がcaching_sha2_passwordになった RDSのMySQL 8.0からMariaDB 監査プラグインがなくなった 3. 番用のDockerイメージを作成 困ったこと:CodeIgniterがログの標準出力に対応していなかった 4. ECS + Fargate + CodePipeline構築 5. CDN作成 6

    Herokuから ECSに 移行した - pixiv inside
    gfx
    gfx 2021/03/18
    ダウンタイムなしで移行すごい。
  • GitLab令和最初のリプレイス。フルコンテナ化ポスグレ移行 - pixiv inside

    こんにちは、sue445です。 先日社内で使ってるGitLabのリプレイスをしたのでその辺の話をしたいと思います。 リプレイスの内容 今回のGitLabリプレイスでは主に下記を行いました。 サーバ移設に伴いURL以外全部変えた レガシーな環境で運用されていたGitLabを全てDockerコンテナに載せた MySQLからPostgreSQLに移行 以上を1時間弱のメンテでやりきった 構成 ざっくり書くと、SSL終端のフロントサーバのみ同じで、それ以外のバックエンドを全部変えました。 旧 APサーバ Debian Wheezy CPU: Intel Xeon E5-2640v2 * 2 Memory: 40GB Disk: 64G + 512G MySQL兼Redisサーバ Debian Wheezy CPU: Intel Xeon X3430 Memory: 8GB Disk: 256G M

    GitLab令和最初のリプレイス。フルコンテナ化ポスグレ移行 - pixiv inside
    gfx
    gfx 2019/09/19
    "サーバ移設に伴いURL以外全部変えた"
  • Rubyコア最前線 pixiv inside出張版 - pixiv inside

    皆さんこんにちは。最近はGoでコードを書いてることが多いですが、実はRubyコミッターという肩書も持っているusaです。 Rubyといえば、毎年クリスマスの頃に新バージョンがリリースされる事が多いですね。 もちろん今年も、Ruby 2.6のリリースが予定されています。 新しいRubyではどんな変更が入るのか、ということに興味がある方も多いかとは思いますが、そういった記事は探せばたくさん見つかると思います。 稿ではそういう話ではなくて、Rubyにどんな変更が入るのかがどうやって決められているのか、ということを紹介します。 Ruby開発者会議 普段から皆さんの目に触れるWebサービスなどで広く使われているRuby。もちろん、ピクシブ社内でも様々なサービスがRubyで作成され、ユーザーの皆さんに向けて提供されています。 コミッター さて、当然のことながら、Ruby自身もプログラムですから、誰か

    Rubyコア最前線 pixiv inside出張版 - pixiv inside
    gfx
    gfx 2018/12/15
  • 画像に関する新しい DOM API の紹介 - pixiv inside

    こんにちは、福岡オフィスでエンジニアをしている petamoriken です。 ECMAScript と DOM API が好きで、気づいたらいつも仕様を眺めています。よろしくお願いします。 この記事では画像に関する新しい DOM API を紹介します。一般的に DOM API は二つのブラウザによる実装があれば安定していると言われていますが、プロダクトなどに採用する際には十分気をつけてください。また将来的に仕様が変更される可能性があることにも留意してください。 HTMLImageElement#decode() 明示的に画像のデコードをさせるメソッドです。Promise<void> を返します。 実は画像の load イベント完了後では画像の大きさを取得することは出来ますが、まだデコード処理はなされていません。今まで明示的にデコードさせたかったらこのようなコードを書いていたと思います。

    画像に関する新しい DOM API の紹介 - pixiv inside
    gfx
    gfx 2018/12/14
  • ピクシブフロントエンド互助会の取り組み - pixiv inside

    どうもこんにちは @f_subal です。普段は pixivFACTORY のフロントエンドを見ています。 最近は ruby-sass の deprecation に悩みながら dart-sass を調べたりしています。 さてさて、みなさん日々の開発にあたってフロントエンドの悩みや知見、気になるニュースなどが溜まっているかと思います。あのライブラリを試したい、あれアップデートしたらハマったので誰かに相談したい…そんなときに社内に頼れる仲間がいると心強いですよね。 というわけで、日はピクシブエンジニア組織における「フロントエンド互助会」の取り組みについてご紹介します。 ピクシブにおけるエンジニア互助会 ピクシブでは2017年まで、システムを超えた共有事項や障害報告や最近の挑戦について話す「技術互助会」というミーティングがありました。初期は全社員の参加でしたが、その後エンジニア全員参加・発表

    ピクシブフロントエンド互助会の取り組み - pixiv inside
    gfx
    gfx 2018/12/11
    「互助会」って名前がめっちゃいいな。
  • Content Security Policy Level 3におけるXSS対策 - pixiv inside

    こんにちは、セキュリティエンジニアのkoboです。ピクシブには2018年4月に入社しており、セキュリティ観点でのアプリケーション開発や脆弱性報奨金制度の運用などを行っています。 記事では、現在ピクシブの一部のサービスで取り組んでいるContent Security Policyについて知見を共有します。 概要 Content Security Policy (CSP) は、XSSを主としたウェブアプリケーションセキュリティの問題を軽減するために考案されたブラウザのセキュリティ機構です。 ウェブアプリケーションは、 Content-Security-Policy ヘッダをHTTPレスポンスに含めることで、意図していないJavaScriptの実行やリソースの読み込みをブラウザ側で制限することができます。 CSPは2012年頃よりブラウザに実装されていますが、2016年のGoogleの調査によ

    Content Security Policy Level 3におけるXSS対策 - pixiv inside
    gfx
    gfx 2018/10/05
    “ウェブのCSP運用の実態からして、ドメインのホワイトリスト方式による効果的なXSS対策は困難であるとされています” ⇢ nonce 方式へ。なるほどよさそう。
  • 今日から簡単!Webpacker 完全脱出ガイド - pixiv inside

    こんにちは、@f_subal です。普段はおもに pixivFACTORY のフロントエンドを見ています。 今回は pixivFACTORY において、フロントエンドのビルドに Webpacker を利用するのをやめた話をします。 Webpacker をやめよう rails/webpacker は Ruby on Railsプロジェクトwebpack を導入する際に用いられる gem です。必要な webpack の設定ファイルの生成や、Rails のテンプレートからビルド済みの JavaScript ファイルを読み出すために用いるヘルパー関数など、多数の機能を提供します。 結論から言うと、Webpacker を入れてもあまり良いことがありませんでした。単に必要が無いというより、あることによって面倒が増していると感じたので、剥がしました。以下 Webpacker が導入された Ra

    今日から簡単!Webpacker 完全脱出ガイド - pixiv inside
    gfx
    gfx 2018/08/06
  • pixivのHTTP/2有効化の軌跡 - pixiv inside

    @catatsuyです。普段はpixiv技術的な改善や広告周りを見ています。今回はHTTP/2の話を紹介します。 HTTPS化とHTTP/2について 以前紹介したようにpixivは2017/4/18にHTTPS化を完了していました。 pixivを常時HTTPS化するまでの道のり(前編) - pixiv inside pixivを常時HTTPS化するまでの道のり(後編) - pixiv inside 昨今ブラウザで使える新しい技術はHTTPSが必須要件とされることが多くなりました。その中の代表格がHTTP/2です。HTTP/2自体はHTTPSを要求していませんが、実際にはHTTPSでなければブラウザ側で有効にならないため必須です。 HTTP/2に対応するメリットは他の詳しい記事を参照して欲しいですが、ざっくり以下のメリットがあります。 HPACKという仕様でハフマン符号を使ったHTTPヘッ

    pixivのHTTP/2有効化の軌跡 - pixiv inside
    gfx
    gfx 2018/05/10
  • 3/28に公開されたRubyの脆弱性情報についてのポエム的解説 - pixiv inside

    こんにちは。Rubyコミッターのusaです。 なんかRuby の 最新 リリースと一緒に、脆弱性 情報 が いっぱい 公開 されましたね。うわー、なんかよくわかんないけど、やばそうですね!正味のところ、こいつら結局どれくらい危なそうなのか、それらの脆弱性の記事を書いた人がたまたまピクシブにいましたので、率直に音を語っていこうと思います。 CVE-2017-17742: WEBrick における HTTP レスポンス偽装の脆弱性について うまく利用するのは難しいとは思いますが、使いようによっては利用者(WEBrickで作って公開したサイトを訪問した人)をひどいめにあわせることができるかもしれない脆弱性です。 でも、WEBrickで作ったサイトをプロダクションで公開してる人なんているわけないよねははは。 CVE-2018-8777: WEBrick における巨大リクエストにともなう DoS

    3/28に公開されたRubyの脆弱性情報についてのポエム的解説 - pixiv inside
    gfx
    gfx 2018/03/29
    "どの脆弱性も、普段から真面目にRubyをやってる皆さんであれば、そうそう踏んだりはしていないんじゃないかと思われます。 が、油断は禁物ですので、この機会に関連していそうなコードを確認しておいてください"
  • Swagger+JSON SchemaでAPIの型をテストして開発サイクルをスピードアップさせた話 - pixiv inside

    CTO兼福岡オフィス立ち上げ担当として新アプリを作っている@edvakfです。 JSON APIを開発しているとこういう問題がありがちですよね。 仕様どおりにAPIの形式を作ったはずだけどなんか自信が持てない テストでいくつかのキーが存在するかの簡単なチェックはしてるつもりだけど、全部チェックするのは大変すぎる APIのControllerやViewをリファクタリングしたらレスポンスの形が変わってアプリがめっちゃクラッシュし始めた というのが怖くて誰もリファクタリングできなくなった APIドキュメントがメンテされない 知らない間にレスポンスのフィールドが増えてたけどドキュメントに書いてない これらを解決したい!と思って試行錯誤したら、スマートに解決することができました。この記事ではRailsのことについて書きますが、考え方は他の言語・フレームワークでも同じです。 なお、今回使ったgemのバ

    Swagger+JSON SchemaでAPIの型をテストして開発サイクルをスピードアップさせた話 - pixiv inside
    gfx
    gfx 2017/09/19
  • pixivコミック作品のタグが自動生成されるまでの軌跡 - pixiv inside

    pixivコミック・ノベル」チームのエンジニアの pawa です。 pixivコミックはWebやアプリで漫画を試し読みできるサービスです。私が一番好きな pixivコミック作品は「温泉卓球☆コンパニオンズ!」です。 2017年7月4日、pixivコミック(Web版)の作品ページにタグ機能が追加されました。 これらのタグは、作品説明文から自動的に抽出されたもので、コンピュータに計算させた「作品のキーワードとして妥当な順番」に並んでいます。 今回は、このタグ機能が生まれるまでの物語をご紹介します。 問題提起 pixivコミックに携わる者として、以前から、次の2点を問題だと感じていました。 特定のジャンル(たとえばスポーツ)の漫画を探すのが難しい 「あわせて読みたい」作品がなぜ「あわせて読みたい」のか分かりにくい 私は、社会人になってから、大好きなスポーツが共通する人とスポーツをすることの果て

    pixivコミック作品のタグが自動生成されるまでの軌跡 - pixiv inside
    gfx
    gfx 2017/09/01
    おお、これは知見だ!!
  • Headless Chromeでデザイン変更履歴を追える魚拓を作ってみた - pixiv inside

    はじめに こんにちは、普段はPawooの開発を担当している新卒エンジニアのabcangです。 最近話題のHeadless Chromeを使って魚拓を作ってみましたので、その話をします。 結論から言うと、こういうものができました。 以下、詳しくお話していきます。 日々行われるデザイン変更をどう把握するか pixivには毎日新機能やUIの変更がデプロイされており、どんどんページが変わっていきます。 ある日、ディレクターから「デザインの変更履歴を追うための魚拓ツールがほしい」と相談されました。魚拓ツールがあると、なにか数値の変動があったときにデザインの崩れを確認したり、過去のデザインを振り返ったりするときに便利とのことです。 ちょうどそのタイミングでHeadless Chromeが利用できるGoogle Chrome 59がリリースされていたので、試すいい機会だと思い引き受けました。 Headl

    Headless Chromeでデザイン変更履歴を追える魚拓を作ってみた - pixiv inside
    gfx
    gfx 2017/08/10
  • DroidKaigi 2017にピクシブのエンジニアが登壇します - pixiv inside

    Androidアプリエンジニアのみなさんこんにちは!3月9日、10日に開催される、Androidをテーマとしたカンファレンス「DroidKaigi 2017」に、ピクシブのエンジニアが登壇します。 03月10日の17時10分、場所は「Room 4」です。 LayoutManagerをつくろう 対象者: RecyclerViewを使ったことがある人 RecyclerViewの要素をどう並べるかを決めるLayoutManager。 Support LibraryではLinear、Grid、StaggerdGridの3つが用意されているが、もっと凝ったレイアウトや複雑なレイアウトをしたい場合、自分でLayoutManagerを作るしかない。 この発表ではいくつかのサンプルレイアウトを使い、自作LayoutManagerを作るときのコツや注意点を紹介する。 発表内容(案)(予定) LayoutMa

    DroidKaigi 2017にピクシブのエンジニアが登壇します - pixiv inside
    gfx
    gfx 2017/02/16
  • 1