タグ

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

  • MySQLのロックに起因するブロックタイムアウト撃退記 - inSmartBank

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

    MySQLのロックに起因するブロックタイムアウト撃退記 - inSmartBank
  • 機能リリース後のカオス!荒れたSentryのアラート通知をどう立て直したか - inSmartBank

    はじめに こんにちは、業務委託でサーバーサイドエンジニアとしてスマートバンクにジョインしているakshimoといいます! ソフトウェア開発は「作って終わり」という訳にはいかず、その後の運用も重要かと思います。その中でもエラーの監視とその通知システムは不可欠です。この記事では、私たちのチームのエラー監視にて起こった問題とその対策、そして普段行っている運用業務の流れについて書きたいと思います! 前提・課題 リリースに伴いエラーが多発 私たちのチームでは、機能改善の一環としてある外部サービスを新しいものに移行するプロジェクトを進めていました。しかし、移行後に予期しない問題が多数発生してしまいました… 具体的には以下のような問題が発生していました。 外部サービスの各エンドポイントでのタイムアウト サプライズ的な想定外の仕様 実装の不備によるバグ これらのエラーには放置するとユーザー体験を大きく損な

    機能リリース後のカオス!荒れたSentryのアラート通知をどう立て直したか - 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
  • ミニマムな React Web アプリケーションの技術スタックを大公開! - inSmartBank

    はじめに こんにちは。サーバーサイドエンジニアの mokuo です。 最近、ミニマムな React アプリを実装する機会がありました。 社内のメンバーにアドバイスをもらいながら、今(2024年前半) React アプリをミニマムに作るならこんな感じかな、という構成になった気がするので、ご紹介したいと思います。 実例の1つとして参考にしていただけますと、幸いです。 はじめに 文 📝 機能要件 ⚒️ 採用したツール (npm モジュール) 📁 ディレクトリ構成 👨‍💻 プロトタイピングの実施 🍩 おまけ コンポーネント設計について フロントエンドに DDD のエッセンスを取り入れてみたい おわりに 文 📝 機能要件 社内の限られた CS メンバーのみが利用する、管理画面を開発しました。 バックエンドは Golang で実装される API サーバーで、認証機能以外だと、2つの機能

    ミニマムな React Web アプリケーションの技術スタックを大公開! - inSmartBank
  • YAPC::Hiroshima 2024でのスポンサー活動の振り返り - inSmartBank

    こんにちはスマートバンクでCTOをしております@yutadayoです。2/10に YAPC::Hiroshima 2024 が開催され、スマートバンクではイベントスポンサーをさせていただきました。 そして、今回もイベントへのスポンサーを通して様々なコミュニティイベントや広報企画を実施してきました。YAPC当日の感想も交えて、今回のスポンサーに関連して行った施策を振り返っていければと思います。 スポンサーの経緯 スマートバンクでは今年もエンジニアが参加するカンファレンスにスポンサーすることを決めておりました。しかし、スポンサーを行うカンファレンスは主にB/43の開発言語として使っているRuby関連のカンファレンスに限定して行う予定だっため、YAPC::Hiroshima 2024にスポンサーを行う予定は当初はありませんでした。 しかし、社内の登壇熱の高まりから、YAPCにプロポーザルを出した

    YAPC::Hiroshima 2024でのスポンサー活動の振り返り - inSmartBank
  • エンジニア採用広報に全社で取り組み、認知を広げた半年間 - inSmartBank

    こんにちは。スマートバンク広報のchika(@chika_iwa_)です。 年の瀬ですが、この半年間で取り組んできた当社のエンジニア採用広報について書いてみます。 エンジニア採用広報を格的にスタートさせたいけれど、どう進めたらいいか分からない 採用広報の専任がいない中、なかなか組織として採用広報に注力しきれない このようなお悩みを持つ方への参考として「全社でエンジニア採用広報に取り組む背景とプロセス」についてご紹介できたらと思います。 (先日、DevRel Guildのミートアップで登壇した内容のサマリです!) もともとの体制ときっかけ 職種横断でエンジニア採用広報チームを立ち上げた背景 課題1.戦略の解像度を上げられていない 課題2.現場をうまく巻き込めていない 課題3.リソースが足りない どのようにエンジニア採用広報を進めたか 1.課題の整理をする 2.ゴールの認識をそろえる 3.タ

    エンジニア採用広報に全社で取り組み、認知を広げた半年間 - inSmartBank
  • サブスクリプション課金システム開発ケーススタディ - inSmartBank

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

    サブスクリプション課金システム開発ケーススタディ - inSmartBank
  • reviewdog x Custom FormatterでRuboCopの自動修正を提案させるようにしました - inSmartBank

    reviewdog/action-rubocopというOSSプロジェクトをご存知でしょうか。Rubyの静的解析ツールであるRuboCopGitHub Actionsで実行し、指摘箇所にコメントを付けてくれる便利なCustom Actionです。 記事では筆者がこのOSSを改良して実装したSuggestion featureという便利機能とその実装についてご紹介します。RuboCopをお使いの方、より良いRuboCop生活をお求めの方、静的解析が好きな方向けの記事となります。 なお、この記事は2023-06-21に行われたGotanda.rb#53@ギフティで"RuboCop Custom Formatter for Reviewdog Diagnostic Format"と題して筆者が行った発表をもとにしています。 前提となる知識 初めにreviewdog/action-rubocop

    reviewdog x Custom FormatterでRuboCopの自動修正を提案させるようにしました - inSmartBank
  • GitHub Appを使ってDependabotが作るpull requestを自動マージさせる - inSmartBank

    こんにちは。皆さんは自身がメンテナンスするソフトウェアが依存するパッケージの更新、いわゆるdependency updateをどのような形で行っていますか? SmartBankが提供するサービスB/43の開発では主にGitHubのDependabot version updates機能を用いて定期的なdependency updateを行っています*1。これは簡単にいえばGitHub repositoryにYAMLファイルを置いておくだけで自動的かつ定期的にversion updateのpull requestを作ってくれる便利なやつです。 便利ではあるのですが、アプリケーション規模やチーム体制によっては日々作成されるpull requestをさばくのに苦労することがあります。記事ではそのような運用課題を解決するために導入した、GitHub Appを使った自動マージについて解説します。

    GitHub Appを使ってDependabotが作るpull requestを自動マージさせる - inSmartBank
  • デザインシステムを活用した職種横断のプロトタイピング - inSmartBank

    みなさん、初めまして! 2022年12月より SmartBank に入社しました、プロダクトマネージャーの @jouykw です。 今回は私が最近 SmartBank に入ってカルチャーショックを受けた、Figmaでのデザインシステムを活用したプロダクトづくりプロセスについて、プロダクトマネージャーの視点から驚いた点や良いと思った点を皆さんにご紹介したいと思います! 誰のための記事か? SmartBank のプロダクトづくりプロセス デザインシステムを活かしてプロダクトマネージャーでもプロトタイピング 短期的な効用:各ステークホルダーの観点から 長期的な効用:プロダクトマネジメントの観点から 他手段比での留意点と可能性について おわりに 誰のための記事か? Figma でのデザインシステムを活用したプロダクトづくりに関心がある方へ デザインシステムを整備することの効用に関心がある方へ Sm

    デザインシステムを活用した職種横断のプロトタイピング - inSmartBank
  • アイデアと上手くつきあう方法 - inSmartBank

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

    アイデアと上手くつきあう方法 - inSmartBank
  • CRAからViteへ移行して190倍高速なdev server起動を得る - inSmartBank

    ある日突然、あなたに190倍(当社比)高速なdev serverができたらどうしますか...? この投稿ではWebアプリケーションのビルドツールをCreate React AppからViteへと移行した背景・手順・結果について説明します。 Vite等のビルドツールやフロントエンドアプリケーションの開発体験に興味・関心がある方、中でもCreate React App(以下、CRA)を利用していてdev server起動やHot Module Replacementの速度に課題を抱える方の参考になれば幸いです。 前置き SmartBankが提供するB/43の開発チームはユーザーが利用するモバイルアプリだけでなく、カード発行会社としてのバックオフィス業務を支援する管理機能を内製しています。 人確認業務に用いる画面イメージ。データはもちろんダミー B/43にちなんでA/43*1 と名付けられたこ

    CRAからViteへ移行して190倍高速なdev server起動を得る - inSmartBank
  • B/43カード決済システムのしくみ(前編) - inSmartBank

    こんにちは! スマートバンクでソフトウェアエンジニアをしている uribou です。 今回は B/43 のカード決済システムのしくみについて解説しようと思います! B/43 では Visa のプリペイドカードを発行しており、普段はあまり触れる機会のないカード決済の業務やシステムの裏側を知ることができます。 前編ではカード決済システムの一般的なしくみ、後編では B/43 での詳細な実装方法について解説していこうと思います! カード決済の基的なしくみ スマートバンクは Visa のプリペイドカードを発行しているカード発行会社になります。 このカードは、世界中どこの Visa 加盟店でも利用できますが、これは Visa が運営している決済ネットワークに B/43 のシステムを繋ぎこむことで実現しています。 カード決済システムを作るためには、Visa が要求する業務やシステムを構築し、Visa

    B/43カード決済システムのしくみ(前編) - inSmartBank
  • B/43のeKYCシステムの裏側 - inSmartBank

    こんにちは。スマートバンクでサーバーサイドエンジニアをしている mitani です。 B/43をAppStoreに公開してから1年近く経ちました。iOSDC Japan 2021 で B/43 の人確認フロー(eKYC)の構築についてトークしました!の記事でも紹介した通り、B/43は資金移動業ライセンスのもとサービスを運営しているため、eKYCが必須となっています。このエントリーでは1年近く自社で行ってきたeKYCシステムの裏側をご紹介したいと思います。 eKYCとは eKYC(electronic Know Your Customer)とはオンライン上で行う人確認のことです。B/43は資金移動業ライセンスのもとで金融サービスを提供しているため、100万円に相当する額以下の為替取引を行うことができます。前払式支払手段*1に比べて高額であり出金もできるため、マネー・ローンダリングやテロ資

    B/43のeKYCシステムの裏側 - inSmartBank
  • 1