ブックマーク / blog.smartbank.co.jp (9)

  • オイ、そこのSELECT COUNT。余計な数え上げに意味なんかねえ - inSmartBank

    こんにちは。MySQLは秋の季語とする一派が世に存在していることを知り、私もMySQLに関わる記事を書いてみようと筆を取ることにしました。 さて、リレーショナルデータベースをバックエンドとするWebアプリケーション開発において、特定の条件に合致するレコードがN件だけ存在するかどうかを確認するロジックは頻出といえます。プログラマとして一度は書いたことがあるのではないでしょうか? この記事ではそのような件数カウントを行うためのクエリが引き起こした性能劣化と、その改善アプローチについて紹介していきます。 なお、記事の内容はMySQLを前提としており、アプリケーションコードの例はRuby on Railsを用いますが特別な前提知識は必要ありません。コードの雰囲気だけ感じ取っていただければと思います。 ありがちなコード if query.count == n の問題 冒頭で述べた通り、特定の条件に

    オイ、そこのSELECT COUNT。余計な数え上げに意味なんかねえ - inSmartBank
  • MySQLのロックに起因するブロックタイムアウト撃退記 - inSmartBank

    こんにちは。スマートバンクのサーバーサイドエンジニアをやっておりますid:moznionです。 すっかり秋めいてきましたね。秋といえばMySQL*1、ということで今回は先日解消した「MySQLのロックに起因するブロックタイムアウト」のトラブルシューティングついて記していきたいと思います。 事の発端 ある時を境にSentryに ActiveRecord::LockWaitTimeout というエラーがしばしば報告されるようになっていました。 SentryにActiveRecord::LockWaitTimeoutが上がってきている様子 Mysql2::Error::TimeoutError: Lock wait timeout exceeded という文言から、MySQL上でロックを取っている他のクエリにブロックされ、そのブロックが長時間に渡ったため自クエリがタイムアウトしてabortしてし

    MySQLのロックに起因するブロックタイムアウト撃退記 - inSmartBank
  • MySQL 8.0アップグレード後に性能劣化したクエリ: セミジョイン編 - inSmartBank

    データベースアップグレード後の性能劣化、イヤですよね。 去る2023年某日、弊社ではAmazon Aurora MySQL 互換エディション 2 (MySQL 5.7 互換) から Aurora MySQL 互換エディション 3 (MySQL 8.0 互換) にアップグレードしました。当時の背景やアップグレードに関する知見は以下の記事をぜひ読んでみてください。 blog.smartbank.co.jp ソフトウェアバージョンアップをするとき、旧バージョンが抱えていた問題の解決などの恩恵を我々は期待します。しかし時には予期せぬデグレーションに遭遇することもあります。我々のMySQL 8.0へのアップグレード前後においてもいくつかの問題に遭遇しました。 記事ではそんな問題の一つ、MySQL 8.0のオプティマイザが選択したセミジョイン最適化が性能劣化を引き起こした事例と解決方法について紹介し

    MySQL 8.0アップグレード後に性能劣化したクエリ: セミジョイン編 - inSmartBank
  • 新入社員が、新入社員オンボーディングを整備しました - inSmartBank

    ゲシュタルト崩壊起こしそうなタイトルですいません。SmartBank PMの國分です。BNBN(ぶんぶん)と呼ばれています。2022年6月入社です。 転職直後はどんな職種であっても、成果を出すのは難しい期間ですよね〜。PMにとってもそれは同様で、会社が積み重ねてきた意思決定とその背景、プロダクトの設計思想、デザインに含まれているコンテキスト、ドメイン特有の制約条件、何も分からない状態なんです。 プロダクトに関する意思決定をする上では、コンテキスト理解は何より重要で、その理解がないことには価値のある仕事はできない。とはいえキャッチアップしているだけで、その間に貢献実感を持てないのは精神衛生上良くない…。 そんなことを考えているときにnotePMじつぞんさんが書いたエントリを見つけました。 note.com 「前提知識がなくてもできること」で貢献しに行くのは、すごくいいな〜と思い、自分も真似

    新入社員が、新入社員オンボーディングを整備しました - inSmartBank
  • サブスクリプション課金システム開発ケーススタディ - inSmartBank

    世はまさに大サブスクリプション時代。この潮流の中で弊社スマートバンクもまた、去る2023年7月12日にB/43プラスというサブスクリプションサービスをリリースしました。 サブスクリプションといえばユーザーに提供されるコンテンツや機能といった直接的な価値に焦点が当たりがちですが、その土台にはサブスクリプションビジネスを成立させるための課金システムがあります。記事では筆者が行った課金関連の開発を振り返ってみて重要だったポイントや工夫点を伝えてみたいと思います。 すでに世に多くのサブスクリプションサービスがある中で、課金システムの実装はコモディティ化した単純な作業に思えるかもしれません。しかしながら自社サービスにてゼロから実現するとなると、想像よりも多くの思考と意思決定が必要とされる、エンジニアリング観点ではとても奥深い題材といえます。いち開発プロジェクトのケーススタディ、あるいはいちプログラ

    サブスクリプション課金システム開発ケーススタディ - inSmartBank
  • サブスクリプション機能制御の設計における勘所 - inSmartBank

    こんにちは、スマートバンクでアプリエンジニアをしている ロクネム です。 弊社では B/43という家計簿プリカアプリ を提供しており、つい先日サブスクリプションサービス「B/43プラス」をリリースしました。 このようなサブスクリプションを提供するサービスにおいては、そのサブスクリプションを利用しているユーザーのみが特定の “機能” を使用できるように “制御” する必要があるかと思います。 このサブスクリプションの機能制御を実装するにあたって、「サブスクリプションが有効ではない場合は機能を制限する」という設計では実は不十分で、その他にもさまざまな要件を考慮した上でより柔軟な設計を行う必要があります。 記事では、このようなサブスクリプション機能制御の設計における勘所について、B/43プラスを例にご紹介します。 ※ 記事は B/43 Tech Talk 〜 Fintech×サブスクリプショ

    サブスクリプション機能制御の設計における勘所 - inSmartBank
  • Aurora MySQLをMySQL8.0へ移行した話 - inSmartBank

    こんにちは!SREを担当してます上平と申します。 このエントリーではAurora MySQL5.7互換からMySQL8.0互換への移行を実施した際の流れや学びに関して紹介したいと思います! B/43 では Aurora MySQL5.7系をサービスリリースから使っており、Aurora MySQL バージョン2のサポート終了日(2024/10/31)が近づいているのもあったので、移行することにしました。 Amazon Aurora バージョン - Amazon Aurora これからAurora MySQL8.0へ移行を検討されている方の参考になれば幸いです。 想定される読者 Aurora MySQL 5.7系を使っていて、アップグレードを検討している方 実際の Aurora MySQL 8.0 への移行手順を知りたい方 AWS インフラに興味がある方 前提 Aurora MySQL5.7互

    Aurora MySQLをMySQL8.0へ移行した話 - inSmartBank
  • アイデアと上手くつきあう方法 - inSmartBank

    こんにちは。プロダクトマネージャーの@more_tです。 pmconf2022の登壇機会をいただき「アイデアと上手くつきあう方法」というトピックで発表させてもらいました。 このエントリーは発表内容の書き起こし記事です。発表の中から特にとりあげたいポイントを中心に補足や加筆しています。登壇のアーカイブ動画も公開されています。 安全に温泉に通いたい 最初にかんたんなクイズを持ってきました。こちらの文章からどういった解決策が取れるか30秒程度で考えてみてください。 「あなたはとある村の村長です。 ある日、村の近くの森に温かい温泉が湧いていることに気がつきました。 しかし温泉へ向かう橋は先日の大雨で流されてしまい、 復旧が必要な状況です。 村の皆は温泉が大好きで、橋の使えない川を渡っていく人もいれば、 わざわざ遠回りしていく人もいる状況です。 さて、村人たちが安全に温泉を利用するためにあなたは村長

    アイデアと上手くつきあう方法 - inSmartBank
  • 「B/43」のAndroidアプリをリリースしました!使用している技術を紹介します。 - inSmartBank

    こんにちは。 「B/43」のAndroidアプリ開発に携わっている あんざいゆき(yanzm) です。 先日「B/43」のAndroidアプリをリリースしました🎉🎉 play.google.com この記事では「B/43」のAndroidアプリで採用している技術や苦労した点、工夫した点などを紹介します。 採用している技術(抜粋) Jetpack Compose 一番の特徴は Full Jetpack Compose にした点です。 開発のお話をいただいた今年の春時点で Jetpack Compose は beta 版がリリースされており、夏には stable 版がリリースされることも発表されていました。 今から開発するなら Jetpack Compose でやりたいと思っていたところ、iOS / Android エンジニアをしている nakamuuu からも Jetpack Compo

    「B/43」のAndroidアプリをリリースしました!使用している技術を紹介します。 - inSmartBank
  • 1