Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
NIFTY Tech Talkコラボ 安定稼働するポータルサイトの作り方
Search
ニフティ株式会社
PRO
April 28, 2023
Video
Resources
Programming
1.2k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
NIFTY Tech Talkコラボ 安定稼働するポータルサイトの作り方
ニフティ株式会社
PRO
April 28, 2023
Video
Resources
落ちないシステムの作り方 (NIFTY Tech Talkとニフクラエンジニアミートアップのコラボレーション企画)
https://nifty.connpass.com/event/279053/
More Decks by ニフティ株式会社
See All by ニフティ株式会社
microCMS移行をいまならAIでどう進めるか - microCMS Meetup 2026
niftycorp
PRO
0
590
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
4.4k
ニフティ株式会社 エンジニア向け Company Deck 2026年版
niftycorp
PRO
0
1.5k
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
430
CS教育のDX AIによる育成の効率化
niftycorp
PRO
0
470
AI 開発合宿を通して得た学び
niftycorp
PRO
0
440
なぜISPでオリジナルカードゲームを作ったのか?制作者と対談 - NIFTY Tech Talk #25
niftycorp
PRO
0
140
「なぜかネットが遅い」を“見える化”する 〜マイ ニフティが繋ぐサポートと暮らし〜 - NIKKEI Tech Talk #39
niftycorp
PRO
0
710
InnerSource Summit 2025 Three points that promoted innersource activities
niftycorp
PRO
0
380
Other Decks in Programming
See All in Programming
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
200
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
22
22k
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
490
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.2k
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
CodeRabbitの効果検証と過ごしてみた3ヶ月
armondando
0
230
TechTown - Creating Composable Callables in Contemporary C++
rollbear
0
110
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
660
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
16k
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
mrbgem 三角測量 開発
ogom
0
240
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
130
Featured
See All Featured
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
520
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
630
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
320
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Amusing Abliteration
ianozsvald
1
340
We Are The Robots
honzajavorek
0
400
Agile that works and the tools we love
rasmusluckow
331
22k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
RailsConf 2023
tenderlove
30
1.6k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
260
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. まとめ • サーバレスを活用して運用負荷の軽減
• 機械的にチェックできるところは積極的に自動化する • 可用性の高いサービスを活用して負荷軽減する