Yandexクラりドプラットフォヌム。 コカむン

少し前に、Yandexの基本的なクラりドテクノロゞヌの1぀であるEllipticsに぀いお詳しく説明し始めたした 。 今日は、「゚ルフ」が機胜し、クラりドの倢を珟実に少し近づける、他の䜕かに぀いお話す番です。 コカむンに぀いおです。



Cocaine蚭定可胜な党胜カスタムアプリケヌション統合ネットワヌク゚ンゞンは、オヌプン゜ヌスPaaSシステムPlatform-as-a-Serviceであり、本質的にアプリ゚ンゞンであり、Google AppEngine、OpenShift、 CloudFoundryたたはHeroku。







クラりドはすべおのむンフラストラクチャの問題を解決し、コストを利益に倉え、氞遠の喜びず幞犏であなたの人生を氞遠に飜和させるこずができるこずを誰もが知っおいたす。 これらの目暙に察する唯䞀の障害は、実際には雲です。 IaaS 、 PaaS 、 SaaS  サヌビスずしおは䜕ですか すべおが最終的に良くなるように、どのような皮類の神秘的な文字を遞択する必芁がありたすか



私たちは、これらの問題の調査に倚くの時間を費やし、私たちの意芋、アむデア、抂念を遞択しお、すぐにむンストヌル、構成、正垞に䜿甚したいクラりドプラットフォヌムを構築したした。



物語


このテクノロゞヌの誕生の歎史は、Herokuず密接に関連しおいたす。 昔々、クラりドテクノロゞヌはそれほど人気が​​なかったが、Herokuがすでにあったので、私たちのプロゞェクトの創蚭者であるAndrei Sibiryovは圌女に興味を持ちたした。







圓時のHerokuは、Rubyだけがサポヌトするアプリ゚ンゞンでしたが、アむデア自䜓は革新的でした。 考えおみおください。独自の鉄道アプリケヌションを䜜成しおクラりドにアップロヌドし、むンフラストラクチャの問題に぀いおたったく考えないようにするこずができたす。 デヌタベヌスが必芁ですか 問題ありたせん-アドオンがありたす ログを取埗するには 再び問題ありたせん 負荷分散の問題も魔法のように解決されたした。 サむトは若くお発展䞭ですか たあ、圌はリ゜ヌスを持っおいたす。 このサむトはすでに人気がありたすか たあ、クラりドは圌が負荷の䞋で「膚匵」し、生き残るのに圹立ちたす。 さらに、Gitに参加するように教えられた最も早い時期からgitを介しお迅速に展開したす。



かっこいいですね。 いずれにせよ、これがHerokuの䜍眮付けです。 珟実には、もちろん、すべおがより暗かったです。



圌らは玠晎らしいアむデアを持っおいお、実装はありたしたが、実際にそれが䞀般的にどのように機胜するかを説明しおいたせんでした。 ご存知のように、未知の新しい䜕かを理解したい堎合は、開発者の立堎に身を眮いおください。 あなたはパンや欠陥を芋ながら曞きたすか そのため、クラりドアプリ゚ンゞンのオヌプン゜ヌスプロゞェクトが開始されたした。 将来的には、倖囜の開発者が同じロゞックに導かれた可胜性が高いず思いたす。これにより、OpenShiftずCloudFoundryのような類䌌の補品の開発が促進されたした。 それらに぀いおは少し埌で説明したす。



コカむンはもずもず楜しいガレヌゞプロゞェクトでしたが、Yandexが内郚甚に「倚分10、倚分100,000 RPS」の負荷を凊理できる膚匵したアプリケヌションプラットフォヌムを必芁ずしたずきに、すべおが倉わりたした。目暙。 䞀方、J。Browserは同じニヌズに近づいおおり、プロゞェクトがガレヌゞから抜け出す時であるこずが明らかになりたした。



しばらくの間、話をさおおき、也燥した統蚈ず議論の䜙地のない声明の䞖界に飛び蟌みたしょう。



Yandexがコカむンを䜿甚する堎所


Yandex.Browser-ブラりザのバック゚ンド党䜓がコカむンを介しお機胜したす。 たずえば、「Smart Line」、「Quick Links」、「Favorite Sites」。 Yandexの内郚むンフラストラクチャ。



サポヌトされおいるプラ​​ットフォヌム


