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
NIFTY Tech Talkコラボ 安定稼働するポータルサイトの作り方
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ニフティ株式会社
PRO
April 28, 2023
Video
Resources
Programming
1.2k
1
Share
NIFTY Tech Talkコラボ 安定稼働するポータルサイトの作り方
ニフティ株式会社
PRO
April 28, 2023
Video
Resources
落ちないシステムの作り方 (NIFTY Tech Talkとニフクラエンジニアミートアップのコラボレーション企画)
https://nifty.connpass.com/event/279053/
More Decks by ニフティ株式会社
See All by ニフティ株式会社
CS教育のDX AIによる育成の効率化
niftycorp
PRO
0
290
AI 開発合宿を通して得た学び
niftycorp
PRO
0
290
なぜISPでオリジナルカードゲームを作ったのか?制作者と対談 - NIFTY Tech Talk #25
niftycorp
PRO
0
95
「なぜかネットが遅い」を“見える化”する 〜マイ ニフティが繋ぐサポートと暮らし〜 - NIKKEI Tech Talk #39
niftycorp
PRO
0
580
InnerSource Summit 2025 Three points that promoted innersource activities
niftycorp
PRO
0
290
Maker Faire Tokyo 2025 出展うらばなし - NIFTY Tech Talk #25
niftycorp
PRO
0
120
Private Status Pageの設定と活用 〜インシデントレスポンスへの活用とStatus Page運用をどうするか?〜
niftycorp
PRO
0
190
ニフティのPagerDuty活用状況
niftycorp
PRO
0
160
会員管理基盤をオンプレからクラウド移行した時に起きた障害たち - asken tech talk vol.13
niftycorp
PRO
0
2.6k
Other Decks in Programming
See All in Programming
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
17
5.8k
JavaDoc 再入門
nagise
0
280
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
1
340
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.3k
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
250
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
440
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
440
プラグインで拡張される Context をtype-safe にする難しさと設計判断
kazupon
2
580
AI時代のUIはどこへ行く?その2!
yusukebe
19
6.6k
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.2k
Spec-Driven Development with AI-Agents: From High-Level Requirements to Working Software
antonarhipov
2
440
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
210
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
The Spectacular Lies of Maps
axbom
PRO
1
790
4 Signs Your Business is Dying
shpigford
187
22k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Utilizing Notion as your number one productivity tool
mfonobong
4
310
Navigating Weather and Climate Data
rabernat
0
210
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
230
Typedesign – Prime Four
hannesfritz
42
3.1k
WCS-LA-2024
lcolladotor
0
620
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
200
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
130
Information Architects: The Missing Link in Design Systems
soysaucechin
0
960
Transcript
Copyright © NIFTY Corporation All Rights Reserved. 安定稼働するポータルサイトの作り方 渡邊 大介 会員システムグループ
第一開発チーム
Copyright © NIFTY Corporation All Rights Reserved. 渡邊 大介 入社 2019年4月(5年目)
担当業務 自社WEBサービスの運用開発 趣味 映画、ドライブ、バドミントン 自己紹介
Copyright © NIFTY Corporation All Rights Reserved. ニフティトップページについて
1 安定稼働するための工夫 2 キャッシュをほとんど効かせられない状況下での負荷軽減方法 3
Copyright © NIFTY Corporation All Rights Reserved. ニフティトップページについて
01
Copyright © NIFTY Corporation All Rights Reserved. ニフティトップページ PC (2022/07/05にフロントエンドを刷新)
スマホ テキスト
Copyright © NIFTY Corporation All Rights Reserved. ニフティトップページ • 20世紀から存在する月間3,000万PVのポータルサイト
• 多くのコンテンツを展開している ◦ 接続会員向け(宝箱、ニフくじ、メール、ニフティ ポイントクラブ) ◦ その他(ニュース、検索、天気、占いなど) • ユーザーが日常的に使うサービスのため、安定稼働は 必須
Copyright © NIFTY Corporation All Rights Reserved. ニフティトップページ(PC)の環境 • AWS
Lambdaを使ったサーバーレス構成 • Terraformによるインフラ管理 • フロントエンドにNext.js,TypeScriptを採用 • バックエンドにGo言語を採用 • GitHubによるコード管理、自動テスト・デプロイ
Copyright © NIFTY Corporation All Rights Reserved. 安定稼働するための工夫
02
Copyright © NIFTY Corporation All Rights Reserved. 安定稼働するための工夫(インフラ) • APIの管理にはTerraformを採用
• コード管理することで変更の追跡やバージョン管理が容易になる • 構文チェックや現在の状態と変更点を比較する機能がデフォルト で搭載 • アプリケーションのデプロイにServerless Frameworkを採用
Copyright © NIFTY Corporation All Rights Reserved. 安定稼働するための工夫(インフラ) • Lambdaで動くため自動でスケールが可能
• サーバー作業が不要になり、アプリケーション開発に専念するこ とが可能に • 本番環境以外の環境整備 ◦ 開発環境 ◦ ステージング環境 ◦ 障害対応を擬似的に行うロールプレイング環境
Copyright © NIFTY Corporation All Rights Reserved. 安定稼働するための工夫(デプロイ) 各ブランチと各環境の対応付けを実施 開発環境#1
featureブランチ developブランチ 本番環境 masterブランチ PR#1 開発環境#2 ラベル付与 ラベル付与 ステージング環境 マージ時 PR#2 PR#3 マージ時 施策A 施策B 開発環境#1 ラベル付与 PR#4 施策C releaseブランチ
Copyright © NIFTY Corporation All Rights Reserved. 安定稼働するための工夫(GitHub) • pre-commitを導入し、commitの段階でフォーマット
や構文チェックを実行 • GitHub Actionsを使ってPRを出したタイミングでイ ンフラの変更確認や単体テストを実行するワークフ ローを整備 • デプロイはすべてGitHubで行う ◦ リリースで問題が発生したらGitHubからリバート
Copyright © NIFTY Corporation All Rights Reserved. 安定稼働するための工夫(GitHub) • リリース状況を自動生成するワークフロー
• リリース前のチェック項目を自動で投稿するワークフロー
Copyright © NIFTY Corporation All Rights Reserved. • TypeScriptを採用し、型安全性とメンテナンス性の向上 •
単体テストを追加し、機能の動作保証 • 開発ルール ◦ データ取得処理はデータ層に分離 ◦ コンポーネントとロジックを分離(カスタムフック化) ◦ エラーログ出力 安定稼働するための工夫(アプリケーション)
Copyright © NIFTY Corporation All Rights Reserved. 安定稼働するための工夫(エラー通知) • 設定したしきい値を超えたエラーが発生した場合にはSlack、メールに通知を送る仕組みを構築
• 現在、約300個のアラートが設定されている ◦ エラーログはすべてCloudWatch Logsに出力するように設定
Copyright © NIFTY Corporation All Rights Reserved. キャッシュをほとんど効かせられない状況下での負荷 軽減方法
03
Copyright © NIFTY Corporation All Rights Reserved. 自社サービスの情報を表示する機能 • ポータルサイトという性質上、自社サービスの情報を表示する機能が多く存在する
• リリースする上での課題 ◦ 速報性の高いサービス(ニュース、地震情報など)を提供しているため、長めの キャッシュを効かせることが困難 ◦ ほかサービスへの負荷を最低限に抑えなければいけない
Copyright © NIFTY Corporation All Rights Reserved. 実装内容 • APIを定期的に叩くLambda(Go言語)を作成し、結果をS3に
出力する仕組みを構築 • フロントエンド側はS3からデータを取得する
Copyright © NIFTY Corporation All Rights Reserved. 今後 • リリース後チェックの負担を軽減するためにE2Eテストの導入
• 対応が必要なアラートだけに集中できるようにアラートの調整
Copyright © NIFTY Corporation All Rights Reserved. まとめ • サーバレスを活用して運用負荷の軽減
• 機械的にチェックできるところは積極的に自動化する • 可用性の高いサービスを活用して負荷軽減する