読者です 読者をやめる 読者になる 読者になる

日記

日々のことと、Python/Django/PHP/Laravel/nodejs などソフトウェア開発のことを書き綴ります

Otto イントロダクション

まずは

↑の意訳っぽくなっちゃうけど書いていきます。

Otto って何?

クラウドプラットフォーム上のアプリケーションがどうやって開発・デプロイするのか Otto は単一の特定のワークフローを持って全てをコントロールして、チームに最大限の生産性を提供します。

開発者の理想

Otto の自動ビルドはあなたのアプリケーションの開発環境に沿った定義、そしてゼロか最低限の設定で行われる。

Otto の全てアプリケーションは個々の仮想化した環境として独立します。それは開発中のアプリケーションの種類を検出して、そのための開発環境を構成します。もし PHP でアプリケーションを開発している場合に、Otto は自動的に PHP と必要なツールをインストールします。

Otto はファーストクラスの機能として、アプリケーションの依存関係をサポートします。(ライブラリの依存関係ではないのがポイント)

これは microservices 風の開発スタイルとなって、Otto が自動的にダウンロード、インストール設定、そして開発に必要な依存関係まで解決してくれます。

開発者は新しいチームまたは、コンテキスト異なった新しいプロジェクトに、コマンドを一つ実行すれば切り替えることができます。

最高クラスのインフラを自動で

Otto は標準的なツールとベストプラクティスで、自動的にインフラを構成しアプリケーションをデプロイします。

アプリケーションのデプロイ方法は数多の方法があります。残念ながら、これらのデプロイ方法はサーバ上に古い情報をコピペしてアプリケーションを実行させます。

セキュリティ、スケーラビリティ、監視などを多くのベストプラクティスに沿って適切に構築しようとすると膨大な量の知識が必要です。これらの問題を解決するには通常は新しい知識とツールが必要です。

これらの複雑さによって、開発者は簡素で遅れた方法に固執します。

Otto はこれを解決し、最高のインフラで様々な種類のソフトウェアを自動的に管理します。

主要な機能

開発環境の自動化

自動的にアプリケーションに会わせた開発環境を構築します。

もし開発するアプリケーションが他のサービスに依存している場合は、開発環境に自動的に設定が行われます(例えばデータベースとか…)

Microservices 用に構築

Otto は依存性、バージョニングを理解し、自動デプロイして、アプリケーションの設定など全ての環境の依存関係を設定出来ます。アプリケーションはその依存関係を、otto に通知する必要があります。依存関係を自動的に解決し構成します。

デプロイ

Otto はアプリケーションのデプロイだけではなく、それらの開発方法も理解しています。アプリケーションが Microservices であったり、旧来のモノリスや、その中間のものであっても Otto はデプロイが可能です。

Docker

Otto はシンプルな Microservices の開発のため、依存関係をダウンロードして開始する際に Docker を使用できます。アプリケーションは開発フローを変更せず、簡単にコンテナ化して開発できます。

Production-hardened tooling

Otto は Production-hardened tooling に次のツールを自動的に使っています。

  • 開発環境の構築に Vagrant
  • サーバ起動に Terraform
  • サービス構成に Consul

これらは自動的にインストール、管理されます。それを使う側が意識する必要はありません。

ここから下は、↓を読んだ要点まとめ。

Otto と Vagrant

Otto は Vagrant の後継です。

今後数年間は、Vagrant にコミットし続けるけど、ゆっくりとでも Otto に移行してね。という意向らしい。

Vagrant からの改良点

Vagrant はマシンレベルの設定で、Otto はアプリケーションレベルの設定を行う。

Microservice の開発で、マルチ VM で開発環境を作ると思うと重すぎる。また依存関係も Vagrant では定義できないが、appfile は依存関係を簡潔に記述できる。

appfile によって、業界標準のベストプラクティスに基づいたアプリケーションのデプロイができる。

パフォーマンス改善も行っていて、vagrant status は数秒単位で時間の掛かる操作だが、otto status はミリ秒単位で処理が終わる。

所感

Vagrant を使っている人は、ゆっくりとでも Otto に移行しましょうということらしい。Vagrant で出来たことがそのまま出来るなら、パフォーマンスも改善するし良さそうには思います。

Otto としてみると HashiCorp のプロダクトに依存する形で構成されるので、ちょっと微妙に感じる人もいるかもしれない。あとモノリシックなアーキテクチャで consul とかインスコされてもねぇ…。というのは感じました。

あとはちょっと触ってみてかな。