alterbooth Engineer blog

オルターブースエンジニアブログ

DevOpsがなぜ必要か

こんにちわ! ついにオルターブースでも公式ブログを開設することになりました。 主に技術系のお話が中心になりますが、しょーもないことも書くと思いますので是非見てやってください。 記念すべき第1回目の投稿は「DevOpsがなぜ必要か」というタイトルでオルターブースが考えるDevOps論を語りたいと思います。

DevOps=自動化だけじゃない

DevOpsと聞くと大抵はInfrastructure as a CodeやImmutable Infrastructureというようなインフラ自動化の仕組みを表す言葉がきますよね。まあ、それはそれでいいのですがもう少し深掘りすると本質が見えてくると思います。

そもそもDev(開発)とOps(運用)のコラボレーションを表す言葉ですが、背景には開発や運用以外でも深く、広く関わっているものが多々あります。プロダクトをリリースするためには開発、運用、マーケティング、セキィリティ、アカウント(経理)、経営と様々な役割が必要となります。単純に開発と運用という閉鎖的な視点では、技術的解決はできますが本質的に目指しているコラボレーションは実現できません。 そこらへんはこの本がとても有用なので是非参考にしてみるといいと思います。

www.amazon.co.jp

DevOpsの目的

インフラを自動化することで手動でやるよりも事故が減ります。また人的リソースコストも下がります。 しかし、本当の目的は何でしょうか? オルターブースでは、DevOps導入の目的を明確にしています。

「プロダクトの品質向上」

結局のところ、これに尽きるのではないかと思います。 全てが自動化され、オーケストレーションの仕組みで動いたとしても結果としてプロダクトの品質が悪ければ意味がないです。 そしてプロダクトとはサービスそのものであり、そのサービスを作る(動かす)プロセスも含まれます。 結局のところ行き着くところはここではないでしょうか?

プロダクト・オーナーシップを100%発揮できる仕組み。 それがDevOpsだと思います。

プロダクト・オーナーシップについてはとても良い勉強会が開催されております。

www.postudy.com

東京都内を中心に全国規模で開催されています。 去年は福岡でも開催されました。

POStudy Day 2015 Summer in Fukuoka [Day1] ~プロダクトオーナーシップを磨くための一日~ - POStudy ~プロダクトオーナーシップ勉強会~ | Doorkeeper

DevOpsのライフサイクル

ライフサイクルと言ってしまっていいのかわかりませんが、一般的なDevOpsの流れを書きます。 これに関してはとても参考になるサービスがあるので、それを中心に書きますが、まずはこれを見てください。

HashiCorp

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機能を備えたオンライン版IDEVisual Studio Team Services)もあるので、そっちでもいいですね。 重要なのはどんな言語でも、どんな環境でもCI/CD出来るということ。 で、当然Jenkinsを使うわけなので自動テストも含まれていますが、ここら辺はJenkinsから別のビルドツールへフックさせてから実行でもいい気がします。いや、むしろそっちのほうがいいかも。

クラウドオーケストレーションツール

  • AWS : Cloud Formation
  • Azure : Azure Resource Manager
  • OpenStack : OpenStack HEAT

使い方に若干の違いはありますが、JSONクラウドリソース定義をしてそれを展開することで一気にクラウド内にシステムを作るという感じです。クラウドによって使い方が変わるのでご注意を。

Capistrano

いわゆるデプロイツールです。複数のサーバーに一気にデプロイする時に使います。最近ではサーバー構築とアプリケーションデプロイが同時にできるツールもあります。

Otto by HashiCorp

最後に

DevOpsはまだまだ新しい分野でこれといった正解もありません。 なぜ必要か、と問われた時にオルターブースではこう答えます。

プロダクトを本気で成功させたいから!!

まずはやってみる精神でトライしてみてはいかがでしょうか? ちなみにオルターブースではDevOps環境の構築やコンサルティングなんかもやっていますので、もし導入してみたいという会社様がいればご相談頂ければと思います。

※既に定員ですがIDCFさん主催のDevOPsセミナーを共催しております。第2回も予定しておりますのでご興味のある方は是非ご参加くださいませ。

peatix.com

※さらに2月27日〜28日にはマイクロソフト社主催でDevOpsハッカソンもやります!!これは熱い!!暑過ぎる!!

eventdots.jp