採用に本気で向き合ってきた1年と6ヶ月のはなし

はじめまして。Misocaで採用を担当している miho_hama です。 f:id:miho_hama:20180417135124j:plain          左から kokuyou わたし mzp

自己紹介

Misocaに2015年5月にジョインし、オウンドメディアの立ち上げや、ユーザーサポート、アンバサダーマーケティングなどを担当して、今は採用や人事制度関連、アンバサダーマーケティングなどを担当してます。
Misocaにジョインする前は、転職エージェントでキャリアコンサルタント→ 通信会社で人事採用→社労士事務所で修行しながら社会保険労務士の資格取得...と一貫してHR関連の仕事に従事していました。

いつのまにか採用担当に…?!

採用には2016年の秋頃から関わるようになり、「手伝いましょうか?」から始まったつもりが気づけばグリグリ回してました。

採用について相談されたから答えたらこうなったの図⬇️ f:id:miho_hama:20180417113817p:plain

おかげさまで順調に採用が進み、今年度も採用計画を大幅に上回るペースで進んでいますので、「Misocaの採用」について振り返りながら書き残したいと思います。

続々と良い人がジョインしてくれた

採用がわたしのミッションに加わり、本格的に採用活動を始めたのは2016年10月のことです。
当時は、従業員 11人 + 業務委託 4人の 15人のチーム(うち開発は、社員 8人+ 業務委託 3人の 11人)で、 雇用形態関係なく「チームMisoca」としてうまくワークしていて、当時からとても良いチームでした。 f:id:miho_hama:20180417112743j:plain

この1年半でジョインした人数は、社員 12人 + 業務委託 3人 + インターン 3人 = 18人

内訳としては、

  • 社員 12人(うちエンジニア10人)
  • インターン 3人(うちエンジニア1人)
  • 業務委託 3名(うちエンジニア1人)

2倍以上の人数になりました🎉 f:id:miho_hama:20180417113044j:plain

採用するうえで大切にしていること

ここまで順調に採用が進んでいますが、数合わせの採用や、表面的なスペックを決めて、それらを満たす人を採用するという手法はとっていません。

「Misocaにジョインするという決断が、応募者の方とMisoca双方にとって〝現時点″でのベストアンサーか」 という視点で議論を重ねています。

選考を進めるうえで大切にしていることはこんな感じです。

1.Misocaのことをちゃんと知ってもらおう

面談や面接は、一方的に応募者の方の良し悪しを企業が判断する場ではなく、お互いのことをよりよく知る場だと考えています。

基本的なことですが、「相手のことを知るにはまず自分から!」の精神で、最初に必ずMisocaの説明をしています。 志望動機なんて聞きません。

最終選考以外は、基本的にはオンラインで実施し、Misocaのことを知ってもらえる機会をより多く創造できるようにしています。

そしてこれが私の一番のこだわり。
「最初から(に)代表の豊吉が参加する」
スケジュールの都合でどうしても組めないこともあるのですが、ほぼ全ての1次面談/面接に豊吉が参加しています。 そして、会社説明は、人事担当者のわたしではなく、豊吉が行ってます。 この理由についてはまた書きます。

2. 応募者のことをちゃんと知ろう

採用する上でMisocaが重視していること*1を軸に、かなり掘り下げて質問していきます。

「どういう価値観の持ち主なんだろう」
「それらは過去の行動にどのように現れているのかな?」

私がキャリアコンサルタント出身だから余計に気になるのかもしれませんが、採用に関わるMisocaエンジニアたちも、応募者の方のGitHubなどアウトプットしている情報はかなり詳しく目を通してます。

具体的な採用プロセスは、後日別のエントリで触れる予定ですが、ペアプロやミニプロの実施を通してお互いのことをよく知れるよう工夫しています。

3.結果がどうあれ「Misocaに会えてよかった」と思ってもらるようになろう

Misocaを選んでジョインした人に「こんなはずじゃなかった」と思ってもらいたくない!という気持ちがまずあります。

恋愛だとギャップが良い方向に働くこともあるようですが、転職においては、ギャップがない方が幸せになれると私は信じています。