珟圚、コカむンは次のLinuxディストリビュヌションのパッケヌゞから展開できたす。





残念ながら、Windowsのサポヌトはなく、蚈画もされおいたせんが、これは、たずえばCなどのナヌザヌが他の堎所でスピンしおいるクラりドサヌビスを䜿甚できないこずを意味するものではありたせん-適切なフレヌムワヌクを蚘述するだけですこれに぀いおは埌述したす 。

゜ヌスから、Cocaineは、boost 1.46+およびC ++ 11暙準レベルGCC 4.4をサポヌトする ぀たり、ほずんどなしコンパむラヌを備えたほがすべおの* nixシステムで構築できたす。



おたけずしお、コカむンはMac OS Xの゜ヌスから正垞にビルドされたす。Dockerテクノロゞヌのサポヌト埌述には、3.8幎以䞊のLinuxカヌネルが必芁です。



なぜそんなにコカニヌなのか


コカむンが䞻芁な競合他瀟ずどのように異なるかを詳しく芋おみたしょう。

Herokuから始めたしょう。



Herokuは、䞻に独自の䟡栌蚭定ポリシヌを備えたオヌプン゜ヌステクノロゞヌではありたせん。 しかし、明瀺的な収益化により、Herokuのサポヌトがさらに匷化され、写真付きの優れた珟圚のドキュメントがありたす。 最初から最も䟿利なgitベヌスのアプリケヌションデプロむメントシステムは、コヌドのクリヌンアップを匷制し、fakapの堎合にロヌルバックを可胜にしたす。

倚数のアドオンにより、さたざたなデヌタベヌス、キャッシュ、キュヌ、同期、ロギングなどのアプリケヌションのニヌズに簡単に察応できたす。



起動時のアプリケヌション自䜓は、dynoず呌ばれるプロセスで互いに完党に分離されおいたす。dynoは、耇数のサヌバヌで構成される特別なdynoグリッドに分散されおいたす。 Dynoは負荷に応じお必芁に応じお起動し、存圚しない堎合は匷制終了されたす。したがっお、Herokuでは、負荷分散ずフォヌルトトレランスが保蚌されたす。

Rubyのみの初期サポヌトにもかかわらず、Herokuは珟圚、Java、Closure、Node.js、Scala、Python、および突然のPHPなどの蚀語でアプリケヌションを䜜成する機胜を提䟛したす。



CloudFoundryずOpenShiftの開発は、コカむンずほが同時に始たりたした。 どちらも倧䌁業それぞれVMwareずRedHatから匷力なサポヌトを受けおいるオヌプン゜ヌスプロゞェクトです。 CloudFoundryは、珟時点ですでに1぀の再生を生き延びおいたす。 ただし、蚀語サポヌトはJava、Scala、Groovy、Ruby、およびJavaScriptに限定されおいたす。

OpenShiftはこれにより優れおいたす。Python、Perlに加えおサポヌトされおおり、必芁な蚀語を自分でサポヌトする機䌚がありたす。 残念ながら、アプリケヌションはhttpを介しおのみ盞互に通信できるため、クラりドの範囲が倚少制限されたす。



コカむンは同時にそれらず比范しお有利です





簡単な動䜜原理


次に、クラりドの実際の動䜜を芋おみたしょう。同時に、゜リュヌションの遞択に圱響を䞎えた理由を説明したす。



クラりドはむンフラストラクチャの問題を解決するように蚭蚈されおいたす。



これらのタスクの1぀は、フォヌルトトレランスを確保するこずです。 1台のマシンでのみ実行されるクラりドプラットフォヌムに誰もが感心するこずはたずありたせん。 この堎合、クラりドはマシンずずもに消滅したす。 コカむンのクラりドは、コカむンランタむムサヌバヌがむンストヌルされおいる1぀以䞊の独立したマシンで構成されおいたす。 実際、プラットフォヌムの最小機胜に必芁なのはこれだけです。







CloudFoundryを経由せず、クラりドの論理郚分ごずに個別のプログラムを開始するこずにしたした。 したがっお、たずえば、他のクラりドでHealthManagerず呌ばれるもの-実行䞭のアプリケヌションの寿呜を監芖する-は、単䞀の゚ンティティに統合されおいたす。 このような゜リュヌションは、䞀方ではノヌドの管理を簡玠化し、障害ポむントの数を枛らしたすが、䞀方では、コカむンランタむムが「萜ちた」堎合、ノヌド党䜓がしばらくリストから削陀されたす。 しかし、時間ず負荷のテストにより、このような゜リュヌションの遞択が成功したこずが瀺されたした。



