株式会社アカツキでサマーインターンに参加しました(2019年夏)

概要

2019年8月28日から9月20日まで株式会社アカツキでサーバーサイドエンジニアとしてサマーインターンに参加させていただきました。

 

自己紹介

神奈川の大学4年生です。普段はネットワークに関する研究をしています。

今回はインフラ部分をを触らせていただけるということで、このインターンに参加しました。

 

やったこと

やったこととしては以下の2つに大きく2つです

タスク1

My検証環境においてAPIレスポンスを一時的に止めるツールの作成

タスク2

本番環境をCloudFormationで作成するためのテンプレートの追加・編集

  • Auto Scaling グループ (ASG)の作成 
  • CloudWatch アラームの作成
使った技術 

Ruby, Rails, AWS など

タスク1に関して

普段の開発ではAWSの開発用サーバ環境を利用して新機能などの検証を行なっているのですが、データを破壊的に変更するなどの特殊な検証をする時のために、My検証環境というものが用意されています。これは、以下の図のようにDockerを利用して個人PC上に検証環境を構築するものです。

f:id:masato338:20190920163617p:plain



 以下のような方法でレスポンスを止めるミドルウェアAPI Stopツールを作成しました。この機能は特定のAPI通信を待っている間にしか発生しない問題などを再現するために作成しました。

f:id:masato338:20190920163719p:plain
 以下のような問題にぶつかりましたが、メンターさんと相談しながら解決することができました。

f:id:masato338:20190920163924p:plain

タスク2に関して

まずはじめに、AWS CloudFormationとは

AWS CloudFormation は、クラウド環境内のすべてのインフラストラクチャリソースを記述してプロビジョニングするための共通言語を提供する。」(

https://aws.amazon.com/jp/cloudformation/ 参照) とあります。つまりは、webブラウザ上でぽちぽちリソースを作る必要がなくなりコードでAWSリソース管理ができる ということです。

 

本番環境では手動でスケールする方法とCPU使用率に応じてスケールする方法の両方を使えるようにして、より柔軟にスケールを行っています。以下のような環境でAuto Scaling グループ2をCloudFormationでテンプレート化しました。新しくできたインスタンスにコンテナが割り当てられないという問題がありましたが、メンターさんの助けもあり、lambdaなどを編集して解決することができました。

f:id:masato338:20190920164216p:plain 

別のタスクとして、CloudFormationでCloudWatch アラームを作成しました。特にロードバランサに関するものとRDSに関するもの約20個を作成しました。

例)

  • CPU使用率の上昇
  • DBコネクション数の上昇
  • 遅延の増大

f:id:masato338:20190920164638p:plain

結果として、Railsのコアな部分やawsインフラに関するタスクをさせていただきました。

社内環境

服装が自由でよく、また、体に良さそうな弁当や飲み放題のコーヒーなどが用意されており、とても働きやすい環境でした。

終わりに

普段は触れることのできない大規模なインフラを実際に触らせてもらったり、タスクをしたりすることで、普段の学生生活の中では経験できない貴重な体験をさせていただけたと思います。今回学んだことを生かして、研究か今後の就活などたくさんの場面で生かしていけたらいいなと思っています。

最後に、何度も質問したのにも関わらず毎回丁寧に答えてくださったメンターさんに感謝です。