「Misocaとの接点が何か良い気づきになれば嬉しいな」という気持ちも同じだけあります。 そのため、どんなに優秀な人でも、その人にとって「Misocaがベストの場でない」と思えば率直にそう伝えることもあります。
選考の過程で、私からものすごい長いメールを受け取った人も少なくないはず(笑)

ベースにあるのは「おもてなしの心」

もし今回ご縁がなかったとしても、「Misocaに行ってきたけど最高の会社だったよ」と知り合いに話してもらえるようにしたいよねって、自然とみんな思ってます。
これは、私が入社する前からあった素敵文化です。

この話のつづき

次回からは、採用を進めるために具体的に着手したこと、採用プロセスの話などを順に書いていきたいと思います。
不定期寄稿ですので生温かく見守ってください。

*1:この詳細は別のエントリで書きます

続きを読む

RailsDevelopersMeetup2018 ランチスポンサーまでの俺たちの道のり

こんにちは、@mugi_uno です。

健康診断で善玉菌が多いと言われました。毎朝のヨーグルトが効いてます。

さて、以前のエントリ*1で予告をしていましたが、2018/3/24(土) に行われた Rails Developers Meetup 2018(以下RailsDM)にてMisocaは「Railsバージョンを最新に保つ俺たちの話 〜2重弁当添え〜」というタイトルでセッション&お弁当スポンサーをさせていただきました。

今回は、「イベントを引き受けてから当日の発表まで、Misocaではどんな風に準備を進めていたのか?」 といった点にフォーカスした、少し毛色の違う内容でお送りします。

ランチスポンサーを引き受けることになったきっかけ

RailsDM自体との関わりについては、第4回開催の時に私個人でWebpackerについてLT*2をさせて頂きました。その縁もあり、Misocaにランチスポンサーとして協力してもらえないかの案内が届いたのがきっかけです。

Ruby/Railsについては普段からお世話になってますし、快諾させて頂きました。

作戦会議

協力者を募集

イベント自体に興味のある人や手伝ってくれる人を募集したところ、さくっと6〜7人ほどが集まりました。(こういう時に身軽に助けてくれるのがMisocaのいいところ)

皆で、そもそもMisocaは何を目的として参加するのか?ということを整理し、最終的には「Misocaを知ってもらおう」というのをテーマに進めていくことに。

チームわけ

あとは具体的な当日までの準備ですが、ランチスポンサーには大きく分けて2つやることがあります。

  1. お弁当を確保して配る
  2. ランチセッションで話す

相談した結果、

  • 当日の発表とお弁当配布をするチーム
  • お弁当を決めて当日までの手配をするチーム

の2チームで準備を進めていくことにしました。

f:id:mugi1:20180329101301p:plain

お弁当を決める

お弁当にも色々な案がありました。

  • 普通にサンドイッチ
  • 豪華なお弁当
  • SNS映えしそうなもの
  • エンジニアが喜びそうなもの
  • 「のし」をカスタマイズしてネタを仕込む

個人的に面白かった案はこちら。

f:id:mugi1:20180330095239p:plain

80人以上が完全食をシェイカーで飲む世界線もありえたかもしれません。*3

色々話した結果、最終的には、「豪華なお弁当でSNS拡散を狙おう作戦」ということで、2段のお重弁当を配ることにしました。

ランチセッションの準備

タイトルを決める

セッションの内容自体は当日行くチームで相談した結果、「Misocaの紹介を交えつつ、Ruby/Railsとの関わりや、過去・現在の技術的な挑戦について話そう!」ということに。

そこまではスムーズだったのですが、良いタイトルが思い浮かばずに苦労しました。

最終的に決まるまでのSlackでの流れが楽しかったので貼っておきます。

  1. 案を出しながら悩む人たち

    f:id:mugi1:20180402112625p:plain f:id:mugi1:20180402112652p:plain

  2. id:toyoshi がひとこと

    f:id:mugi1:20180402112730p:plain

  3. 逆に聞き返していく人たち

    f:id:mugi1:20180402113355p:plain

  4. id:toyoshiの回答

    f:id:mugi1:20180402113245p:plain

  5. かっこいい..!

    f:id:mugi1:20180402113454p:plain

そこからさらに検討して、話す内容は「俺たち」の話でしょう!ということで、