コカむンランタむムを実行するマシンが12台あるずしたす。 しかし、これらの車はお互いに぀いお䜕も知りたせん。 クラりドトポロゞ蚭蚈スキヌムを遞択するためのオプションを怜蚎する際、2぀のオプションが考慮されたした。 最初のケヌスでは、すべおのノヌドのIDが保蚌されたす。ノヌドが死んだ堎合、重芁なものは䜕も倉わりたせん。 しかし同時に、ロゞックが混圚しおいたす。なぜなら、 基本的に2぀の゚ンティティが関係したす。1぀目はノヌドの集玄ずその管理です。 2番目はノヌドの管理です。 2番目の堎合、ノヌドを集玄するコカむンランタむムロゞックは他のノヌドから完党に分離されおいたすが、このノヌドは特別な方法で構成する必芁がありたす。 最終的に、2番目のオプションが遞択されたした。



ナヌザヌは、アクセスするサヌビスたたはアプリケヌションの堎所に぀いおは䜕も知りたせん-集玄ノヌドのアドレスずアプリケヌションの名前のみが知られおいたす。 野田自身がリク゚ストに最適なマシンを遞択し、リク゚ストを実行したす。



クラりドアプリ゚ンゞンは、アプリケヌションの実行方法がわからない堎合、そのようには呌び出されたせん。 実際、コカむンランタむムは䜕を実行するかを実際に気にしたせん。 唯䞀の芁件は、ファむルが実行可胜であるこずです。 もう1぀は、このアプリケヌションがほがすぐに終了するこずです。 単玔なハンドシェむクメッセヌゞに返信するこずはできたせん。たた、原則ずしお、倖郚からアプリケヌションを制埡する䞀般的な手段はありたせん。 動䜜する堎合、これは、たずえば、ハングしないずいう意味ではありたせん。 そしお、ここでアプリケヌションたたはワヌカヌの寿呜を制埡するトピックに近づきたす。



実行䞭のアプリケヌションは䜕らかの方法で制埡する必芁がありたす。 実際、最小限の芁件が必芁です。アプリケヌションは、ハヌトビヌトコマンドを䜿甚しおサヌバヌが生きおいるこずをサヌバヌに通知し、終了コマンドを䜿甚しお矎しく終了する必芁がある堎合がありたす。 アプリケヌションの応答が長すぎない堎合、アプリケヌションは停止しおいるず芋なされ、SIGKILLが送信されお終了したす。 ぀たり、ワヌカヌは特別なシンプルなプロトコルを実装する必芁がありたす 。 アプリケヌション開発の利䟿性のために、 フレヌムワヌクず呌ばれるさたざたな蚀語甚のアダプタヌが䜜成されたした。



5分間の履歎


フレヌムワヌクは、特定の蚀語がクラりドず通信するための最もネむティブな方法を実装する特別なAPIです。 たずえば、内郚プロトコルの実装はフレヌムワヌクの䞋に隠されおいるため、クラりドサヌビスを呌び出しお操䜜するのは非垞に簡単です。 たた、非同期呌び出しでの䜜業を簡玠化するツヌルが実装されおいたす。 珟時点では、サポヌトはすでに実装されおいたす。





コン゜ヌルむンタヌフェヌスずWebの䞡方を介しお、このすべおのクラりドを管理するツヌルがありたす 。 それらの実装は、倚くの点で類䌌のHerokuたたはCloudFoundryツヌルず非垞によく䌌おいたす。アプリケヌションのデプロむ、起動、停止、管理、構成、および統蚈の収集ずログの衚瀺が可胜です。 ここで䜕か新しいものを思い付くのは本圓に難しいですが、Amazon EC2ツヌルはシンプルさず䟿利さの点で私たちの䟋ですが、私たちはそれを目指しお努力しおいたす。



建築


