紙一重の積み重ね

アラフォーのエンジニアがなれる最高の自分を目指して、学んだことをこつこつ情報発信するブログです。

【デブサミ2020レポート】マルチクラウドに向けてNGINX活用促進する為に知っておいてほしいこと #devsumiD

f:id:yokoyantech:20200214150143j:plain

はじめに

2020年2月14日に開催されたDevelopers Summit2020に参加してきました。

event.shoeisha.jp

テーマ

【14-D-5】マルチクラウドに向けてNGINX活用促進する為に知っておいてほしいこと

カテゴリ

アプリケーション開発

登壇者

鈴木 孝彰さん[NGINX (Part of F5)]

発表資料

講演メモ

みなさんの使い方

  • Nginxを使ったことがある人?
    • 参加者の9割くらい
  • リバースプロキシで使っている人?
    • 8割くらい?
  • K8sで使っている人?
    • 少ない?
  • locationのすべての挙動がわかる人?
    • かなり少ない?

NGINX利用するぞ

  • on Linux
  • and Ansible
    • GithubでAnsibleロールがダウンローできる
    • 自動化に是非
  • on DockerHub
    • docker pull nginx
  • Official Dockerfile
    • githubで公開
  • and CI/CD
    • Jenkins
    • Gitlab

NGINX活用するぞ

  • コンテナや様々なCloudで動く
  • 活用例
    • WEBサーバキャッシュ
    • 高度なロードバランサ
  • 事例
    • NETFLIX
      • WEBサーバはNGINX
  • パフォーマンス
    • 同時接続処理数が高く、メモリ使用量が少ない
      • Apacheよりも圧倒的に性能が良い
    • サイジングデータ
      • ホームページで公開中
  • on AWS
    • 問題なく動く
  • on Azure
    • 問題なく動く
  • and Cloud Auto Scaling
    • Githubで公開中
  • on コンテナプラットフォーム
    • K8s
    • PaaS
    • CaaS
      • AWS ECS
      • GKE
  • k8s
    • Ingress Controller ランドスケープ
      • on GCP
        • L4のLBにclass:nginxを指定
        • L7の処理はNGINX
      • on Azure
        • GCPと同様の事が可能
    • 何ができるのか
      • URLベースRouting
        • https://foo.example.com
          • Upstream:foo-svc:80
    • 事例
      • 価格コム
    • gRPC,WebSocket対応
    • Active Health Check
      • HTMLヘッダやコンテンツの中身もチェックできる
    • JWT/OpenID認証
      • 各アプリ毎共通の認証機能をもたせたい
  • ExternalNameを設定
    • ブロードリーフ社の事例
  • GKEでExternal Nameを使用する
    • https://cafeexample.com/v2.0
      • Upstream:v1-service:80
    • 部分的にAWSのサービスを使うこともできる
      • https://cafeexample.com/v1.9
        • Type:ExternalName nginx.example.co.jp:80
  • カナリアデプロイ
    • CustomResources設定例
      • weight:90
        • Upstream:Backend-Stable
      • weight:10
        • Upstream:Backend-canary
  • マルチクラウドで共通設定
    • 例)
      • レート制限:200Request/sec
      • 認証設定

NGINX監視運用するぞ

  • ツール
    • ZABBIX
    • Prometheus
    • DATADOG
    • New Relic
  • 事例:WANTEDLY社
    • 公式ページに公開中

デモ

  • GKE上にk8sクラスタを構築+EternalNameを指定してAWSにアクセス
    • Azureでも同様のことが可能

感想とまとめ

Nginxは日頃WEBサーバとして利用していますが、十分に使いこなせているとは言えない状況です。今回のセッションで、Nginxの特徴や機能について幅広く学ぶことができました。単なるリバースプロキシだけでなく、、カナリアデプロイや、APIマネジメントもでき、さらにType:ExternalNameを活用することで、マルチクラウドでもNGINXを利用できることを学びました。マルチクラウドで利用する機会は早々なさそうですが、部分的に他Cloudのサービスを使うというケースはあるかもしれません。今後もNginxを色々いじってみたくなりました。