コンテナベヌスのアプリケヌションを蚭蚈するための7぀の原則

昚幎の終わりに、Red Hat は、コンテナ化されたアプリケヌションがクラりドの䞖界の䞍可欠な郚分になるために埓うべき原則を抂説するレポヌトを公開したした 。「これらの原則に埓うこずで、Kubernetesなどのクラりドプラットフォヌムでアプリケヌションを自動化する準備が敎いたす「Red Hatによるず。 そしお、私たちはこの文曞を研究した結果、圌らの結論に同意したため、ロシア語を話すITコミュニティず共有するこずにしたした。







この蚘事は、Red Hatのアヌキテクトであり、いく぀かのApacheプロゞェクトに積極的に参加しおおり、Camel Design PatternsおよびKubernetes Patternsの著者であるBilgin Ibryamが䜜成した元の文曞 PDF の逐語的な翻蚳ではありたせんが、䞻なポむントを提瀺しおいるこずに泚意しおくださいかなり無料のプレれンテヌションで。



原則ずしお、クラりドベヌスクラりドネむティブアプリケヌションでは、障害が予芋され、基盀ずなるむンフラストラクチャに問題が発生しおいる堎合でも機胜ずスケヌリングが可胜です。 これを可胜にするために、そのようなアプリケヌションを実行するように蚭蚈されたプラットフォヌムは、それらで起動されるアプリケヌションに特定の矩務ず制限を課したす。 芁するに、アプリケヌションはコンテナに入れお実行するだけでは十分ではありたせん。Kubernetesのようなプラットフォヌムで効率的にオヌケストレヌションを行うには、远加の䜜業が必芁です。 圌らはどんな人ですか



クラりドネむティブアプリケヌションぞのRed Hatアプロヌチ



ここで提案されおいるアむデアは、他のさたざたな䜜品に觊発されおいたす䟋

Twelve-Factor App 、゜ヌス管理からアプリケヌションスケヌラビリティモデルたで、倚くの分野をカバヌしおいたす。 ただし、ここで説明する原則の範囲は、Kubernetesなどのクラりドネむティブプラットフォヌム向けのマむクロサヌビスベヌスのコンテナヌ化アプリケヌションの蚭蚈に限定されたす。



すべおの原則の説明では、コンテナむメヌゞがメむンプリミティブずしお䜿甚され、コンテナオヌケストレヌションプラットフォヌムが起動のタヌゲット環境ずしお䜿甚されたす。 これらの原則に埓うこずは、コンテナがそれらに埓っお準備されたほずんどのオヌケストレヌション゚ンゞン、぀たり スケゞュヌラによっお提䟛され、自動的にスケヌリングおよび監芖されたす。 原則は、優先順䜍ではなくランダムにリストされおいたす。



1.単䞀懞念原則SCP



倚くの点で、SCPはSOLIDの単䞀責任原則SRPに䌌おいたす。これは 、各クラスに1぀の責任が必芁であるこずを瀺しおいたす。 SRPの背埌にある動機-クラスの倉曎に぀ながる理由は1぀だけです。



「懞念」ずいう蚀葉「懞念」、「懞念」、「関心」、「タスク」ず蚳されるは、 懞念が責任よりも高い抜象化レベルであるこずを匷調したす。これは、コンテナのタスクの範囲をよりよく衚したすクラスず比范。 SRPの䞻な動機が倉曎の唯䞀の理由である堎合、SCPの堎合、コンテナむメヌゞずその亀換可胜性を再利甚できたす。 1぀のタスクを担圓するコンテナを䜜成し、それを完党に解決するず、他の状況でこのむメヌゞを再利甚する可胜性が高くなりたす。



䞀般に、SCPの原則は、各コンテナが単䞀の問題を解決し、それをうたくやらなければならないこずを瀺しおいたすUNIX哲孊からの叀兞-DOTADIW 、「1぀のこずをしお、それをうたくやる」- 箄 。 マむクロサヌビスが倚くの問題を担圓する必芁がある堎合、サむドカヌやinitコンテナヌなどのパタヌンを䜿甚しお、倚くのコンテナヌを単䞀のデプロむ可胜なプラットフォヌム䞋に結合し、各コンテナヌが単䞀のタスクに関䞎し続けるこずができたす。







2.高可芳枬性原理HOP



コンテナは、アプリケヌションをパッケヌゞ化しお実行するための統䞀された方法であり、アプリケヌションをブラックボックスに倉えたす。 ただし、コンテナは、実行する環境にアプリケヌションプログラミングむンタヌフェむスAPIを提䟛する必芁があり、コンテナの状態ず動䜜を監芖できるようにしたす。 これは、コンテナの曎新を自動化し、ラむフサむクルを維持するための前提条件です。



実甚的な芳点から、コンテナ化されたアプリケヌションは、少なくずも少なくずも状態のさたざたなチェックのためのAPIを提䟛する必芁がありたす 掻性 操䜜性ず準備 サヌビス芁求に察する準備。 さらに良いこずに、アプリケヌションのステヌタスを監芖する他の方法が提䟛されおいる堎合-特に、FluentdやLogstashなどのナヌティリティを䜿甚した重芁なむベントをSTDERRおよびSTDOUTに蚘録し、メトリックを構築するためのツヌルずの統合OpenTracing、Prometheusなど







結論は次のずおりです。アプリケヌションをブラックボックスずしお扱いたすが、プラットフォヌムがアプリケヌションを監芖し、可胜な限り管理するために必芁なすべおのAPIを実装したす。



3.ラむフサむクル適合性原則LCP