䞀歩䞋がっお、クラりドむンフラストラクチャを芋おみたしょう。 クラりドずは䜕ですか 通垞、リ゜ヌスを提䟛するマシンがいく぀かありたす。 これらのマシンは、䜕らかの制埡芁玠によっお䜕らかの圢で単䞀の゚ンティティに接続されおいたす。 提䟛される共有リ゜ヌスは、さたざたなサヌビスずナヌザヌアプリケヌションを敎理するために䜿甚されたす。 䜕にも䌌おいたせんか

1぀の通垞コンピュヌタヌのむンフラストラクチャを管理し、そのリ゜ヌスをナヌザヌに提䟛するプログラムを含む゜フトりェアのカテゎリがありたす。 モゞュヌルには明確な区分があり、コントロヌル゚ンティティがあり、ナヌザヌスペヌスがありたす。 もちろん、 オペレヌティングシステムに関するものです 。 クラりドむンフラストラクチャの堎合、同様のこずをしおみたせんか



それがコカむンの䜜り方です。



すべおの䞭心にあるのは、 サヌビス 、 ドラむバヌ、およびAPIの基本階局を含むコアです。 このサヌビスは、本質的にC ++で蚘述されたラむブラリであり、カヌネルに接続され、クラりドに特定のサヌビスを提䟛したす。 サヌビスはコカむンランタむムず同時に起動され、動䜜䞭は垞に単䞀のコピヌ内の別のスレッドで実行されたす。







メむンサヌビスはNodeサヌビスで、 アプリケヌションの開始、停止、および操䜜を制埡できたす。 最初に起動されたアプリケヌションにはワヌカヌがありたせん-このアプリケヌションのむンスタンス-は、アプリケヌションの時点で生成を開始し、アプリケヌションの負荷を増やしたす。



各アプリケヌションには、ワヌカヌずクラむアント間でメッセヌゞキュヌをディスパッチする゚ンゞンがあり、これらのワヌカヌの数を管理および分散したす。



Locatorサヌビスを䜿甚するず、独立したノヌドを単䞀のクラスタヌに接続し、クラりド内のクラむアントから芁求されたアプリケヌションたたはサヌビスを怜玢できたす。 たずえば、䞀郚のアプリケヌションがロガヌサヌビスを芁求する堎合、ロケヌタヌはどの゚ンドポむントに提䟛するかを決定したす。 ゚ンドポむントずずもに、サヌビスメ゜ッドディスパッチテヌブルも提䟛されたす。 それに぀いお蚀えば、 CORBAやThriftの RPCメカニズムずは異なり、サヌビスおよびアプリケヌション のむンタヌフェむス IDLの必須の蚘述を取り陀くこずにしたした。 代わりに、各解像床でメ゜ッドのテヌブルをロヌドするず、フレヌムワヌクは各蚀語をネむティブに操䜜する方法を実装したす。 これに必芁なのは、芁求されたサヌビスの名前ず、堎合によっおはバヌゞョンだけです。



これの恩恵を受けたしたか 間違いなくはい 各アプリケヌションのIDLを定矩する必芁性を排陀するこずにより、RubyやPythonなどの動的蚀語の開発を倧幅に促進したした。 アプリケヌションのAPIが倉曎された堎合、すべおのフレヌムワヌクのスタブを曞き換える必芁はありたせん。動的に型付けされた蚀語の堎合、メ゜ッドは通垞動的に䜜成されたす。



サヌビスに぀いお続けたす


ログを蚘録する手段のないクラりドが少なくずも1぀あるこずはほずんどありたせん。ノヌド党䜓からのログ転送の単䞀ポむントであるLoggerサヌビスずしお実装しおいたす。



最埌に、 ストレヌゞサヌビスは、アプリケヌション自䜓、マニフェスト、プロファむル、およびアプリケヌション自䜓を含む必芁なその他の情報など、䜕でも保存するための抜象的なむンタヌフェヌスです。



サヌビスアヌキテクチャは拡匵が可胜であり、Linuxカヌネルモゞュヌルに䌌おいたす。 独自のサヌビスを蚘述したり、既存の階局を展開したりできたす。







ドラむバヌはスタンドアロンであり、その目的はクラりドによっお凊理されるむベントを生成するこずです。 たずえば、このようなむベントは、ファむルたたはディレクトリの倉曎、タむムアりト、たたはその他のむベントです。 オプションずしおADC甚のドラむバヌを䜜成できたす。これにより、信号が到着するず凊理のためにリセットされたす。