Railsバージョンを最新に保つ俺たちの話 〜2重弁当添え〜」

というタイトルになりました。

リハーサルをする

セッションは3人のリレー形式で行うことにしたこともあり、全体の流れや統一性の確認も踏まえて、一度社内でリハーサルを行い、意見・感想を集めました。

f:id:mugi1:20180402114706p:plain

f:id:mugi1:20180402115607p:plain

これらを参考にしつつ、当日までに徐々に準備を整えていきました。

(余談ですが、Googleスライドで共有して編集していたので、全員の編集状況が都度確認できました。複数人で1スライドを作成する場合には便利です。)

イベント当日!

というわけで、イベント当日を迎えました。

当日実際に配られたお弁当

f:id:mugi1:20180329103046j:plain

おかげさまで、5分ほどで用意していた数が全てなくなりました。
みなさま美味しく召し上がっていただけたようで良かったです。

ちなみに、実は発表者のぶんも発注してあったのですが、 勢い余ってそれも全部配ってしまいました。

食べたかった...!

発表資料

こちらです。 ご飯を食べながら楽しく聞いていただけたかなと思います。

speakerdeck.com

イベント終了後

事後検証

Misocaではプロジェクト終了時などに「事後検証」という形で、始まりから終わりまでを通してふりかえる、ということをやっています。

今回のイベント参加についても、きちんと実施しました。

f:id:mugi1:20180402132921p:plain

この中でのアクションとして「開発ブログで共有しよう!」というものがあり、このエントリに繋がっています。

まとめ

というわけで、今回はMisocaでランチスポンサーを引き受けてから完了するまでの流れのまとめでした。ふりかえってみると、いい具合に協力しながら進めることができたと思います。

最後に、お弁当を食べてランチセッションを聞いて頂いた参加者のみなさま、ありがとうございました!

そして、RailsDevelopersMeetup運営の皆さま、お疲れ様でした!

f:id:mugi1:20180329095815j:plain

ちなみに

発表後にRuby/Railsのバージョンが上がってますが、もちろん追従していますよ!

f:id:mugi1:20180403154015p:plain

f:id:mugi1:20180403154047p:plain


MisocaではTech系イベントに興味のあるエンジニアを募集しています!

Rails Developers Meetup 2018でランチセッションやるよ!

こんにちは、@corocn です。 Misocaは「Rails Developers Meetup 2018」 をお弁当スポンサーとして応援することになりました 🎉

今回は2日連続、2トラック同時進行されますが、トラックA 13:10〜でお弁当を引っさげて登場します。

Rails Developers Meetup 2018: Day 1

🍱お弁当

ちょっとだけリッチな和風の2重弁当をご用意いたしました!

f:id:corocn:20180315152055j:plain:w400

ネタバレになるので伏せつつ紹介しますと、

和の調味料に◯◯◯◯◯◯が香る「◯◯の◯◯◯◯◯◯◯◯◯焼」や、◯◯を揚げ、◯◯◯◯◯に漬け込んだ「揚げ◯◯の◯◯◯◯◯◯風味」の新和食テイストが美味。「◯◯◯◯」は3色に◯◯◯で華やかに。◯◯◯◯◯◯と◯◯◯◯◯◯◯◯を使った◯◯◯◯◯◯を揃えました。

とても美味しそうですね!

🗣話す内容

MisocaではRuby/Railsの最新バージョンを現在も保ち続けています。

ベースとなっている文化、開発スタイル、日常のこと、 技術的な挑戦、最新バージョンに追従していく理由、最近の取り組みなどなど。 浅く広めに紹介しようと思っています。

お弁当でも食べながら気軽に聞いてください! (エモめの話が多めかも)

🚅発表者

田舎から乗り込みます。

f:id:corocn:20180315152814p:plain:w300

上から、@mugi_uno@eitoball@corocn です。

リモート成分強めです。 フルリモートワーク含め、Misocaに関して気になることがあれば気軽に聞いてください!

大雪と寒ブリの話は直接富山の人に聞いてください。流石に雪は溶けたようです。

f:id:corocn:20180315154008j:plain:w400

🌸最後に

ぜひ遊びに来てください! 会場でお会いできることを楽しみにしております 👋

