本記事は
【Advent Calendar 2024】
18日目の記事です。
🌟🎄
17日目
▶▶ 本記事 ▶▶
19日目
🎅🎁
はじめに
はじめまして、2024年5月にキャリア入社した竹下です。
キャリアで入社した私ですが、エンジニア歴は2年程度と短く知識も偏っていたため、転職活動では研修が手厚い企業を中心に見ていました。
ネットコムでは研修の受講を推奨する文化があり、ネットコム主催の研修だけでなくNRIグループや外部団体などが主催する様々な研修を受講することができます。
今までいくつか研修を受けてきた中で、今回はネットコムのクラウド部主催の"オンプレミスサーバ・AWSサイト間VPN構築研修"についてご紹介したいと思います!
研修の概要
この研修の目的は、オンプレミス環境に構築したアプリケーションをAWS環境へ移行することを通して、ハードウェアやサーバ、ネットワークについて理解することでした。
大まかに以下の流れで進めていきます。
物理サーバに触れる
オンプレミス環境を構築する
AWS環境を構築する
オンプレミス環境からAWS環境へアプリを移行する
オンプレミスとAWS環境の構成は以下のようになっていて、最終的にはVPN接続を通じてオンプレミスに構築したアプリとDBをAWS環境に移行することを目指します。
各ステップについて、アプリエンジニアがインフラ方面の研修を受けた感想を交えつつ紹介していきます!
物理サーバに触れる
この研修はサーバールームでの開催でした。
最近はAWS環境で動くアプリの開発がほとんどですし、オンプレミスで動かしていたとしても物理サーバで直接作業することはまずないので、ネットコムのサーバールームには初めて入りました。
"目の前のサーバを壊してしまったら何かのシステムが終わるかもしれない"と思うと少し緊張します。笑
物理サーバの理解を深めるため、開発用のサーバを使ってCPUやメモリ、NICなどがどこにあるかを見ていきました。
AWS環境ではCloudWatchなどからCPUやメモリの使用率などを確認することはよくありますが、実態を意識することはあまりありません。
当たり前ですが、CPUやメモリの状況は画面から直ぐアクセスできるけれど、実際は世界のどこかにある物理CPUと物理メモリにアクセスしていると思うと不思議な気持ちになります。
オンプレミス環境を構築する
AWS環境へVPN接続を介してアプリを移行するには、オンプレミス環境にネットワーク環境を構築する必要があります。
今回はCiscoルータを使ってルータのセットアップから進めていきました。
ルータの設定はTera Termを使用してルータにコンソール接続し、設定コマンドを実行して進めていきます。
ルータの設定をしたことが無かったので、馴染みのないコマンドが多かったのですが、
ルーティング設定やIPアドレスの割り当て、NATの設定などなどほとんどの手順でip
というコマンドが登場し、かなり多機能なコマンドだなと思いました。
初めての設定で最初は理解が追いつかないまま進めていたのですが、やっていること自体はAWS環境でネットワーク設定をする手順とほぼ同じであることにだんだん気が付きました。
アプリエンジニアとしてはネットワークを構築する機会はほとんど無いので、低い学習コストで直感的にネットワークを構築できるAWSコンソールのありがたみをひしひしと感じます。
ルーティング設定ができたら、物理サーバ上に仮想のDjangoアプリサーバとMySQLサーバを構築していきます。
今回はインフラ周りの知識を学ぶことに重点を置いているため、移行するアプリやDBのソースはすでに作成いただいており、無事アプリを構築するところまで完了できました。
AWS環境を構築する
続いてAWS環境の構築を進めていきます。
改めて、オンプレミス環境とAWS環境は以下の構成です。
VPC、仮想プライベートゲートウェイ、カスタマーゲートウェイを作成する
仮想プライベートゲートウェイをVPCにアタッチする
続いて作成した2つのゲートウェイ間でSite-to-Site VPN接続を作成する
VPN設定をCiscoルータにインストールしてVPN接続を確立する
ここまでがAWS環境とオンプレミス環境でVPN接続を確立するまでの主な流れです。
今までに2つAWSの認定資格を取得していたので、試験勉強の中でリソースやVPN接続の確立方法は聞いたことがありましたが、実際に構築するのは初めてでした。
「百聞は一見に如かず」とはこのことで、実際にVPN接続を構築していくことで、テキストで何度も説明を読んでもなかなか頭に入ってこなかった各リソースの役割や手順の意味が容易に理解できました。
AWS認定試験などの際にテキストで学ぶことは自己学習として進めやすいですが、今回のように物理サーバやルータの準備がいるようなハンズオンはなかなか自分で進めるのは難しいので、これを機に理解が進められたことはとてもよかったなと思います。
オンプレミス環境からAWS環境へアプリを移行する
最後に、VPN接続されたオンプレミス環境からAWS環境へアプリを移行していきます。
DBサーバはAmazon Data Migration Service(以下DMS)というサービスを使いました。
今回のようなデータベースの移行や、継続的にデータのレプリケーションを実施するような場面で使われるサービスのようです。
aws.amazon.com
DMSの設定をすると、事前に構築しておいたAuroraDBへオンプレミス環境のDBがレプリケーションされました。
実はDMS自体は担当アプリで使っているサービスだったのですが、構築には関わっていなかったため、こういう仕組みになっていたんだなぁと学びになりました。
アプリサーバはAWS Application Migration Service(以下MGN)というサービスを使って移行しました。
オンプレミスからAWS環境だけでなく、AWSの別々のリージョン間での移行もできるサービスのようです。
MGNの設定をし、レプリケーションを開始すればAWS環境でオンプレミス環境のサーバがレプリケーションされたEC2が起動します。
ここまでの設定が正しければ問題なく完了するはずですが、これまでの研修でMGNの手順で何度か失敗することもあったそうで、どきどきしながら完了を待ちました、、。
結果、無事1回でサーバ起動まで完了しました!🎉
約一日かけて構築したサーバやネットワーク環境が無事稼働し、AWS環境へ移行できたので、とても達成感を感じました!!
研修を受けて
今回の研修ではアプリを移行する作業だけでなく、各環境の構築もハンズオンで進められたため、アプリエンジニアとしてはあまり触れることのないハードウェアやネットワークの設定に触れらました。
今後ネットワーク設定などの業務をする機会はあまりないと思いますが、周辺知識として持っておくだけでアプリ設計時や障害時の対応など様々な場面で状況理解の解像度が上がり、より良い設計やスムーズな対応につながるのではないかなと思っています。
今回の研修にとどまらず、今後も様々な研修を受け、業務では得られない知識を身に着けていきたいなと改めて思いました。