教えて! 最新技術―テックコミュニティの現場から

第3回 コンテナ技術やクラウドネイティブのこれまでとこれから

この記事を読むのに必要な時間:およそ 3.5 分

DockerやKubernetesをこれから学習する方へ

関:DockerやKubernetesをこれから学ぶには,どうすればよいでしょうか?

太田:自分で頑張って勉強する方法と,コミュニティの力を借りる方法の2つがあります。私は後者を推奨していますが,ハイブリッドで使い分けるのもよいでしょう。いずれにしても,いきなり大きいものを作るのではなく,まずは小さなものから始めましょう。小さいアプリケーションを作り,テストを書いて継続的インテグレーション(CI)で回す。テストが通ったあとは,テストが自動で回り,アプリケーションが自動でデプロイされるしくみにし,開発サイクルをそれにあわせます。ブランチ戦略やCI/CDパイプラインを整備し,手動でデプロイスクリプトを作らなくてよくします。コンテナを用意し,何かあったときにロールバックが簡単にできるようにしていきます。このような手順で進めれば,KubernetesやDockerを活用したスケールするアプリを作れるようになります。

関満徳 氏

関満徳 氏

関:Kubernetesをこれから始めたい人は,何からすればよいでしょうか?

太田:Minikubeを使用してローカル環境でKubernetesを動かすか,Docker DesktopのオプションからKubernetesを有効にするかのどちらかがよいでしょう。Kubernetes 上では,AWSやGCP,Azureの違いを気にする必要はなく,各クラウドプロバイダのAPIの違いを吸収してくれるため,Kubernetesのコマンドやお作法を勉強するとよいです。ベースのしくみとしては基本的にはLinuxとなるため,どんな仮想マシンであっても,Linuxが動けば動くようになっています。

関:DockerやKubernetesを学ぶときに使うツールでお勧めはありますか?

太田:ブラウザだけでハンズオン形式に学ぶことができたり,使い捨て環境で自由に遊ぶことができるKatacodaというサイトが,DockerやKubernetesのイントロダクションを提供しているので,まずはそちらで試していただくとよいです。

コマンドに慣れてきたら,MacであればターミナルとVisual Studio Code,Windows 10であればWSL 2Windows Subsystem for Linux 2とDocker Desktop for WindowsとVisual Studio Codeの組み合わせで使うとよいです。

Microsoft StoreからUbuntuをダウンロードし,WSL 2を起動するとLinuxのコマンドが使えるようになります。WSL 2には,Visual Studio CodeとDockerのインテグレーションがあるので,組み合わせて導入するとVisual Studio CodeでPythonのファイルを編集し,code-serverをインストールしてLinuxとつなぎ,LinuxのGitでファイルを管理し,そこで書いたコードをDocker Desktopで動かしていく,というやり方ができます。

Kubernetesのアップデート状況

関:Kubernetesのバージョンアップは,どのような状況でしょうか?

太田:Kubernetesは,3ヵ月に1回マイナーバージョンが出ており,2020年8月に1.19が正式リリースされました。バージョンアップで変わるのは主に基盤部分です。

ここ1年間は機能の拡張性を高めることに注力していました。どういうことかというと,クラウドサービスと言えども,AWSとGCPとAzureとではいろいろと違いがあり,それぞれ新機能や改善も発生します。当然,これらのクラウドサービスとKubernetesの間にはクラウドプロバイダのAPIによるやりとりがあり,クラウドサービスの機能を使う部分の変更がKubernetesのバージョンアップに反映される,という構図になっています。

関:利用者側もたいへんそうですが,Kubernetes側もクラウドプロバイダ側もたいへんそうですね。

太田:拡張性がないと,クラウドホスティング会社や,ある仮想マシンの機能を提供している会社が,新しい機能をKubernetes経由で使えるようにしたいとなった場合,コアのソースコードにコミットする必要があり,とてもたいへんになってきます。なぜなら,その変更がバグの温床にならないか,なぜ必要なのかを考えないといけないからです。そこで最近では,拡張用のコンポーネントは外に切り出して,拡張性を高めるためのAPIを用意し,コアのソースコードと拡張するソースコードを分離するようになりました。メインの機能には影響がないように守りながら,各クラウドプロバイダーの都合で外で開発できるようにしました。

