大量データで性能テストをする際に考えた事 ~ 将来のユーザーを見据えたテスト方針 ~

こんにちは!
京都開発拠点でGoエンジニアをやっている @ysakura_ です。
私のチームではマネーフォワード クラウド会計Plusの中長期の発展を見据えて、将来のユーザーの為に必要となる改善を行っています。
現在は将来発生するパフォーマンス問題の解決にフォーカスしており、大量データによる性能テストを先日行いました。

今回は思考過程を中心に実際にどういう方針でテストを行ったかを紹介します。
アプリケーションが受け入れ可能なキャパシティを探索する場合には、今回の考え方が役に立つのではないかと思います。

 

性能テストの概要

背景と目的

私のチームでは、ユーザー数が増加しても動く事、より大規模なユーザーを受入可能にする事を目標としています。
その為、目先の問題だけにとらわれずに、まずは将来遅くなりうる機能の全容を把握する事を重視しました。
その手段として、大量データによる性能テストを行う事にしました。

内容

具体的には、以下の事を行いました。

続きを読む

マネーフォワードはエンジニア・デザイナーの福岡・京都へのUIターンをサポートします!

こんにちは、マネーフォワード人事の田鍋です。
エンジニア・デザイナー採用を2年ほど担当しておりますが、最近は東京以外での採用が活発になってきました。

本日は、エンジニア・デザイナーの方向けの福岡・京都へのUIターン費用サポートキャンペーンについて発表させていただきます!

 

なぜ、UIターン費用サポートキャンペーンを行うのか?

マネーフォワードは、東京、福岡、京都、ベトナムに開発拠点を設けております。
福岡は2017年に、京都は2019年にオープンしました。

福岡では「マネーフォワード クラウド経費」と「マネーフォワード クラウド債務支払」、京都では「マネーフォワード クラウド会計Plus」をメインに開発しています。

そして、既存事業はもちろん、新規事業の開発にも力を入れています。
(詳しくはこちらの「新規事業に挑戦してくれる人、募集します」をご参照ください!)

続きを読む

ここが楽しみ!GopherCon 2020

こんにちは!
京都開発拠点でGoエンジニアをやっている @ysakura_ です。

普段は マネーフォワード クラウド会計Plus のマイクロサービス化を担当したり、社内のRailsエンジニア向けのGo勉強会を主催したりしています。

さて、今年のGopherConには、マネーフォワードから7人参加します!
GopherConは国際的なGoのカンファレンスで、今年はオンラインでの開催になります。

https://www.gophercon.com/

この記事では、参加の経緯や楽しみなセッションについてお話しします。

参加の経緯

ここ数年、マネーフォワードでもGo言語の利用が増えてきました。
主には、マイクロサービスや新規サービスのバックエンドとして利用されています。

続きを読む

マネフォのプロダクトマネージャーが勝手に語る、pmconf 2020の見所!

初めまして!
マネーフォワードでプロダクトマネージャーをやっております、後藤と申します。

突然ですが、今月10/27(火)開催の『プロダクトマネージャーカンファレンス 2020』(以下、pmconf 2020)に参加します!

『pmconf 2020』は、年次で開かれているプロダクトマネージャーのためのカンファレンスです!

著名なプロダクトマネージャーの方々の体験談や考え方などを講演形式で伺えるイベントで、今年は昨今の世情も踏まえ、「見えない未来をリードするプロダクトマネジメント」というテーマで開かれるみたいです。

https://2020.pmconf.jp/

pmconf 2020のチケット申し込み開始当日、社内PMチャットでこんなチャットが。

続きを読む

マネーフォワードのコーポレートエンジニアがやっているSaaSの障害検知方法

こんにちは。
マネーフォワードでコーポレートエンジニアリングを担当している 下村 です。

コーポレートエンジニアリングって?という方は こちら をご参照下さい。
誤解を恐れず言えば、社内ITをハックする人 といった職種です。

今回は、弊部で実施している SaaSの障害検知方法 について共有させていただきます。

なぜSaaSの障害検知が必要なのか

我々、コーポレートエンジニアリングのミッションの一つに 社員にIT環境を安定して提供し続ける というものがあります。
ただ、障害によりSaaS製品がサービス停止になってしまうということもあります。

外部取引先との連携用に使っているSaaSなどもあるので、サービス停止してしまう=売上に影響してしまうような事態も発生してしまうこともあります。
(例:商談でWeb会議を使用しようとしていたがサービス停止により商談の機会を損失する、等)

サービス停止自体は我々では防ぎようがないので、せめてサービス停止時は 障害検知を迅速に行い、代替策の検討/提供の開始 など、被害を最小限に抑える行動が必要になります。

ではマネーフォワードのコーポレートエンジニアはどうやって障害検知しているか

あまりコストもかけたくなかったので、
Twitterのつぶやき をトリガーに障害検知しています。
具体的には下記のようにしています。

続きを読む

RSpecにおけるparameterized testingとマネーフォワードにおけるその改善

こんにちは。
Railsエンジニアのkamillleです。

マネーフォワードのアプリケーションはユーザーの権限やプラン・リクエスト時間等によって異なる振る舞いをするものが多く、そういった機能のテストではparameterized testingを利用することが多いです。マネーフォワードのRailsアプリケーションではテスティングフレームワークとしてRSpecが採用されることが多く、RSpecにおいてどのようにparameterized testingを行っているか紹介したいと思います。

RSpecにおけるparameterized testing

RSpecはparameterized testingをサポートしていないので何かしらの拡張を行う必要があります。この拡張としてrspec-parameterizedというgemがあり、このgemが選ばれているケースが多いように思います。rspec-parameterizedは同じテストロジックに対し複数の入力値や結果を指定できるインターフェースを提供してくれるとても便利なgemです。(rspec-parameterizedの使い方はGoogle先生に聞いていただければと思います🙏)

