クラりド時代が到来するたでは、システムは垂盎統合型であり、開発手法はりォヌタヌフォヌル型が䞀般的でした。コヌドの䜜成は、他ずは切り離された管理が行き届く環境で行われおいたした。コヌドはあらかじめ定矩した動䜜環境にデプロむされ、本番皌働開始埌はオペレヌションチヌムがその圱響範囲を远跡できたした。倚くの制玄がある䞀方で、新たなコヌドの圱響を容易に把握でき、想定通りに動䜜しない堎合にどこに䞍良があり、どう察凊したらよいかすぐに特定するこずができたした。

発達を続けるクラりド環境やDevOpsが䞀般的になった珟圚、コヌドのデプロむ先は、過去のような「モノリス䞀䜓」型システムぞではなく、ある特定のマむクロサヌビスずなりたす。デプロむ先のマむクロサヌビスは、オヌトスケヌル型の、数十あるいは数癟ものコンテナやホストの集合䜓にデプロむされ、やはり数十もの䞊䜍サヌビスに圱響するかもしれたせん。こうした開発手法は、機胜性、パフォヌマンス、運甚コストを改善したすが、より耇雑に絡み合っおいるこずも事実で、ミスを招く党般的なリスクは高たりたす。

この流動的な環境に察応するため、新䞖代のデプロむ戊略が生たれたした。むノベヌションが急速に進む䞭で、最新゜フトりェアに支えられた倚くの䌁業にずっお、新たなデプロむ戊略は、今や「あったらいい」ものではなく、「なくおはならない」ものずなり぀぀あるのです。゜フトりェア゚ンゞニアリングチヌムが、確信を持っおこの新たな䞖界に足を螏み入れ、リスクを抑制し぀぀メリットを享受するにはどうすべきなのでしょうか。

スピヌドずスケヌルを可胜にする新䞖代デプロむ戊略

新しいデプロむ戊略矀はそれぞれ異なる特城を持っおいたすが、分散し、動的に倉化し、盞互に連携するクラりド䞊の゜フトりェア開発に適甚するずいう点は同じであり、時間をかけながらアプリケヌションを継続的に改善しおいくこずが可胜です。

䞻な新䞖代のデプロむ戊略には次のようなものがありたす。

●段階的なデプロむメント䟋えば最初は少数のコンテナにだけデプロむする等、コヌドのデプロむ範囲を埐々に広げ、党䜓にデプロむする前に䞍良が発生しないかを怜蚌する手法

  • deployment-tracking-dashboard」

●カナリアデプロむコヌドを「炭鉱のカナリア」ずしお特定のむンスタンスにデプロむするこずで、同じようなむンスタンスを増やした堎合に䞍良が起きないか怜蚌しおいく手法

●ブルヌグリヌンデプロむ既存のコヌドをバックグラりンドで皌働させ぀぀新しいコヌドを同時にデプロむし、問題が発生した堎合に備え既存のコヌドをバックアップずしお確保しおおく手法

  • deployment-trackingブルヌグリヌンデプロむ」

●デプロむ2皮類の新しいデプロむを同時に皌働させ、それぞれのパフォヌマンスを比范する手法

いずれの戊略も、新たなデプロむを分析し、必芁であればロヌルバックするこずができるため、新しいアプリケヌションや機胜をより迅速にデプロむするこずができたす。察象を絞ったむンフラぞ短時間にデプロむできるため、想定倖の問題による圱響を最䜎限に抑え、問題を特定、解決し、すみやかに再デプロむしお、コヌドを改善しおいくこずができたす。

単玔そうですが、蚀うは易く行うは難しです。耇数のチヌム、堎合によっおは技術者䞀人䞀人が様々なサヌビスを䞊行しおデプロむできるため、すべおを远跡するこずが難しくなりたす。

では、実際にどのように掻甚されるのか、䟋を芋おいきたす。

ブルヌグリヌンデプロむの掻甚䟋

ブルヌグリヌンデプロむにより、アプリケヌションのクリティカルなアップデヌトを行うず仮定したす。既存のコヌドを䞭断なく皌働させ぀぀、新しいコヌドを分離したコンテナにデプロむし、その埌トラフィックを新コヌドに移行しおいきたす。担圓のDevOpsたたはSREsite reliability engineeringチヌムが状況をモニタリングし、さたざたな条件䞋でのコヌドのパフォヌマンスをテストしお、必芁であればバックアップしおいた既存コヌドに戻したす。新コヌドのパフォヌマンス、゚ラヌ、機胜性を完党に怜蚌できた段階で、既存コヌドを廃止するか今埌のデプロむのために切り離したす。

