Xは、Kubernetes上のクラウドネイティブアプリケーション向けに自動化されたCI/CDを提供するオープンソースプロジェクトです。Xテクノロジーとその機能についてさらに多くを知るようになってきています。デリバリーのリリースを加速できる、インストールや設定が簡単になる、さらに長期的なビジネスの持続可能性が向上するなど、多くの利点があります。Xが重要なのかを説明します。Xとは、基盤となるインフラストラクチャをあまり気にすることなく「Kubernetesでネイティブに継続的デリバリーを行うためのオープンソースの定型的な方法」です。Cloud、OpenShift、Pivotalなど、主要なクラウドプラットフォームをすべてサポートしています。XはJenkinsのサブプロジェクトで、自動化、ツールセット、DevOpsのベストプラクティスを活用して開発を加速し、CI/CDを改善します。Xを使用すると、複雑なエコシステムの設定に過剰な時間と労力を費やすことなくKubernetesを活用できます。Xは複雑さを軽減し、操作や習得が容易なシステムの中で、適切に選択されたツールによるガイド付きアプローチを提供します。Xは、プロジェクトの開始時に、構造の作成や必要なファイルの収集に多くの時間を費やす必要をなくします。Kubernetesクラスターが必要な場合は、インストールや設定を気にせず、自動ですべてのツールを使える状態にすることができます。Xで1つのjxコマンドを実行するだけで、CDパイプラインの作成、Gitリポジトリの作成、Webフックの設定を行うことができます。Xが行う処理のリストは膨大であり、日々増え続けています。Xには決まったやり方があり、DockerやKubernetesなどのテクノロジーと連携することでより機能を発揮するように設計されています。Xは密接に関連しており、JenkinsXでできることはすべて、2、3のプラグインや統合機能を使えばJenkinsで行うこともできます。Xはすべてを簡略化します。Registryなどのオープンソースツールを使用してクラウドネイティブアプリケーションを簡単に構築できます。XをJenkinsや他のCI/CDソリューションとは異なる特別なものにしているのは、そのようなツールとプロセスです。Xはプロセスを規定しますが、Jenkinsは好みや要件に合わせてどんなプロセスにも適応します。codeを基本とし、外部ツール(たとえば、Helm、Monocularなど)を取り入れます。JenkinsはUI優位のアプローチで、設定はUIを介して行われ、すべてが主に内部的なプラグインによって駆動されます。XのPreview環境では、開発者はプルリクエストごとに実行システムを作成することによって、コードベースに統合された変更を共同で検証することができます。Xが生まれた理由ソフトウェア開発プロセスはここ数年ですっかり変化し、さらに進化し続けています。DevOpsにより、アプリケーションおよび構成管理に対する開発者の責任は格段に大きくなりました。DevOpsが開発のスピードを上げ、ダウンタイムのリスクを減らすことを目的とするいっぽうで、開発者から運用担当者へという役割の移行は、開発者にとってスムーズなものではありませんでした。それにもかかわらず、DevOpsの受容は進み、採用も増えています。同時に、著しい変化が業界を席巻しました。マイクロサービスアーキテクチャ:クラウドとそのデプロイメントモデル(パブリック、プライベート、ハイブリッド)があらゆる業界で採用される一方で、アプリケーションのデプロイメント、管理、更新の課題は未解決のままでした。このことが、マイクロサービスアーキテクチャの道を開きました。モノリシックなアプリケーションとは異なり、マイクロサービスによって構築されたアプリケーションは、独立してデプロイ可能かつスケーラブルな小規模ホストにデプロイできます。Amazon、eBay、PayPal、Netflixなどにならい、今日では、ほとんどの組織がアプリケーションをモノリシックなアーキテクチャからマイクロサービスアーキテクチャに移行しています。OSの仮想化を提供するコンテナは、マイクロサービスに関連した問題のいくつかを解決してくれるということで普及してきました。現在、同一のホスト上の異なるコンテナに、異なるテクノロジーとフレームワークを使用して構築されたマイクロサービスをデプロイすることが可能です。これにより、開発者は自分が使い慣れている言語を使用し、コンテナ内に依存関係をパッケージ化することができます。コンテナはハードウェアのみを仮想化する仮想マシン(VM)よりも効率的です。コンテナへの移行において主導的な役割を果たしたDockerは、オープンソースコミュニティが多用するDockerhubパブリックリポジトリに、事前設定済みのDockerイメージの巨大なリポジトリを持っています。これらをはじめとした多くの利点により、コンテナはクラウド上にコードをデプロイする際のデフォルトの選択肢となっています。Kubernetesの台頭:コンテナは物事を単純にしますが、課題がないわけではありません。実際、管理やオーケストレーションに関しては、VMと同様です。どのような組織にとっても、マシンが過少または過剰にプロビジョニングされていないこと、またメモリ、CPU、またはストレージにかかる費用が効果に見合ったものであることを確認するのは困難です。コンテナを(可能であれば自動的に)移動させ、演算の効率化と最適化を可能にするソリューションが必要とされていました。Googleはずっと前に、まさにそのための解決策を見出し、後にKubernetesという形でそれを発表しました。Kubernetesオープンソースソリューションは、コンテナのインストール、アップグレード、およびオーケストレーションを簡素化します。他のクラウドベンダーもコンテナをオーケストレーションするための独自のソリューションを提供していますが、Kubernetesはベンダーにとらわれず、あらゆる種類のクラウド、さらには社内インフラストラクチャにわたってコンテナを処理するための共通プラットフォームを提供します。このような変化の結果、今日の開発者は、CI/CD用の多数のツールを含む細分化されたオープンソースエコシステムの中から選択を行わなければなりません。どのツールも問題の一部を解決するために開発されたものですが、適切なものを選ぶのは簡単ではありません。組織がCI/CDについて十分に理解し、効率的な一式を作り上げるまでには何年もかかることさえあります。開発者が実際の開発作業よりもCI/CD設定の微調整に多くの時間を費やさなければならいケースもよくあります。簡単にKubernetesクラスターを管理する方法がなく、本番環境のKubernetesを効果的に監視できないという懸念もあります。JenkinsはKubernetesで既存のCI/CD設定を最大限に活用できるように手助けしますが、それでも、コードと連携して問題なく動作するプラグインの適切な組み合わせや設定を選択するのは容易ではありません。Kubernetes上でCDを実践する最良の方法について一致した見解はほとんどなく、多くのチームはJenkinsパイプラインをセットアップしたことがありません。このような課題を端緒として、コミュニティはまだKubernetesを利用したことがないユーザーや、Kubernetesを利用してはいるがCI/CDに苦労しているユーザーのために、Jenkinsを利用してクラウドでCI/CDを自動化できるソリューションを検討し始めました。Xプロジェクトという形に結実しました。Xは開発者向けに、DevOpsのベストプラクティスに従ってコードをより迅速にデリバリーできるよう設計されています。プレビュー環境を提供し、DevExを使用してクラスター作成を簡素化し、さまざまなクラウドプロバイダーのクラスターで実行できるのはそのためです。Xを使用する最大の利点の1つは、Kubernetes内部の知識が不要で、開発者がすぐにエコシステムを活用できるようになることです。Xパイプライン、Jenkinsfile、またはHelmチャートを微調整できます。Xの機能のうち、話題となることが多いものをいくつか見てみましょう。Xは、洗練されたjxコマンドラインツールを提供します。Xを既存または新規のKubernetesクラスター内にインストールし、プロジェクトをインポートし、新しいアプリケーションをブートストラップすることができます。Xはプロジェクト用のパイプラインを自動的に作成します。Namespaceを使用して、開発用、ステージング用、および本番用など複数の仮想環境を作成できます。環境ごとに、固有の設定とGitリポジトリでバージョン管理されたアプリケーションおよび設定のリストがあります。これらの環境間での新しいバージョンのアプリケーションのプロモーションは、GitOpsのプラクティスに従って自動的に行われます。コードをある環境から別の環境に手動でプロモートしたり、必要に応じて新しい環境を変更または構成することもできます。Xはプルリクエストごとにプレビュー環境を自動的に作成します。これにより、マージする前に変更の結果を確認できます。Xは、チームメンバー向けにプレビューへのリンクを含むコメントをプルリクエストに追加します。Xの全機能の詳細については、こちらを参照してください。Xはさまざまな種類のプロジェクト用のビルドパックを提供し、外部ツール(Helm、Skaffold、Monocularなど)のインストール、設定、およびアップグレードを自動化し、開発者がたった1行のjxコマンドですばやく作業を開始できるようにします。Xの内部構造を調べることができます。Xのインスタンスを実行します。共有クラスターでは、チームごとに固有のネームスペースを持ち、リソースを効果的に共有しながら、他のチームが使用しているものとは異なるパイプライン、フロー、および設定を持つことができます。個別のクラスターを使用すると、チームは固有のリソースセットを持ち、他のチームの作業負荷の影響を受けません。Xを利用すると、デリバリーのロジスティクスによって遅らされることのないスムーズな開発を可能にします。強力なコマンドがほとんどのタスクを行い、クラウドやSCMとのシームレスな統合を実現します。Xをインストールできます。AWS(EKS)、Azure(AKS)、Oracle(OKE)なども使用できます。アプリケーションコードとともに、コンテナ、パッケージング、パイプラインなどに必要なすべてのファイルが共通のリポジトリに格納されており、すぐに使用できます。GitOpsではあらゆるものがバージョン管理され、すべてのプルリクエストにコメントがあるため、真の単一ソースを持つことができます。codeを実現し、機能停止をより迅速に解消するための適切なコンテキストと追跡可能な情報を開発者に提供します。Xクラスター内に自分専用のサンドボックスを持つことができます。devbuildポッドは運用環境のパイプラインで使用されるものと同じであるため、コードは確実に予測可能な振る舞いをします。Xは、コードが運用環境にプロモーションされる前にプレビュー環境を立ち上げるのを支援します。これらすべての機能は安定したコードをロールアウトするのに役立ちます。Xを最新の安定した互換性の問題のない状態に保つことから始めます。Xの両方に関して24時間365日のテクニカルサポートを提供しています。Jenkins認定エンジニアがどこよりも多く集まっている場所でもあります。Xの詳細を学ぶこともできます。