東京は花粉がひどくないといいな〜。

作業に集中するためにダンボール洞窟を買った話

こんにちは! Misoca開発チームのめろたん(@renyamizuno_)です!

これは後ろ姿の僕です。そろそろ髪を切るべきですね。

3月になって暖かくなってきましたね。僕はもう一年の1/6が終わったことに驚愕しています。

最近あった嬉しかったことは、むぎさん(@mugi_uno)の娘さんに似顔絵を書いてもらったことです。

「WATERMELON ぴよぴよいちご」っていうシールが最高にロックですね。

はい。

今回は、オフィスに「集中スペース」として導入した「i-Cave」について紹介したいと思います!

集中スペースの枯渇

以前のオフィスは集中スペースとして、小部屋が準備されていました。 現在のオフィスに移転後は個室がなく集中スペースといえるものはなくなりました。

集中スペースがなくなってしまったことで、「集中して一気にやりたい!」とか「リモートの人と打ち合わせするときに自席でやると周りに迷惑かなー…」という問題がでてきました。

そこでなんとか集中スペースを確保しようとなりました。

幾つか選択肢が出て「i-Cave」を導入しようとなりました。

i-Cave(アイ・ケイブ)

i-Cave(アイ・ケイブ)

www.makuake.com

「i-Cave(アイケイブ)」は、

ご自宅の畳一畳のスペースに置ける、現代人のための洞窟です。

「本を一冊だけ持って入る」

スマートフォンの電源を切って、頭の中をカラッポにする」

「勉強をしたいけど、モノがあふれた部屋で集中できない」

「究極のゲーミングルーム」・・など、

使い方は自由です。基本的には、「全く何も持ち込まない=0」もしくは、「1点だけ持ち込んで、それに集中する=1」のどちらかに使用することをお薦めします。

ということで、Misocaでは「i-Cave」を「集中スペース」「リモートとの打ち合わせスペース」として運用しよう!となりました!

実際につかってみる

見た目はこんな感じ。

f:id:renya-mizuno:20180307113102j:plain

コメダ*1たちに挟まれて変形してしまっている。かわいそう。

中はこんな感じ。

f:id:renya-mizuno:20180307113235j:plain

入り口が狭いので屈んで入る必要がある。

そのままだと暗い。照明があるといい感じになりそう。

椅子があるため出るときに方向転換しづらいので、後ろ向きのまま出る必要があって難しい。

f:id:renya-mizuno:20180307113225j:plain

上には棚があってちょっとしたものなら置けるようになっている。

PCを机に置いて手を乗っけると少したわむ。いつもの机だと思って肘をついたりすると、壊れそうな音がしてヒヤヒヤした。だけど全然大丈夫だった。

周りに何もないので集中できる。または集中せざるを得ないという感じ。

遮音性は無い。 コメダ席でミーティングが始まると、普通にミーティングの内容がわかる。

側面に注意事項が書いてあって。

f:id:renya-mizuno:20180307155354j:plain

「音声筒抜」って書いてあるから、筒抜けなのだ。

通気口を開けていないので、空気の流れがない。冬は暖かくて良さそう。夏は暑そう。

「節電用空調プレート」があるそうなので、それを使えば年中快適になりそう。

ヘビーユーザからの声

毎日1時間は使っているという洋食(@y0shoku)さんにどういったときにつかうのか、実際どうですか?というのを雑に聞いてみました。

-- どういうときにつかってますか?

人に見られると、気を使わせてしまいそうな作業するのに良いですね。

-- なるほど〜。たしかに秘匿性高い作業とかはいいですね〜。実際に使ってみてどうですか?

暖かいので寒波来てる時は最高です!

まとめ

簡易的ではあるものの視界にはPCだけになるのはいいな〜と思いました。

また秘匿性の高い作業*2は、周りに見られなくてすむというか、周りに気を使わせなくて済むのはとてもいいな〜と思いました。

ただやっぱり音声が筒抜けなのがアレだな〜という感じですね。まぁ「音声筒抜」なのでそりゃそうなのですが*3

兎にも角にも集中スペース便利です!!!!お金に余裕があればもっとグレードの高いものを買うと良いと思います!!!!

