マネーフォワードのインターンを振り返る in 2022

はじめまして。
マネーフォワード業務基盤グループでインターンをしている村上です。

「この半年インターンでどんな業務をやってきたの?」というテーマについてお話できればと思います。エンジニアインターンに興味がある方の目に止まれば幸いです。

自己紹介

マネーフォワードには2021年の9月からインターンとして入社しています。
今は修士2年になったばっかりで研究と両立しながらインターンをしています。

どうしてマネーフォワードにインターンとして参加したのか?という理由ですが、夏にマネーフォワードで募集していた2週間インターンのGoでの開発に目を惹かれたからです。インターンを行う前は個人開発でGoを利用したことはあったのですが、業務などを経験してGoでの開発力をもっと高めたいと思っていました。そんなときにマネーフォワードの短期インターンを知り、Goでの開発力を高めるチャンスだと思い参加しました。(マネーフォワードMEの無料クーポンにも目を惹かれてました…)
短期インターンが終わった後に長期インターンについてのお話も頂き、そのまま長期インターンに参加する流れとなりました。長期インターンでは、2021年の10月から週2,3回の頻度で勤務し、インフラ構築に関わる業務に取り組みました。インターン以前からインフラ構築に興味があり、社員の方との1 on 1でもインフラについて学びたいといったお話をしていたので、長期のインターンでインフラ構築に取り組めるようなタスクを割り振っていただきました。

インターン中にメンタリングして頂いた社員作のgopherくん?
オリジナルのThe Go gopher(Gopherくん)は、Renée Frenchによってデザインされました。

業務基盤グループの紹介

私が所属している業務基盤グループではマネーフォワード クラウド会計というプロダクトに関するマイクロサービスを作っています。
業務基盤グループのお仕事としては、マイクロサービス自体の開発からサービスのデプロイ先のインフラの構築まで担当しており、幅広い技術に挑戦し学ぶことができます。実際に私も短期インターンではマイクロサービスのコードを書き、長期インターンではAWSやKubernetesなどのインフラ構築を経験することができました。

インターンで取り組んだこと

短期インターンで取り組んだこと

短期インターンではあるマイクロサービスに認証機能を追加するというタスクに取り組みました。このサービスは自社プロダクト間のみにインターナルなネットワーク内でしかアクセスできないサービスでしたが、グループ会社のプロダクトからもアクセスしたいという要望があったため、認証機能を追加しました。

インターンでは、Goや gRPCといった技術について学びました。gRPCとはGoogleの開発した通信プロトコルの一種であり、gRPCのinterceptorを用いて認証機能の実装を行いました。認証機能の設計段階から社員の方にレビューをもらい、小さくPRを出して的確なアドバイスをもらうことで、手戻りが少ない適切な実装ができました。

短期インターンの感想として、学びが多く刺激的なインターンだったと思っています。特にgRPCは個人開発ではなかなか利用しない技術であり、貴重な経験ができたと思っています。また、このサービスはクリーンアーキテクチャを採用しているため、実装を行うことでクリーンアーキテクチャに対する理解がより深まったと思います。

長期インターンで取り組んだこと

長期インターンではマイクロサービスをデプロイするため、サービスプラットフォーム上にインフラ構築を行いました。サービスプラットフォームとはAWSに構築されたマネーフォワードのインフラ基盤であり、その基盤を利用することでインフラを構築するための工程をいくつかスキップすることができます。サービスプラットフォームに関することは「マネーフォワードのSRE、インフラエンジニア組織のこれから」という記事でより詳しく書かれています。
この基盤を利用しつつ、AWSやKubernetesといった技術を用いてインフラを構築しました。

長期インターンで構築したインフラの構成図

今回取り組んだマイクロサービスではRDSやS3などのAWS上のリソースを用いるため、これらをTerraformを用いて構築しました。Terraformとは、インフラに関するリソースをコードで管理することができるツールです。Terraformを用いてインフラを構築する作業は他のマイクロサービスで利用したコードをそのまま用いるだけで、ある程度はできてしまう仕組みがすでにあります。しかし、リソースを理解して書けるようになりたいと思っていたので、Terraformの公式ドキュメントを読み、それでもわからないところは社員の方に聞くようにし、理解しながらコードを書くようにしました。

開発したマイクロサービスはKubernetes上で稼働し、継続的デプロイにはArgoCDを利用しています。取り組んだ作業としては、マイクロサービスのためにnamespaceを切り、そこにDeploymentや Ingressなどのリソースを作成しました。この作業に関しては、デプロイするマイクロサービスの特性を理解してリソースを作成する必要があるため、社員の方と話し合ってレビューをもらいながら実装しました。また、サービスプラットフォームではArgoCDを利用しているため、GitOpsといったモデルについて理解することができました。

インフラを構築した感想としては、初めて利用する技術が多くて大変だったのですがAWSやTerraformについて理解し、取り組むことができて楽しかったです。
これまでVPCやEC2などをコンソールを用いて構築する経験はあったのですが、RDSなどをTerraformを用いて作成するのは初めてでした。なのでRDSについて理解した後、TerraformでRDSをどう書くのかについても知る必要があり、学ぶことがたくさんで大変でしたが楽しかったです。KubernetesについてはMinikubeを用いて触ったことはあったのですが、今回の構築でKubernetesについて知らないところもたくさんあると自覚できたので、Kubernetes上で稼働させるマイクロサービスを1から構築し、より深く理解したいと思うようになりました。

感想

インターンを経験する前に期待していたGo力を高めるだけでなく、以前から興味があったインフラについても学ぶことができ、大変充実したインターンでした。
自分が経験したことがない技術についても、実際に触れて構築することができ、技術的な成長も実感することができました。特に個人開発だとなかなか利用しないgRPCやKubernetesを理解するいい経験になりました。
一方でインターンでの反省点もあり、理解していない技術を調べるときにもうすこし早くヘルプを出すことができれば、開発に取り組むまでの時間の短縮ができたのではないかと考えています。
今回のブログでは触れなかったのですが、インターン中にマネーフォワードで働いてる様々な方と面談を組んで頂き、新卒関係なく挑戦できる環境やエンジニアの英語化に力を入れているなどのマネーフォワードの魅力についても理解することができました。

最後に

今年の夏も短期インターンを募集するので、応募をお待ちしております。
一緒にGoでGo! Go!


マネーフォワードでは、エンジニアを募集しています。
ご応募お待ちしています。

【会社情報】
Wantedly
株式会社マネーフォワード
福岡開発拠点
関西開発拠点(大阪/京都)

【SNS】
マネーフォワード公式note
Twitter – 【公式】マネーフォワード
Twitter – Money Forward Developers
connpass – マネーフォワード
YouTube – Money Forward Developers

Pocket