はじめに
はじめまして。サイボウズ株式会社のあおい(@_a0i)です。最近Kubernetesという単語を聞くシーンが増えてきましたよね。もともとインフラに関わっていなかった開発者の方でも、身近で聞くことが多くなってきたのではないでしょうか。
しかし、「最近Kubernetesについてよく聞くけれど、なんだろう?」「Kubernetesを使ってみたいけれど難しそう、どこから始めればいいかわからない」こう言った悩みを抱えている方もいると聞いています。本連載ではKubernetesの簡単な説明からはじまり、開発者の方にとってKubernetesを利用することで何が嬉しいのか、どのように開発フローが変わっていくのか、を説明します。
この連載を通じて皆様が少しでもKubernetesに興味をもったり、どのようなものか理解が進んだりするお手伝いをできれば嬉しいと思っています。
対象読者
- Kubernetesに興味がある
- Kubernetesをいきなりやらなければいけなくなった
- Docker、コンテナ技術に関してなんとなくは知っている(連載の中で詳しくは説明しません)
Kubernetesが必要になるまで〜モノリシックアプリケーションからマイクロサービスへ〜
なぜKubernetesが必要とされているのか? Kubernetesの登場の背景はアプリケーションのアーキテクチャの変遷と関わるので、まずはその説明からしていきましょう。昔から使われている素朴で簡単なアプリケーションのアーキテクチャとして、モノリシック(monolithic:一体となっている、一枚岩的)なアプリケーションがあります。モノリシックアプリケーションとはさまざまな機能をもつアプリケーションを1つのモジュールとして開発・リリースをするものです。
モノリシックなアプリケーションは「全部入り」で、設計もデプロイもシンプルである一方、アプリケーションが大きくなるにつれ「一箇所の修正が全体に影響する」などデメリットが出てきます。
昨今インターネットを利用したサービス(スマホのアプリなり、クラウドサービスなり)では、サービスの提供会社が自分たちのタイミングでアップデートをできるようになりました。つまり、より早く顧客に新しい価値を提供することが可能になったのです。これに対してアプリケーションの開発フローが重かったり(ビルドや起動に時間がかかるなど)、バグの影響範囲が大きくなったりしてしまうモノリシックアプリケーションでは相性が悪いですよね。
そこで最近では「マイクロサービス」というアーキテクチャが注目されています。マイクロサービスではあるまとまった単位をアプリケーション(サービス)として開発・運用します。そのため、各アプリケーションが小さくなり、バグの影響範囲を最小限に抑えることができます。