Misocaでは洞窟に籠もって、最新技術を駆使し、世の中を良くしたいと思っているエンジニアを募集しています!

*1:ちょっとした打ち合わせや、気分を変えて作業したい時に使っているスペースです! http://tech.misoca.jp/entry/2016/06/17/130308 でも紹介しています!

*2:人事評価とかの自己評価とかね

*3:「防音効果を期待して買ったのに、「防音効果なし」って書いてあったのが一番ショックだった。」と社長が嘆いていたのが面白かったです。

古い日報が邪魔なのでbotに自動でおそうじさせてみた

こんにちは、temmaです。
昼に外に出ると陽気が暖かくて、春の訪れを感じますね。雪国秋田県の出身なので、こんな時期に「暖かい」と言ってしまうのが不思議な気持ちです。

仕事のはじめに他のメンバーの日報を読むのが、毎日の楽しみになっています。

🐦 esa.ioで日報

当ブログで何度も登場していますが、Misocaでは社内の情報共有にesa.ioを使っています。
Misocaでは一日の仕事が終わったあとに日報を書いていて、「いまの気持ち」「今日やったこと」「明日やること」などを書いています。

下の画像は、Misocaで実際に使っている投稿テンプレートです。 (参考: help/投稿テンプレート - docs.esa.io)

f:id:monoooki:20180301142719p:plain

🤔記事検索で日報がヒットしてしまう

Misocaでは日報も議事録も雑多なメモもすべてesa.ioに保存する文化があります。「何か疑問があればesaを探せ」というくらい根付いていますが、いざ検索してみると日報が大量にヒットしてしまい、目的の記事にすぐたどり着けないことが増えてきました。

↓こんな感じ f:id:fukayat:20180301162529p:plain

この問題を解決するには日報を定期的にアーカイブするしかない!という経緯で作ったのが自動esaアーカイブ機(esa_archiver)です。

github.com

🗑 自動esaアーカイブ

なにができるか

自動esaアーカイブ機では、記事の作成日から設定した日数以上経過していたら、自動で記事のアーカイブを行います。

どうやって使うのか

以下のコマンドでアーカイブタスクを実行するだけです。

bundle exec thor posts:archive

するとesaには画像のように通知されます。

f:id:fukayat:20180228141321p:plain

どうやってアーカイブしているのか

esa社よりesa-rubyというgemが公開されています。

このgemを利用して、APIで記事を取得し、それぞれの記事ごとにカテゴリ名の先頭に Archived/を追記しているだけです。

Thorタスクで起動できるようにしており、Heroku Schedulerで毎日12時半に実行するようにしていました

✅導入した結果

日報が大量にヒットしてしまい、目的の記事にすぐたどり着けないことが増えてきました

こうした問題が、次の画像のように解決されるようになりました。

f:id:fukayat:20180301162549p:plain

日報が出てこなくなり、必要な記事がヒットしやすくなりました。

💪今後の課題

Heroku Schedulerで毎日12時半に実行するようにしていました(2回目)。というのは、社内で次のような意見があり、一旦稼動をストップしたからです。

  • 日々アーカイブの通知が来て、esaからの通知への注意力が下がっていくのはよくない
  • 通知はちゃんと見てる派なのでarchiveの件で埋もれちゃうのはアレ

f:id:fukayat:20180301153657p:plain

(ア゛ア゛〜〜〜ッこれはツライ〜〜!!)

確かにアレですよね。自分でアーカイブすれば通知が来ないので、「botが記事の作成者になりすまして記事をアーカイブする」とかできないかな〜〜?とか考えています。

👔採用

Misocaでは、日頃の悩みを仕組みで改善したいエンジニアを募集しています!

2018年版 Misoca に住んでいる便利な bot の紹介

f:id:mizukmb:20180223153144p:plain

初めまして、2月に入社した id:mizukmb です。

beatmania IIDX というゲームが好きなのですが、SP九段の道のりが遠くまだまだ鍛錬が必要と感じている今日この頃です。

私が Misoca に入社して驚いたことの一つに、 bot を利用した開発やコミュニケーションが活発 というのがあります 1時報やリマインダからリリースのオペレーションまで様々です。

