当サイトを最適な状態で閲覧していただくにはブラウザのJavaScriptを有効にしてご利用下さい。
JavaScriptを無効のままご覧いただいた場合には一部機能がご利用頂けない場合や正しい情報を取得できない場合がございます。
同意しました
本サイトではWebサイトのエクスペリエンスを向上させるために、Cookieを使用しています。Cookieはブラウザの設定から無効にできます。詳細はこちらから

Blog

ブログ

Blog

コンテナによる開発者の立ち上げ時間の短縮

By Ryan Overton  

開発環境を最新化し、コンテナーを使用することで、開発者の立ち上げ時間を数週間から数時間に短縮する方法を探ります。

今年のパンデミックは、私たちが今日働く方法と私たちが働く環境を劇的に変えました。企業はまた、日常業務のやり方を調整しなければなりませんでした。残念ながら、これにより一部の領域の労働力が減少し、残りの領域に作業負荷が分散されました。

永遠の不安があります

多くのクライアントを抱えるエージェンシーでは、開発者は新旧両方のさまざまなツールセットやテクノロジースタックで作業することができます。これらのプロジェクトに開発者をオンボーディングすることは簡単な作業ではありません。正しいツール、ライブラリ、SDKがインストールされていること、およびプロジェクトに正しいバージョンが使用されていることを確認するには、数日、場合によっては数週間かかることがあります。私たちは、企業がこの立ち上げ時間に費やすための余裕や余分なお金を持っていない時代にいます。

数年前、私はそのようなプロジェクトに参加し、ソリューションアーキテクトと協力して、ソリューションをコンパイルしてローカルマシンで実行するのに2週間かかりました。プロセスは文書化されていましたが、常にギャップがあります。そして、プロジェクトが成長するにつれて、これらのギャップは拡大しました。

では、どうすれば開発者の立ち上げ時間を数日から数週間から数時間に短縮できるでしょうか。

1日を節約する仮想マシン

開発キャリアの早い段階で試したアイデアの1つは、すべてのクライアント用に仮想マシンを作成することでした。この仮想マシンには、その特定のクライアントのプロジェクトで作業するために必要なすべての特定のツールが含まれます。クライアントのソースコードを仮想マシンに保存して、ソリューションをできるだけ早く実行できるようにします。

古いクライアントの仮想マシンに戻り、次の数時間を更新の適用に費やすまでは、理想的であるように思われました。また、クライアントが増えるにつれて、使用する仮想マシンの数も増えました。そのため、私はすぐにディスク容量を使い果たしました。

しばらくすると面倒になりすぎて、仮想マシンの使用を完全にやめました。

救助するコンテナ

数年前、アプリケーションをテストして実行するためのこの素晴らしい新しい方法について聞いたことがあります。ローカルマシンでの実行方法を確認することは、別の開発者のマシンまたは本番環境のクラウドでの実行とまったく同じです。これはコンテナでした。

Dockerは、コンテナーを「開発者がアプリを環境から分離し、マシン上で機能するという頭痛の種を解決できるようにするソフトウェアの標準化されたユニット」と説明しています。


オペレーティングシステムのコピー全体を含む仮想マシンとは異なり、コンテナはOSをホストと共有します。コンテナは、仮想マシンよりもはるかに小型で軽量です。 DockerDesktopやDockerComposeなどのツールを使用して、アプリケーションサービスを定義し、複数のコンテナーを構成して一緒に実行できます。

%Begin Code Block%

#このイメージは、Kentico EMSアプリケーションをインストールし、提供するために必要なファイルにコピーします

#完全に機能するKenticoEMSインスタンス。と組み合わせて使用するように設計されています

#ここにあるDocker作成ファイル。 https://github.com/OnyxPrime/kentico-ems-docker-poc

FROM mcr.microsoft.com/windows/servercore/iisASベース

iissiteとしてのベースから

#イメージでIIS機能を有効にする

powershell.exe Add-WindowsFeature web-server、web-webserverを実行します

powershell.exe -NoProfile -Command Remove-Item -Recurse C:\ inetpub \ wwwroot \ *を実行します

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-WebServerRole

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-WebServer

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-CommonHttpFeatures

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-HttpErrors

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-HttpRedirect

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-ApplicationDevelopment

