Cloud Automatorを支える技術

Cloud Automatorアドベントカレンダー 大トリの25日目を担当します。

qiita.com

Cloud Automatorとは、AWSの運用を自動化するためのサービスです。ですので一般の方にはあまり(というかほぼ)馴染みのないサービスですが、アドベントカレンダー最終日の今回は、Cloud Automatorの裏側の技術について書きたいと思います。

サービス概要

Cloud Automatorには大きく2つの機能があります。サービスサイトから引用します。

cloudautomator.com

1. 運用自動化
Amazon Web ServicesAWS)の運⽤に⽋かせないバックアップ、インスタンスの起動 / 停⽌など、様々なオペレーションを⾃動化します。 また、RDSの起動 / 停止やEC2インスタンスのタイプ変更といった、AWSが標準で提供していない独⾃のアクションも多彩に取り揃えています。

2. AWS構成の自動チェック
お客様のAmazon Web ServicesAWS)リソースが決められたルールにしたがって構成されているか定期的にレビューします。 これよって、AWSの環境が当初計画された通りに運⽤されているかどうかが誰でもすぐに把握できるようになります。

アーキテクチャ

運用自動化機能の裏側

AWSから提供されるAPI等を利用して自力で運用自動化を行う場合、

  • エラーのハンドリング
  • リトライ制御
  • 回避不可能なエラー時の通知

などなど、自前で行うには様々な苦労が伴う部分ですが、これらをWeb画面上からの入力指示のみで実現するために、Cloud Automatorの裏側の技術はこのようになっています。


全体イメージ

運用自動化の全体アーキテクチャは、こちらのブログに詳細が記載されています。

cloudautomator.com

f:id:haru_skywalker:20171225230850p:plain


OpsWorks + SWF部分の詳細

OpsWorksとSWFの詳細については、こちらのブログに記載されています。

cloudautomator.com

f:id:haru_skywalker:20171225231930p:plain

AWS構成の自動チェック(構成レビュー)の裏側

f:id:haru_skywalker:20171225233452p:plain

こちらはブログが存在していないので構成図のみになりますが、主に以下のアーキテクチャで構成されています。

  • AWS Config:AWSリソースの変更等の検知
  • AWS Lambda:AWSリソースの構成評価
  • Amazon SNS:評価結果の通知

AWSリソースがルール通りに構成されているかをチェックする心臓部分は、約50個からなるLambdaファンクションによって行われ、それらはPythonで実装されています。

操作画面/その他の裏側

フロントエンド

実際にユーザーが触れる管理画面は、Rails+Reactで作られており、heroku上で動いています。(EC2ではないです…!)

Rails、React、および利用gemやnpmパッケージ等のバージョンは、定期的に最新に追随しています。

SPAではなく、Railsがベースにある上で、非同期処理が必要な部分がReactで実装されています。しかし一部ではまだjQueryCoffeeScript)での実装部分も残っており、完全にReactへの置き換えがされるのはまだもう少し先・・・になりそうです。

外部利用サービス

外部利用サービスについてはこちらに記載があります。

cloudautomator.com

上記ブログに書かれていないサービスも多数利用しており、たとえば

  • ログ管理:Papertrail
  • ジョブ監視:Dead Man's Snich
  • 操作マニュアル:ZenDesk
  • 画面操作ログ解析:Hotjar

などなど、他にも挙げるとキリがないのでこの辺にしておきます。

さいごに

いかがでしたでしょうか。

Cloud Automator に限ったことではないですが、サービスの裏側は、このような様々な技術要素で構成されており、エンジニアチームは日々システムの健康を維持すべく努力を続けています。また、これからも技術進化への追随や、新機能の開発にも邁進していきますので、今後ともどうぞよろしくお願い致します。