今回は、 Misoca に住んでいる便利な bot をいくつか紹介したいと思います。

ちなみに、 2015年にも一度 id:mzp さんが bot を紹介した記事を公開しているので、そちらも合わせてご覧ください。

tech.misoca.jp

misocat

主に開発周りをサポートする bot です。

未リリース状態の GitHub PR の一覧を表示してくれたり、リリース用の GitHub PR を作ってくれます。 misocat リリース前misocat リリースしたい といった発言に反応します。

f:id:mizukmb:20180222182533p:plain

他にも、 GitHub の URL に反応して、自動でタイトルを教えてくれます。Slack では Private なレポジトリの場合は内容が展開されないので、こちらの機能は地味に便利で重宝しています。

f:id:mizukmb:20180223152350p:plain

misocat は Ruboty で動いていて、 sfruboty という名前でレポジトリを公開しています。他にも様々な機能がありますので、気になる方はそちらもご覧ください。

github.com

sfbot

GiHub 上の様々なことをやってくれる bot です。

先ほど紹介した misocat にmisocat リリースしたい とお願いした時、実際にリリース用 PR を作るのがこの sfbot です。

f:id:mizukmb:20180223120805p:plain

他にも、誰かが GitHub PR に approve した時に label をつけてくれたり

f:id:mizukmb:20180223143919p:plain

2つ以上の approve がつくと「マージしましょう!」とメンションしてくれます。

f:id:mizukmb:20180223180802p:plain

優しさですね。

自動 esa やり機

こちらは以前 id:kokuyouwind さんがブログにて紹介しています。

tech.misoca.jp

簡単に説明すると、定期的に esa 記事を WIP 状態で作成してくれる bot です。ハッシュタグをつけることで、決まった曜日に投稿するとか、特定の Slack チャンネルに通知するなどの操作が可能となっています。

私は平日のみ日報記事を作成して、自分の分報チャンネルに通知するように設定しています。

f:id:mizukmb:20180223145522p:plain

個人の日報や週次 MTG の議事録記事を作成するように設定されることが多いです。

Geekbot

Geekbot とは、朝会を非同期に行うためのチャットボットサービスです。

geekbot.io

Geekbot から決まった時間に DM でいくつか質問されるので答えていきます。

f:id:mizukmb:20180222183758p:plain

全ての回答を終えると、こんな感じに指定したチャンネルに投稿され、昨日やったこと・今日やったことなどがチームメンバー間で共有できます。

f:id:mizukmb:20180222184159p:plain

事前に朝会で話すことを共有できたり、非同期に朝会を行い、メンバーが集まる時間を無くしたりしています。リモートで働く方もいるので、テキストベースで朝会の内容を共有できるのは非常に便利に感じています。

Dependabot

Dependabot はパッケージ管理されたファイルの継続的なアップデートを支援する SaaS です。

dependabot.com

Misoca では Gemfile や package.json を対象としています。

下の図のように gem や npm パッケージごとにバージョンアップデートを行った GitHub PR を自動で作成してくれます。

f:id:mizukmb:20180223112516p:plain

こうしたこまめなアップデート、大切ですよね。

まとめ

Misoca に住んでいる便利な bot をいくつか紹介しました 2

自分達で運用してるものから、 SaaS として提供されている bot まで色々あります。 bot のおかげで単純作業は自動化されますし、オペミスも減らせるので安心できます。自分達はやるべきことに集中できるのでいい感じですね。

採用

Misoca の bot 事情がきになる方はお気軽にお尋ねください 🤖

Misoca採用情報


  1. 他にはみんな帰るのが早いとか

  2. 今回紹介できませんでしたが、他にも bot が住んでいます

Railsをお手軽に運用するためのAWS Elastic Beanstalk

こんにちは、@corocn です。

今年は例年より寒いですね。私がリモートワークしている部屋も、隙間風が強くて寒いです。

f:id:corocn:20180209101355j:plain:w500

※ 写真は自宅のニワトリ小屋です

新しいRailsのインフラ環境構築

先日この開発者ブログで、@mugi_uno が 新しいRailsのフロントエンドについて紹介してくれました。

Turbolinks、時々Vue.js - Misoca開発者ブログ

