Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
freee_の成長を支える_AWS
Search
Yoshiyuki Asaba
December 09, 2021
Technology
0
23
freee_の成長を支える_AWS
2021/12/9にSaaS on AWS Day 2022で講演した資料です。
https://www.sbbit.jp/eventinfo/67066
Yoshiyuki Asaba
December 09, 2021
Tweet
Share
More Decks by Yoshiyuki Asaba
See All by Yoshiyuki Asaba
How freee has leveraged AWS for Growth
asaba
0
9
freee-engineering-jm.pdf
asaba
0
5.5k
2018早稲田大学アルゴリズムとデータ構造特別講義 / 2018-Algorithm-And-Data-Structure-Course-At-Waseda
asaba
0
6.2k
デバッガでRedisのコードを読んでみよう
asaba
1
14k
早稲田大学アルゴリズムとデータ構造特別講義
asaba
2
12k
freee-mackerel
asaba
3
15k
PostgreSQL運用管理入門
asaba
0
200
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
asaba
1
100
Other Decks in Technology
See All in Technology
NW-JAWS #14 re:Invent 2024(予選落ち含)で 発表された推しアップデートについて
nagisa53
0
250
スタートアップで取り組んでいるAzureとMicrosoft 365のセキュリティ対策/How to Improve Azure and Microsoft 365 Security at Startup
yuj1osm
0
210
なぜCodeceptJSを選んだか
goataka
0
160
ずっと昔に Star をつけたはずの思い出せない GitHub リポジトリを見つけたい!
rokuosan
0
150
Fanstaの1年を大解剖! 一人SREはどこまでできるのか!?
syossan27
2
160
継続的にアウトカムを生み出し ビジネスにつなげる、 戦略と運営に対するタイミーのQUEST(探求)
zigorou
0
520
How to be an AWS Community Builder | 君もAWS Community Builderになろう!〜2024 冬 CB募集直前対策編?!〜
coosuke
PRO
2
2.8k
UI State設計とテスト方針
rmakiyama
2
440
プロダクト開発を加速させるためのQA文化の築き方 / How to build QA culture to accelerate product development
mii3king
1
260
GitHub Copilot のテクニック集/GitHub Copilot Techniques
rayuron
26
11k
ハイテク休憩
sat
PRO
2
140
[Ruby] Develop a Morse Code Learning Gem & Beep from Strings
oguressive
1
150
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
0
97
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
510
Music & Morning Musume
bryan
46
6.2k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Writing Fast Ruby
sferik
628
61k
A Philosophy of Restraint
colly
203
16k
Scaling GitHub
holman
458
140k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
28
900
Transcript
freee の成長を支える AWS 2021.12.09
自己紹介
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)
freee紹介
Mission スモールビジネスを、 世界の主役に。 freeeは「スモールビジネスを、世界の主役に。」 をミッションに掲げ、 「だれもが自由に経営できる統合型経営プラットフォーム」 の構築を目指してサービスの開発及び提供をしております。 大胆に、スピード感をもってアイデアを具現化することができる スモールビジネスは、様々なイノベーションを生むと同時に、
大企業を刺激して世の中全体に新たなムーブメントを起こすことが できる存在だと考えております。
だれもが自由に経営できる 統合型経営プラットフォーム。 VISION だれもが自由に自然体で経営できる環境をつくるために、「統合型経営プラットフォーム」を開発・提供します。 バックオフィス業務を統合することで、自動化と業務全体の効率化。さらに経営全体を可視化することで、 これまでにないスマートかつ最適なアクションまで実行できるプラットフォームへと進化させていきます。 また外部サービスとも連携したオープンプラットフォームとして、多様なビジネスニーズに対応。 ユーザーネットワークの中における相互取引の活性化も強化していきます。 プラットフォームの提供のみならず、スモールビジネスに携わる人の環境そのものを
より良くしていく取り組みを行うことで、世の中の変化を促します。
7 freee会計 freee開業 freee福利厚生 freeeアプリストア freee人事労務 freee会社設立 freeeスマート受発注 freeeプロジェクト管理
freee資金調達 freee申告 freeeカード プロダクトラインアップ
※(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万
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 コンセプト発 表 マイクロサー ビス化 開始 基盤投資 加速 プラット フォーム 元年 新規 プロダクト加 速
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へ
AWS活用事例
12 AWS Summit 2015での発表 https://speakerdeck.com/futoase/aws-summit-tokyo-2015-freee freeeとAWSとの歴史(2015年バージョン)
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 コンセプト発 表 マイクロサー ビス化 開始 基盤投資 加速 プラット フォーム 元年 新規 プロダクト加 速
14 2015年から向き合った課題を大きく分類すると2つ システムのスケーラビリティ向上 - 日々増えていくユーザー数やデータサイズにどう立ち 向かうか - それに付随してセキュリティどうするか? - そもそも止めない・落ちない
組織のスケーラビリティ向上 - 阿吽の呼吸で物事をすすめるのは厳しい組織サイズ - 新しいサービスがいっぱい増えてくる - 入社・退社だけでも手続きも大変(さらに退職処理し忘れるとま ずい) あらかじめお伝えしておくと今もそんなにうまくいっているわけではなく、 引き続き課題に向き合っています
15 1. サービス・インフラとしてのAWS 2. 分析環境としてのAWS 3. 開発環境としてのAWS 4. 業務環境としてのAWS 5.
業務環境としてのAWS 6. 社内ITとしてのAWS 話すこと
16 今も変わらない思想 - 使えるサービスは積極的に使う(RDSやSQSなど) - めんどくさいことはなるべく自動化 - なぜならSREが少人数だから すごい困ったこと -
微妙にサービスのデプロイの仕方や構成が違っていて把握するのが大変になってきた - 毎回デプロイツールを用意するのが面倒 - アプリエンジニアから見てもインフラ構成をキャッチアップするのが大変 - RDBMSがボトルネックになりがち サービスインフラとしてのAWS
17 EC2ベースの仕組みからKubernetesベースの構成に変更 - EC2+Ansible+Capistrano+Autoscalingの複雑な構成を、EKSを使ったk8s(+ArgoCD)でk8sのエ コシステムに乗る方針へ変更 - EKSくるまでは自前でKubernetesのクラスターを運用するか悩んだがちょうどよいタイミングで来 てくれてありがたかった - 絶賛移行中だが大物サービスはほぼ終わった
インフラのモダン化・標準化 CloudNativeDaysでの発表資料
18 ~2020 freee会計のMySQLが一番サイズが大きいが、クエリチューニングでなんとかしのいできた 2020/12 半年くらいAurora for MySQLの検証を進め、切り替えを実施 当然、ミドルウェアを変えれば万事解決ではないので、さらなる改善をアプリケーション・インフラレイヤで継 続中 DB負荷対策
19 別セッションでPSIRT杉浦が解説しているのでここでは割愛 セキュリティ
20 扱うデータ量・種類が年々増えていきETLのバッチが年々重くなっていった 分析する社員が増えることでクエリをさばくのが重くなっていった 大前提:すべてのデータは個人情報を取り除かれている 種類 - MySQLのサービスデータ - ログデータ -
SaaS系のデータ(Zuora, Salesforce, GitHub, JIRA, …) 分析環境としてのAWS
21 バッチサーバーとして素のEC2を用意し、Redshiftへインポート → 意外と初期はこれで十分だった 以前のETL
22 Glue による ETL データパイプライン + Redshift Spectrum やAthena(+で別のソリューションを検証中) データレイクの受け皿となるS3に、全データをParquetファイルで保存
https://speakerdeck.com/himaoka/detareikuniokeruquan-xian-zhi-yu-shi-jian-lakeformation 現行のETL(昨年のデータレイク事例祭りより引用)
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. 開発始まらねー
24 リソースを必要に応じて増やしたい → それまさにクラウドじゃん 構成 - 開発環境は別AWSアカウントを用意 - SAMLでIdPと接続 -
EC2 (Linux) - メモリよく使うのでR系を選ぶことが多い - 各サービスをDocker上で動かす - ECRにpush済み - sshやssmで接続 - ポートフォワードしてブラウザアクセスも化 開発環境のクラウド化
25 一部の業務はChromebookをシンクライアントとし、Workspacesを活用 確定申告時期はCSの増員もあるのでスケールしやすいようにクラウド化 業務環境としてのAWS
26 freeeでは色々なSaaSを使って業務しているが、社員が増えてきたことでアカウント管理が大変になってき た 解決策 - Active Directoryでマスターのアカウントを管理 - 各種SaaSはIDaaS (OneLogin)を使ってSSO/SCIM
AWS活用ポイント - AD Serverはもともと社内のオンプレマシンで運用 - オフィス停電で止めるのも面倒でUPS入れるのもアレだし、クラウドに持っていく 社内ITとしてのAWS
27 freeeはみんなが同じ方向を向いて事業を進められるようにカルチャーづくりを推進している 社内だけで公開したいサイトをサクッと立ち上げることでカルチャー推進に貢献 例:社員530名がオンライン参加!freeeの全社キックオフ「フリスピフェス2022」開催レポ|にゃり|note 構成 - WAF + CloudFront +
S3 + AWS Transfer for SFTP - WAFでIP addressの制限をかける - デザイナーがsftpでコンテンツをアップロードしCloudFrontを経由して配信 - しょっちゅう作る構成なのでterraformでテンプレ化 社内のイベント用にさっとサイトを立ち上げたい
28 課題に対してAWSはいくつかのアプローチを用意してくれている - 最初から壮大な仕組みを用意するのではなく、ライトなアプローチからすすめるのは全然アリ - 逆に言うと何度か仕組みを見直すタイミングがあると思っておいたほうが良い - いわゆる「技術的負債」と言うものかもしれないが、フェーズが変われば必要なものが変わるのは当 たり前 -
機能開発だけでなく、基盤開発もある程度投資し続ける覚悟は必要(絶妙な投資配分を決める必要 あり) B2BのSaaSは色々なトラフィックが読みやすいのでAWSのスケールさせる仕組みと相性良い - freeeの場合は確定申告期にアクセスや業務ピークが来るので、そのタイミングで様々なリソースを一時 的に確保する - 時間帯のオートスケールも組みやすい freee(B2B SaaS)を運営してみて思ったこと
29 データの設計しくるといちばん大変なのでしっかり設計するのが肝 - こればっかりはAWSでなんとかできるものではなく、頑張って設計する - 逆に言うと本来集中すべきことに集中できるのは、その他の必要なものをAWSで提供してくれているか ら 何より楽しい! - 知り合いからもFeedbackもらえる
- SNSでも新機能のリリース等で反響ある freee(B2B SaaS)を運営してみて思ったこと
SaaSビジネスを盛り上げていきましょう! これからもfreeeをよろしくおねがいします!