関:その場合,クラウドプロバイダや利用者はどのような対応をすることになるのでしょうか。

太田:たとえば,あるベンダーが新しいストレージ製品を出したとします。しかしそれをKubernetesで使うにはコード修正が必要で,マージまで時間がかかり,顧客満足度が下がってしまいます。それがこの改善によって,ストレージを作った側がKubernetes経由で使えるソースコードを作成してGitHubで公開し,インストール方法を記載する,という対応をすればよくなりました。

今後は,KubernetesのLTSLong Term Supportを作ろうという動きもでています。リリースサイクルを年4回から年3回に減らそう,という提案をしている方々もいます。今後はリリースサイクルにも動きがあるかもしれませんね。

Kubernetesのコミュニティ状況

関:Kubernetesコミュニティで共有される情報には,どのようなものがあるのでしょうか?

太田:事例ベースの発表が多いです。Kubernetesはオープンソースなので「こういうプラグインを作りました」とか「既存のしくみだとここがかゆくて手が届かないので,拡張して便利なものを作りました。APIを使って拡張しました」というものですね。それ以外に,最新機能の紹介やストレージに着目した内容の紹介。Kubernetes自体は複数のマシンプールを大きな一つのプールに見立てる技術なので,開発者は関知しないけど管理者側からすれば負荷分散したい,リソースを均等に使いたい,という内容やしくじり先生的なもの,ハンズオン形式のイベントもなんかも結構好まれる傾向にありますね。

関:昨今のコロナ禍の状況で,オンライン化が進んだのでしょうか?

太田:はい。Kubernetes Meetup Tokyoは完全にオンラインで開催されるようになりました。Kubernetes Novice Tokyoは,初回からオンライン開催でした。CloudNative Days Tokyo 2020は完全オンライン開催でしたし,次回もオンライン開催の予定です。Google Cloud Next '20のようなクラウドプロバイダ主催のものもオンライン開催でした。Open Source Summit Japanもオンライン開催が決まったようです。

関:Kubernetesの最新情報を得るにはどうしたらよいですか?

太田:Kubernetesのドキュメントはかなりの頻度で更新されるため,そちらをチェックするとよいでしょう。また,KubernetesにはオフィシャルSlackがあり,#jp-users-noviceチャンネルでは気軽に質問できるようになっています。

写真1 太田さん(左)にはリモートで対応いただきました

写真1 太田さん(左)にはリモートで対応いただきました

読者へのメッセージ

関:最後に,本誌読者のみなさんへのメッセージをいただいてもよいでしょうか?

太田:コンテナ技術やクラウドネイティブは,初心者に優しい部分と難しい部分がはっきり分かれており,コンセプトはわかりやすいが触ると難しい面もあります。もし何かわからないことがあれば,コミュニティをどんどん頼ってください。もしコミュニティで質問するのがハードルが高いようであれば,直接連絡いただけたらうれしいです。

WEB+DB PRESS

本誌最新号をチェック!
WEB+DB PRESS Vol.121

2021年2月22日発売
B5判/168ページ
定価(本体1,480円+税)
ISBN978-4-297-11960-7

  • 特集1
    [さらに速く! さらに書きやすく!]
    詳解Ruby 3
    JITコンパイラ,並列プログラミング,静的型解析
  • 特集2
    UIKit,SwiftUI,iPadOS,ウィジェット
    iOS 14最前線
  • 特集3
    個人と組織の目標がリンクする管理手法
    OKR運用指南

著者プロフィール

関満徳(せきみつのり)

グロース・アーキテクチャ&チームス㈱でプロダクトオーナー支援スペシャリスト,ディスカバリーコーチとして,エンタープライズ領域の企業にDX化のコンサルティングサービスを提供。

GitHub:fullvirtue
Twitter:@fullvirtue
URL:https://fullvirtue.com/