こんにちわ! ついにオルターブースでも公式ブログを開設することになりました。 主に技術系のお話が中心になりますが、しょーもないことも書くと思いますので是非見てやってください。 記念すべき第1回目の投稿は「DevOpsがなぜ必要か」というタイトルでオルターブースが考えるDevOps論を語りたいと思います。
DevOps=自動化だけじゃない
DevOpsと聞くと大抵はInfrastructure as a CodeやImmutable Infrastructureというようなインフラ自動化の仕組みを表す言葉がきますよね。まあ、それはそれでいいのですがもう少し深掘りすると本質が見えてくると思います。
そもそもDev(開発)とOps(運用)のコラボレーションを表す言葉ですが、背景には開発や運用以外でも深く、広く関わっているものが多々あります。プロダクトをリリースするためには開発、運用、マーケティング、セキィリティ、アカウント(経理)、経営と様々な役割が必要となります。単純に開発と運用という閉鎖的な視点では、技術的解決はできますが本質的に目指しているコラボレーションは実現できません。 そこらへんはこの本がとても有用なので是非参考にしてみるといいと思います。
DevOpsの目的
インフラを自動化することで手動でやるよりも事故が減ります。また人的リソースコストも下がります。 しかし、本当の目的は何でしょうか? オルターブースでは、DevOps導入の目的を明確にしています。
「プロダクトの品質向上」
結局のところ、これに尽きるのではないかと思います。 全てが自動化され、オーケストレーションの仕組みで動いたとしても結果としてプロダクトの品質が悪ければ意味がないです。 そしてプロダクトとはサービスそのものであり、そのサービスを作る(動かす)プロセスも含まれます。 結局のところ行き着くところはここではないでしょうか?
プロダクト・オーナーシップを100%発揮できる仕組み。 それがDevOpsだと思います。
プロダクト・オーナーシップについてはとても良い勉強会が開催されております。
東京都内を中心に全国規模で開催されています。 去年は福岡でも開催されました。
DevOpsのライフサイクル
ライフサイクルと言ってしまっていいのかわかりませんが、一般的なDevOpsの流れを書きます。 これに関してはとても参考になるサービスがあるので、それを中心に書きますが、まずはこれを見てください。
HashiCorp社のATLASです。 ATLASはDevOpsのライフサイクル全てをカバーするサービスで現在はまだ正式リリースはされていません。 ATLASは以下の5つのサービスセグメントから成り立っています。
- Dev/Code
- BUild
- Artifact Registry
- Deployment
- Service Discovery
これらにHashiCorp社の製品(VagrantやPackerとか)が紐づけられています。 ライフサイクルの話はこのATLASをモデルに考えると良いと思います。ATLASではHashiCorp社のツールを使いますが、ライフサイクルさえ理解できれば何でも利用可能だと思います。VagrantでなくてもDockerで構わないと思いますし。
DevOpsツール
DevOpsでよく使われるツールをご紹介します。
Chef-zero
サーバー構成をコード化することで何回でも全く同じ構成のサーバーを作ることが可能です。 通常のServerモード以外にPush構成のClientモードも利用できます。
Docker
毎度おなじみのDockerです。コンテナ型の仮想システムですが従来のOpenVZやVirtuozzoとはやや違います。 使い方次第で色々できるのですが、弊社はマイクロサービス用のコンテナとして使います。 例えば、WordPressが稼働するサービスをDockerコンテナでマイクロサービスとして管理する場合はこんな感じになります。
1つのサーバーにコンテナを2つ立てます。それぞれ役割ごとに分けて管理します。こうすることによりホストリソースの効率化が計れるばかりかマイクロサービスによってメンテナンスの範囲が絞られるため保守も楽になります。 またコンテナ自体はDockerHubでGit管理することができます。 Blue-Green DeploymentなどのImmutable Infrastractureを実践する時でも非常に簡単にできます。
Jenkins
別にJenkinsでなくてもいいです。CI/CDで出来るツールであれば特にどれでも問題ないと思います。最近ではCI/CD機能を備えたオンライン版IDE(Visual Studio Team Services)もあるので、そっちでもいいですね。 重要なのはどんな言語でも、どんな環境でもCI/CD出来るということ。 で、当然Jenkinsを使うわけなので自動テストも含まれていますが、ここら辺はJenkinsから別のビルドツールへフックさせてから実行でもいい気がします。いや、むしろそっちのほうがいいかも。
クラウドオーケストレーションツール
- AWS : Cloud Formation
- Azure : Azure Resource Manager
- OpenStack : OpenStack HEAT
使い方に若干の違いはありますが、JSONでクラウドリソース定義をしてそれを展開することで一気にクラウド内にシステムを作るという感じです。クラウドによって使い方が変わるのでご注意を。
Capistrano
いわゆるデプロイツールです。複数のサーバーに一気にデプロイする時に使います。最近ではサーバー構築とアプリケーションデプロイが同時にできるツールもあります。
最後に
DevOpsはまだまだ新しい分野でこれといった正解もありません。 なぜ必要か、と問われた時にオルターブースではこう答えます。
プロダクトを本気で成功させたいから!!
まずはやってみる精神でトライしてみてはいかがでしょうか? ちなみにオルターブースではDevOps環境の構築やコンサルティングなんかもやっていますので、もし導入してみたいという会社様がいればご相談頂ければと思います。
※既に定員ですがIDCFさん主催のDevOPsセミナーを共催しております。第2回も予定しておりますのでご興味のある方は是非ご参加くださいませ。
※さらに2月27日〜28日にはマイクロソフト社主催でDevOpsハッカソンもやります!!これは熱い!!暑過ぎる!!