S3のファイルをX-Accel-Redirectで配信する

こんにちは。
マネーフォワード クラウドBox (以下MFCBox)というサービスを開発しています、RailsエンジニアのReoです。

MFCBoxはその名の通りストレージのマイクロサービスなのですが、ファイルの配信方法においてセキュリティと処理の負担軽減を考慮した結果、NGINXの機能である X-Accel-RedirectAWSの署名バージョン 4 を利用することにしました。

 

X-Accel-Redirect

こちらが、公式ドキュメントの概要説明です。

X-accel allows for internal redirection to a location determined by a header returned from a backend.
This allows you to handle authentication, logging or whatever else you please in your backend and then have NGINX handle serving the contents from redirected location to the end user, thus freeing up the backend to handle other requests.
https://www.nginx.com/resources/wiki/start/topics/examples/x-accel/

X-Accel-Redirectは、バックエンドサーバからのレスポンスヘッダーを用いて内部リダイレクトを可能にする仕組みです。
X-Accel-Redirectを用いることで、認証のみをバックエンドで行い、コンテンツ配信はNGINXに肩代わりさせることができるようになります。
コンテンツ配信は一般に大量のメモリを必要としバックエンドサーバの負荷を高めます。コンテンツ配信に優れたNGINXへその処理を移譲し、高速配信を実現するとともにバックエンドサーバの負荷を低減させることができるのが大きなメリットです。

MFCBoxでは

  • 認証されたユーザーにのみファイルを配信する
  • 多数の社内サービスからAPI経由でファイルを配信する

これらの要件が求められていたため、サーバ負荷を低減し高速配信を可能にするX-Accel-Redirectを採用しました。

続きを読む

インフラ留学を糧に理想の開発を目指して組織を作るまでの話(Plus Ops でこんにちは)

マネーフォワードで 『Plus Ops グループ』と『わり算グループ』というグループに所属しつつ、バックエンドのエンジニアをしています 古濱 といいます、こんにちは。
お酒と Rust が好きです。最近良かった日本酒は茨城の松盛です。

少し前に『わり算グループ』の古濱として『さくっと各サービスのライブラリのバージョンを見ようの巻』という記事を投稿しました。趣旨は異なりますが宜しければこちらも是非読んでみてください。

余談はさておき、今日はマネーフォワード社内で約半年間にかけて行われたインフラ留学制度とそれを元に 『Plus Ops グループ』という新しい組織を作ることになった話をしようと思います。

免責事項

この試みはまだ始まったばかりなので特に成果というものはまだ出ていません。

しかし試みを行うきっかけとなったインフラ留学制度が素晴らしかったのでその紹介と、また僕たちがどういった開発組織を目指していてこの度どうして新しい組織を作ったのかという部分の紹介の記事と出来ればと思っています。

遡って 9 ヶ月ほど前

2020 年の 3 月頃、チームのチャットにこんなメッセージが投下されました。

ちょうどクラウドインフラに興味を持っていた僕はすぐに申し込むことにしました。僕はこの時以下のような期待値を留学に対して持っていました。

続きを読む

スクラムチームで実践するDiscordを活用したスウォーミング

Money Forward Kyoto Advent Calendar 2020、22日目担当です。

こんにちは!
京都開発拠点でエンジニアリングマネージャ 兼 バックエンドエンジニアをしている大倉(@okeicalm) です。
スクラム開発で マネーフォワード クラウド会計Plus の機能改善を実現するチームのマネジメントを担当しています。

私たちのチームではスクラムの価値観、プラクティスを取り入れながらプロダクトを開発しています。
スクラムガイド2020(pdf) でも以下のように言及されているスウォーミングについて、私たちのチームでも実践していますので、『やってみてどうだったか』についてお話していきます。

開発者が計画を調整できるのは、デイリースクラムのときだけではない。
スプリントの残りの 作業を適応または再計画することについて、より詳細な議論をするために、開発者は一日を通じて頻繁に話し合う。

スウォーミングとは

スウォーミングの概要については、こちらのブログ記事 の解説が大変よくまとまってらっしゃったので引用させて頂きます。

続きを読む

京都開発拠点におけるインターン生の活躍

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

今回は、京都開発拠点におけるインターン生の活躍について紹介します。
京都開発拠点にはインターン生が多数在籍しています。自分のチームでも兼務含めて9名のインターン生が所属しており、今回はGoやインフラ系のインターンを中心に紹介します。実際にインターン生にお願いしているタスクも紹介しますので、京都開発拠点でのインターンのイメージをつけて貰えると思います。

京都開発拠点のインターン生事情

現在、京都開発拠点では14人のインターン生が所属しています。うち13人が長期インターンで、内訳としては、ML4人, Rails4人, Go5人です。
就業時間は15 ~ 20時間前後の方が多いです。
就業時間があまり確保できない問題も一時期ありましたが、リモートでのインターンが促進された結果、この問題は比較的解決した様に思います。

インターン生を多数受け入れている背景

これは、関西では学生の就業機会が少ないため、優秀な学生との接点を持ちやすい事が大きな理由です。
京都開発拠点は京都の三条に位置しており、京都の大学からアクセスが良い事もあり、京都大学や同志社大学の学生が比較的多いです。

私個人として、関西の学生に活躍の機会を提供する事で、関西圏に就職する学生を増やしたい想いがあります。
私は京都大学出身かつ京都にUターンした身なので、就職やインターンの選択肢がほぼ東京に集中してしまう状況に辛いものを感じていました。関西の学生に活躍の機会を提供することで、学生も関西で成長できるWinWinな状態を目指しています。

続きを読む