今回は、同アプリケーションのインフラ環境で活用しているAWS Elastic Beanstalkについて紹介したいと思います。

AWS Elastic Beanstalk とは

f:id:corocn:20180214142028p:plain:w300

AWSの各種サービスを組み合わせたPaaSです。 環境作成時に、ロードバランサ、オートスケーリング、ローリングアップデートなどの機能が自動設定され、Elastic Beanstalkから一括管理できるようになります。

ウェブサーバーはEC2インスタンス上に構築されますが、自動で作成されたインスタンスは、通常作成のEC2インスタンスと同様に、EC2マネジメントコンソールの一覧に表示されます。ロードバランサなども同様です。

Elastic Beanstalkを選択した理由

インフラ専任のエンジニアが存在しない状況で、 可能な限りインフラ設計に開発コストを割かないようにするためにPaaSを選択しています。 その時に検討したサービスが、以下の2サービスでした。

  • Heroku: DevOpsツールとして運用している実績がある
  • Elastic Beanstalk: 現在のMisocaのプロダクションはAWSで運用されている

手軽感はHerokuのほうが強いですが、 最終的にElastic Beanstalkを使わないAWSでの運用へ移行することを視野に入れてましたので、後者を選択しました。

既存のプロダクションのしがらみがない状態であれば、Herokuおよび別のPaaSを検討したかもしれません。

構成

Elastic Beanstalkには「アプリケーション」と「環境」という概念が存在し、1つの「アプリケーション」の下に、複数の「環境」を作成して運用します。

f:id:corocn:20180214140443p:plain

環境の種類にはWebTierとWorkerTierが選べます。

  • Web: ウェブサーバー用。ロードバランサなどが自動作成される。
  • Worker: ジョブサーバー用。メッセージキュー(SQS)が自動作成される。

shoryuken でSQS対応する選択肢もあるのですが、 今回は使い慣れているDelayedJobを利用しています。

RDSを環境内に含めることも可能ですが、 環境を削除した際にDBまで消してしまうのが怖かったので、手動で作成してアタッチする方法をとっています。

構築してみて

良かったこと、辛かったこと(現在進行形で辛いこと)を以下に並べてみました。

良かったこと

  • カスタマイズ性が高い
    • レポジトリの.ebextensions 以下にconfigを配置することで、設定やスクリプトの実行を行える
    • ファイルの配置やシェルスクリプトの実行ができるので、実質なんでもできる
    • yarn、fluentdの導入、cronの起動などebextensionを使用してコントロールしている
  • AWSの別サービス群との連携が簡単
    • Kinesis Firehoseでログ収集の設定が簡単に構築できた
    • Code Pipelineを使ったGithubとの連携(push時の自動デプロイなど)が簡単に構築にできた
  • 環境立ち上げが楽
    • コマンド一発でレビュー環境が立ち上がって素敵です

また、AWS全体の話になりますが、今回初めて技術サポートを活用してみました。 対応が早くて非常に助かりました。

辛かったこと

  • ドキュメントの少なさ
    • プラットフォーム全般のドキュメントが中心で、Ruby/Railsに特化したものが少ない(個人ブログ等も含めて)
    • AWSの技術サポート契約をオススメする
  • .ebextensionsのクセが強い
    • 慣れるまで多少時間がかかる
    • 環境作成時やデプロイ時のライフサイクルをちゃんと理解しておいたほうが良い
  • 最新バージョンへ追従が遅れる
    • 前提としてMisocaでは常に最新環境を使おうとしている(2.5.0の時はリリースの翌日に本番反映したほどです)
    • 現在はRuby 2.4.3までしか対応しておらず、2.5.0が使えない
    • 公式対応が待てない場合はPlatformを自作する方法があるが、試せていない

まとめ

導入時に少しだけ山がありますが、慣れてしまえばAWSという強力なサービス群の恩恵を受けることができます。 インフラ構築に大きく時間をかけれないような状況では強力なツールとなります。ぜひ検討してみてください。

また別の機会に.ebextensionsやデプロイ時の挙動を掘り下げた記事を書こうと思います!

採用

インフラ含め、Misocaの信頼性を一緒に支えてくれるエンジニアを大募集しています!