マネーフォワードでもrspec-parameterizedには長年お世話になっていますが、使っていく間でrspec-parameterizedのデメリットが目立つケースが出てきました。

rspec-parameterizedのデメリット

rspec-parameterizedはwhereに渡すブロックをトランザクション外で評価するため、例えばtravel_toで時間を固定していてもTime.currentが現在時刻として評価されたり、ブロック内でDB操作を行っている場合はDB操作がRSpecのuse_transactional_fixturesのトランザクション外で評価されるため、あるcontextで作ったデータが別のcontextでも存在したままになる、というデメリットがあります。

ちょっと例を書いてみます。

続きを読む

マネーフォワードCTOが考えていること(2020年9月)

こんにちは。
マネーフォワード CTOの中出(なかで)です。

CTOの私が、普段「なにを感じて、どんなことを考えているか」について、四半期に一回社内へ共有している内容を一部編集し、エンジニアブログに公開したいと思います。

前回はこちら:マネーフォワードCTOが考えていること(2020年6月)

 

目次

  • 技術ポートフォリオの配分を変える
  • ベトナム拠点とグローバルエンジニアについて
  • コロナ禍の新入社員への影響について

 

技術ポートフォリオの配分を変える

マネーフォワードは創業期からこれまで、Railsに集中する形で技術のポートフォリオを構成してきました。しかし私たちが中長期的に価値あるサービスを社会に提供し続けるために、技術戦略として、他の技術の割合を意識的に高めていく必要があると感じています。

これまでは、統一した技術で開発することのメリットが勝っていました。しかし多くのプロダクトがグロースしたため適材適所な技術選定を行う重要性が増しており、マイクロサービスアーキテクチャへの移行を行うことで、技術選定が柔軟に行えるようになりました。そしてエンジニア組織が拡大し、かつ世の中の技術がどんどん進化していく中で、中長期的にどんな技術が生き残るかを予測することは難しく、一つの技術に集中することのリスクが大きくなってきています。

まだまだRailsは人気がありますし、今後も多くのWeb系企業で広く使われ続けると考えていますが、以前と比べると、他の技術の選択肢が選ばれるケースが増えてきています。

続きを読む

攻撃して学ぶJWT【ハンズオンあり】

こんにちは。
マネーフォワードの新卒Railsエンジニア、きなこ と申します。
マネーフォワードX という組織で、日々プロダクトの開発に勤しんでおります😊

突然ですが皆さんは JWT という技術をご存知でしょうか?
私は趣味でCTFというセキュリティコンテストに出場するのですが、最近ホットだと感じるのがJWTに関連する攻撃です。

今年の1月に初めてJWTを題材にした問題に遭遇し、その後JWTの出題頻度が強まっていると感じ、社内に向けてJWTにまつわる攻撃を通して学ぶための記事を書いたところ、たくさんの反応をいただきました。

今回の記事はその内容を社外向けにアレンジし、ハンズオンを通して実際にJWTを改竄し、受け取るAPIを攻撃することでJWT自体を学べるようにしたものです。

本記事はJWTに興味があるWeb開発者を想定していますが、そうでない方も楽しんでいただけるようにハンズオンを用意したので是非ご覧ください🙇‍♂️

JWTの定義

JWTはRFC7519で定義されています。
しかし今回はjwt.ioを提供しているAuth0によるJWTの定義が分かりやすいため、こちらを用いて説明します。

続きを読む

「Money Forward Techbook#3」を技術書典9に出品します

こんにちは、Androidエンジニアのsyarihuです。

マネーフォワードの有志の社員が集まって立ち上げた「まねふぉ執筆部」では、技術書典7技術書典 応援祭で「Money Forward TechBook」を頒布してきました。
そして2020年9月に開催される技術書典9では、まねふぉ執筆部としては3冊目となる「Money Forward Techbook #3」を出品します。

Forward Techbook #3:まねふぉ執筆部
https://techbookfest.org/product/5886292476821504

技術書典9は、2020年9月に11日間にわたって開催される、技術書典オンラインマーケットと、それを盛り上げるYouTube Liveでのスペシャルオンラインイベントのことです。

たくさんの技術本が販売されており、いろいろな技術に出会うことができる素敵なイベントです。ぜひ一緒に盛り上げていきましょう。

「Money Forward Techbook #3」とは

「Money Forward Techbook #3」は、マネーフォワードの有志の社員によって執筆した技術同人誌です。
ドキュメント管理のためにセキュアなポータルサイトを構築した話や、マネーフォワード クラウド会計Plusの各チームメンバーによるスクラム導入話、GoとAmazon SQSを用いた非同期処理の入門、Fat Modelへの実践的な対応方法、FactoryBotの詳しい解説などマネーフォワードを支える技術が盛りだくさんの内容となっています。

続きを読む

An engineering visualization tool at Money Forward

Hi, I’m Son (ソン) at the CTO office.

One of the projects that I am currently involved in is called Fadil  -  A Web app for visualizing engineering performance. In the following, I want to explain more about the motivation behind this project, what we are doing, and what’s future of this project.

Why we built it?

As Money Forward is growing, there are around ~600 repositories handled by hundreds of engineers, which leads to difficulty in understanding the current performance of engineering in general. We already tried other engineering intelligent tools to track commit history , PR related metrics… However, every company has its own metric to know, these tools just don’t meet our requirement. Each business is unique and would require a certain level of customization. Therefore we decided to build our own engineering visualization tool (from scratch).

(Some metrics in our dashboard)

続きを読む