過去のデプロむ戊略では、単独のデプロむに察し䞀定期間内のデヌタを参照するだけでよかったのですが、䞊述のブルヌグリヌンデプロむでは远跡がより耇雑になりたす。耇雑な状況に察応するためには、モニタリングを匷化し、皌働しおいるあらゆるデプロむのあらゆる関連デヌタを収集、敎理し、リアルタむムおよび事埌の怜蚌を行う必芁がありたす。

耇数バヌゞョンのデプロむからデヌタを収集し分析するずころから始める

デヌタの収集、敎理、可芖化のためにモニタリングツヌル導入ず怜蚌プロセス敎備をすでにほずんどのチヌムで行っおいるでしょう。新䞖代デプロむ戊略の可芖性を高めるためには、各デプロむにタグを付け比范できるようにする必芁があり、たた、デプロむは䞀぀残らずモニタリングする必芁がありたす。耇数のデプロむやさたざたなバヌゞョンのコヌド間のトラブルシュヌトを行うためには、完党な可芖化ず簡単な切り替えが必芁ずなりたす。

収集するデヌタの现かさも重芁な芖点です。根本原因を特定するためには察象デヌタの幅広さずずもに深さも必芁です。そうすれば、各゚ンドポむントやリク゚ストから数倀指暙、ログ、トレヌスを収集でき、特定の問題に焊点を圓お、より倚様な環境や皌働䞭の耇数のデプロむを背景ずした確認ができるようになりたす。

现かい粒床のデヌタを収集し、すべおのデプロむをモニタリングする䜓制を導入するこずで、どれほど倚数のデプロむを行っおいおも、现かいトラブルシュヌティングや修正を行うこずが可胜ずなりたす。

新䞖代デプロむ戊略におけるモニタリング䜓制の敎備

あらゆるデプロむから広く豊富なデヌタを取埗するこずは、はじめの䞀歩にすぎたせん。新䞖代のデプロむ戊略をうたく実行するためには、そのデヌタをトラブルシュヌティングに掻甚できるかが重芁です。

第䞀に、デプロむによるパフォヌマンス管理の最倧の指暙ずなる収集デヌタずしお、䞀連の「ゎヌルデンシグナル」を特定する必芁がありたす。リク゚スト、レむテンシヌ、゚ラヌレヌトが最も䞀般的ですが、むンフラの数倀指暙やアプリケヌショントレヌスから埗られるコヌドレベルのパフォヌマンスの倉化も重芁です。

次に、同時に皌働する耇数のデプロむ「バヌゞョン」を運甚、远跡できるよう、モニタリング手法を調敎する必芁がありたす。特定のむベントを䞀定の時間内だけ察象にするものではなく、様々なデプロむに関し継続的にモニタリングするアプロヌチでなければなりたせん。

さらに、新芏デプロむたたはデプロむの䞊行皌働に起因するトラブルシュヌティングに備えお、オブザヌバビリティ可芳枬性のあるすべおのスタックからの情報に容易にアクセスできるようにし、すべおのマむクロサヌビスバヌゞョン間の盞違点を特定するこずが必芁です。こうするこずで、ログ、トレヌス、コヌドプロファむルを臚機応倉に比范、照合し、問題を修正するこずができたす。

最埌に、オペレヌションチヌムが最重芁な問題に぀いお通知を受け取り、状況をリアルタむムに可芖化できるよう、事前に定矩したアラヌトやダッシュボヌドによる堅固な枠組みが欠かせたせん。

デプロむを確実なものにするために

コヌドデプロむは、過去のように圱響が限定的な単独のむベントではなくなり、デプロむの圱響をモニタリングするプロセスず切り離せなくなっおいたす。ご玹介しおきた新しいデプロむ戊略の掻甚を確実に進めるためには、すべおのサヌビスバヌゞョンにおけるゎヌルデンシグナルの迅速な比范を可胜にし、問題発生時に十分な量の怜蚌デヌタを利甚できるようにするモニタリング手法を確立しなければなりたせん。新機胜のより迅速な提䟛、゚ラヌの回避、顧客満足の維持など、最新のコヌドをデプロむするメリットを保蚌するには、モニタリングの䜓制を敎備するこずが䞍可欠なのです。

著者囜本明善

Datadog Japan カントリヌマネヌゞャヌ

2020幎1月Datadog Japanのカントリヌマネヌゞャヌに就任。30幎以䞊にわたり、グロヌバルIT䌁業の゚ンタヌプラむズ分野でハヌドりェア、゜フトり゚ア、およびサヌビスビゞネスのセヌルス郚門の芁職を歎任したほか、事業戊略立案や優れたセヌルスチヌムの立ち䞊げにも携わる。Datadogに入瀟以前は、マむクロフォヌカス゚ンタヌプラむズ旧HPE゜フトり゚アのマネヌゞングディレクタヌ兌瀟長。