HOPがプラットフォヌムが「読み取る」こずができるAPIの提䟛に぀いお話す堎合、LCPは裏返しです。アプリケヌションはプラットフォヌムからのむベントに぀いお孊習できるはずです。 さらに、それらに぀いお孊ぶだけでなく、それらに察応するこずも、この原則の名前の由来です「適合」は「適合」、「同意」、「芏則に埓う」ず蚳されたす 。



管理プラットフォヌムには、コンテナのラむフサむクルの管理に圹立぀倚くのむベントを含めるこずができたすが、䞀郚のむベントは他のむベントよりも重芁です。 たずえば、プロセスを正しく完了するには、アプリケヌションが適切なシグナルSIGTERMでメッセヌゞを受信しお​​、SIGKILLを介した䜜業の緊急終了を回避する必芁がありたす。 他にも重芁なむベントがありたす。たずえば、PostStartやPreStopは、操䜜の開始時にアプリケヌションを「りォヌムアップ」するか、逆に終了時にリ゜ヌスを解攟するために必芁です。



4.むメヌゞ䞍倉性の原則IIP



コンテナ化されたアプリケヌションでは、䞍倉性が定められおいたす。それらは䞀床収集された埌、異なる環境で倉曎なしに起動されたす。 これは、䜜業で䜿甚されるデヌタを保存するための倖郚ツヌルの䜿甚、および異なる環境甚のさたざたな構成の䜜成/適甚を意味したす。 コンテナ化されたアプリケヌションの倉曎は、すべおの環境で䜿甚される新しいコンテナむメヌゞのアセンブリに぀ながるはずです。 䞍倉むンフラストラクチャず呌ばれる同じ原則が、サヌバヌむンフラストラクチャの管理に䜿甚されたす。







5.プロセスの䜿い捚おの原則PDP



コンテナ化されたアプリケヌションに切り替える䞻な理由の1぀は、コンテナの寿呜をできるだけ短くし、い぀でも別のコンテナず亀換できるようにするこずです。 コンテナを眮き換える倚くの理由がありたす状態の確認、アプリケヌションのスケヌルダりン、別のホストぞの移行、リ゜ヌスの䞍足...



したがっお、コンテナ化されたアプリケヌションは、状態を分散および冗長に保぀必芁がありたす。 さらに、アプリケヌションは迅速に開始および停止する必芁があり、突然のそしお完党なハヌドりェア障害に備えおさえ準備する必芁がありたす。 この原則を実装するもう1぀の優れた方法は、次のように小さなコンテナを䜜成するこずです コンテナは異なるホストで自動的に起動され、サむズが小さいず起動時間が短瞮されたす最初にホストシステムに物理的にコピヌする必芁があるため。



6.自己抑制原則S-CP



コンテナには、Linuxカヌネルの存圚のみに䟝存しお、アセンブリ時に必芁なものがすべお含たれおいる必芁がありたすすべおの远加ラむブラリは、アセンブリ時に「衚瀺」されたす。 これは、ラむブラリに加えお、実行可胜なプログラミング蚀語環境、アプリケヌションプラットフォヌム䜿甚する堎合、およびコンテナ化されたアプリケヌションを実行するためのその他の䟝存関係を含める必芁があるこずも意味したす。 唯䞀の䟋倖は、環境によっお異なる蚭定であり、起動時に提䟛する必芁がありたすたずえば、KubernetesのConfigMap



。







䞀郚のアプリケヌションは、倚くのコンテナ化されたコンポヌネントで構成されおいたす。 たずえば、コンテナ化されたWebアプリケヌションでは、デヌタベヌスを含むコンテナが必芁になる堎合がありたす。 この原則は、コンテナを結合するこずを提䟛しおいたせん。デヌタベヌスを備えたコンテナだけがその操䜜に必芁なすべおを備え、Webアプリケヌションを備えたコンテナはWebアプリケヌションWebサヌバヌなどのすべおを備えおいる必芁がありたす。



7.ランタむム制限の原則RCP



S-CPの原則では、アセンブリ時間ず結果のバむナリの内容の芳点からコンテナを考慮したすが、コンテナはディスク䞊にある1次元のブラックボックスではありたせん。 コンテナのその他の「枬定倀」は、起動時に衚瀺されたす-これらは、メモリ、プロセッサ、その他のリ゜ヌスの消費量の「枬定倀」です。







コンテナはリ゜ヌス芁件を宣蚀し、この情報をプラットフォヌムに送信する必芁がありたす。これは、CPU、メモリ、ネットワヌク、ディスクに察するリク゚ストがプラットフォヌムの蚈画、自動スケヌリング、リ゜ヌス管理の実行に圱響し、コンテナの䞀般的なSLAレベルを提䟛するためです。 さらに、アプリケヌションがそれに割り圓おられたリ゜ヌスに適合するこずが重芁です。 リ゜ヌスが䞍足しおいる堎合、プラットフォヌムはそのようなコンテナを停止たたは移行する可胜性が䜎くなりたす。



その他の掚奚事項



これらの原則に加えお、コンテナに関連する基本的ではないが、それでも有甚なこずが倚いプラクティスが提案されおいたす。





トピックに関するパタヌンずベストプラクティスに関する远加リ゜ヌスぞのリンク





翻蚳者からのPS



これらの原則の䞀郚-特に、「すべおを支配する1぀のむメヌゞ」ず呌ばれる画像䞍倉性原則IIP、および自己抑制原則S-CPは、レポヌト「 ベストCI / KubernetesずGitLabを収録したCD 」 リンクテキストスクむヌズずフルビデオ 。



ブログもご芧ください。






All Articles