powershell.exeを実行するEnable-WindowsOptionalFeature-online -FeatureName NetFx4Extended-ASPNET45

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-NetFxExtensibility45

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-HealthAndDiagnostics

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-HttpLogging

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-LoggingLibraries

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-RequestMonitor

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-HttpTracing

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-Security

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-RequestFiltering

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureNameIIS-パフォーマンス

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-WebServerManagementTools

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-IIS6ManagementCompatibility

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureNameIIS-メタベース

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-ManagementConsole

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-BasicAuthentication

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-WindowsAuthentication

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-StaticContent

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-DefaultDocument

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-WebSockets

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-ApplicationInit

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-ISAPIExtensions

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-ISAPIFilter

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-HttpCompressionStatic

powershell.exeを実行するEnable-WindowsOptionalFeature-Online -FeatureName IIS-ASPNET45

ファイナルとしてiissiteから

#作業ディレクトリを設定する

WORKDIR / kentico

#KenticoEMSインストーラーとインストーラー構成ファイルを作業ディレクトリにコピーします。

Kentico_12_0.exeをコピーします。

KenticoInstallationProfile.xmlをコピーします。

#提供された構成ファイルを使用してKenticoEMSインストーラーを実行します

Kentico_12_0.exeKenticoInstallationProfile.xmlを実行します

#作業ディレクトリを変更し、ファイルを以前のインストールからEMSディレクトリにコピーします。これらのファイルがなければ、

#EMSアプリケーションはSQLインストールなしの基本インストールになり、ユーザーは

#管理ポータルにアクセスしようとしたときにインストールを完了するためのSQLサーバー名とデータベース名。

#WORKDIR / inetpub

#COPY / update。

%終了コードブロック%

コンテナイメージが作成されると、それを新しいチームメンバーと共有して、すぐに稼働させることができます。コンテナは、分解してすばやく再構築できるため、アプリケーションでテストを実行するための一貫した安定した環境も提供します。

コンテナ化されたKentico12環境でこれを実際に体験できます。手順とDockerファイルはここにあります

さらに一歩

しかし、アプリケーションを実行するというこのアイデアをさらに一歩進めて、コンテナー内からアプリケーションを開発する機能を追加できるとしたらどうでしょうか?🤯

これは、MicrosoftのチームがVisual Studio Code(VSCode)用のRemote-Containers拡張機能を導入したときに行ったこととまったく同じです。この拡張機能により、VSCodeはコンテナーに接続し、プロジェクトに定義された必要な拡張機能をロードできます。また、コンテナー内にアプリケーションをビルドして実行するためのターミナルウィンドウを提供します。

さらに、特定のバージョンのSDK、CLI、またはアプリケーションのビルドと実行に必要なその他のユーティリティをインストールできます。

制限事項

Microsoftは、さまざまなプログラミング言語およびフレームワークのRemote-Containers拡張機能で使用するように設計されたいくつかのコンテナーイメージを作成しましたが、残念ながら、それらはすべてLinuxオペレーティングシステムに基づいています。したがって、何らかの理由でWindowsに依存している場合、現在、コンテナー内での開発はオプションではありません。

使用可能なWindowsコンテナがたくさんあることは言及する価値があります。この制限は、コンテナー内での開発のみを対象としており、コンテナーからアプリケーションを実行することはできません。

Visual Studioのフルバージョンが好き、欲しい、または使用する必要がある場合、リモート開発はオプションではありません。この記事の執筆時点では、Remote-Containers拡張機能はVSCodeに対してのみ存在します。 Visual Studioは、Dockerコンテナー内でアプリケーションを実行/デバッグするための異なる実装を提供します。

アプリケーションの一部がWindowsに依存していて、別の部分がKentico Xperience 13のようにクロスプラットフォームを実行できる場合は、リモートコンテナーがオプションになる可能性があります。

プロセスを加速する

コンテナーを使用してアプリケーションを実行すると、プロジェクトで開発者を立ち上げるプロセスをすばやくスピードアップできます。また、チームがクロスプラットフォームを実行できる最新の開発フレームワークに移行すると、開発環境全体のコンテナー化に移行できます。

今後数か月以内に、Kentico Xperience 13などのより複雑なアプリケーションを、個別のフロントエンド、バックエンド、およびデータベースでコンテナ化するプロセスについて詳しく説明します。また、Kentico Xperience Odysseyがベータリリースを開始すると、最新のアプリケーションでリモートコンテナを使用するのがいかに簡単であるかがわかります。

CMSの導入についてお悩みでしょうか?

使いやすいコンテンツ管理UIと強力なデジタルマーケティング支援機能をそなえた
Kentico Xperienceをぜひお試しください。