Kubernetesとクラウド上のCloudBeesでSalesforceのDevOpsを改革


著者:Aaron Nassiry, DevOps Engineer、Venkat Kothapoll, DevOps Engineer, Salesforce

Salesforceで働いていて最高だと思うことの1つは、Salesforceは常に新しい技術を求め、イノベーションを続けているという点です。私たちはデジタル革命――第4次産業革命と呼んでいる人もいます――の真っただ中にいるのだと常に意識させられます。そこでは、オートメーション、ロボティクス、そしてもちろん人工知能の分野でのブレークスルーが、製品の製造、販売、消費の方法を根本的に変化させています。

革新的なスピリットは、私たちが働くソフトウェア開発部門も含め、Salesforceコミュニティ全体を支配しています。ここで、私たちはAIを使用して、顧客により良いパーソナライゼーションとエクスペリエンスを届けることに取り組んでいます。たとえば、Einstein Analytics(訳注:Salesforce社が提供するAIを用いたデータ分析機能)の支援によって、企業が連携された包括的なサービスを顧客に提供することを可能にします。これは私たちの取り組みの1つの例にすぎません。

IT部門全体では、1,200人以上の開発者を抱えており――この数は日々増え続けています――開発者たちは最新のDevOps技術を使用しています。運用を容易にし、コストを抑制するため、私たちはKubernetesとCloudBees CI を利用してクラウドでCI/CDツールを自動化しています――それも、すべてコードによって。実際、今や私たちのDevOpsプラットフォーム全体がコードですが、これは単にその他の方法は最適ではないからです。

Amazon Web Servicesに移行したおかげで、今はKubernetes EKSやCloudBees CIを含めたクラウドネイティブテクノロジーの恩恵をフルに活用し、すべてのソフトウェアアプリケーションをビルド、デプロイ、管理しています

当然、私たちの顧客のニーズは時がたつにつれて拡大していくので、私たちが構築するソフトウェア製品も徐々に拡大する必要があることは忘れてはなりません。つまり、製品開発は、新機能をデリバリーし、プラットフォームの品質と信頼性を向上させる継続的なプロセスになっているということです。そのため、堅固な最先端の継続的インテグレーションおよび継続的デリバリープラットフォーム、ツール、プロセスが必要です。

私たちは時間をかけてDevOpsのプラットフォームとカルチャーを成熟させ、改良してきました。たとえば、少し前までのJenkins環境は、絶え間なく餌をやり、気を配ってやらなければならないペットのようなものでした。定期的なメンテナンスとセキュリティパッチが必要なビルドエージェントが何十もあり、かなりのダウンタイムがありました。結果として、いつもデータセンターだけでなく人員の処理能力の限界も超えそうになっていました。

新しいDevOpsプラットフォームへようこそ

Amazon Web Servicesに移行したおかげで、今はKubernetes EKSやCloudBees CIを含めたクラウドネイティブテクノロジーの恩恵をフルに活用し、すべてのソフトウェアアプリケーションをビルド、デプロイ、管理しています。

違いは天と地ほどです。たとえば、今ではクラウドでのオートスケーリングがあるので、容量を使い果たすことはありません。演算の需要が高くなると、自動的に環境が拡張され、より多くのKubernetes ポッド、ノード、EC2(Elastic Compute Cloud)マシンで要求を処理できます。その後、需要が落ち着いてくれば、インフラストラクチャは自動的にスケールダウンします。たいしたものではありませんか?

それだけではありません。今や障害リカバリーシステムはボタンを1つクリックするだけで、EFS (encrypting file system) はJenkinsのダウンタイムもなく、ペタバイト単位にまで拡大します。また、インフラストラクチャ全体がコード(Terraformコード)なので、任意のリージョンでコードを実行すれば、2時間もかからずDevOps環境全体がアップして実行状態になります。セキュリティはどうか?そうですね、私たちは夜も安心して眠れるようになりました。なぜなら新しいAMI(Amazon Machine Image)がリリースされるたびに、Amazonから自動的にセキュリティアップデートが取得されるからです。

CloudBees CI

私たちの新しい改良版DevOpsプラットフォームの仕上げをするのがCloudBees CIです。CloudBees CIはKubernetesとの深い結合を活かしてツール管理者の管理作業を簡略化し、セキュリティおよびコンプライアンスのレイヤーを追加して強化します。CloudBees CIはAmazon EKSと統合し、AWSで完全に管理されるコントロールペインを備えています。言うまでもなく、多数のタスクやサービスをAWSが処理してくれるのは、私たちのチームには非常にありがたいことです。おかげで開発者のためにより良いツールとDevOpsプロセスを提供するのに専念できます。

CloudBees CIとともにKubernetes Cluster Autoscalerを使用しており、簡単に環境をスケールアップ/スケールダウンできます。もう1つ利点があります。以前のように、静的イメージをすべて実行する必要がないので、運用コストが劇的に削減されます。最後に忘れてはならないのは、非常にすばらしいCloudBeesプラグインであるJCasC―Jenkins Configuration as Code―です。JCasCは、すべてのJenkins設定を管理する圧倒的に簡単な方法であり、すべてをコードとして管理するうえでキーとなる機能です。

さて、現在のSalesforceでの新しいDevOpsの世界をほんの少しご覧いただきました。ご紹介できたことをうれしく思います。

(この記事は、CloudBees社 Blog 「Revolutionizing DevOps at Salesforce with Kubernetes and CloudBees in the Cloud」2020年11月10日の翻訳です。)