shallow1729のブックマーク (71)

  • Performance Schemaの仕組みと活用法の紹介 - freee Developers Hub

    メリークリスマス!!freee Developers Advent Calendar 2022 25日目担当のid:shallow1729です!昨日はtdtdsさんでfreee特有の風土病:エンジニアの症例と寛解についてでした! 僕からはMySQLのPerformance Schemaという機能の仕組みの解説とfreeeでの活用についての紹介をします。 前置き Performance SchemaはMySQLで実行されるトランザクションやクエリなどの実行時の様々な情報を取得してくれる機能です。特に面白いのは後で説明するようにstageやwaitなどのMySQLの実装レベルでのモニタリングを提供してくれているところで、これを使う事でどのあたりがボトルネックになっているかについて実際のProduction環境のワークロードで分析できる点です。また、最近だと例えばAWSのRDSを用いているとPe

    Performance Schemaの仕組みと活用法の紹介 - freee Developers Hub
    shallow1729
    shallow1729 2022/12/25
    Performance Schemaについて書いてみましたstageとかwaitは特に解説が少ないのでその辺中心です!
  • Slack チャンネルのロボット帝国化を防ぐ feed-pruning-proxy - ぽ靴な缶

    この記事は はてなエンジニア Advent Calendar 2022 2日目の記事です。 みなさんは SlackRSS アプリ を使っていますか? /feed subscribe FEED_URL で RSS や Atom フィードをチャンネルに流すことができます。 SlackRSS フィードを追加する | Slack これを使って各種リリースノートやニュースサイトの新着をいろんなチャンネルに流しています。Slack をお使いの皆様もきっとそうしているでしょう。 フィードによって技術の最前線をキャッチアップでき、供給された話題は参加者同士の活発な議論を産む。学習とコラボレーションが同時に促進される素晴らしい機能と言えますね。 . . . 当か??? 例えば BigQuery のリリースノートを流すとこうなる!! 激流 これ 5 記事あるわけじゃないからな。 フィード的には

    Slack チャンネルのロボット帝国化を防ぐ feed-pruning-proxy - ぽ靴な缶
  • VSCode から Neovim に挫折せず移行する - freee Developers Hub

    freee Developers Advent Calendar 2022 1日目の記事です! ついに今年も始まりました freee Developers Advent Calendar、一日目は会計チームの hachi (@hachiblog) からお送りします。 エディタはソフトウェアエンジニアにとって毎日使う道具です。あなたはどんなエディタを使っていますか?そのエディタに満足していますか? 自分は3年ぐらい VSCode を使っていて大方満足はしていたのですが、細かいところで不満が出てきていました。 そのため思い切って Neovim にエディタを移行しました。 移行して、超快適!という状態ではまだないのですが、VSCode と同等ぐらいまでには使いこなせるようになりました。 自分は今まで何度か VSCode から Vim/Neovim に移行しようとして何度か挫折していて今回始めて成

    VSCode から Neovim に挫折せず移行する - freee Developers Hub
    shallow1729
    shallow1729 2022/12/01
    エディタこだわっていきたい
  • AWSマネージドサービス+Terraformを活用してDBオペレーションをより安全&簡単に(pt-oscの例) - freee Developers Hub

    おはこんばんちは、Database Reliability Engineerの橋です。 以前、freee Developers Hubにて、MySQLのスキーマ変更をオンラインで実施するためのpt-online-schema-changeの導入に関する検討記事を書かせていただきました。こちらはカラムの型変更のようなテーブルロックがかかりオンラインで実施できないような変更や、オンラインで実施できても完了までに長時間かかるようなケースで用いています*1。 運用の都合上、pt-online-schema-changeをそのまま用いるのではなく、以下の4つのフェーズにそれぞれ作業を分割し、個別に実行できるようにしています。前回の記事を要約すると次の流れとなります: pt-online-schema-change コマンドを実行し、スキーマ変更済みテーブルを新規作成し、pt-online-sche

    AWSマネージドサービス+Terraformを活用してDBオペレーションをより安全&簡単に(pt-oscの例) - freee Developers Hub
    shallow1729
    shallow1729 2022/11/09
    ptoscをアプリケーションエンジニアでも簡単で安全に使えるようにするツールの開発をした記事ですー。同僚が書いてくれました!
  • MHAをAWSで使うための支援ツールMHA::AWSをアップデートしてCPANに上げた - 酒日記 はてな支店

    以前に作って、プロダクションでもいくつかのサービスに導入している MHA::AWS ですが、failover 方法を ENI 付け替えの他に VPC Route Table の書き換えもサポートしました。 ENI付け替えでは同一 Availability Zone 内での failover しかできませんが、VPC Route Table の書き換えによる方法では Multi-AZ 環境での failover も可能になります。 CPANにも上げましたので、 cpanm MHA::AWS でインストール可能です。 MHA::AWS - A support script for "MySQL Master HA" running on AWS - metacpan.org fujiwara/MHA-AWS · GitHub 以前の紹介記事 → #11 MySQL Master HA を AW

    MHAをAWSで使うための支援ツールMHA::AWSをアップデートしてCPANに上げた - 酒日記 はてな支店
  • TCPとタイムアウトと私 - Cybozu Inside Out | サイボウズエンジニアのブログ

    部長や副部長もプログラミングを(たまに)することで有名なサイボウズの運用部長、山泰宇です。 有名じゃないかもしれませんが、ブログに書いたので有名になるということでご了承ください。 今回は、先日発生した yrmcds に起因する障害の原因と対策を解説します。 yrmcds というのは、サイボウズが開発している memcached 互換のキーバリューストレージです。 問題の理解のため、まず TCP 通信で、通信先の相手の障害にどう対応するか解説します。 データの送信中に相手が落ちるケース このケースはさらに二つに分かれます。 相手の OS は生きているが、通信しているプログラムが落ちるケース 相手の OS ごと(あるいはネットワークごと)落ちるケース 1 と 2 の違いは、前者の場合 RST パケットが返ってくるのに対して、後者ではなにも返ってこない点です。後者の場合、ack されない

    TCPとタイムアウトと私 - Cybozu Inside Out | サイボウズエンジニアのブログ
  • Debugging MySQL/MariaDB (4): Debugging with rr - nayuta-yanagisawa's blog

    重い腰を上げて Debugging MySQL/MariaDB シリーズの第4弾を書いている。今回は rr debugger を使用したデバッグについて説明する。Intel または AMDCPU を搭載した物理マシンに Linux (kernel 3.11+) をネイティブインストールした環境を前提とする。 rr debugger rr は Pernoscoによって開発されているデバッガーである。rr は gdb と同じ感覚で使えるが、次に挙げる gdb にはないすばらしい特徴を備えている。 プログラムの実行を記録し、バグを何度でも決定的に再現することができる。 ブレークポイントやウォッチポイントまで逆実行 (reverse execution) できる。 これらの特徴の何がすばらしいのか?想像してほしい。散発的なバグ(再現したりしなかったりするバグ)を GDB でデバッグするのは苦

    Debugging MySQL/MariaDB (4): Debugging with rr - nayuta-yanagisawa's blog
    shallow1729
    shallow1729 2022/04/22
    いいツール聞いてもインストールがだるい事多いので助かります
  • S3のコストを大幅に削減した話 - Gunosy Tech Blog

    広告技術部のUTです。 最近はカービィディスカバリーをゆっくりやってます 概要 過去の失敗 どうやったか 仕組み 結果 まとめ 概要 昨今ではデータドリブンな意思決定を重視する企業がどんどん増えており、データを活用することにより事業成長へのインパクトを出そうとしています。 データを事業へと活用するためには、蓄積されるデータを分析するために保管しておく必要があります。 弊社も創業時からデータを蓄積し事業に活用することに力を入れてきた企業の一つであり、日々大量のログが収集されています。 またAWSアカウントを複数運用していますが、一番データ量の多い広告アカウントのS3にはペタバイトレベルのデータが保管されています。 普段何気なく使っているデータレイクとしてのS3ですが、少量であれば無視できるくらい小さいので、コストを気にせず使っておられる方も多いのではないでしょうか? そのようなS3でも巨大な

    S3のコストを大幅に削減した話 - Gunosy Tech Blog
  • 自動テスト速度改善 - 自動テストが品質のボトルネックとならないために - freee Developers Hub

    freee人事労務の品質改善を専任で活動している keik です。 freee人事労務ではアプリケーション開発の自動テスト環境として CircleCI を利用しています。すべてのコードの変更は GitHub 上の Pull Request を経由して行われますが、Pull Request のマージ条件の一つとして自動テストをパスすることを求めるようにしています。 つまり、どんな些細な変更であっても、急ぎの変更であっても、リリースするためには基的には自動テストの結果を待つ必要があります。一方で、コードベースは日々成長しており、それに比例して自動テストの実行時間も長くなっています。 ここに、ゆっくりと、ジレンマが生じはじめます。 品質を高める目的の自動テストだが、実行時間が長いと品質のボトルネックになりうる。 具体的には以下のようなシナリオが考えられます。 些細な改善が億劫になる(自動テスト

    自動テスト速度改善 - 自動テストが品質のボトルネックとならないために - freee Developers Hub
  • ドメイン知識が求められる開発をどのように乗り切るか - freee Developers Hub

    こんにちは、freee会計のプロダクトマネージャー(以下PM)をしております、gokiです。 皆さん、「ドメイン知識」という言葉、聞いたことありますか? ドメイン知識(英: Domain knowledge)または領域知識は、はっきり限定された、ある専門分野に特化した分野の知識であり、一般知識またはドメイン独立の知識と対比される。 ドメイン知識 - Wikipedia freee会計での開発現場で例示すると「確定申告のプロダクトを作るには、開発技術だけでなくそもそも確定申告業務の理解というドメイン知識が必要だよね」みたいな使われ方をします。 freeeはスモールビジネスの皆さんのバックオフィス業務を改善するプロダクトを作っているので、このドメイン知識が開発においても必要な場面が多いです。 そこで、今回はドメイン知識が必要な開発をどのように進めるか、というコツをPM目線でご紹介しようと思いま

    ドメイン知識が求められる開発をどのように乗り切るか - freee Developers Hub
  • データ変更を伴うバッチ処理を書く時に考慮していること - shallowな暮らし

    こんにちは、id:shallow1729です。最近はインフラ寄りなお仕事をよくやっていますがこれまでにいくつかデータ移行やデータ基盤構築などのバッチ処理のお仕事をしてきました。以前にも一度そういった経験を元に記事を書いたのですが、MySQLやシステムに関する知識が以前よりも増えた今もう一度書き直したいなと思いました。 なので今回はバッチ処理を書く時のテクニック2022版という感じです。今の仕事の関係でMySQLrailsを前提にしている話が多いですが、おそらく他のデータベースを使っている人にも役に立つ話が多いのではないかと思います。ただ、今回の記事は経験に基づくものが多く、あまりよくないアイデアもあるかもしれません。改善点や間違いなどあればご指摘ください。 冪等性を持つように 冪等性とは端的に言えばある操作を複数回実行しても一回しか実行しなかった時と同じ結果になる性質の事です。長時間かか

    データ変更を伴うバッチ処理を書く時に考慮していること - shallowな暮らし
    shallow1729
    shallow1729 2022/03/19
    バッチ処理を書く時に気をつけてる事をまとめてみました。普段のウェブ開発とはちょっと毛色が違うタスクで実装に悩むこともあると思うのでそういう時に参考になれば嬉しいです。[バッチ処理][開発テクニック][MySQL]
  • pingcap/parser (MySQL互換) で SQL を手軽に解析 - freee Developers Hub

    この記事は freee Developers Advent Calendar 2021 の23日目の記事です🎄 freeeDBRE チームに所属している caterpillar です. なんだか大きなデータベースを眺める仕事をしています. 突然ですが, pingcap/parser を使って SQL を簡単に解析していきたいと思います. Go 製 の SQL Parser で, MySQL への高い互換性を謳う TiDB で利用されています. この parser の嬉しい点はこんな感じです. シンプルで使いやすい TiDB に利用されていることから, ある程度結果を信頼できる mask 済 SQL もおおよそ構文解析可能 3つ目について, mask済の SQL は select * from users where id = ? のように一部が別の文字に置き換わっているものを指しま

    pingcap/parser (MySQL互換) で SQL を手軽に解析 - freee Developers Hub
    shallow1729
    shallow1729 2021/12/23
    ORM使うと生のクエリが見えなくて辛いけど実際に実行されたクエリをマスクして収集したのを解析してパフォーマンス改善につなげたり
  • PostgreSQLのMVCCとガベージコレクション(Vacuum)

    同時実行制御とトランザクションID コミットログ スナップショット ガベージコレクション(VACUUM) ロングトランザクション”扱い”となるもの テーブルのVacuum インデックスのVacuum 最後に このエントリはPostgreSQL Advent Calender 2021の22日目の記事です。 shallow1729さんのMVCCとInnoDBでの実装についてという記事を読んで、これのPostgreSQL版を書きたいなと思い書いてみました。 同時実行制御とトランザクションID PostgreSQLは複数のクライアントがトランザクションを同時に実行することが可能で、各トランザクションは他のトランザクションの影響を受けずに処理します。これはトランザクションのACID特性の隔離性(Isolation)の特性です。 以下に簡単な例を挙げます。 -- トランザクションA 開始 BEGIN

    shallow1729
    shallow1729 2021/12/22
    以前僕もInnoDBについて書きましたがPostgreSQLの場合の解説を書いてくださいました!!
  • DevTools の Web 技術でできている部分を覗き見る - polamjaggy

    この記事ははてなエンジニア Advent Calendar 2021 の 22 日目の記事です。 昨日の記事は id:shimobayashi さんの アジャイル推進活動にここ1年で吉兆がみえてきた要因について - 下林明正のブログ でした。 Chrome の DevTools の UI 部分は Web 技術でできています。Web 技術でできているので、DevTools を DevTools で inspect することもできます。 example.com を inspect している画面を inspect している様子 このことを知ったのは、10MB くらいある JavaScript ファイルにブレークポイントを貼りつつデバッグしていたら DevTools が固まるようになってしまい、ブレークポイントを解除しようにもその前に DevTools がフリーズしてしまうので詰んだ……、という出

    DevTools の Web 技術でできている部分を覗き見る - polamjaggy
  • freee会計の React 17 化を進めていたら flux に PR を出していた話 - freee Developers Hub

    この記事は freee Developers Advent Calendar 2021 の 21 日目の記事です. freeeエンジニアをやっているけむりだま (@_kemuridama) です. freee会計の開発をメインに freee Tech Night の運営リーダーをやっていたり, オンラインになった社内イベントの企画や配信をやっていたりします. 今回は freee会計の React 17 化を進めていた際に facebook/flux のバグにハマって, 修正のために PR を出してパッチリリースをしてもらった話をしようと思います. 2018 年に新卒で入社してから毎年 Advent Calendar に参加してますが 3 年ぶり 2 回目の技術的な内容になりますw 経緯 freee会計を React 16 から 17 にアップデートするために, アップデート起因でサービ

    freee会計の React 17 化を進めていたら flux に PR を出していた話 - freee Developers Hub
    shallow1729
    shallow1729 2021/12/21
    仕事をOSS活動まで持っていけてるのいい話!
  • 【マジで】サイバー演習シナリオの作り方【怖い】 - freee Developers Hub

    CEOに身代金を要求したい」 こんにちは、PSIRTマネージャのただただし(tdtds)です。この記事はfreee Developers Advent Calendar 2021 18日目です。 freeejoinしてから早くも14ヶ月がすぎました。freeeでは毎年10月に全社障害訓練をしていて、昨年は入社したてで右も左もわからないままAWS上の番環境(のレプリカ)に侵入してDBをぶっ壊す役目をさせられたのも良い思い出です*1。 で、上の「CEOに身代金を要求したい」という物騒な相談は、今年の訓練計画の話です。話を持ち掛けてきたのはCIOの土佐。昨年は主要サービスが落ちて、開発チームが対応にあたる中、ビジネスサイドも顧客対応などで訓練参加しましたが、今年はさらに、経営サイドまで巻き込もうというゴール設定がされたわけですね。腕が鳴ります。 ゴールは「CEOに4BTCを要求する」 ゴー

    【マジで】サイバー演習シナリオの作り方【怖い】 - freee Developers Hub
  • MySQLでIN句の中に大量の値の入ったクエリがフルスキャンを起こす話 - freee Developers Hub

    こんにちは、freee Developers Advent Calendar 2021、19日目のid:shallow1729です。昨日はtdtdsさんで【マジで】サイバー演習シナリオの作り方【怖い】でした!障害訓練後に攻撃方法を解説された時はリアリティの高さに驚きました。 僕はMySQLを使っていて発生した不思議な挙動の調査の話をしようと思います。 今回問題となったクエリ 今回話題にするクエリは以下のようなシンプルなものです。 SELECT * FROM hoge WHERE id IN (...) MySQLのパラメーター次第ですが、デフォルトの設定だとこのIN句の中の値の数が数万になると適切なインデックスが用意されていてもフルスキャンが発生する事がありました。このクエリがテーブルのほとんどのレコードを網羅するような場合や高速でレコードを大量にinsertして統計情報が追いつかないケー

    MySQLでIN句の中に大量の値の入ったクエリがフルスキャンを起こす話 - freee Developers Hub
    shallow1729
    shallow1729 2021/12/19
    書きました!シンプルなクエリでも想定外にフルスキャンを起こす事がある話です
  • pt-online-schema-changeによる負荷を好きなメトリクスでコントロールする - shallowな暮らし

    こんにちは、id:shallow1729です。この記事はMySQL Advent Calendar 202119日目のものです。昨日はid:next4us-tiさんでMySQL8.0を再起動するとアプリからつながらなくなる理由でした。インターネットって情報はたくさんあるけど分かってないと検索できないケースが多いと思っていて、ユーザーの立場に立って記事を書いているというのが伝わってすごくいいなと思いました。僕も会社のMySQlを8系にする時のトラブルシューティングをうまくやるために参考にしようと思います。 今回はpt-online-schema-changeを自分向けに改造した話です。 pt-online-schema-change(pt-osc) pt-oscはカラムのデータ型の変更のようなオンラインDDLが使えないalter tableをオンラインで行いたいケースなどに使えるツールです。

    pt-online-schema-changeによる負荷を好きなメトリクスでコントロールする - shallowな暮らし
    shallow1729
    shallow1729 2021/12/19
    書きました!pt-oscをRDSのメトリクスを見ながら動くようにした話です
  • pt-online-schema-changeとgh-ostの比較(データが損失するかもしれないAlterTable編) - kenken0807_DBメモ

    こちらのエントリーは MySQL Advent Calendar 2021の14日目の記事になります。 今年はオンラインスキーママイグレーションツールのpt-online-schema-change(pt-osc)とgh-ostをよく調べていたので、その中から一つ。 mysqlコマンドではエラーになるけど、制約違反などでデータが損失する可能性のあるAlter Tableを実施するとそれぞれどうなるか比較したいと思います。 昨今ではMySQL8.0からのInstance Alter Tableが使えるのであれば、まずこれを使うでしょう。 それ以外だとOnlineDDL機能を使ってスキーマ変更するでしょうけど、これはレプリカの遅延が発生するため、pt-oscや gh-ostを使う機会はまだ多いと感じます。 各種ツールについて詳しく説明はしません。 gh-ostについてはがんばって書いた記事があ

    pt-online-schema-changeとgh-ostの比較(データが損失するかもしれないAlterTable編) - kenken0807_DBメモ
  • 数百万件残っていたHTTPのはてなブログを4年越しにすべてHTTPS化させた話 - Hatena Developer Blog

    こんにちは id:cohalz です。はてなブログでは2021年4月の公式ブログで、すべてのブログをHTTPSに一化していくことを案内しました。 ▶ 「HTTPS配信」への切り替えと、ブログの表示の確認をお願いいたします この時点でまだ数百万件のHTTPのブログが残っている状態でしたが、2021年8月には上記の案内に追記したように、全ブログでHTTPS化を完了できました。 完了までに行ってきたことをこの記事で振り返ってみようと思います。 はてなブログのHTTPS化のこれまで はてなブログのHTTPS化は、2017年9月に最初のお知らせを行ってスタートしました。 当初の予定より時間がかかりましたが、2018年2月にHTTPS配信の提供を開始し、これ以降に作成されたブログは最初からHTTPSのみで配信されています。また、それ以前に作成されたブログでも、ユーザ側で設定を変更することで自分のブロ

    数百万件残っていたHTTPのはてなブログを4年越しにすべてHTTPS化させた話 - Hatena Developer Blog