MicronautのConfig設定ベストプラクティス!安全で管理しやすい構成を紹介
生徒
「先生、Micronautで設定値を管理するときに安全で管理しやすい方法ってありますか?」
先生
「はい、Micronautではapplication.ymlやapplication.propertiesで基本設定を管理し、環境ごとにプロファイルを分けるのが基本です。」
生徒
「でも、機密情報やパスワードはどうやって安全に管理するんですか?」
先生
「環境変数やVault、AWS Secrets Managerなどの外部シークレット管理を利用するのがベストです。これでコードや設定ファイルに機密情報を直接書かずに済みます。」
生徒
「具体的な設定例も見てみたいです。」
先生
「では、順を追って基本から応用まで解説していきます。」
1. 基本のConfig設定
Micronautではapplication.ymlやapplication.propertiesにアプリケーション全体の設定を書きます。例えば、サーバーポートやデータベース接続情報を定義できます。
micronaut:
application:
name: demo-app
server:
port: 8080
datasource:
url: jdbc:h2:mem:devDb
username: sa
password:
このように書くことで、Micronautアプリは起動時に設定を自動で読み込みます。
2. 環境ごとのプロファイル管理
開発環境や本番環境で設定を分けたい場合は、プロファイル別の設定ファイルを作成します。application-dev.ymlやapplication-prod.ymlのようにファイルを分け、環境変数でMICRONAUT_ENVIRONMENTSを指定します。
# application-dev.yml
server:
port: 8081
datasource:
url: jdbc:h2:mem:devDb
# application-prod.yml
server:
port: 80
datasource:
url: jdbc:mysql://prod-db:3306/app
これにより環境ごとに異なる設定を安全に管理できます。
3. 安全な機密情報の管理
パスワードやAPIキーなどの機密情報は、設定ファイルに直接書くのではなく、環境変数や外部シークレット管理を利用します。Micronautは${ENV_VAR}形式で環境変数を参照できます。
datasource:
username: ${DB_USER}
password: ${DB_PASSWORD}
この方法でコードに機密情報を残さず、環境に応じて安全に設定できます。
4. @ConfigurationPropertiesを使った設定管理
Micronautでは@ConfigurationPropertiesを使って型安全に設定値を読み込むこともできます。これにより設定ミスをコンパイル時に検知可能です。
import io.micronaut.context.annotation.ConfigurationProperties;
@ConfigurationProperties("datasource")
public class DataSourceConfig {
private String url;
private String username;
private String password;
public String getUrl() { return url; }
public void setUrl(String url) { this.url = url; }
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; }
}
こうすることで、アプリ内でDataSourceConfigを注入して設定値を安全に利用できます。
5. 設定のベストプラクティスまとめ
Micronautで安全で管理しやすい設定を行うには、以下のポイントを押さえましょう。
- 環境ごとにプロファイルを分ける
- 機密情報は環境変数やVaultなど外部管理を使用
- @ConfigurationPropertiesで型安全に設定を読み込む
- 設定ファイルはコミットしても安全な値だけにする
- GradleやMicronautのバージョン互換性に注意
これらを守ることで、Micronautアプリの設定を効率的かつ安全に管理でき、開発・運用がスムーズになります。