SMARTCAMP Engineer Blog

スマートキャンプ株式会社(SMARTCAMP Co., Ltd.)のエンジニアブログです。業務で取り入れた新しい技術や試行錯誤を知見として共有していきます。

新卒エンジニアがインフラ移行プロジェクトを振り返って得た学びをまとめてみた

こんにちは!スマートキャンプにこの春新卒エンジニアとして入社した関口です。

私は今年の2月まで内定者インターンとしてBOXILのインフラ基盤のリニューアルプロジェクトに携わらせていただいてました。

このプロジェクトでBOXILのインフラ基盤をEC2運用からECS/Fargateへ移行したのですが、今回の記事ではこのプロジェクトで学んだこと、その学びを現在の業務でどう活かしているかの紹介をしていきたいと思います。

学び1:公式ドキュメントを読むことの大切さ

学んだことの1つ目は公式ドキュメントを読むことの大切さです。 公式ドキュメントはどのような目的、場面でも役に立ちますが、今回のプロジェクトでは特に実装工程でのエラー解決に役に立つことが多かったです。

今まで実装中にエラーに遭遇した時は、解決するためにブログ記事や技術系の質問サイトを参考にすることがほとんどでした。 ブログ記事や質問サイトの記述は私にとって公式ドキュメントより理解しやすいことが多かったため、エラー解決に必要な情報を素早く得るためには有効な手段でした。 しかしブログ記事を頼りにすると、必要な情報が得られるまでいくつもの記事を読む必要があったり、結果的に長い時間をかけても必要な情報が得られないこともありました。

そんななか、一緒にプロジェクトを行っていた先輩から「ツールについて正確な情報を得るためには公式ドキュメントを読むといいよ」とアドバイスをいただきました。

そのアドバイスがきっかけで私はツールの理解を深める時やエラー解決のための情報を得る時に公式ドキュメントを読むようになりました。

公式ドキュメントを読み進めながら開発していくうちに、公式ドキュメントの情報の網羅性や正確性を実感することが増えていきました。例えば、インフラ基盤に新しく導入するツールの利用方法を調べている時や実装中のエラー解決をするためのデバックの際、ブログ記事や質問サイトなどでは見つからなかった情報が公式ドキュメントに明記されていたことが何度かありました。

これらのことから、開発に必要な情報のほとんどは公式ドキュメントを見れば掲載されていることに気が付きました。 このプロジェクトから公式ドキュメントを利用して必要な情報を探すことの大切さを学びました。

この学びを現在の業務でどう活かしているか

この学びを得てから、初めて触る技術やツールを勉強したり実装方法で悩んだりした時はまず公式ドキュメントやレファレンスを見ることを意識するようになりました。

たとえば、現在私が担当しているプロジェクトではReactを利用しているのですが、私はこれまでReactを利用したことはほとんどありませんでした。 そのためプロジェクトの初期ではReact特有の機能(たとえばhooksなど)を理解し、その機能を利用して実装することに苦労することがありました。

しかしそのような時に、ブログ記事や質問サイトからの情報に頼るより公式ドキュメントを利用すると必要な情報が見つかることが多く、インフラ、フロントエンドなどの技術領域問わず公式ドキュメントを読む大切さを実感しました。

学び2:事実と想像を分けることの大切さ

学んだことの2つ目は事実と想像を分けて開発することの大切さです。プロジェクト中、事実と想像を分けて考えることができていなかったために、自分では実現できていると思っていたことが実際には実現できていなかったことがありました。具体的には以下のようなことです。

プロジェクトの終盤に新しいインフラ基盤に対する負荷テストをおこないました。 その準備として、使用するツールからロードバランサーにアクセスできるか確認する作業をおこなっていたのですが、実際にはアクセスできていないにも関わらず、アクセスできていると勘違いしてしまったことがありました。

ロードバランサーのメトリクスを確認するとアクセスされた形跡があったため負荷テストツールが問題なく動いていると勘違いをしてしまったのですが、よく確認すると負荷テストツールで指定したリクエスト数や時間などに対応したアクセスの形跡ではありませんでした。 反応しているメトリクスを見てテストツールが動作しているに違いないと自分の想像と事実を混合してしまった出来事でした。

この出来事以外にも基盤構築中でエラーに詰まった時に事実と想像を区別して考えていなかったために解決するまで長い時間を費やしてしまったことが何度かありました。

以上より事実と想像を分けて考えることの大切さを学びました。

この学びを現在の業務でどう活かしているか

インフラ基盤移行のプロジェクトから事実と想像を分けることの大切さを学びましたが、この学びはインフラの領域だけでなく様々な技術領域の開発で活きています。 自分が今考えていることが根拠を元にした事実なのか、想像なのかということを意識するようになりました。

上記のことを現在のプロジェクトでも意識しています。以前までエラーに遭遇するとエラーの内容を正確に把握しないまま、エラーが発生する原因を想像で考えてしまうことがありました。

しかしこの学びを得てからは、エラーに遭遇した時にコンソール画面から、エラーの内容や種類をレファレンスやドキュメントを利用して調べ、そこからエラーが起きる原因を考えるようになりました。

以前に比べてしっかりと根拠を持ちながらデバックをおこなうことができるようになりました。

学び3:触れたことのない技術に触れると自分のエンジニアとしての世界が広がるということ

学んだことの3つ目は触れたことのない技術領域に触れることでエンジニアとしての自分の世界が広がるということです。

プロジェクトでは慣れない技術を利用することで苦労したことがたくさんありました。

プロジェクト初期はECSやFargateなどのサービスの利用方法やサービスの概要を理解することにとても時間がかかってしまいました。 また基盤構築をしている時にもエラー解決のためのデバックをどのようにすればいいかわからなかったり、エラーの原因の切り分けが難しいなど、多くの苦労がありました。

しかし、プロジェクトが終わってから振り返りをおこなうと技術的に学べたことが本当に多かったことを実感しました。 ECS/Fargateというサービスの概要や利用方法からコンテナそのものの概念、コンテナを本番運用をすることの利点を学べました。

プロジェクトが終了する頃には、自分が今まで触ったことのない技術に触れることで自分のエンジニアとしての世界が広がるということに気が付きました。

この学びを現在の業務でどう活かしているか

触れたことのない技術に触れることでエンジニアとしての自分の世界が広がることに気がついてから、業務で自分が今まで利用したことのない技術を利用する際のマインドが変わりました。

これまで、業務として初めて触る技術を利用して開発する時は、楽しみな気持ちもありつつ、しっかりとパフォーマンスをだせるのかという不安な気持ちが強くなってしまうことがありました。

しかし、この気づきを得てからは仕事で自分が触ったことのない技術を利用することに対して前向きに考えられるようになりました。以前に比べて純粋に技術に向き合うことを楽しめる様になりました。

まとめ

今回のブログではインフラ基盤移行プロジェクトを経て学んだことと、それが現在どう活きているのかについて紹介させていただきました。

内定者インターン生という立場でありながらこのようなプロジェクトに参加させていただけたおかげで、様々なことを学ぶことができました。今回のプロジェクトで学んだことをこれからの業務でも活かしていきたいです。