Slide 1

Slide 1 text

  freee の成長を支える AWS 2021.12.09

Slide 2

Slide 2 text

  自己紹介

Slide 3

Slide 3 text

3 浅羽 義之 執行役員/ プロダクト基盤事業部長
 経歴
 2003年 SRA OSS, Inc.にてPostgreSQLの開発や技術コンサルに従事
 2008年 Microsoft DevelopmentにてMS-IMEの漢字変換精度の改善に従事
 2011年 グリー株式会社にてインフラ業務からCTO室にて技術戦略策定に従事
 2013年 Spotlight, Inc.(後に楽天株式会社に買収)にてインフラ設計および新サービス立ち上げ
 2014年 ハッチ株式会社にてプロダクトオーナーとしてATSやTMSの企画および開発に従事
 2015年 freee株式会社に入社
 freeeでの役割 - プロダクト基盤事業部(社員約80名)の組織統括 - Eng新卒採用の立ち上げ (2017 ~ 2019) - 早稲田大学情報系2年生に対して毎年アルゴリズムとデータ構造の講義を実施 - 全社のカルチャーや制度を議論する委員会にEng代表として参加 (2018 ~ 2020)

Slide 4

Slide 4 text

  freee紹介

Slide 5

Slide 5 text

  Mission スモールビジネスを、 世界の主役に。 freeeは「スモールビジネスを、世界の主役に。」 をミッションに掲げ、 「だれもが自由に経営できる統合型経営プラットフォーム」 の構築を目指してサービスの開発及び提供をしております。 大胆に、スピード感をもってアイデアを具現化することができる スモールビジネスは、様々なイノベーションを生むと同時に、 大企業を刺激して世の中全体に新たなムーブメントを起こすことが できる存在だと考えております。

Slide 6

Slide 6 text

  だれもが自由に経営できる 統合型経営プラットフォーム。 VISION だれもが自由に自然体で経営できる環境をつくるために、「統合型経営プラットフォーム」を開発・提供します。 バックオフィス業務を統合することで、自動化と業務全体の効率化。さらに経営全体を可視化することで、 これまでにないスマートかつ最適なアクションまで実行できるプラットフォームへと進化させていきます。 また外部サービスとも連携したオープンプラットフォームとして、多様なビジネスニーズに対応。 ユーザーネットワークの中における相互取引の活性化も強化していきます。 プラットフォームの提供のみならず、スモールビジネスに携わる人の環境そのものを より良くしていく取り組みを行うことで、世の中の変化を促します。

Slide 7

Slide 7 text

  7 freee会計 freee開業 freee福利厚生 freeeアプリストア freee人事労務 freee会社設立 freeeスマート受発注 freeeプロジェクト管理 freee資金調達 freee申告 freeeカード プロダクトラインアップ

Slide 8

Slide 8 text

※(1)2021年9月末時点の有料課金ユーザー数(2021年10月13日における速報値)。  有料課金ユーザー企業数には個人事業主を含む。またfreeeグループ全体で集計。 2019年 6月期 2020年 6月期 2017年 6月期 2018年 6月期 2021年 10月 有料課金ユーザー 企業数(件) ユーザー基盤拡大に向けた取り組み 有料課金ユーザー企業数 (1)は 31万に 313,206 8.5万 11.6万 16万 22.4万 31.3万

Slide 9

Slide 9 text

9 2012 2013 2014 2015 2016 2017 200 100 150 50 2020 エンジニア数(人) 進化の軌跡:プロダクトとチーム 2019 2018 プロダクト リリース 会計freee 人事労務 freee 会社設立 freee マイナンバー 開業 申告freee freeeカード アプリストア公 開 プロジェクト管 理freee freee finance lab株式会社 設立 API公開 サービス 分割開始 チーム制 導入 クラウドERP コンセプト発 表 マイクロサー ビス化 開始 基盤投資 加速 プラット フォーム 元年 新規 プロダクト加 速

Slide 10

Slide 10 text

10 レイヤ 2012 - 2013 2021 Webフロントエンド CoffeeScript Backbone.js Sprockets 最新ES on Babel TypeScript / Flow / React / webpack ネイティブクライアント - - Kotlin, Swift Xamarin Webバックエンド Ruby Rails3.2 Ruby Go Java/Scala Rails 6.x インフラ・ミドルウェア Heroku -> AWS Chef AWS Kubernetes 進化の軌跡:技術スタック 全領域で技術入れ替えがほぼ一巡。Railsは3.2 ⇒ 6.xへ

