デプロイSaaSのBuddyを(多分日本で初めて)紹介します!

わたなべです。

弊社がグリーグループに参画して約3ヶ月が経ちました。
まだまだドタバタしておりますが、ものすごいスピードで社内改善が進んでおります!
個人的に嬉しいのは、最新のMacBook Proが貸与されることですー!(しかも2年に1度リプレイス可能😍)

DevOps推進しております!

さて、弊社ではかねてよりDevOpsを推進しており、
デプロイの高速化を重要なミッションとして取り組んでおります。

そのためにはエンジニアのみならず、ディレクター、デザイナー、CSなどのメンバーも、
簡単にデプロイができる環境を整えることが必要であり、
わかりやすいUI、なおかつ事故らない仕組みも求められます。

デプロイ用のSaaSを導入しています

それを実現するSaaSとして、今まではDeployBotというサービスを使用していたのですが、
2017年12月にサービスが身売りされた前後から、非常に不安定な状態が続き、
業務に支障が出てきたため、今年の4月にBuddyという別のツールに移行しました。

Development, Deployment & DevOps Automation Platform | Buddy

導入して半年くらい経過しましたが、サポートもよく、
非常に安定していて使いやすいツールだと感じています。

日本語の資料がない。。。

ただ日本のユーザが居ないのか、日本語で紹介された記事が全くないです。。。

日本語の紹介記事第一号では!?

ということで、日本第一号(わたなべ調べ、2018/09/29現在) の紹介記事を書きたいと思います!(画像多め)

とここまで書いて、最近公式の日本語紹介サイトが出来たことを知りました笑
(正確にはERC20トークンの投資募集サイトですが)
Decentralized Application Development Automation | Buddy

概要はこちらで見ていただくとして、この記事ではプロダクトの内容にフォーカスしてご紹介します。

ググラビリティは低い

Buddyという名前ですが、実は似たような名前のツールが非常に多く、ググラビリティは低いです…

よく混同するのは以下の3つでしょうか。

Mobile Continuous Integration & Deployment for iOS | Buddybuild

funcool/buddy

クラウド型Web脆弱性検査ツール VAddy

検索時はURLであるbuddy worksでググることが多いです。

料金について

基本はコンテナのスペックと同時job数に課金していく形態になっており、
無料プランもあります。(最大5プロジェクト、同時1job、ビルド時間は月120分まで)

セキュリティを担保するなら、エンタープライズ版の選択肢もあります。

弊社ではProプランを使っています

個人的にはプロジェクト数の制限がない、Proプランからが選択肢になるかなーと思います。

2vCPU/2GB 49ドル
2vCPU/3GB 75ドル
2vCPU/4GB 99ドル
4vCPU/8GB 199ドル

実際の課金額は、これに同時job数を掛けた値になります。(2-10job)

弊社はプロジェクト数が多いですが、現状ではデプロイにしか使用していないので、
Proプランの最低スペック(2vCPU/2GB x 2job)で登録しています。

プロジェクト登録

プロジェクトはgitリポジトリ単位になります。(重複登録可能です)

主要な設計図共有サイトは登録できます。
弊社では試したことはありませんが、オンプレやBuddy自体にgitをホストさせることも可能です。

パイプライン

処理はパイプラインという単位で、アクションを登録します。

実行トリガー

パイプラインのトリガー指定は3つあり、手動、Push時、定期実行が選べます。

弊社では、本番反映は手動トリガー、開発環境はPush時トリガーで動作するようにしています。

予約機能

定期実行トリガーに関しては、弊社ではデプロイの予約機能として代替使用しています。
UIで指定できるSimpleモードと、cron書式で指定できるAdvancedモードがあります。

Simpleモード

Simpleモードは、直感的でわかりやすく指定できます。
時間指定はヘルプには記載がないのですが、ブラウザのTimeZoneを考慮して設定してくれます。
(サポートに直接聞きましたので確かです!)

上記は指定時間にデプロイする例です。
繰り返し最長の1週間に指定することで、擬似的に1回の予約デプロイを実現しています。
(もちろん、設定解除を忘れると来週も勝手にデプロイされます…)

Advancedモード

Advancedモードは、cron書式で日付を指定できます。(ただしTimeZoneはUTC)
※Simpleモードと違って、カウントダウン等がUI上に反映されないので、ちょっと不安になります…

差分表示

前回の実行からのGitコミット差分を、グラフィカルに表示してくれます。
こちらで差分をきちんと目視確認してから、デプロイを行うようにしています。

画像差分にも対応しております!

弊社のデプロイパイプライン

パイプラインに登録できるアクションは、公式が豊富に用意しています。(後述します)

弊社では主にSSH経由で、Ansibeレシピの実行を行っており、
更にその結果をSlack通知しています。

なぜ、わざわざAnsibleを使用しているのか

Ansible経由でデプロイするのではなく、Buddyのレシピだけでもデプロイは実現できるかと思いますが、
弊社ではBuddyが単一障害点にならないよう、Ansibleに処理を外出しして手動実行可能にしています。

コマンドはgit名、branch名、デプロイ対象のbranch名を、変数としてもらって実行しています。

ansibleのレシピ例

ansible-playbook deploy.yaml -i /etc/hosts_ansible --extra-vars '{ "vars_name" : "${project.name}", "branch" : "${execution.branch.name}", "revision" : "${execution.to_revision.revision}"}'

豊富なアクション

さて、皆さんが気になっているであろう、肝心のアクションです!
とても豊富に用意されております!

Dockerイメージ

各言語がプリインストールされたDockerイメージが起動できます。
HexoやHugoといった静的サイトジェネレーターも最初からあります!

IaaS連携

IaaSやAWS、GCPとの連携も簡単です!

ネイティブビルド

iOSは対応していませんが、Androidは対応しているので、ビルドツールとしても使用可能です。

他社サービス連携

他社サービスへの連携も豊富で、
弊社ではNewRelicとRollbarへデプロイタイミングの通知を利用しています。

通知

通知も大体は対応しています!(SMSは従量課金です)

改善してほしいこと

もちろん不満点もあるにはあります。

メンテの日時をもっと分かるように記載してほしい

2分~30分程度の定期メンテが不定期にあるのですが、
TimeZoneの関係で、日本では平日昼間に行われてしまいます。
もちろん、仕事に支障が無いよう仕組みづくりはしていますが、
Webページ上でアラートを出すなどはしてほしいですね。

権限管理が階層構造に出来ない

例えば職種ごと、アサインチームごと等に権限を指定したい、といったシーンがあるかと思いますが、
現状は各個人にプロジェクトを1つずつ登録する必要があります。
各個人にタグ付けする機能はあるのですが、現状はただのメモとしてしか使用できないとのことです。

まとめ

UIもわかりやすく、非エンジニアにも優しいツールだと感じています。
サポートの返信も非常に早いし、(遅くても1時間以内、2~3分で帰ってくることもある)
癖も少なくオススメのツールです!

昨日は2分で帰ってきました笑

以上、Buddyのご紹介でした!ぜひ使ってみてください😘