開発チームで業務知識を獲得するための取り組み

Money Forward Advent Calendar 2020の20日目担当です。

こんにちは!
京都開発拠点でエンジニアリングマネージャ 兼 バックエンドエンジニアをしている大倉(@okeicalm) です。
スクラム開発でマネーフォワード クラウド会計Plusの機能改善を実現するチームのマネジメントを担当しています。ですので、チームの開発力を上げていくことも私の重要なミッションです。

私たちのチームでは会計システムを開発しているので、業務知識として会計に関する知識が必要となります。
入社時から会計に明るいエンジニアはほとんどいないため、基本的にはプロダクトオーナーの杉浦さん(経理部出身、会計のプロ)に解説をしてもらいながらキャッチアップしています。
これにより開発を進めることはできているのですが、
プロダクトオーナーへの依存度が大きい
プロダクトオーナーに質問・確認するコミュニケーションが必要になるのでスピードが上がらない
という課題が存在しています。

上記の課題を解決するために、チームで勉強会を開催していますので紹介させて頂きます。

続きを読む

拠点サイトを作って文化の発信源が生まれた

この記事はMoneyForward Kyoto Advent Calendar 2020 – Adventarの17日目の記事です!

こんにちは、マネーフォワード京都開発拠点のsatomariです。実は京都開発拠点には、拠点のWebサイトがあります。
この記事では、拠点サイトを作るとどんな事がおこるのか?実際に1年開発・運用してみたのでその振り返りを書きたいと思います!

なぜ作ろうと思ったのか?

続きを読む

インターンでの性能改善タスクの取り組み

初めまして!
京都開発本部テクニカルアーキテクトグループ(KTA)でインターンをしているonetkです。

この記事ではインターンを始める前に気になっていた「京都でインターンとしてどのようなことをしているのか」について、以前取り組んでいた性能改善のタスクを例に少し掘り下げた内容となっています。

概要

マネーフォワード クラウド会計Plusでは会計という大量のデータを扱うシステムの都合上、一部の機能が重くなることがあります。
そこで、KTAチームでは既存機能の性能改善を主に行っており、インターン生でも1タスクに丸々チャレンジさせて貰えます!

今回は丸々取り組ませていただいた1タスクが一段落したので過程も含めつつまとめています。内容は大量のRedisの読み込みの影響で特定条件下で2~3分かかっていた一機能の原因探索と改善です。

タスクについて

京都拠点では日々Datadogなどでパフォーマンスも改善できるよう監視しています。
今回課題となった機能の計測結果を覗いてみると、以下のように平均して2分ほど時間がかかっていることが分かりました。

その原因を見てみるとRedisの読み/書き回数が1.25万回と異常に多い事が分かったため、今回はこれを解決していくことになります。

続きを読む

2020年度版おすすめ書籍 in マネフォ京都メンバー

TL;DR

これはMoneyForward Kyoto Advent Calendar 2020の14日目になります。
担当は本年はこれが最後のアドベントカレンダーになる予定の luccafort です。
投稿記事5つはね…多すぎたよ。

開発メンバーが選ぶ、おすすめの技術書【2020年度】 – RAKUS Developers Blog | ラクス エンジニアブログが良さそうなので、マネフォ京都版を作りたくなり、やってみました!

ルール

以下の条件を満たしていれば技術書から一般書籍、あるいは漫画や雑誌でも何でもOKです!という緩い制約で募集しました。

  • 2020年に読んだ/読んでいる/読もうとしている書籍
  • 選んだ理由が書ける

というわけで京都メンバーが普段どんな書籍や技術書に興味を持って読んでいるのか個人的に気になっていたので大変楽しみです!

続きを読む

1年間地方コミュニティーを運営して感じた成長の軌跡と未来の課題

TL;DR

これはMoneyForward Kyoto Advent Calendar 2020の13日目になります。

今日はぼくがマネーフォワードに入ってから主催することとなったkyoto.goというローカルGoコミュニティーの運営を振り返ってみようと思います。

今月5つアドベントカレンダーの記事を書いていて過去最多を更新しました luccafort が担当です。
connpassのイベントページとコミュニティーで使用しているscrapboxのURLを貼っておきますので、もし少しでも興味のあるかたは遊びにきてください。お待ちしてまーす!!

立ち上げの期待値とその成果

まずは立ち上げの経緯から…といいたいところですが、コミュニティーを立ち上げようとした理由や経緯は以前個人ブログのほうにまとめを書いたのでそちらをみていただくのが早いと思います。
kyoto.goコミュニティーを作ったった

上記のブログでも3行でまとめていますが当初期待したことは大きく以下の3つかなと考えています。

続きを読む

PO輪読会 朝の部の取り組みについて

マネーフォワード京都拠点のissanです。
フロントエンドエンジニアをしていますが、プロダクトオーナー(以降、PO)のお仕事にも興味があり勉強中です!

この記事は Money Forward Kyoto Advent Calendar 2020 – Adventar の11日目の記事で「PO輪読会朝の部」の取り組みについて紹介します。
「POの勉強ってどうしたらいいの?」「本を読む習慣がない」というかたの参考になれば幸いです。

PO輪読会とは

京都拠点でマネーフォワード クラウド会計PlusのPOをしている杉浦さん
「POが増えてきて、勉強会がしたい!本を読んで意見を言い合いたい!」という声から始まりました。
(詳しいお話はこちら

社内の色んなプロダクトのPOが集まり、
POに関連している書籍を毎週数章ずつ読んで、
「よかったこと・よくなかったこと・やるぞー」の3つに分けて付箋を書いて、
その中で気になったものに対して議論する会です。

続きを読む