# 内部の仕組み

異なる環境間での更新のデプロイやマイグレーション、例えば開発サーバーからステージングへの新しいバージョンの移動は、複雑なプロセスであり、開発およびターゲットサーバーの両方で多くのステップを含みます。しかし、Devinアプリでのワンクリックで、これらのステップはすべて、各サーバー上のDevin APIによって自動化されます。

{% hint style="info" %}
現在のバージョンのDevinは、`STAGING`および`PRODUCTION`環境へのリリース展開のためのデフォルトプロセスを実装しています。近日中に、これが拡張される予定です（「[今後の展望: デプロイメントの柔軟性向上](#looking-ahead-enhacing-deployment-flexibility)」を参照）。
{% endhint %}

## デフォルトデプロイメントパイプライン

デフォルトのデプロイメントパイプラインは、環境のリリースブランチに新しいリリースが行われ、そのバージョン番号がデプロイメントのものと異なる場合に反応します。つまり、もし本番環境がメインブランチをリリースブランチとして使用し、「`main`」ブランチに対して新しいバージョンがリリースされると、このパイプラインは標準化された自動デプロイメントおよびデータマイグレーションプロセスを使用してリリースを展開します。

デプロイメントのためにこのパイプラインをトリガーする方法については、[「リリースをデプロイ」](https://docs.devin.fm/jp/gaido/projects/releases/deploy-a-release)を参照してください。

<figure><img src="https://content.gitbook.com/content/yVoWYDKPRZW9z9KzLOvL/blobs/LbNiSelFumm3jlzUciAw/DefaultDeploymentProcess.jpeg" alt=""><figcaption><p>Devinのデフォルトデプロイメントプロセス</p></figcaption></figure>

### 開発サーバーでの処理

1. **対象ブランチファイルのクローン作成**: 対象のリリースブランチにリリースされた最新バージョンをクローンします。
2. **転送**: クローンしたファイルがターゲットサーバーに安全に転送されます。

### ターゲットサーバーでの処理

1. **ライブファイルの閉鎖**: 元のライブファイルを一時的に閉じます（ユーザーが接続していない場合）。（ゼロダウンタイムのデータマイグレーションプロセスをサポートするアプローチを現在検討中です）
2. **データマイグレーション**: FileMaker Data Migration CLIツールを利用して、元のファイルから新しいバージョンへのデータをマイグレーションします。
3. **ファイルの置き換え**: 新しいファイルを移動して開き、古いバージョンを置き換えます。

## 安全性と回復メカニズム

DevinのAPIは、サーバー間の通信とプロセスの実行を処理する堅牢な安全機能を組み込んでおり、環境間でのデータの更新および移行に伴う複雑さやリスクに対応できるよう設計されています。これらのメカニズムは、デプロイメントプロセス全体でシステムが安定して安全であることを保証し、ビジネス運営に影響を与える可能性のある中断から保護します。

### エラーハンドリングとロールバック機能

#### プロアクティブモニタリング

Devinはサーバーとプロセスを継続的に監視し、問題の兆候を検出します。これには、FileMaker Serverが期待通りに動作しているか、サーバーに十分なリソースが利用可能か、また、接続されているユーザーがいる場合に更新プロセスが開始されないことが含まれます。

#### 自動ロールバック

デプロイメントまたはマイグレーションのフェーズでエラーが発生した場合、Devinは自動的にアプリケーションを以前の状態に戻すように設計されています。特定のエラー条件が満たされると、このロールバックがトリガーされ、ライブ環境が失敗した更新試行の影響を受けないようにします。

### **セキュリティと整合性チェック**

#### アクセス制御と認証

Devin API間のすべての通信、サーバー状態のチェック、ファイル転送、データマイグレーションログは、FileMaker ServerにインストールされたSSL証明書を使用して行われます。これにより、すべてのやり取りが安全に暗号化され、認証されることで、不正アクセスから保護され、データの整合性が守られます。

#### データ検証（まだ実装されていません）

{% hint style="warning" %}
**データ検証（まだ実装されていません）**\
Devinはデータ移行プロセス中に移行されるデータの整合性を検証しません。FileMaker Data Migration Toolが正常に完了した場合、Devinは移行ステップを成功と解釈し、プロセスを続行します。データ移行ログはDevin Appのプロジェクトワークスペース -> 移行 -> 詳細で確認できます。
{% endhint %}

## 実行の安全性

### プロセスキューイングとアイソレーション

ライブ環境への影響を防ぐために、Devin APIはすべてのプロセスに対して高度なサブプロセスおよびキューイングシステムを利用しています。このキューイングシステムは、すべての操作を孤立したタスクとして管理し、Devinが処理できるまたは設定された並行プロセス数を超える操作を開始するのを防ぎます（参照:[#hardware-and-concurrency](https://docs.devin.fm/jp/gaido/installation/system-requirements#hardware-and-concurrency "mention")）。

これにより、プロセスがキューに入り、トリガーされるのを待つことがあります。たとえば、複数の開発者が同時に開発サーバーで操作を開始すると、一部のプロセスは開始までに遅延する可能性があります。

## **今後の展望: デプロイメントの柔軟性の向上**

Devin は、システムの安定性を維持するために、現在、構造化されたプロセスでデプロイメントの更新を実施しています。しかし、私たちは、サイクルとカスタムパイプラインと呼ばれる新機能のリリースを非常に楽しみにしています。これにより、より高度でカスタマイズ可能なデプロイメントワークフローが提供されるだけでなく、これらのワークフロー内で自動化された [tesuto](https://docs.devin.fm/jp/ji-neng/tesuto "mention") を統合する機能も提供されます。お楽しみに 🚀