Slide 11

Slide 11 text

  AWS活用事例

Slide 12

Slide 12 text

12 AWS Summit 2015での発表 https://speakerdeck.com/futoase/aws-summit-tokyo-2015-freee freeeとAWSとの歴史(2015年バージョン)

Slide 13

Slide 13 text

13 2012 2013 2014 2015 2016 2017 200 100 150 50 2020 エンジニア数(人) (再掲)進化の軌跡:プロダクトとチーム 2019 2018 プロダクト リリース 会計freee 人事労務 freee 会社設立 freee マイナンバー 開業 申告freee freeeカード アプリストア公 開 プロジェクト管 理freee freee finance lab株式会社 設立 API公開 サービス 分割開始 チーム制 導入 クラウドERP コンセプト発 表 マイクロサー ビス化 開始 基盤投資 加速 プラット フォーム 元年 新規 プロダクト加 速

Slide 14

Slide 14 text

14 2015年から向き合った課題を大きく分類すると2つ システムのスケーラビリティ向上 - 日々増えていくユーザー数やデータサイズにどう立ち 向かうか - それに付随してセキュリティどうするか? - そもそも止めない・落ちない 組織のスケーラビリティ向上 - 阿吽の呼吸で物事をすすめるのは厳しい組織サイズ - 新しいサービスがいっぱい増えてくる - 入社・退社だけでも手続きも大変(さらに退職処理し忘れるとま ずい) あらかじめお伝えしておくと今もそんなにうまくいっているわけではなく、 引き続き課題に向き合っています

Slide 15

Slide 15 text

15 1. サービス・インフラとしてのAWS 2. 分析環境としてのAWS 3. 開発環境としてのAWS 4. 業務環境としてのAWS 5. 業務環境としてのAWS 6. 社内ITとしてのAWS 話すこと

Slide 16

Slide 16 text

16 今も変わらない思想 - 使えるサービスは積極的に使う(RDSやSQSなど) - めんどくさいことはなるべく自動化 - なぜならSREが少人数だから すごい困ったこと - 微妙にサービスのデプロイの仕方や構成が違っていて把握するのが大変になってきた - 毎回デプロイツールを用意するのが面倒 - アプリエンジニアから見てもインフラ構成をキャッチアップするのが大変 - RDBMSがボトルネックになりがち サービスインフラとしてのAWS

Slide 17

Slide 17 text

17 EC2ベースの仕組みからKubernetesベースの構成に変更 - EC2+Ansible+Capistrano+Autoscalingの複雑な構成を、EKSを使ったk8s(+ArgoCD)でk8sのエ コシステムに乗る方針へ変更 - EKSくるまでは自前でKubernetesのクラスターを運用するか悩んだがちょうどよいタイミングで来 てくれてありがたかった - 絶賛移行中だが大物サービスはほぼ終わった インフラのモダン化・標準化 CloudNativeDaysでの発表資料

Slide 18

Slide 18 text

18 ~2020 freee会計のMySQLが一番サイズが大きいが、クエリチューニングでなんとかしのいできた 2020/12 半年くらいAurora for MySQLの検証を進め、切り替えを実施 当然、ミドルウェアを変えれば万事解決ではないので、さらなる改善をアプリケーション・インフラレイヤで継 続中 DB負荷対策

Slide 19

Slide 19 text

19 別セッションでPSIRT杉浦が解説しているのでここでは割愛 セキュリティ

Slide 20

Slide 20 text

20 扱うデータ量・種類が年々増えていきETLのバッチが年々重くなっていった 分析する社員が増えることでクエリをさばくのが重くなっていった 大前提:すべてのデータは個人情報を取り除かれている 種類 - MySQLのサービスデータ - ログデータ - SaaS系のデータ(Zuora, Salesforce, GitHub, JIRA, …) 分析環境としてのAWS

Slide 21

Slide 21 text

21 バッチサーバーとして素のEC2を用意し、Redshiftへインポート → 意外と初期はこれで十分だった 以前のETL

Slide 22

Slide 22 text

22 Glue による ETL データパイプライン + Redshift Spectrum やAthena(+で別のソリューションを検証中) データレイクの受け皿となるS3に、全データをParquetファイルで保存 https://speakerdeck.com/himaoka/detareikuniokeruquan-xian-zhi-yu-shi-jian-lakeformation 現行のETL(昨年のデータレイク事例祭りより引用)

