Upgrade to Pro — share decks privately, control downloads, hide ads and more …

freee_の成長を支える_AWS

 freee_の成長を支える_AWS

2021/12/9にSaaS on AWS Day 2022で講演した資料です。
https://www.sbbit.jp/eventinfo/67066

Yoshiyuki Asaba

December 09, 2021
Tweet

More Decks by Yoshiyuki Asaba

Other Decks in Technology

Transcript

  1. 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)
  2. ※(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万
  3. 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 コンセプト発 表 マイクロサー ビス化 開始 基盤投資 加速 プラット フォーム 元年 新規 プロダクト加 速
  4. 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へ
  5. 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 コンセプト発 表 マイクロサー ビス化 開始 基盤投資 加速 プラット フォーム 元年 新規 プロダクト加 速
  6. 14 2015年から向き合った課題を大きく分類すると2つ システムのスケーラビリティ向上 - 日々増えていくユーザー数やデータサイズにどう立ち 向かうか - それに付随してセキュリティどうするか? - そもそも止めない・落ちない

    組織のスケーラビリティ向上 - 阿吽の呼吸で物事をすすめるのは厳しい組織サイズ - 新しいサービスがいっぱい増えてくる - 入社・退社だけでも手続きも大変(さらに退職処理し忘れるとま ずい) あらかじめお伝えしておくと今もそんなにうまくいっているわけではなく、 引き続き課題に向き合っています
  7. 16 今も変わらない思想 - 使えるサービスは積極的に使う(RDSやSQSなど) - めんどくさいことはなるべく自動化 - なぜならSREが少人数だから すごい困ったこと -

    微妙にサービスのデプロイの仕方や構成が違っていて把握するのが大変になってきた - 毎回デプロイツールを用意するのが面倒 - アプリエンジニアから見てもインフラ構成をキャッチアップするのが大変 - RDBMSがボトルネックになりがち サービスインフラとしてのAWS
  8. 22 Glue による ETL データパイプライン + Redshift Spectrum やAthena(+で別のソリューションを検証中) データレイクの受け皿となるS3に、全データをParquetファイルで保存

    https://speakerdeck.com/himaoka/detareikuniokeruquan-xian-zhi-yu-shi-jian-lakeformation 現行のETL(昨年のデータレイク事例祭りより引用)
  9. 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. 開発始まらねー
  10. 24 リソースを必要に応じて増やしたい → それまさにクラウドじゃん 構成 - 開発環境は別AWSアカウントを用意 - SAMLでIdPと接続 -

    EC2 (Linux) - メモリよく使うのでR系を選ぶことが多い - 各サービスをDocker上で動かす - ECRにpush済み - sshやssmで接続 - ポートフォワードしてブラウザアクセスも化 開発環境のクラウド化
  11. 26 freeeでは色々なSaaSを使って業務しているが、社員が増えてきたことでアカウント管理が大変になってき た 解決策 - Active Directoryでマスターのアカウントを管理 - 各種SaaSはIDaaS (OneLogin)を使ってSSO/SCIM

    AWS活用ポイント - AD Serverはもともと社内のオンプレマシンで運用 - オフィス停電で止めるのも面倒でUPS入れるのもアレだし、クラウドに持っていく 社内ITとしてのAWS
  12. 27 freeeはみんなが同じ方向を向いて事業を進められるようにカルチャーづくりを推進している 社内だけで公開したいサイトをサクッと立ち上げることでカルチャー推進に貢献 例:社員530名がオンライン参加!freeeの全社キックオフ「フリスピフェス2022」開催レポ|にゃり|note 構成 - WAF + CloudFront +

    S3 + AWS Transfer for SFTP - WAFでIP addressの制限をかける - デザイナーがsftpでコンテンツをアップロードしCloudFrontを経由して配信 - しょっちゅう作る構成なのでterraformでテンプレ化 社内のイベント用にさっとサイトを立ち上げたい
  13. 28 課題に対してAWSはいくつかのアプローチを用意してくれている - 最初から壮大な仕組みを用意するのではなく、ライトなアプローチからすすめるのは全然アリ - 逆に言うと何度か仕組みを見直すタイミングがあると思っておいたほうが良い - いわゆる「技術的負債」と言うものかもしれないが、フェーズが変われば必要なものが変わるのは当 たり前 -

    機能開発だけでなく、基盤開発もある程度投資し続ける覚悟は必要(絶妙な投資配分を決める必要 あり) B2BのSaaSは色々なトラフィックが読みやすいのでAWSのスケールさせる仕組みと相性良い - freeeの場合は確定申告期にアクセスや業務ピークが来るので、そのタイミングで様々なリソースを一時 的に確保する - 時間帯のオートスケールも組みやすい freee(B2B SaaS)を運営してみて思ったこと