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
ITエンジニア特化型Q&Aサイトteratailを 言語、DB、クラウドなど フルリプレイスした話
Search
Tech Leverages
December 27, 2022
Programming
0
3.7k
ITエンジニア特化型Q&Aサイトteratailを 言語、DB、クラウドなど フルリプレイスした話
Architect New World on AWS 2022
にて発表したスライドです。
2022年1月に完了したteratailのリプレイスに関して、インフラ部分に焦点を当てて解説しています。
Tech Leverages
December 27, 2022
Tweet
Share
More Decks by Tech Leverages
See All by Tech Leverages
コンテキストエンジニアリングで変わるAI活用 リファクタリングワークフローの実践から学んだ形式知
leveragestech
0
50
AirflowでDataformを制御するポイント
leveragestech
0
41
古き良き Laravel のシステムは関数型スタイルでリファクタできるのか
leveragestech
1
1.1k
リファクタリングいつやるの? 〜依存の整理〜
leveragestech
0
100
ディメンショナルモデリングを軽く語る
leveragestech
1
4.5k
アクターモデルによる効率的な分散システム設計
leveragestech
0
4.3k
Terraform による運用効率化の取り組みと最新のテストアプローチの紹介
leveragestech
0
4.3k
OpenFGAで拓く次世代認可基盤 〜予告編〜
leveragestech
0
4.3k
リソース・管理効率の向上だけでない、分散システムとしてのTiDBの魅力
leveragestech
0
4.3k
Other Decks in Programming
See All in Programming
オホーツクでコミュニティを立ち上げた理由―地方出身プログラマの挑戦 / TechRAMEN 2025 Conference
lemonade_37
1
320
코딩 에이전트 체크리스트: Claude Code ver.
nacyot
0
1k
はじめてのWeb API体験 ー 飲食店検索アプリを作ろうー
akinko_0915
0
180
Streamlitで実現できるようになったこと、実現してくれたこと
ayumu_yamaguchi
2
240
AI Agent 時代のソフトウェア開発を支える AWS Cloud Development Kit (CDK)
konokenj
6
1k
バイブスあるコーディングで ~PHP~ 便利ツールをつくるプラクティス
uzulla
1
300
TypeScriptでDXを上げろ! Hono編
yusukebe
3
890
MCP連携で加速するAI駆動開発/mcp integration accelerates ai-driven-development
bpstudy
0
180
PHPカンファレンス関西2025 基調講演
sugimotokei
6
1k
React 使いじゃなくても知っておきたい教養としての React
oukayuka
17
4.6k
バイブコーディング超えてバイブデプロイ〜CloudflareMCPで実現する、未来のアプリケーションデリバリー〜
azukiazusa1
2
740
知って得する@cloudflare_vite-pluginのあれこれ
chimame
1
120
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Gamification - CAS2011
davidbonilla
81
5.4k
Unsuck your backbone
ammeep
671
58k
Statistics for Hackers
jakevdp
799
220k
RailsConf 2023
tenderlove
30
1.2k
Why Our Code Smells
bkeepers
PRO
337
57k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Writing Fast Ruby
sferik
628
62k
How to Think Like a Performance Engineer
csswizardry
25
1.8k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
We Have a Design System, Now What?
morganepeng
53
7.7k
Transcript
ITエンジニア特化型Q&Aサイト teratailを 言語、DB、クラウドなど フルリプレイスした話 レバレジーズ株式会社 リードエンジニア 竹下義晃
自己紹介 レバレジーズ株式会社 テラテイルグループ リーダー 竹下義晃 経歴 2009/3 東京大学大学院 農学生命科学研究科 修了 2009/4
芸者東京株式会社 入社 2020/6 レバレジーズ株式会社 入社 一般社団法人 Japan Scala Association 理事 兼任 現在Webフロント、バックエンド、インフラ、データ分析など フルスタックエンジニアとして teratail開発に関わっています 前職では、アプリマーケターとして Traffic Run!など全米1位を獲得したハイパーカジュアルゲー ムのUA/MOを担当したことも
目次 • teratailとは • リプレイス概要 ◦ リプレイスの目的 ◦ 技術スタックの比較 •
AWS Fargateによるサーバーレス化 • AWS CDKによるIaC化 • AWS Cloud9を活用したデータ移行 • まとめ
teratailとは
ITエンジニア特化型Q&Aサイト 「teratail(テラテイル)」は、2014年7月にオープンしたエンジニアの問題解決プ ラットフォームです。 学生やプログラミング初心者から第一線で活躍する方々まで、幅広いエンジニア の問題解決をサポートしています。 https://teratail.com/
リプレイス概要
リプレイスの目的
問題点 モノリシックで、長期に渡って改修を続けて来たことで、システム肥大化 小さな修正でも全体に波及する 機能追加やバグ修正のコストが高く なり、開発効率が低下 使用しているフレームワーク、PHPのVersionのサポート期限も 近づいていた
リプレイスで達成したいこと • 技術スタックを刷新し、開発効率を向上 • 長期的にも開発効率を高い状態で維持 • teratailをベースに、新サービスを展開する際にも既存の機能を活用可能に 今回のリプレイスのスコープ • 技術的な部分がメイン
• UIはそのまま • 機能も基本そのままで使用されてない機能は削ってスリムアップ
技術スタックの比較
使用技術の比較
構成の比較
全体構成
今回のメイン 25分ではすべて説明しきれないので、今回は主にAWSの サービスを活用することで特に効果的だった部分に焦点を当 てて話して行きたいと思います。
説明する部分 • AWS Fargateによるサーバーレス化 ◦ コスト効率UP ◦ 運用効率UP • AWS
CDKによるIaC ◦ インフラ構築の効率 UP ◦ インフラ構築のブラックボックス化を防ぐ • AWS Cloud9による旧DBから新DBへのデータ移行 ◦ 複雑かつ困難な作業を効率よく
AWS Fargateによる サーバーレス化
AWS Fargateとは サーバーレスかつ従量課金のコンテナ向けコンピューティングエンジン 特徴 • 管理不要 • オートスケールなどの設定容易 • ログ、メトリクス監視も容易
• 従量課金なのでコストを最適化可能
構成
以前は kubernetesクラスターを利用していたが、オートスケールが無いため非ピーク時はリ ソースがあまり、ピーク時には足りなくなりかけていた バッチ処理を動かすと、アプリサーバーにも影響が出ることもあった サーバーでバグが発生した場合は、ソースコードを巻き戻して再デプロイ
リソースの効率化 オートスケールかつ従量課金なので、ピーク時に合わせたハードウェアを用意する必 要なしなので、トータルコストダウン マイクロサービスごとの負荷に合わせてタスク数を調整 質問マイクロサービス タスク数4 お問い合わせマイクロサービス タスク数2 バッチ処理は新しいTaskで起動するので、アプリサーバーに影響はしない、かつ、実 行した分しか料金がかからない
運用の効率化 フルマネージドなので、タスクが落ちても自動で復帰 オートスケールで自動で負荷に対応 デプロイも安全に行える 巻き戻しはタスク定義で一つ前のバージョンを指定して再デプロイするだけ
AWS CDKによるIaC化
AWS CDKとは AWS Cloud Development Kit AWSのIaCを行える強力なサービス • プログラミング言語でインフラを定義できる ◦
型による実行前の整合性チェック ◦ ライブラリ化によるノウハウの共有 • デフォルト設定が優秀なので記述量が減る • プログラミングの開発ノウハウを転用可能 ◦ 抽象化、一般化、インターフェイス化による整理 ◦ 自社ユースケースに合わせて宣言的なライブラリへの拡張 同様なツール • AWS CloudFormation(CDKはCloudFormationのJsonを出力します) • Terraform
以前は itamaeによる構築、または、UIコンソールでの手動作成 前任者がやめ、手順書も揃ってなかったり、実態と乖離があったりして、構築 方法が半ブラックボックス化
構成管理=ソースコード 構成がソースコードで管理され、そのままインフラが構築されるため、 ソースコードが構成資料かつ構築手順書となる staging,productionなど様々な環境で、かんたんに同じ構成を再現可能 変更時も差分を事前に確認して、安全に変更可能
マイクロサービスとの相性 マイクロサービスが複数あるが、構成は大体似ている CDKなら、汎用化したStackを作っておくと、いくらでも同様の構成を構築可能 Staging,Productionを判定してスペック変更や、Amazon Simple Storage Service(S3)を使うサービスにはS3へのアクセスポリシーを追加などの小さな差 異を、ロジックで実現できる
AWS Cloud9を活用した データ移行
AWS Cloud9とは ブラウザ上で使用できる統合開発環境 • VSCodeのGUIで操作が可能 • 接続を切ると自動で停止状態になる • 基本的なライブラリなどが導入済み
データ移行の課題 クラウド跨ぎ => 新DBはVPCのPrivate Subnetに用意しているので、外部からはアクセス が容易ではない PostgreSQLからMySQLへ => バックアップからそのまま復元はできない 正規化や設計見直しによるテーブル構造の変化 =>
単純にデータ移動するだけでは移行できない
データ移行の課題
解決策 AWS Cloud9の利用 VPC内に Amazon Elastic Compute Cloud(EC2)インスタンスが作られるので、DBへのアクセス が可能 基本的なプログラム実行のためのライブラリがインストール済み
変換ルールベースのデータ移行ツールの開発 テーブル構造の変更、MySQL化を同時に行うことのできる移行ツールを開発
AWS Cloud9を使う利点 実態はAmazon EC2だが、初期環境構築が非常に楽 ブラウザ上からGUIで操作が可能 => 対話的に実行が容易 => サーバープログラムを転用したメンテナンスプログラムを楽に実行可能 DBと同じVPC内で実行できるので、アクセス設定不要
時間が経つと勝手に休止状態になるので、スペックが良いマシンを立てて落とし 忘れていて請求が!ということが無い
普通に移行プログラムを作成したときの問題点 問題点 * すべてのカラムが移行されたかを検証するにはコードを読む必要がある * コードが煩雑になりがち
変換ルールベースのデータ移行ツール カラム単位で「変換操作」のルールを定義し、ルールを列挙したファイルを読み込むことでデータ 変換される 削除されたデータは、カラムの削除のルールを確認するだけでチェック可能 => テーブル構造が変わっても漏れなくデータ移行されていることが保証できる
変換ルールベースのデータ移行ツール 実際は、ルール生成と変換の 2段階に分けている 単純な変換は自動でルール生成し、複雑なルールのみマニュアルで作成するだけで良 いようにして労力を減らしている
まとめ
AWSのサービス活用による運用の効率化 今回は主に • AWS Fargate • AWS CDK • AWS
Cloud9 に焦点を当てましたが、それ以外にも • Amazon RDS - Amazon Aurora • Amazon ElastiCache for Redis Cluster • Amazon Opensearch Service Cluster • Amazon CloudFront など、数多くのフルマネージドのサービスを組み合わせて活用することで 構築、運用、保守すべてが効率化しています。
AWSのサービス活用による運用の効率化 • 専属のインフラエンジニアがいなくても、十分に大規模サービス のインフラを運用していける • アプリエンジニアがインフラまで面倒を見れるようになることで、 SREとしての働き方が容易に
最後に
レバレジーズで働きませんか? teratailやレバテック、看護のお仕事、WeXpatsなど、30を超える様々なサービス開発を 通じて社会貢献に努めています。 「顧客の創造を通じて関係者全員の幸福を追求し、各個人の成長を促す」を一緒に実現 していきませんか?