見出し画像

新卒3ヶ月の僕が自社サービスのインフラを移行した話① ~勉学編~

こんにちは
taskey Railsエンジニアの田代です。作っているもの

サーバエンジニアと言えど、スタートアップではRailsだけを書いていたら良いという訳には行きません。
今回は、突然インフラ移行をしてくれと頼まれ、当時ECS?EC2?Fargate?なにそれ?Herokuでええやん?状態の僕が、どのように自社サービスECSのFargateへの移行を終え、インフラエンジニア(仮)になったのかを書かせていただきました。長くなりそうなので勉学編、移行編で分けます。こちらは勉学編となっております。
移行の様子を知りたい方は「新卒3ヶ月で自社サービスのインフラ移行をした話② ~移行編~」をご閲覧下さい。

対象者: AWSでのロードマップ的なものが欲しかったエンジニア

実際に切り替わった当時のヌけるrequest数遷移の様子

AWSロードマップ

さて、AWS触るかとは思ったものの、僕はインフラに関してはHerokuしか使った事はありません。ですので下記手順で血反吐を吐きながらインフラを学んでいきました。

勉学1. 単純なEC2でサーバを立ててsshで入ってみる

きつかったです。
まぁ、沢山ググりまくりました。だって何もわからないんですもの。こちらの記事がとてもわかりやすく助かりました。


この段階ではEC2立ててサーバにSSHして入ってみて、nginx入れてpublic ipにブラウザでのアクセスをしただけでした。
VPC周りの概念が初めだととてもわかりにくく何度も何度も調べながら構築していきました。IPアドレスもなかなか手強かったです。

[POINT]

▪ 完璧な理解が出来なくともまずは動かして達成感を得ること。
▪ 問題にぶつかったら解決出来るまで作り直して粘って身体に覚えさせること。
 ▪ SSHしたらshotdownコマンドを叩いてみて気持ち良くなること。
 ▪ サイダーやらプライベートIPやらはややこしいのでよく調べること。

[学び]

 ▪ VPC
 
サブネット
 
セキュリティグループ
 
インターネットゲートウェイ
 
ルートテーブル
 EC2

[参考資料]

勉学2. ECS起動タイプEC2でサーバを立ててみる

さて実際にサーバを動かすことには成功しました。
次に行ったことは、簡単なRailsのhello worldアプリケーションをECS on EC2で構築してみることでした。
勿論再度VPC周りから作り直します。IPアドレス周りのややこしかった部分をよりクリアにしていきつつ、初のdocker pushやらservice、ALBの作成やらも行っていきました。
なんか、作るもの多いし、エラー出た時が分かり難いなーという印象でした。
[POINT]

 ▪問題の切り分けが難しいのでターケットグループ内のターゲットのステータスを見て判断する
▪cloudWatch logsを見てデバッグするのも一つの手段
▪EC2インスタンにsshしてdocker psするとECSエージェントが動いているのが見れて感動する
▪Railsの環境変数が足らずport番号がずれる可能性があるので、環境変数は最低限入れて各所設定portを気にしておく

[学び]

▪ECR
▪タスク定義
▪ECS
▪ALB
▪ターゲットグループ

[参考資料]


勉学3. ECS起動タイプFargateでサーバを立ててみる

次に、今回の移行目的であるFargateでのサーバ構築を学んでいきました。
実際の弊社サーバで動いているものとECSの起動タイプ以外を同様な構成にするために、RDSやらセキュリティグループ周りも構築していきます。
RDSは設定項目等が特に引っかかりました。cloud環境でのdebugとなるのでこちらでもCloudWatch Logsが役立ちます。

[POINT]

 ▪セキュリティグループ周りはわかりにくいの基本的に全開にして、構築後に締めていくほうが楽
▪cloudWatch logsをRails log_level debugで出力しておくとdebugがしやすい
・GreenBlue Deployはすごい

[学び]

▪Fargate
▪nat gateway
▪bastion server
GreenBlue Deploy

[参考資料]

まとめ

一通りAWSを学んで特に苦戦したのはVPC周りでした。
AZやらセキュリティグループやら考えなければいけない概念が多く、ネットワークの経路等はどうしても迷子になりやすいです。どうしても解決できない時は、1から作り直すが1番早いと思います。自分が作った構成は何度か紙に書きながら理解を進めて下さい。

勉強の為と言えど、AWS内で作ったものには料金がかかります。一旦学習が終わったらすべて削除しておいたほうが良いでしょう。
エラーが出て削除が出来ないということも多いですが、メッセージをしっかり読んで、順番に削除していけば問題無いはずです。

それと初めからInfrastructure as Codeをするのは辞めておいたほうが良いと思います。まずはGUIで概念の理解を進めましょう。

ここまで読んでくれた方は是非「新卒3ヶ月の僕が自社サービスのインフラを移行した話② ~移行編~」もご閲覧頂けましたら幸いです。

CM


[募集]

[主催コミュニティ]

[ドラムで入ってるバンド]


この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

3
Web developer / Rubyist / Dr. / Taskey Inc.
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。