(Translated by https://www.hiragana.jp/)
100万行オーバーのモノリシックRailsアプリをマイクロサービス化したクックパッドの手順|ハイクラス転職・求人情報サイト AMBI(アンビ)

100まんぎょうオーバーのモノリシックRailsアプリをマイクロサービスしたクックパッドの手順てじゅん

マイクロサービスの導入どうにゅう事例じれいを、なかひと徹底的てっていてきかたります。クックパッドでは、100まんぎょうオーバーのちょう巨大きょだいなRuby on Railsアプリのマイクロサービスいどみました。アプリをいかに分離ぶんりし、連携れんけいできるようにするか、など、同社どうしゃったマイクロサービス戦略せんりゃくきました。

100万行オーバーのモノリシックRailsアプリをマイクロサービス化したクックパッドの手順

サービスを構成こうせいするシステムを分散ぶんさん細分さいぶんするマイクロサービスアーキテクチャ。この手法しゅほう導入どうにゅうする企業きぎょうは、徐々じょじょえています。しかし、マイクロサービスのためのベストプラクティスを見出みいだすのはむずかしいでしょう。どの企業きぎょう手探てさぐりの状態じょうたいで、アーキテクチャ改善かいぜんみをしているのが現状げんじょうです。

では、巨大きょだいなサービスを有名ゆうめいIT企業きぎょうは、どうやってマイクロサービス推進すいしんしてきたのか。その手法しゅほうまなぶことで、「マイクロサービスおこなうためのみちしるべ」がえてくるのではないでしょうか。今回こんかいは、料理りょうりレシピ投稿とうこう検索けんさくサービスクックパッドの「お台場だいばプロジェクト」とばれる事例じれいげます。

きてつとめるのは、株式会社かぶしきがいしゃウルフチーフの代表だいひょう取締役とりしまりやくであり、アーキテクチャ設計せっけいのスペシャリストでもある川島かわしま義隆よしたかさん。はなは、「お台場だいばプロジェクト」の発起人ほっきにんである青木あおきほうろうさんと、プロジェクトリーダーである外村とのむら和仁かずひとさんです。

世界せかい最大さいだいのモノリシックRuby on Railsサービス」ともわれているクックパッドを、細分さいぶんするための手法しゅほうせまります。

1
外村とのむら 和仁かずひと(ほかむら・かずひと) 2 hokaccha 3 hokaccha写真しゃしんみぎ
ソーシャルゲームのバックエンド開発かいはつやWebフロントエンドの開発かいはつ業務ぎょうむ経験けいけん、2015ねんにクックパッドに入社にゅうしゃ。レシピサービスのサービス開発かいはつすうねんたずさわったのち現在げんざい技術ぎじゅつクックパッドサービス基盤きばんグループにてモノリシックで巨大きょだいなRailsアプリケーションのアーキテクチャ改善かいぜん業務ぎょうむ従事じゅうじしている。著書ちょしょに『ノンプログラマのためのJavaScriptはじめのいち』など多数たすう
青木あおき ほうろう(あおき・みねろう)(写真しゃしん中央ちゅうおう
ふつうの体育たいいくかいけいプログラマー。大学だいがく在学ざいがくちゅうにRubyをはじめとしたOSS開発かいはつにどっぷりつかる。2007ねんより並列へいれつ分散ぶんさんRDBMSベンダーに勤務きんむ並列へいれつ処理しょり目覚めざめる。2013ねんにクックパッド入社にゅうしゃ現職げんしょく)、データ分析ぶんせきサービス「たべみる」をエンジニアほぼ1人ひとり実装じっそう現在げんざい技術ぎじゅつデータ基盤きばんグループに所属しょぞくし、全社ぜんしゃ共通きょうつうデータ分析ぶんせき基盤きばん構築こうちくリード、お台場だいばプロジェクトPMなどを幅広はばひろ手掛てがける。『ふつうのLinuxプログラミング』『10ねんたたかえるデータ分析ぶんせき入門にゅうもん』はじめ著書ちょしょ多数たすう
川島かわしま 義隆よしたか(かわしま・よしたか) 4 kawashima写真しゃしんひだり
株式会社かぶしきがいしゃウルフチーフ 代表だいひょう取締役とりしまりやく。TIS株式会社かぶしきがいしゃにて19ねんはん様々さまざま業種ぎょうしゅのシステムアーキテクチャ設計せっけい担当たんとうし、2018ねん退職たいしょく株式会社かぶしきがいしゃウルフチーフを創業そうぎょうする。以降いこうながしのアーキテクトとして、ぜんしょく時代じだいからめていたOSSプロダクトや技術ぎじゅつ記事きじもとに、様々さまざま現場げんばでアーキテクチャの設計せっけい研修けんしゅう実施じっししている。

Ruby on Railsのバージョンアップに1ねんかかっていた

川島かわしま今回こんかいのインタビューでは、「お台場だいばプロジェクト」についてのおはなしうかがいたいです。このプロジェクトはなに目指めざしたものだったのでしょうか?

外村とのむら 「お台場だいばプロジェクト」は、cookpad_allというリポジトリのアーキテクチャ刷新さっしん改善かいぜん目指めざしたものです。これは、クックパッドが cookpad.com のドメインで提供ていきょうしているレシピサービスです。みなさんが、いわゆる「レシピサービスのクックパッド」といてイメージするものになります。

cookpad_allのリポジトリないには、WebアプリケーションやAPIサーバ、管理かんり画面がめん、バッチなどのシステムがふくまれています。これらのコード一式いっしきが「世界一せかいいちのモノシリックRuby on Rails(以下いか、Rails)サービス」とばれているものです。

コードぎょうすうとしては、Rubyのコードがやく27まんぎょう(テストをのぞく)、テストコードがやく51まんぎょう、HTMLテンプレートがやく14まんぎょう。つまりトータルで100まんぎょうほどありました。

5

川島かわしま:アプリケーションが巨大きょだいであるがゆえに、「お台場だいばプロジェクト」の推進すいしんまえ開発かいはつ運用うんようにおいておおきな課題かだいかかえていたそうですね。どのような課題かだいがあったのですか?

青木あおき アプリが巨大きょだいすぎるため、cookpad_allにだい規模きぼ機能きのう追加ついか変更へんこうができないことが本質ほんしつてき課題かだいでした。あるコードを変更へんこうすると、意図いとしない箇所かしょ機能きのううごかなくなってしまうんです。ライブラリのバージョンも迂闊うかつにはげられません。依存いぞんおおすぎるため、更新こうしんがトリガーになって機能きのうがおかしくなるケースがあるためです。

それから、Railsのバージョンアップがむずかしいこともおおきな課題かだいでした。バージョン2からバージョン3へのメジャーアップデートが一番いちばんきつくて、たしか3~4にんで1ねんくらいかかりました。3から4はもうすこしマシでしたが、それでも1人ひとり専任せんにん半年はんとしはかかっていましたね。

川島かわしま:それは大変たいへんだ……。

外村とのむら Railsが後方こうほう互換ごかんせいのない機能きのう更新こうしんおこなったことが原因げんいんうごかなくなるケースもありますし、アップデートに起因きいんするエッジケースのバグをんでしまうケースもあります。それに、Railsのアップデートに追従ついしょうしていないふるいgemがこわれたり、gemにモンキーパッチをてて運用うんようしていたものが使つかえなくなったり。

これほどおおきなRailsアプリケーションだと、バージョンアップにともなってかぞれないほどの問題もんだい発生はっせいします。作業さぎょう一筋縄ひとすじなわではいきません。ようやくげきったころには、またつぎのバージョンがている、というくりがえしでした。

6

川島かわしま:その状態じょうたいでは、永遠えいえんにバージョンアップの作業さぎょうつづきそうですね。

青木あおき そうした課題かだい解決かいけつするために「お台場だいばプロジェクト」はスタートしました。まずやったのは「改善かいぜんしたいことをリストアップする場所ばしょ」としてGitHubにリポジトリをつくることでした。その活動かつどうすこしずつむすんでいき、マイクロサービスむすびついていきます。

外村とのむら つまり、もともとこのプロジェクトはマイクロサービス主眼しゅがんにしたプロジェクトではなかったんです。あくまで巨大きょだいなモノリシックサービスを開発かいはつ運用うんようするつらさを軽減けいげんするためのプロジェクトで、その手法しゅほうのひとつとしてマイクロサービス有効ゆうこうだとわかった、というながれでした。

【マイクロサービス戦略せんりゃく】まずはコードをらすことから

川島かわしま:どのような部分ぶぶんから「お台場だいばプロジェクト」をすすめましたか?

青木あおき まず、つらさの根本こんぽん原因げんいん明確めいかくにするために、社内しゃないのさまざまなエンジニアにはなしきました。全員ぜんいんっていたのが、コードりょうおおすぎるということです。

外村とのむら そこで、まずは「いかにしてコードりょうすくなくするか」を主眼しゅがんいてうごきました。いらない機能きのう使つかわれていない機能きのうさがして、していったんです。

青木あおき マイクロサービスおこなさいには、「機能きのうをどう分割ぶんかつするか。なにから着手ちゃくしゅすべきか」の議論ぎろんかならこりますし、社内しゃない調整ちょうせいにも苦労くろうします。一方いっぽうで、使つかわれていない機能きのう廃止はいしはメリットしかないので、反対はんたい意見いけんがりません。つまり、“プロジェクトの第一歩だいいっぽ”にいた作業さぎょうなんです。

川島かわしま:とはいえ、使つかわれていないコードをさがすのも大変たいへん作業さぎょうですよね。使つかわれているコードを間違まちがってしてもいけないですし。どのようにして、作業さぎょうすすめていきましたか?

青木あおき 本番ほんばん環境かんきょう使つかわれていないコードを、ツールで自動じどう判定はんていできれば作業さぎょうらくになります。そこで、「お台場だいばプロジェクト」のメンバーとクックパッドのフルタイムRubyコミッターである笹田ささだ耕一こういちさん、遠藤えんどう侑介さんではない、どういう機能きのうがあるとコード削除さくじょ便利べんりかを一緒いっしょかんがえていきました。いくつかの機能きのうためし、最終さいしゅうてきにできたのが「oneshot coverage{$annotation_1}」というRubyのしん機能きのうです。

この機能きのうをオンにして一定いってい期間きかん測定そくていすることで、コードが実行じっこうされた箇所かしょのカバレッジをることができます。また、一度いちど特定とくてい箇所かしょとおったらかい計測けいそくされなくなるため、処理しょり性能せいのうもほとんど劣化れっかしません。

川島かわしま:Rubyをもちいてサービス開発かいはつしている企業きぎょうにとって、このツールは汎用はんようてき導入どうにゅうできそうですね。

【マイクロサービス戦略せんりゃく】アプリ固有こゆうのバッドノウハウをらす

川島かわしまにはどのようなことを実施じっししましたか?

青木あおき コード削除さくじょとほぼおなじタイミングで実施じっししたのが、アプリケーション構造こうぞう整理せいりです。cookpad_allはかつて、「動作どうさモード」とばれるトリッキーな実装じっそうがされていたんです。この「動作どうさモード」をなくすことにみました。

川島かわしま:「動作どうさモード」とはなにですか?

青木あおき ひとつのRailsアプリケーションが、動作どうさしているホストめいおうじてWebアプリケーションになったり、APIサーバーになったりするというわった仕組しくみです。ひとつのアプリのなかにWebアプリとAPIサーバーの設定せってい混在こんざいしているので、どの設定せっていがどちらのものかを調しらべるのにも一苦労ひとくろうでした。

7

青木あおき ローカル環境かんきょうでアプリをうごかすのも大変たいへんでした。ホストめいてモードがわるんですが、ローカル環境かんきょうのホストめい基本きほんてきにlocalhostじゃないですか。だから、localhostにべつ名前なまえけなければ、モードをえられないという独自どくじのノウハウがありまして。

川島かわしま独自どくじ仕様しようくわしくらないと、開発かいはつがそもそもできないですね。

青木あおき はい。その状態じょうたいはなかなかつらいので、構造こうぞうをすっきりさせることにしました。

川島かわしま:どのようにして分割ぶんかつしていったのですか?

青木あおき 「動作どうさモード」の削除さくじょにあたっては、アプリケーション本体ほんたいのコードが機能きのう単位たんいでディレクトリ分割ぶんかつされていたことがさいわいしました。命名めいめいもと分離ぶんりおこなうことができたからです。APIサーバーは独立どくりつしたアプリケーションにして、さらにふるいAPIサーバーのコード削除さくじょわせて実施じっししたことで、アプリケーション構造こうぞうをすっきりさせることに成功せいこうしました。

8

外村とのむら cookpad_allは10ねん以上いじょう運用うんようされていたため、歴史れきしがあるからこそ独自どくじ運用うんようノウハウが蓄積ちくせきされていたんです。そのつらさを改善かいぜんすることが、このフェーズでは重要じゅうようされていました。

青木あおき 「できるだけ普通ふつうのRailsアプリケーションにしよう」というキャッチフレーズで、プロジェクトをすすめていましたね。

【マイクロサービス戦略せんりゃく】まずは分離ぶんりしやすい部分ぶぶんからおためしで

青木あおき フェーズとして、cookpad_allからスマホアプリのA/Bテストなどに使つかわれている機能きのう分離ぶんりしました。この時点じてんでは、マイクロサービスおこなうかどうかはめかねていたため、まずは試験しけんてきに、わたし当時とうじ所属しょぞくしていたチームのっていたシステムを分離ぶんりする方針ほうしんをとったんです。

川島かわしま最初さいしょ分離ぶんりする機能きのう候補こうほはいろいろあったとおもいますが、その機能きのうえらんだ理由りゆうなにですか?

青木あおき いくつか理由りゆうがありました。ひとつは、その機能きのうはトータルのコードぎょうすうが1000ぎょうもない、ごくちいさなAPIであったことです。依存いぞんライブラリの種類しゅるいすくなく、APIのかずも2~3くらいでした。しかも利用りようしているデータベースはRedis1個いっこだけで、そのRedisはサービスからは使つかわれません。APIの独立どくりつせいたかくcookpad_allとの通信つうしんもありませんでした。

川島かわしま:さまざなめんで、分離ぶんりするには都合つごうのいいものだったわけですね。

9

青木あおき その機能きのう分離ぶんりがうまくいったことで、サービス分割ぶんかつ(=マイクロサービス)が実現じつげんできそうなことや、分離ぶんり成功せいこうすればアプリケーションの大幅おおはば機能きのう変更へんこう容易よういになることの道筋みちすじちました。

青木あおき 余談よだんですが、じつはクックパッドは3~4ねんほどまえ、マイクロサービス失敗しっぱいしているんです。正確せいかくには、課金かきん広告こうこく配信はいしんなどのシステムは綺麗きれい分離ぶんりできたんですが、それ以外いがいのシステムにおいてくないサービス分割ぶんかつをしてしまいました。

分離ぶんりしたけれどうまくいかずもともどしたり、分離ぶんりしたことでかえって開発かいはつ運用うんよう手間てまえる事態じたい多発たはつしました。「お台場だいばプロジェクト」の初期しょきフェーズでマイクロサービス主眼しゅがんとしてさなかったのは、そのときの経験けいけんから「マイクロサービスはくないのでは」という雰囲気ふんいき社内しゃないにあったためです。

川島かわしま:なぜ、当時とうじはマイクロサービス失敗しっぱいしてしまったのだとおもいますか?

青木あおき もっとも連携れんけいおお部分ぶぶんろうとしたからでしょうね。分割ぶんかつおこなまえに「どの部分ぶぶん分割ぶんかつすべきか」をまず分析ぶんせきすべきだったんですが「これからはマイクロサービスが主流しゅりゅうだ。どんどん分割ぶんかつしよう」とすすめてしまったのがよくなかった。

マイクロサービス着手ちゃくしゅする場合ばあい最初さいしょはまず分離ぶんりしやすい部分ぶぶんからをつけるのがいとおもいます。

【マイクロサービス戦略せんりゃく】データベースがれていればサービスもりやすい

川島かわしまにはなにおこないましたか?

青木あおき 分離ぶんりしたA/Bテストのシステムが「なぜ上手うまくいったのか」をかんがえたところ、「データベースがれていることがおおきい」という結論けつろんきました。

そこで、「データベースのかた沿ってコードもせば、サービス分割ぶんかつ上手うまくいくのではないか」という方針ほうしんのもと、現在げんざいもマイクロサービスすすめています。全文ぜんぶん検索けんさくシステムのSolrを中心ちゅうしん分離ぶんりしたレシピ検索けんさくや、専用せんようAuroraをベースに分離ぶんりした料理りょうりきろく機能きのうなどが、この方針ほうしん分離ぶんりおこなったシステムにあたります。

10

青木あおき ただし、レシピ検索けんさくについてはまだ課題かだいのこっています。SunspotというRubyライブラリがSolrによる全文ぜんぶん検索けんさくをサポートしてくれているのですが、そのライブラリはモデルとみつ結合けつごう仕組しくみであるため、完全かんぜんには機能きのう分離ぶんりしきれなかったんです。

川島かわしま:Railsを使つかっていて、かつSunspotをれている企業きぎょうは、マイクロサービスおこなさいには注意ちゅういしたいですね。

青木あおき そうなんです。そして、これからいよいよマイクロサービスのもっともむずかしいフェーズにはいってきます。cookpad_allのコアの部分ぶぶん分離ぶんり大変たいへんだとわかっているので、まずは周辺しゅうへん部分ぶぶん分離ぶんりして、すこしでもみやすい状況じょうきょうにしてからいどみたいです。

【マイクロサービス戦略せんりゃく】インフラ構成こうせい標準ひょうじゅんする

川島かわしま:マイクロサービスにあたり、あたらしくれた技術ぎじゅつスタックはありますか?

青木あおき コンテナ技術ぎじゅつですね。クックパッドではコンテナオーケストレーションのために、AWSのECSベースで構築こうちくされたHako{$annotation_2}というツールを使つかっています。

外村とのむら 現在げんざい全社ぜんしゃてきにcookpad_all以外いがいすべてのアプリはHakoを利用りようするかたちでDocker環境かんきょうっています。アプリケーションに関連かんれんしたシステムやメトリクスとう情報じょうほう閲覧えつらんできるhako-consoleやHakoをもちいたオフラインジョブ実行じっこう仕組しくみなど、Docker環境かんきょう便利べんり使つかえるツールるい社内しゃない共通きょうつう基盤きばんチームが開発かいはつしているので、それらを利用りよう可能かのうにするためにDocker移行いこうおこなわれてきたからです。そして、Hakoを利用りようすることは、マイクロサービスにおいてもたくさんの利点りてんがありました。

11

川島かわしまたとえば、どのような?

青木あおき Hakoをもちいてインフラ構成こうせい標準ひょうじゅん自動じどうすることで、かくチームの開発かいはつしゃ環境かんきょう構築こうちくふくめて自分じぶんたちで制御せいぎょできる状態じょうたいになります。これにより、インフラ基盤きばんているチームからかくチームの開発かいはつしゃへと、インフラの決定けっていけんそのものがわたりやすくなります。

外村とのむら それに、共通きょうつう基盤きばんることで、インフラ構築こうちくやデプロイ、かんなどの方法ほうほう全社ぜんしゃてき標準ひょうじゅんされます。かくチームないで、開発かいはつから運用うんようまでの作業さぎょうをより完結かんけつしやすくなるわけです。現在げんざい、cookpad_allも同様どうようにHakoしていき、Dockerじょううごかすためのみをつづけています。

【マイクロサービス戦略せんりゃく】サービスメッシュをれて通信つうしん課題かだいをクリアせよ

青木あおき 導入どうにゅうした技術ぎじゅつスタックとしては、サービスメッシュがあります。クックパッドでは、サービスメッシュのdata-planeとしてEnvoyを使用しようしており、control-planeは自作じさくしています。

これも、cookpad_allをマイクロサービスするために導入どうにゅうしたというより、全社ぜんしゃてき共通きょうつう使つかえるサービスメッシュ基盤きばんべつのチームがつくっていたので、それにcookpad_allもっかったところ、マイクロサービスにもてきしていたというかんじでした。

サービスメッシュの導入どうにゅうによってぜん通信つうしんがプロキシを経由けいゆするため、自動じどうリトライやエラーの検知けんち通信つうしんじょうきょう可視かしなどが容易よういになりました。マイクロサービスではサービスあいだ通信つうしん大量たいりょう発生はっせいするので、サーキットブレイカーやリトライなどの仕組しくみをれておくことが必要ひつようです。Envoyの導入どうにゅうによって、これらの前提ぜんてい条件じょうけんがクリアできました。

外村とのむら マイクロサービスあいだ通信つうしんにおいて必要ひつよう機能きのういちとおそろっているのは、Envoyのすぐれているところですね。

青木あおき また、そのにもAPIオーケストレーションそうとしてOrchaというシステムを開発かいはつしました。このツールがリバースプロキシとAPIサーバーのあいだはいりこんでくれて、既存きそんAPIのコードをいじらずにAPIのレスポンスをえることが可能かのうになりました。これによって、マイクロサービスあいだ通信つうしん柔軟じゅうなんせいおおきくなっています。

12

マイクロサービスは、システム改善かいぜんであり組織そしき改善かいぜんでもある

川島かわしま今回こんかいのおはなしから、クックパッドさんは非常ひじょうにオーソドックスな手法しゅほうで、無理むりのない範囲はんいからマイクロサービスをスタートしている印象いんしょうけました。かつて、「3~4ねんまえ失敗しっぱいした」とおっしゃっていましたが、その経験けいけんまえて、適切てきせつ手法しゅほうにたどりいているのだとおもいます。

青木あおき いきなりむずかしいところにんでも、うまくいかないですからね。

川島かわしま:この事例じれいでは、まず周辺しゅうへん部分ぶぶんからはなし、モノリスの本当ほんとう姿すがたえるようにしたのが素晴すばらしいとおもいました。おおくの企業きぎょうは、この事前じぜん準備じゅんびができていないです。複数ふくすうのシステムが混在こんざいしている状態じょうたいですと、本当ほんとう意味いみでのビジネス規模きぼえにくいですし、適切てきせつ分割ぶんかつかたちえにくい。

マイクロサービスしようとかんがえる企業きぎょうって、しょぱなから本体ほんたいのシステムを、いわばラスボスをたおしにいきがちなんです。ラスボスにけてしまって、頓挫とんざするケースがおおい。

外村とのむら スライムをたおしてレベルをげるところから、知見ちけんまなければいけないですね(笑)。

13

川島かわしま:そのとおりです(笑)。では最後さいごに「だい規模きぼなサービスを企業きぎょうが、マイクロサービス意義いぎ」についてかたっていただければ。

青木あおき おおきくけて3つの意義いぎがあるとおもいます。1つ高速こうそく大胆だいたん開発かいはつスタイルをもどすこと。冒頭ぼうとうべたように、おおきな機能きのう追加ついか変更へんこうができない状態じょうたいでは、サービス開発かいはつにも制約せいやくがかかります。ビジネスで本来ほんらい達成たっせいすべき目標もくひょうが、実現じつげんしにくくなるわけです。その状況じょうきょう改善かいぜんすることで、ドラスティックな機能きのう追加ついか変更へんこう可能かのうになります。

2つ組織そしきをスケールアウト可能かのうにすること。巨大きょだいなモノリシックサービスの場合ばあい、コード修正しゅうせいのコンフリクトがやまほど発生はっせいするため、組織そしきのサイズそのものが制限せいげんされてしまいます。マイクロサービスによって、分散ぶんさん開発かいはつ可能かのうにすることにはおおきな意義いぎがあります。

これは私見しけんですが、モノリシックなアプリケーションで問題もんだいなく開発かいはつできるのは、エンジニアの人数にんずう100にんくらいが上限じょうげんだとおもいます。それ以上いじょう組織そしきおおきくなるなら、マイクロサービスのほう確実かくじつにスケールしやすくなります。マイクロサービスは、システム改善かいぜんであると同時どうじ組織そしき改善かいぜんでもあるわけです。

3つはデータと機能きのうさい利用りようです。クックパッドにはやく300まんめい登録とうろくユーザーさまがおり、そのデータはおおきな資産しさんです。しかし、コアの部分ぶぶんがモノリシックな状態じょうたいになっているとデータのさい活用かつよう容易よういではありません。新規しんきサービスをげて、データにアクセスすることはむずかしいわけです。結局けっきょく本体ほんたいにコードを追加ついかする以外いがいには方法ほうほうがなくなってしまいます。

サービスを役割やくわりごとにけてさい利用りよう可能かのうにすることで、データと機能きのうさい利用りようせいたかまります。サービスの共通きょうつう基盤きばん構築こうちくでき、会社かいしゃ全体ぜんたいとしてつよいシステムをつくれるわけです。それが、マイクロサービス利点りてんだとかんがえています。

取材しゅざい執筆しっぴつ中薗なかぞのすばる写真しゃしん岩崎いわさき力也りきや

*1:oneshot coverageの詳細しょうさいについては、遠藤えんどうさんが「クックパッド開発かいはつしゃブログ」にて「Ruby 2.6 しん機能きのう本番ほんばん環境かんきょうでの利用りよう目指めざしたコードカバレッジ計測けいそく機能きのう」という記事きじ解説かいせつしている。

*2:ECSのデプロイには、ELBとコンテナのひも設定せってい環境かんきょう変数へんすう注入ちゅうにゅうなどさまざまな作業さぎょう必要ひつようとなる。そうしたしょ作業さぎょう事前じぜん設定せっていすることで、デプロイを効率こうりつできるツールがHakoだ。デプロイのELB作成さくせいやRoute53によるドメイン設定せっていなど、通常つうじょうであればインフラエンジニアが設定せっていするような作業さぎょうまで自動じどうできる。

若手わかてハイキャリアのスカウト転職てんしょく