皆様はじめまして!23年度入社の中野と申します😆
アドテクノロジーDiv(アドテク)でアプリケーションエンジニアをしています!
アドテクはJANetやAppDriverといった広告配信システムを担当する部署で、私は現在そこでの研修を終えていよいよ実案件に取り組もうとしています。
本記事では、そんな私が4月の入社当時の「アーキテクチャってなんだ?🤔」状態から、インフラ研修、AWS JumpStart、そしてチーム開発研修を通してどのくらいインフラがわかるようになったのかについてお伝えしていきたいと思います。
具体的にはアドテク内で行なったインフラ関連研修プログラムの内容紹介とそれらから個人的にどんな学びがあったかをお伝えできればと思います。
インフラで不安を覚えてる未来の新卒の方々の参考になれば幸いです。
入社当時のインフラ知識
入社当時の私のインフラ知識といえば、アドウェイズ入社に際して会社から支給された参考書籍を一通りハンズオンしたくらいでした。
もちろん、大学の研究などでプログラミング自体はやっていたのですが、がっつり情報系の学部出身というわけでもないので、データベースやLinuxなんかもまともに触ったことはありませんでした。
実際、部署を決める際の面談でも、マネージャーがプロダクトのアーキテクチャについて説明している際に「アーキテクチャってなんですか?」と質問したレベルでした。
インフラ研修
アドテクに配属されて最初に行ったのがインフラ研修でした。
内容としては構成図に従ったインフラ構築が5日間、IaC研修が2日間、障害体験が2日間で計9日間に渡ってインフラの基礎をみっちり叩き込みました。
インフラ構築
最初に行ったインフラ構築では、構成図に従ってAWS上にEC2やVPCを作っていきました。
実際の構成図が↓にあるようなものです。
見ての通り、構成図はかなり大雑把に書かれているので同じ課題をやっていても各人それぞれが少しずつ違う構成になります。
この上に簡単なAPIサーバーを構成したのですが、個人的にはその際の諸々のパッケージのインストールにかなり苦戦しました。
というのも、私は前述したようにLinuxの経験が乏しかったので、コマンドや権限周りがかなりおぼつかなく、何度もエラーを出しては試行錯誤していました。
ただ、この経験を通してエラー対処の手順やエラーを書き残しておくことの大切さ、質問の仕方などエンジニアとしての基礎的なスキルを磨けたと思います。
最終的に私が作った構成は↓のようになりました。
今見ると
- 「NATを通って出ていくのはHTTPだけとは限らないんじゃない?」
- 「queueとMySQLとRedisのセキュリティグループはまとめないほうがいいんじゃない?」
などとツッコミどころもあるのですが、とはいえアーキテクチャという単語すらわかっていない頃と比べるとだいぶ成長することができたのではないかなと思います。
IaC研修
インフラ構築の次に行ったのはIaC研修で、AnsibleとTerraformの研修をそれぞれ一日ずつ行いました。
アドウェイズでは最近インフラのIaC化をかなり推進していて、その一環としてここ数年は新卒研修でもIaCを扱っています。
最初に行ったAnsible研修は、インフラ構築研修で作ったものと同じ環境をローカルで作るようなplaybookを書くという内容でした。
この際にもLinux系の知識が弱い私はかなりの苦戦を強いられました。
特に、MySQLのインストール時にCPUのアーキテクチャ問題でエラーが出てしまい、これでかなりの時間を使ってしまいました。😢
ただ、この無念をバネに後日自分でAnsible Vaultを使った暗号化などにも挑戦し、講師の方からレビューをもらうことができたので結果的には多くの学びを得られた研修だったと思います。
次にやったTerraform研修では社内で以前に使われたチュートリアル資料を使って写経しつつAWS環境を構築していくというものでした。
Terraformを初めて触った感想としては「難しいけど使いこなしたら便利だろうな〜」という感じでした。
コンソールでポチポチ作っていたものがコマンド一つで一気に作れるのは爽快感がありますよね。✨
2日間を終えて、バリバリIaCをかけるようになったかといえばもちろんそんなことはないのですが、実際にGitHubにあるIaCのソースコードはかなり読みやすくなったという印象でした。
障害体験
インフラ研修の最後に行ったのが障害体験でした。
ここではインフラ構築で作ったアプリケーションに講師の方がなにかしらの方法で障害を起こすので、それを解決するということを行いました。
この研修だけは新卒で二人一組のペアを作って行ったのですが、相方が優秀過ぎてかなりの部分を助けてもらいました。💦
相方を見ていて、特にLinuxコマンド周りや障害の原因に繋がりそうな些細な違和感に気づく能力は自分に足りない部分だな〜と改めて認識することができました。
障害体験を終えて、この研修は実際に障害が起きた際の訓練というだけでなく、それまでのインフラ構築研修などで身につけたエラー対処能力の総決算のような立ち位置にあったなと感じました。
このエラー対処能力はインフラ研修全体を通して一番成長できた部分の一つだと思います。
AWS JumpStart
AWS JumpStartというのは毎年AWSが新卒向けに主催している、AWSサービスについてのハンズオン・アーキテクチャ検討などを行うセミナーのことです。
アドウェイズの新卒はここ数年毎年参加していて、我々23卒も例年通り参加してきました。
セミナーは↓のように9:00~18:00で3日間行われたので、かなりしっかりとAWSの知見を深めることができたと思います。
以下ではハンズオン、アーキテクチャ検討で個人的に学びになったと思う部分を中心にそれぞれの内容についてお話したいと思います。
ハンズオン
ハンズオンでは上のスケジュールにあるように
- ECSを使ったアプリケーションの構築
- EC2を使ったアプリケーションの構築
- Lambdaを使ったAPIの構築
という3つの題材を扱いました。
このうちEC2に関してはインフラ研修で経験がありましたが、ECSやLambdaは触れたことがなかったので実際に触れることができて知見が広がったと思います。
また、ハンズオンに限らずSlackに質問を投げるとアーキテクトの方が答えてくださったのですが、個人的にはこれがとてもためになりました。
例えばハンズオンで引っかかった部分の説明やコンテナをEC2に乗せるかfargateに乗せるかなどの実務目線の質問、あるいはRDSのリードレプリカの仕様など、基礎的なことからかなりマニアックな話まで丁寧に答えてくださいました。
おかげでAWSの各サービスについての理解がより一層深まったと思います。💪
アーキテクチャ検討
アーキテクチャ検討ではあるお題に沿ったアーキテクチャを個人・グループで検討するということを行いました。
今回はアドテクの新卒4名と同じくアドウェイズのマーケティングテクノロジーdiv.の新卒1名の合計5名という見慣れたメンバーでの検討会だったので、かなりリラックスして活発な議論ができたと思います。
この検討会での学びは大きく分けると以下の2つです。
- 他の人の構成を見ることで自分にはない視点を学ぶ事ができた
- 知らないAWSサービスをプロダクトに組み込む際にどう調べ、どう検討していけばいいかを実践的に経験できた
1つめに関しては、例えばマイクロサービスにしようという人がいるかと思えばとりあえずすべてEC2に乗せようという人がいたりと様々な構成図を見ながらお互いの考えを見聞きし合うことで多くの学びを得られました。
また2つ目に関しては、AWSサービスを構成に組み込むに当たってどのサービスを使うべきかなどを調べる際、ドキュメントや事例をたくさん読んだので、AWSサービスの調べ方やそれをどうアーキテクチャに導入していくかと言う流れが理解できたということです。
最終的に自分たちのチームが作った構成図は↓のようになりました。
チーム開発研修
チーム開発研修は1スプリント1週間で計3スプリントに渡って実施しました。
チーム開発研修のお題はECサイトの制作で、ユーザーが商品を購入する画面・機能と管理者が商品登録などをする画面・機能の実装が要件として挙げられていました。
この要件を達成するために最初に考えたアーキテクチャはインフラ研修で作ったのと同じEC2にフロントエンド・APIサーバーをのせる構成でした。
ですが、実はAWS JumpStartがチーム開発研修の1スプリント目の中に挟まっていたこともあり、JumpStartを終えたあとにはそこで得た知見をいかして構成を変更しようということになりました。
そして、最終的にチーム開発研修では↓のような構成のアプリケーションを実装しました。
変更後はDynamoDBを使ってカート機能を実装したり、SESを使ってメールの送信を行うような工夫をしています。
また、インフラ研修ではALBに直接アクセスする構成を取っていましたが、チーム開発では間にCloudFrontを挟んで画像などをキャッシュするようにしています。
チーム開発研修は23新卒4人でチームを組んで行ったのでもちろんこれは私だけで考えたアーキテクチャではないですが、これくらいの構成を作って実際に開発をすることができたという経験はとても大きなものだったと思います。✨
研修全体を通して学んだこと
インフラを体系的に学ぶことができた
本記事ではインフラ関連の研修にフォーカスしてご紹介しましたが、こうして改めて振り返ってみるとインフラに関することだけでもかなり成長できたのではと感じます。
最初のインフラ研修ではネットワーク周りやLinuxコマンド、それに付随する用語などインフラの基礎知識を身に着け、次のAWS JumpStartではAWSのサービスについて学び、最後のチーム研修では学んだことを活かして自分たちでゼロから構成を考え実装するという流れができており、徐々にステップアップしながら無理なく学ぶことができたと思います。
自分でアーキテクチャを考えられるようになった
インフラ研修・AWS JumpStartを通して最低限必要な構成要素を考え、そこから要件に合わせてカスタマイズしていくという考え方ができるようになり、大まかなアーキテクチャなら一人でも考えられるようになりました。
また、インフラ関連の研修では自分が考えたアーキテクチャを構成図として書き起こすという作業が必ずありました。
それに際して、様々な事例を見たり、各アーキテクチャのつながりや通信の流れを理解することができたので、この作業は非常に有用だったと思います。
まとめ
今回は主にアドテクDivのインフラ関連の研修で、インフラ初級者がどれくらい成長できたかについて紹介しました。
インフラ研修中に講師の方からいただいた「インフラ知識は難しいけど長く使える」というお言葉が身にしみる今日このごろです。
皆様も「インフラむずい😭」と感じることは多々あるでしょうが、今身につければ必ず後の自分を助けてくれる知識になると思うのでがんばって一緒にインフラの知見を深めていきましょう。💪