Upload
others
View
16
Download
0
Embed Size (px)
Citation preview
NGINXアプリケーションプラットフォームマイクロサービスのための高性能アプリケーション
デリバリー
NGINXアプリケーションプラットフォームマイクロサービスへの移行をシンプルに。最近では、多くの企業がマイクロサービスへの移行を望むようになりました。しかし、アプリケーションのインフラが複雑であるという理由で、その実現を断念するケースが少なくありません。中にはオープンソースソフトウェア、プロプラエタリソリューション、カスタムコードを組み合わせて使用するほど複雑化し、管理に頭を悩ませている企業もあります。これは、アプリケーションスタックを脆弱化させる深刻な問題です。最悪の場合、業界で競争力を保つために必要なアジリティー(敏捷性)さえも失うことになるからです。
この複雑さの解消に役立つのがNGINXアプリケーションプラットフォームです。インフラの中から共通する機能を一つのソフトウェアに集約するか、あるいはコンポーネントの数を大幅に減らすことで、アプリケーションスタックの複雑さを軽減します。これにより、顧客はマイクロサービスベースの新しいアーキテクチャへ移行できるようになります。
オープンソースソフトウェアをベースに作られたNGINXアプリケーションプラットフォームは、パフォーマンス、信頼性、セキュリティ、および拡張性を備えた、アプリケーションデリバリーのための新しいツールセットです。ロードバランシングとアプリケーションデリバリーを行うNGINX Plus、セキュリティを保護するNGINX WAF、アプリケーションコードを実行するNGINX Unit、そして、全体の監視と管理を行うNGINX Controllerで構成されています。
NGINX Controller 監視と管理を一つに集約
NGINX Plus アプリケーションデリバリー
NGINX UnitWebサーバーとアプリケーションサーバー
インフラストラクチャ(マルチクラウドの多様性)
クラウド コンテナー ベアメタル仮想マシン
モノリス マイクロサービス
WAF
ロードバランサー コンテンツキャッシュ
分析 ポリシーコントロール
APIゲートウェイ
ロードバランサー、コンテンツキャッシュ、ウェブサーバーを併せ持つ、唯一のオールインワンプラットフォームIT技術者に、「乗り越えるべき壁とは?」と尋ねれば、誰もが「複雑さ」と答えるでしょう。 NGINX Plusは、複数のツールを一つに集約することで、その複雑さを軽減させます。インフラの管理がシンプルになれば、アプリケーションチームは素晴らしいアジリティを獲得し、 機能をすばやく追加できるようになります。レガシーアプリケーションを最新機能で拡張する場合でも、あるいは、マイクロサービスベースのアプリケーションを新しく構築する場合でも、NGINX Plusならデジタルサービスを信頼性の高い方法で拡張することができます。
多くの企業が、レガシーなハードウェアを備えたアプリケーションデリバリコントローラ(ADC)を使用しています。ですが、このハードウェアADCは、スケーラブルなアプリケーションを作成する際の障壁となります。NGINX Plusを使用すれば、ハードウェアADSをオープンソースソフト ウェアで置き換えることができるので、コストが大幅に削減されると同時に、アジリティを得ることができます。
「NGINX Plusで処理できるトラフィックの量は、驚くべきものです。必要な分を超えてさえいるのですから。」
– James Ridle、 Montana Interactive、ITオペレーションマネージャー
NGINX Plusの利点
コスト削減 – ハードウェアADCと比較して20%足らずという費用で、より高いパフォーマンスと高度な機能を実現できます。
コミュニティ – NGINX PlusはNGINX Open Sourceをベースに構築され、4億人を超える熱心なユーザーコミュニティに よって支えられています。また、コミュニティが寄稿する何千という記事を、NGINX Plusの利用に役立てることもできます。
柔軟性 – NGINX Plusソフトウェアは、ベアメタル、仮想マシン、コンテナーベースの環境のほか、あらゆるクラウド環境での動作が可能です。 ベンダーロックインはありません。
NGINX Plusの仕組みNGINX Plusは、LinuxやFreeBSDなどのUnixライクなシステムで稼働する x86、ARM、 Power8のサーバー上にインストールされます。インストールには、標準パッケージ管理ツール(apt、yum)を使用します。パフォー マンスを最大限に高めるために、NGINX Plusは通常、1つのCPUコアに対して1つのワーカープロセスを実行します。
NGINX Plusはリバースプロキシとして機能し、TCP接続の受け入れと、アップストリームサーバーへのTCP接続の新規作成を行います。ウェブサーバーとして機能する場合は、静的コンテンツを直接配信したり、アプリケー ションサーバー(PHP-FPMやuwsgiなど)へのリバースプロキシになります。キャッシュの機能では、静的コンテンツと動的コンテンツの両方を処理します。さらに、NGINX Plusを使用してメディアをストリーミングすることもできます。
アプリケーションサーバー
キャッシュ、ロードバランス、静的コンテンツ配信の機能をすべてNGINX Plusに装備。
NGINX Plusの機能:• HTTP/TCP/UDPロードバランサー• コンテンツキャッシュ• ウェブサーバー• SSL/TLSオフロード(デュアルスタックRSA/ECC
使用) • コンテンツ圧縮• レート制限• JWT認証• 高可用性• HTTP、FastCGI、memcached、SCGI、uwsgiに
対するリバースプロキシ • 20を超えるダイナミックモジュール• OpenID Connect SSO
NGINX WAFの利点
コスト削減 – ハードウェアWAFと比べてわずかな費用で、PCIコンプライアンスに準拠することができます。
攻撃へのテスト済み – ModSecurityは100万以上のウェブサイトで使用され、アプリケーションのセキュリティでは最も信頼性が高いことで知られています。
アプリケーションを保護たとえセキュリティを理解していても、企業による高度な要件を満たしながら安全なアプリケーションを作成することは簡単ではありません。NGINX Web Application Firewall(WAFモジュール)は巧妙なレイヤー7攻撃からアプリケーションを保護します。レイヤー7攻撃は、適切な対策がなければ、機密データの喪失、ダウンタイム、レピュテーションの低下を引き起こす可能性があります。NGINX WAFモジュールは、幅広く使用されているModSecurityオープンソースソフトウェアをベースに作られてます。
ModSecurityはアプリケーションのセキュリティにおいて最も信頼性が高いことで知られ、現在100万を超えるウェブサイトを保護しています。また、オープンソースソフトウェアとして、セキュリティのエキスパートによる熱心で大規模なコミュニティに支えられています。このコミュニティはModSecurityだけでなく、 非常に頻度が高く、しかも破壊的な攻撃に対して保護を提供するOWASP Core Rule Set(CRS)も支えています。
ADCと同様、WAFも企業内でハードウェア装置を利用してデプロイされることが多く、そのためADCと同じように、拡張性が低いという欠点があります。また、コストが高く柔軟性に欠けるという問題もあります。
アジリティ – 仮想パッチを使用し、新しく出現するセキュリティの脅威にすばやく対応します。
「Webアプリケーションは、あなたのものも、私のものも、誰のものでも、恐ろしくセキュリティが脅かされています。私たちはセキュリティ問題と闘うのに必死です。そのために、手に入るものは何でも利用しなくてはなりません。」
– ModSecurityクリエーター、Ivan Ristić
NGINX WAFの仕組みNGINX WAFは、NGINX Plusのダイナミックモジュールであり、実行中のNGINX Plusインスタンスと連携して機能します。NGINX Plusは、接続の終了、リダイレクトの実行、レート制限という処理を通常どおり行いますが、リクエストをバックエンドサーバーへ転送する前に、NGINX WAFモジュールへ送ります。
その後は、NGINX PlusによってトラフィックがNGINX WAFモジュールへ渡されるようになり、そこでリクエストのすべての部分を調査して、悪意のあるコンテンツやその他の異常がないかが確認されます。悪意のあるリクエストと判断した場合は、リクエストをブ ロックするか、ログに記録するか、あるいはその両方を(設定に応じて)行います。
承認できると判断した場合は、NGINX Plusにリクエストが戻され、要求された処理が行われます。
アプリケーションサーバー
NGINX WAFモジュールは、 Layer 7攻撃に対して広範な保護を提供します。
NGINX WAFモジュールには、以下の保護機能があります。• Layer 7攻撃への保護 – SQLインジェクション
(SQLi)、クロスサイトスクリプティング(XSS)、ローカルファイル・インクルード(LFI)、クロスサイトリクエストフォージェリ(CSRF)、リモートファイルインクルード(RFI)、その他。
• IPレピュテーション – Project Honey Potを使用して、悪意のある既知のIPアドレスをリアルタイムにブロックします。
• スキャナー検知とボット検知 – NGINX WAFモジュールは、現在使用されているスキャナーのほとんどを検知し、ブロックすることができます。
• 仮想パッチ – 新たに出現する脅威に、柔軟なPCRE-regexベースのルール言語を使用して、リアルタイムに対応することができます。
ダイナミックなWebおよびアプリケーションサーバー 私たちが実際の環境で使用しているアプリケーションサーバーの多くは、スタティックでモノリシックなアーキテクチャを対象に作られています。ですが、現在のアプリケーション環境には、ダイナミックな機能と一貫した動作が必要です。そのため、大半は改良が加えられ、アドオンも追加されています。これらのアドオンはアプリケーションサーバーをより複雑にし、パフォーマンスも低下させるため、障害の発生する可能性が非常に高くなります。
NGINX Unitは、モノリシックなアプリケーションと分散型アプリケーションの両方の要件を満たして作られた、ダイナミックな新しいウェブおよびアプリケーションサーバーです。 NGINX Unitはウェブサーバーとアプリケーションサーバーの機能を一つのバイナリに組み合わせています。NGINX Unitはダイナミックに機能するよう設計されており、RESTful JSON API経由で構成されます。構成の変更はすべてメモリ内で処理されるため、プロセスを再読込みする必要がなく、サービスが破壊することもないので、ダウンタイムがありません。
最近では、多くの企業のアプリケーションが複数の言語で作成されています。NGINX Unitを使えば、複数の言語を同じサーバーで実行できるため、アプリケーションサーバーを集約することができ、複雑さが軽減します。現在サポートされている言語はGo、Perl、PHP、Python、Rubyですが、この他の言語も追加される予定です。
NGINX Unitの利点
複雑さを軽減 – アプリケーションやソフトウェアスタックを、いくつも操る必要がありません。 Go、Perl、PHP、Python、Rubyで作成されたアプリケーションを、一貫性のあるパワフルな一台のアプリケーションサーバーで実行することができます。
ダイナミック機能設計 – NGINX Unitは、分散型アプリケーションの要求を、RESTful JSON APIを使用してリアルタイムで受け入れるように作られています。また、変更はメモリ内で直接実行されるため、プロセスの再読込みやサービスの破壊がありません。
信頼性 – NGINX Unitは、 アプリケーションデリバリーにおいて最も信頼性の高いNGINXのチームによって開発されました。
「現在のウェブアプリケーションは、以前にも増して複雑化しています。ですが、簡単に使えて、ウェブスタックの複雑さを軽減できるような、シンプルかつ柔軟なベースを見つけられないので、このベースになるようにと、私がNGINX Unitを開発しました。
– NGINXとUnitの開発者、Igor Sysoev
NGINX Unitの仕組みNGINX UnitはLinuxやFreeBSDなどのUnixライクなシステムにインストールされます。 NGINX Unitは1つのシステム上で、別々のプロセスをグループにまとめます。セキュリティを保護するため、メインプロセスだけをルートとして実行し、クライアント接続、アプリケーションプロセス、およびコードは切り離された別のプロセス内で、権限を制限して実行します。
コントローラープロセスは、構成を目的として実行されます。NGINX Unitの構成は、 RESTful JSON APIを使用して動的に行われます。構成はすべてが一度にアップロードされることも、一部だけがアップロードされることもあります。NGINX Unitは、構成が変更されるたびに全体を再読込みするのではなく、その変更をメモリ内で直接実行します。そのため、必要な部分だけが再読込みされます。NGINX Unitの構成は必要なだけ何度
でも更新することができ、システムのリソースをそれ以上消費する心配がありません。
ルータープロセスは、クライアントと対話しながら行われます。クライアントのリクエストを受け取ると、それをアプリケーションプロセスに渡します。そして、アプリケーションからレスポンスが返ったら、それをクライアントに転送します。ルータープロセス内のワーカースレッドは、一つで何千という接続を同時に処理することができます。
アプリケーションプロセスは、アプリケーションコードを実行します。新しいアプリケーションプロセスは、メインプロセスによってオンデマンドで作成されます。
コントローラープロセス 構成
JSON API over HTTP
クライアントHTTP
補助スレッド
ワーカースレッドワーカースレッド
ワーカースレッド
ルータープロセス (複数のスレッド)
構成
リクエストとレスポンスが共有メモリを経
由して転送される
アプリケーション3のプロセス
アプリケーション2のプロセス
アプリケーション1のプロセス
メインプロセスがアプリケーションプロセスを作成
メインプロセス
NGINX Unitのアーキテクチャ。
サポートされる言語• Go• Perl
• php• Python
• Ruby
NGINX Plusのモニタリングと管理を一つに集約あらゆる企業で、デジタル変革が行われています。このデジタル変革には、アプリケーションを迅速にデプロイし、管理すると同時に、これらのアプリケーションを支えるITインフラを設計できる能力が不可欠です。ダウンタイムや、パフォーマンスの低下が発生すると、ITリソースの効率が悪くなり、生産性も下がって収益が悪化します。
デジタル変革を実現し、デジタルネイティブへと進化するために、IT担当者や開発者は様々な課題に挑戦しています。パブリックとプライベートを含むマルチクラウドでも、短期間でインフラを構成し、プロビジョニングしなくてはなりません。このような異種インフラで、信頼性、パフォーマンス、可用性を維持しながらビジネスアプリケーションを作ることが、今後ますます重要になってくるでしょう。また、アプリケーションの操作が簡単でなければ、デプロイを加速することはできません。しかし、これらすべてを実現できれば、企業はアプリケーションを革新し、短い期間でそれを市場に出せるはずです。
その変革に、NGINX Controllerが力を発揮します。NGINX Controllerを使えば、マルチクラウド環境で複数のNGINX Plusサーバーを簡単に管理することができます。直観的なウィザードスタイルのインターフェイスを使用して、NGINX Plusの新しいインスタンスを作成することや、ロードバランシング、URLルーティング、SSLターミネーションなどの機能を集中管理することが可能です。高度なモニタリング機能とアラート機能は、アプリケーションの可用性、パフォーマンス、信頼性を向上させるのに役立ちます。NGINX Controllerでは、主要な指標から深遠なインサイトを入手することができます。また、ベストプラクティスをもとに作られる先見的なアドバイスを利用することで、インフラのパフォーマンスにどのような問題が発生した場合でも、リアルタイムに検出してすばやく解決することができます。
NGINX Controllerの利点
シンプルな管理 – 複数のNGINX Plusインスタンスをマルチクラ ウド環境全体で評価し、問題を 解決することができ、デプロイの手間もかかりません。
戦略的なコマンド – 情報を詳細に入手し、パフォーマンスとセキュリティに関するベストプラクティスに従うことで、障害によるシステムの停止を防げます。
デプロイを俊敏に – 新しい機能やアプリケーション をすばやくデプロイすることができます。
「私たちのビジョンは、NGINX Controllerをインフラにおけるインテリジェントな頭脳にすることです。 情報を吸収し、リアルタイムに判断を下すことを、人の手を介さずできるようにしたいのです。」
– Gus Robertson、NGINX, Inc. CEO
NGINX Controllerの仕組みNGINX Controllerは、パブリックまたはプライベートのクラウドにインストール可能なDockerパッケージです。
NGINX Controllerは、ターゲットのNGINX Plusサーバーに配置される小さなエージェントを経由して動作します。エージェントをNGINX Plusにインストールして登録すると、NGINX Controllerを使用してNGINX Plusインスタンスを管理することが可能になります。このエージェントは、NGINX Plusインスタンスに関するパフォーマンスデータをNGINX Controllerへ送信します。NGINX Controllerは、これらのインスタンスのパフォーマンス指標から重要な情報を判別して提示します。主要OS、あるいはNGINX Plusのパフォーマンスに関する200の指標を、リアルタイムでモニタリングすることができ、指標が一定のしきい値を超えた場合にアラートを作成して受け取るようにすることも可能です。OverViewダッシュボードを使用すれば、環境の健全性をすばやく評価することができます。このダッシュボードはカスタマイズ可能なので、200種類の指標の中から必要なものを選び、それらの指標のチャートでダッシュボードを構成することもできます。REST API経由でパフォーマンス指標を
取得すれば、他のどのモニタリングツールとでもシームレスに統合させることが可能です。
NGINX Controllerでは、ウィザード画面に表示される説明に従ってロードバランサーを設定することができます。わずか数回クリックするだけで設定が完了するので、時間や費用を大幅に節約でき、手間もほとんどかかりません。
NGINX Plusを一か所で管理し、モニタリングできるNGINX ControllerのUI。
NGINX Controllerの利点• 管理の手軽さ – 1つに集約された管理インターフェイ
スにより、複数のNGINX Plusインスタンスの管理を簡単に構成して使用することができます。
• ビジビリティ – NGINX Plusのすべてのインスタンスと、その基盤であるOSについて、200のパフォーマンスKPIから深遠なインサイトを得ることができます。
• コントロール – ベストプラクティスに従うことで、時間を節約しながらSLAを満たし、パフォーマンスの課題を識別して、問題を解決することができます。
• アジリティ – 環境ごとにポリシーを作成することで、新しいアプリケーションを短期間でデプロイすることができます。
• マルチクラウドに対応 – パブリックとプライベートを問わず、どのクラウドにでもNGINX Controllerをデプロイすることで、マルチクラウド環境で動作するNGINX Plusインスタンスを管理できます。
詳しくは nginx.com をご覧いただくか、 [email protected]までEメールでお問い合わせください。
NGINXおよびNGINX PlusはNGINX, Inc.の登録商標です。