アプリケヌションずサヌビスがHTTPを介しおのみ互いに​​通信できる倚くの同様のPaaSずは異なり、コカむンはRPCメカニズムを介しおバむナリHTTP / 2.0のようなプロトコルを介しお通信したす。 これにより、たずえば、フレヌムワヌクが提䟛するツヌルを䜿甚しお、異なるアプリケヌション間で盎接察話する機䌚が埗られたす。 詳现に぀いおは、 こちらをご芧ください 。 もちろん、HTTPむンタヌフェヌス自䜓はただここにありたす。 各フレヌムワヌクには、HTTPアプリケヌションの開発を簡玠化するネむティブツヌルが甚意されおいたす。 たずえば、Pythonの堎合、フラスコのようなデコレヌタヌがありたす。



倖郚では、HTTPむンタヌフェむスこのオプションが提䟛されたすがだけでなく、たずえばZeroMQたたは独自の拡匵機胜を介しおアプリケヌションにアクセスするこずもできたす。



スケヌリングず分離


Cloudディストリビュヌションが実際にどのように実装され、負荷の䞋でどのように生きようずしおいるのかを詳しく芋おみたしょう。



クラスタヌが開始されるず、個々のノヌドコカむンランタむムを実行しおいるマシンは、各マシンをマルチキャストグルヌプに登録する内郚Locatorサヌビスを䜿甚しお盞互に孊習し、それにより、すべおのノヌドずMetalocatorの入力ポむントである別のノヌド間の通信を敎理したすクラりドず基本的な負荷分散の実行。 別のマシンで新しいアプリケヌションが衚瀺されたり、既存のアプリケヌションが増えたりするず、金属スキャナヌはすぐにそのこずを認識し、負荷をそれに向けたす。



たた、クラりドは前述の゚ンゞンを䜿甚しお、メッセヌゞキュヌず負荷制埡を監芖したす。 アプリケヌションの負荷が増加するず、プラットフォヌムは、ノヌドの負荷ずさたざたなマシンのスロットの可甚性に関する内郚的なアむデアに基づいお、このアプリケヌションの必芁な数のむンスタンスを自動的に起動したす。 この状況のスロットは、マシンの䜕らかの統合リ゜ヌスずしお理解されたす。



アプリケヌションを生成および分離するためのシステムは、 Isolateず呌ばれる別の゚ンティティになりたす。 暙準構成では、クラりドは通垞のプロセスを䜿甚しお新しいアプリケヌションむンスタンスを起動したす。 Dockerサポヌトがプラグむンずしおむンストヌルされおいる堎合、クラりドは新しいアプリケヌションを個別の隔離されたコンテナヌで起動したす。



分離 簡単


Dockerは、任意のアプリケヌションから軜量でポヌタブルで自己完結型のコンテナヌを䜜成するためのシンプルで効率的な方法を提䟛するオヌプン゜ヌステクノロゞヌです。 䜜成されたコンテナは、開発者やテスタヌのラップトップから数千台のサヌバヌのクラスタヌたで、ほがすべおの環境で同様に機胜したす。 これにより、たずえば、アプリケヌションをバむナリの䟝存関係ずずもに分離し、ラむブラリの他のバヌゞョンが原因でクラりド内でアプリケヌションが異なる動䜜をしたり、たったく起動しないず思うこずを防ぐこずができたす。



Dockerテクノロゞヌは、通垞のLinuxコンテナLXCに基づいおおり、ネヌムスペヌスずcgroupを䜿甚しお、隔離された環境でアプリケヌションを実行する機胜を提䟛したす。 XenやKVMなどの完党仮想化環境ずは異なり、コンテナは共通のコアを䜿甚し、デバむスを゚ミュレヌトする機胜を提䟛したせんが、同時にそれらを䜿甚するず远加のオヌバヌヘッドが発生せず、ほが瞬時に起動したす。 コンテナ化自䜓に加えお、Dockerは、アプリケヌションむメヌゞのネットワヌク構成、配垃、および展開を簡玠化するツヌルを提䟛したす。 そのようなツヌルの1぀は、耇数の独立したレむダヌからアプリケヌションむメヌゞを䜜成するこずです。

Cocaine'a甚のアプリケヌションを開発し、バむナリ䟝存関係たずえば、C ++たたはPythonのアプリケヌションを匕き出す堎合、Dockerテクノロゞヌはこれらのバむナリ䟝存関係を分離するのに非垞に圹立ちたす。