Slide 23

Slide 23 text

23 サービスが増えてくると開発環境を立ち上げること自体が一苦労 さらにいうとCPUやメモリ等のリソースも結構必要になってくる Engが増えてくると、開発環境構築の容易さがかなり生産性に響いてくる 開発環境としてのAWS 以前 1. MySQLやRedisなどのミドルウェアを用意する 2. 個人用のAWSの開発リソースを準備 3. 認証系のサービスを立ち上げてあとは会計と人事労 務をbundle install, bundle exec rails sで起動 4. よーし開発するぞ 直近 1. MySQLやRedisなどのミドルウェアを用意する a. elasticsearchやhogehogeというミドルウェアも サービスによっては必要だ 2. 個人用のAWSの開発リソースを準備 3. サービスA, サービスB,サービスhogeを何個立ち上 げないといけないんだ。。 a. 起 動したけどメモリ足りなくてアセットビルドが重 すぎ b. モバイルアプリ開発だとxcode立ち上げるのもし んどい c. そもそも一個一個のサービスの起動手順わから ない 4. 開発始まらねー

Slide 24

Slide 24 text

24 リソースを必要に応じて増やしたい → それまさにクラウドじゃん 構成 - 開発環境は別AWSアカウントを用意 - SAMLでIdPと接続 - EC2 (Linux) - メモリよく使うのでR系を選ぶことが多い - 各サービスをDocker上で動かす - ECRにpush済み - sshやssmで接続 - ポートフォワードしてブラウザアクセスも化 開発環境のクラウド化

Slide 25

Slide 25 text

25 一部の業務はChromebookをシンクライアントとし、Workspacesを活用 確定申告時期はCSの増員もあるのでスケールしやすいようにクラウド化 業務環境としてのAWS

Slide 26

Slide 26 text

26 freeeでは色々なSaaSを使って業務しているが、社員が増えてきたことでアカウント管理が大変になってき た 解決策 - Active Directoryでマスターのアカウントを管理 - 各種SaaSはIDaaS (OneLogin)を使ってSSO/SCIM AWS活用ポイント - AD Serverはもともと社内のオンプレマシンで運用 - オフィス停電で止めるのも面倒でUPS入れるのもアレだし、クラウドに持っていく 社内ITとしてのAWS

Slide 27

Slide 27 text

27 freeeはみんなが同じ方向を向いて事業を進められるようにカルチャーづくりを推進している 社内だけで公開したいサイトをサクッと立ち上げることでカルチャー推進に貢献 例:社員530名がオンライン参加!freeeの全社キックオフ「フリスピフェス2022」開催レポ|にゃり|note 構成 - WAF + CloudFront + S3 + AWS Transfer for SFTP - WAFでIP addressの制限をかける - デザイナーがsftpでコンテンツをアップロードしCloudFrontを経由して配信 - しょっちゅう作る構成なのでterraformでテンプレ化 社内のイベント用にさっとサイトを立ち上げたい

Slide 28

Slide 28 text

28 課題に対してAWSはいくつかのアプローチを用意してくれている - 最初から壮大な仕組みを用意するのではなく、ライトなアプローチからすすめるのは全然アリ - 逆に言うと何度か仕組みを見直すタイミングがあると思っておいたほうが良い - いわゆる「技術的負債」と言うものかもしれないが、フェーズが変われば必要なものが変わるのは当 たり前 - 機能開発だけでなく、基盤開発もある程度投資し続ける覚悟は必要(絶妙な投資配分を決める必要 あり) B2BのSaaSは色々なトラフィックが読みやすいのでAWSのスケールさせる仕組みと相性良い - freeeの場合は確定申告期にアクセスや業務ピークが来るので、そのタイミングで様々なリソースを一時 的に確保する - 時間帯のオートスケールも組みやすい freee(B2B SaaS)を運営してみて思ったこと

Slide 29

Slide 29 text

29 データの設計しくるといちばん大変なのでしっかり設計するのが肝 - こればっかりはAWSでなんとかできるものではなく、頑張って設計する - 逆に言うと本来集中すべきことに集中できるのは、その他の必要なものをAWSで提供してくれているか ら 何より楽しい! - 知り合いからもFeedbackもらえる - SNSでも新機能のリリース等で反響ある freee(B2B SaaS)を運営してみて思ったこと

Slide 30

Slide 30 text

SaaSビジネスを盛り上げていきましょう! これからもfreeeをよろしくおねがいします!