Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

NIFTY Tech Talkコラボ 安定稼働するポータルサイトの作り方

NIFTY Tech Talkコラボ 安定稼働するポータルサイトの作り方

ニフティ株式会社

April 28, 2023
Tweet

Video


Resources

落ちないシステムの作り方 (NIFTY Tech Talkとニフクラエンジニアミートアップのコラボレーション企画)

https://nifty.connpass.com/event/279053/

More Decks by ニフティ株式会社

Other Decks in Programming

Transcript

  1. Copyright © NIFTY Corporation All Rights Reserved.
 渡邊 大介
 
 入社   2019年4月(5年目)


    
 担当業務 自社WEBサービスの運用開発
 
 趣味   映画、ドライブ、バドミントン
 自己紹介

  2. Copyright © NIFTY Corporation All Rights Reserved.
 ニフティトップページについて
 
 


    1
 安定稼働するための工夫
 2
 キャッシュをほとんど効かせられない状況下での負荷軽減方法
 3

  3. Copyright © NIFTY Corporation All Rights Reserved.
 ニフティトップページ
 • 20世紀から存在する月間3,000万PVのポータルサイト

    • 多くのコンテンツを展開している ◦ 接続会員向け(宝箱、ニフくじ、メール、ニフティ ポイントクラブ) ◦ その他(ニュース、検索、天気、占いなど) • ユーザーが日常的に使うサービスのため、安定稼働は 必須
  4. Copyright © NIFTY Corporation All Rights Reserved.
 ニフティトップページ(PC)の環境
 • AWS

    Lambdaを使ったサーバーレス構成 • Terraformによるインフラ管理 • フロントエンドにNext.js,TypeScriptを採用 • バックエンドにGo言語を採用 • GitHubによるコード管理、自動テスト・デプロイ
  5. Copyright © NIFTY Corporation All Rights Reserved.
 安定稼働するための工夫(インフラ)
 • APIの管理にはTerraformを採用

    • コード管理することで変更の追跡やバージョン管理が容易になる • 構文チェックや現在の状態と変更点を比較する機能がデフォルト で搭載 • アプリケーションのデプロイにServerless Frameworkを採用
  6. Copyright © NIFTY Corporation All Rights Reserved.
 安定稼働するための工夫(インフラ)
 • Lambdaで動くため自動でスケールが可能

    • サーバー作業が不要になり、アプリケーション開発に専念するこ とが可能に • 本番環境以外の環境整備 ◦ 開発環境 ◦ ステージング環境 ◦ 障害対応を擬似的に行うロールプレイング環境
  7. Copyright © NIFTY Corporation All Rights Reserved.
 安定稼働するための工夫(デプロイ)
 各ブランチと各環境の対応付けを実施
 開発環境#1

    featureブランチ developブランチ 本番環境 masterブランチ PR#1
 開発環境#2 ラベル付与 ラベル付与 ステージング環境 マージ時 PR#2
 PR#3
 マージ時 施策A 施策B 開発環境#1 ラベル付与 PR#4
 施策C releaseブランチ
  8. Copyright © NIFTY Corporation All Rights Reserved.
 安定稼働するための工夫(GitHub)
 • pre-commitを導入し、commitの段階でフォーマット

    や構文チェックを実行 • GitHub Actionsを使ってPRを出したタイミングでイ ンフラの変更確認や単体テストを実行するワークフ ローを整備 • デプロイはすべてGitHubで行う ◦ リリースで問題が発生したらGitHubからリバート
  9. Copyright © NIFTY Corporation All Rights Reserved.
 • TypeScriptを採用し、型安全性とメンテナンス性の向上 •

    単体テストを追加し、機能の動作保証 • 開発ルール ◦ データ取得処理はデータ層に分離 ◦ コンポーネントとロジックを分離(カスタムフック化) ◦ エラーログ出力 安定稼働するための工夫(アプリケーション)

  10. Copyright © NIFTY Corporation All Rights Reserved.
 自社サービスの情報を表示する機能
 • ポータルサイトという性質上、自社サービスの情報を表示する機能が多く存在する

    • リリースする上での課題 ◦ 速報性の高いサービス(ニュース、地震情報など)を提供しているため、長めの キャッシュを効かせることが困難 ◦ ほかサービスへの負荷を最低限に抑えなければいけない
  11. Copyright © NIFTY Corporation All Rights Reserved.
 まとめ
 • サーバレスを活用して運用負荷の軽減

    • 機械的にチェックできるところは積極的に自動化する • 可用性の高いサービスを活用して負荷軽減する