耐䟵食性


アプリケヌションを䜜成し、サヌバヌにアップロヌドし、構成し、運呜に任せたずしたす。 1週間埌、それがどのように機胜するかを確認し、悲しいこずに、たったく異なる理由でアプリケヌションがかなり前にクラッシュしたこずを発芋したす。





これらの効果は「 ゜フトりェア䟵食 」ずしお知られおいたす。



コカむンは䟵食に匷い技術です。 分離システムは、自発的なラむブラリおよびOSの曎新からアプリケヌションを保存したす。 アプリケヌションがクラッシュたたはフリヌズした堎合、クラりド自䜓によっお、たたは他のクラりドプラットフォヌムでヘルスマネヌゞャヌず呌ばれるシステムによっお自動的に再起動されたす。 鉄自䜓の問題は、雲自䜓によっお平準化されたす。



プラグむンずサヌビス


プラグむンずサヌビスは、プラットフォヌムコアのコンテキストで既に簡単に説明されおいたす。 プラグむンは、アヌキテクチャの拡匵モゞュヌルです。 たずえば、Dockerのサポヌトはプラグむンを䜿甚しお実装されたした。 圌らはに分かれおいたす





プラグむンを䜿甚しお、システムの䞊蚘の郚分の実装を倉曎し、構成ファむルのみを倉曎できたす。 ロギングシステムをSyslogからLogstashに眮き換えたいですか 構成内の3行を倉曎しおも、コヌドは同じたたです。 たぶんデフォルトのバランスシステムはあなたに合わず、あなたはIPVSが欲しいですか 簡単 さお、プリむンストヌルされたプラグむンが十分になく、䜕か新しいものを実装したい堎合はどうでしょうか たあ、それらを曞くこずは完党に簡単であり、リク゚ストのプヌルに非垞に満足しおいたす。



プラグむンの最埌の項目はサヌビスです。 厳密に蚀えば、サヌビスはむンフラストラクチャのさたざたな郚分の抜象的なフロント゚ンドです。



たずえば、䞀般的な堎合、セキュリティ䞊の理由からアプリケヌションがコンテナの倖に出るこずは蚱可されおいないため、 UrlFetchサヌビスを䜿甚するず、アプリケヌションでhttpリク゚ストを䜜成し、これらのリク゚ストを制埡できたす。



Logstashプラグむンを䜿甚しお、クラスタヌ党䜓からのログの集玄、同じElasticsearchでの統合凊理、むンデックス䜜成、ストレヌゞを構成し、 Kibana Yandexで行いたすでの䟿利な衚瀺を蚭定できたす。



Ellipticsプラグむンを䜿甚するず、同じ名前のシステムにすべおの情報を保存できたす。 別の方法ずしお、MongoDBプラグむンずElasticsearchサヌビスが実装されおおり、これらのテクノロゞヌをストレヌゞシステムずしお䜿甚できたす。



おわりに


この玹介蚘事では、コカむンクラりドプラットフォヌムに関する䞀連の蚘事を開始したす。 将来的には、プラットフォヌムのアヌキテクチャ、その長所ず短所すでにそれらが存圚しない堎合は、さらに詳现に怜蚎されたす。



゜ヌスたたはパッケヌゞから独自のクラりドを展開する方法ず、それを構成する方法を瀺したす。 これに続いお、実際のアプリケヌションの䟋を䜿甚しお蚘述されたフレヌムワヌクの説明が続きたす。 これに続いお、すでに蚘述されたプラグむンずサヌビスの説明が続き、独自のプラグむンたたはサヌビスあるいはその䞡方を蚘述する䟋が考慮されたす。 結論ずしお、Cocaine'ovyプロトコルの詳现ず、別の蚀語のサポヌトを远加する方法、぀たり独自のフレヌムワヌクを䜜成する方法を怜蚎したす。



githubで開発しおいたす。 最も関連性の高い情報はすべおここから入手できたす 。 Wikiセクションには、゜ヌスからコカむンを迅速にアセンブルする方法に関するドキュメントがあり、内郚の詳现の説明がありたす。 このプラットフォヌムに興味がある堎合は、既補の浮浪者の画像を䜿っお実際に詊しおみおください。 ご質問がある堎合は、お問い合わせください。



All Articles