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
ゼロから創る横断SREチーム 挑戦と進化の軌跡
rvirus0817
2
270
GitHub Copilot のテクニック集/GitHub Copilot Techniques
rayuron
33
13k
Jetpack Composeで始めるServer Cache State
ogaclejapan
2
170
私なりのAIのご紹介 [2024年版]
qt_luigi
1
120
.NET 9 のパフォーマンス改善
nenonaninu
0
870
サイバー攻撃を想定したセキュリティガイドライン 策定とASM及びCNAPPの活用方法
syoshie
3
1.2k
組織に自動テストを書く文化を根付かせる戦略(2024冬版) / Building Automated Test Culture 2024 Winter Edition
twada
PRO
13
3.7k
NW-JAWS #14 re:Invent 2024(予選落ち含)で 発表された推しアップデートについて
nagisa53
0
260
alecthomas/kong はいいぞ / kamakura.go#7
fujiwara3
1
300
スタートアップで取り組んでいるAzureとMicrosoft 365のセキュリティ対策/How to Improve Azure and Microsoft 365 Security at Startup
yuj1osm
0
210
生成AIのガバナンスの全体像と現実解
fnifni
1
190
LINE Developersプロダクト(LIFF/LINE Login)におけるフロントエンド開発
lycorptech_jp
PRO
0
120
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Embracing the Ebb and Flow
colly
84
4.5k
Optimising Largest Contentful Paint
csswizardry
33
3k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
170
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
28
900
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
2
170
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
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をよろしくおねがいします!