Post

インフラエンジニアを目指す私の取り組み

インフラエンジニアを目指す私の取り組み

この記事は、履歴書と職務経歴書の補足となるものです。
一度履歴書と職務経歴書をご覧いただいた上で、本記事をご覧いただけますと幸いです。

ゲームクライアントエンジニアとして5年間勤務してまいりましたが、並行して個人でProduction Readyレベルの自宅サーバーを構築・運用しており、そちらの経験を活かしてインフラエンジニアへのキャリアチェンジを希望しております。
特に、学習開始からわずか7日間で「AWS認定ソリューションアーキテクト – Associate」に合格できた背景には、数年間にわたる自宅サーバー運用で培ったインフラの基礎理解があったと自負しております。

記事の後半に、面接でよく聞かれる話をまとめたQ&Aもあります。
面接がよりスムーズにすすめられますよう、ご一読ください。

自宅サーバー

数年前、Youtubeで自宅サーバーの動画を見て、興味を持ちました。
そして、Raspberry PiとAWS EC2から始めて、Linux、Docker、VMなどを学びました。
現在、自作PCで数十個のWebサービスを運用しています。
今後は、この経験を活かして、インフラエンジニアとして働けたらと考えております。
ぜひご指導ご鞭撻のほどよろしくお願いします。

Overview

Unraid Unraid OS

Unraid OSを使用しています。
サービスは全部Docker Composeで運用しています。

HomePage サービス一覧

現在運用しているサービス:https://home.forever17.me/
白ボタン:誰でも認証なしで使えます
灰ボタン:使うには認証が必要です
黒ボタン:ローカルからしかアクセスできません
※一部ローカルからしかアクセスできないサービスをこのページに載せていません

ネットワーク構造

flowchart TD
  subgraph Cloudflare
    EmailRouting["Email Routing"]
    DNS
    CDN
  end
  subgraph Cloudflare Zero Trust
    Tunnel[Cloudflare Tunnel]
  end
  subgraph Unraid
    subgraph UnraidDocker["Docker (Bridge Network)"]
    Cloudflared["Cloudflared<br>(Cloudflare Tunnelクライアント)"]
    Traefik["Traefik<br>(HTTPリバースプロキシ)"]
    Authelia["Authelia<br>(OIDC プロバイダー)"]
    lldap["lldap<br>(LDAP プロバイダー)"]
    WebServices["Webサービスいろいろ"]
    Database[("PostgreSQL<br>MariaDB")]
    Authelia -.-|LDAP| lldap
    Traefik --> Authelia
    Traefik --> WebServices
    WebServices -.-|OIDC| Authelia
    WebServices -.-|LDAP| lldap
    Authelia -.- Database
    lldap -.- Database
    WebServices -.- Database
    end
  end
  subgraph Conoha VPS
    UptimeKuma["Health Check (Cron)"]
  end
  subgraph Github
    Repository["Github Repository"]
    GithubActions["Github Actions"]
    GithubPages["Github Pages"]
  end
  Blog["ブログテキスト(Markdown)"]
  PublicNetwork((Public Network))
  Phone["📱スマホ通知"]
  Gmail
  EmailSender["Email Sender"]
  Thunderbird
  AWSSES["Amazon SES"]

  UptimeKuma -->|"障害発生時"| Phone
  UptimeKuma -->|"Health Check"| WebServices
  PublicNetwork -->|"HTTPS"| CDN
  PublicNetwork -.-> DNS
  CDN --> Tunnel
  Tunnel -->|"Encrypted Tunnel"| Cloudflared
  Cloudflared -->|"HTTP"| Traefik
  
  EmailSender --> EmailRouting -->|"Filtering"| Gmail --> Thunderbird -->|"Reply"| AWSSES --> EmailSender

  Blog -->|"Push"| Repository -->|"Trigger"| GithubActions -->|"Build and Deploy"| GithubPages
  CDN --> GithubPages

工夫したところ①:ネットワーク構成

数年前にネットワークの基礎知識はありましたが、実際の応用した経験はありませんでしたので、自宅サーバー構築の初期はよくネットワーク問題で困ってました。
もともとはオンプレミス的な構成で、HTTPSの証明書管理もサーバーの方で行いました。
現在は一部の機能をクラウド(Cloudflare)に移行して、より簡単&安全な構造に変更しました。

  • 低コスト
    • 自宅サーバーのマシンと電気代以外コストなし
    • Cloudflareの無料プランしか使っていません
    • CDN、DDos保護、Tunnel全部無料
  • 安全
    • Cloudflare DNS Proxyを利用することで実際のサーバーIPが見れない
      • DDoS、AIロボットなども防げる
      • SSL/TLS証明書の管理とHTTPS通信もCloudflare側に全任せ
  • SSOを利用してアカウント管理が簡単
    • サービスごとに認証システムがついていて、サービスごとにアカウント作成/管理が煩雑
    • SSOで統一すると、1アカウントですべてのサービスにログインできる
      • もちろん権限管理で使えるサービスと使えないサービスの設定もできる

工夫したところ②:Webサービスの選定

  • クラウドに保存したいファイルが数TBぐらいあるが、Google ドライブお高いので、安く済ませたい
    • Google ドライブと同じようにブラウザでWordとExcel直接編集できる
  • 複数人同時編集できるWebホワイトボードがほしい
  • IT仕事でよく使うツールをまとめたサイトがほしい
  • PDF編集・作成・変換したい
  • Google Photoは写真を圧縮するので、圧縮しない写真保存サービスがほしい
  • GithubのLFSの無料枠が少ないので、セルフホストのGitサービスがほしい
  • 買いたい商品がいつも在庫切れで、在庫自動チェックボットがほしいが、そのためだけにコード書きたくない
  • 脳内保存の3つのパスワードを使いまわしているので、安全性高めるためにパスワード管理サービスがほしい
    • TOTPとPasskeyなどもサポートしてほしい
  • 上記の訴求は全部可能の限り0円で済ませたい

まるで自分自身に対してITコンサルタントしているような気分で、 Githubで漁ったり、記事を読んだり、実際に動かして試したりして、 最終的に顧客(自分)のニーズに合わせたものを実装するという流れが普段の娯楽です。

参考サイト
https://github.com/trending
https://www.reddit.com/r/selfhosted/
https://github.com/awesome-selfhosted/awesome-selfhosted
https://www.linuxserver.io/

次のステップ

  • OSをTrueNASへの移行
  • サーバー台数を増やして、SeaweedFS(分散型ファイルシステム)の導入を検討

面接でよく聞かれるQ&A

Q: 転職の理由はなんですか?

成長を感じなくなったからです。
5年間ずっと同じプロジェクトで働き、最初の3年間はとても勉強になったと思いますが、
運営型のゲームですので、どうしても寿命が来てしまい、ここ2年は延命措置の実装しかしていません。
エンジニアは常に新しい技術を学び続ける必要があると思っています。

Q: なぜゲームエンジニアからインフラエンジニアになりたいですか?

最大の理由は、エンジニアとしての技術的貢献が正当に評価される環境で働きたいからです。
ゲーム業界では、どうしても「ゲームの面白さ(売上)」が評価のすべてになりがちで、その裏でシステムを支える技術的な苦労や工夫が評価に直結しにくい構造があります。
私は、自分が構築したシステムの「安定性」や「技術的な堅牢さ」そのものが、会社の価値として認められる場所で勝負したいと考えています。インフラエンジニアであれば、技術力がサービスの品質に直結するため、そこを正当に評価してくれる技術主導な環境で働きたいです。

Q: あなたの強みは何ですか?

ハードスキル

技術スタック熟練度補足
Unity★★★UI、Asset、Gameplay、Build
C#★★★MVVM
Git★★ 
Linux(Ubuntu)★★ 
Docker★★Compose含む

※入門レベルの1★の部分を省く

ソフトスキル

  • 幅広い知識
    • 経験のなさは知識でカバーするタイプ
  • 自己研鑽の姿勢
    • 自己評価を重視し、毎年の目標は「去年の自分より強くなること」
  • コミュニケーションのわかりやすさを重視
    • 難しいものを説明するときいつも画像・動画・フローチャート付き(この記事がエビデンス)
  • 問題を見つける力
    • 前職過去1年改善提案平均月1件

Q: あなたの弱みは何ですか?

現時点での課題は、インフラエンジニアとしての実務経験と関連資格が不足している点です。
ただし、AWS SAAを7日間で取得した実績が示すように、
持ち前の学習意欲と自己研鑽の姿勢を活かし、
一日も早く貴社に貢献できるレベルへキャッチアップしていく自信があります。

Q: 前職で一番苦労したことはなんですか?

コミュニケーションです。
ゲーム制作というのはすごく抽象的な要件が多く、
「ゲームを面白くするアイデア(プロデュース)」「遊び方の定義(プランニング)」「具体的な画面構成(アート・3D)」「具体的な実装案(ディベロップメント)」にたいして、
全体的な理解がないと「なぜ私は今こういうコードを書いている」という疑問を長期的に抱えることになります。
私が考えた解決策としては、「文字以外のもの」を用意することです。
言葉では伝わらないものは、実際のゲームの画面のスクショや動画、ホワイトボードで書いたラフ、複数案を横比較するための表など、
視覚的な情報を用意することで、仕事がスムーズに進みます。

Q: 入社後、何をやりたいですか?/キャリアプランは?

インフラ設計・構築の仕事がしたいです。
例えば「私が設計・構築したインフラの安定性が高く、現時点○○○日間安定稼働中!」
「インフラ構成を改善・最適化することで、○○○万円のコスト削減に貢献しました!」
といった成果から達成感を得たいと考えています。

キャリアプランについては以下の通りです:

  • 短期(1~2年)目標:
    • AWSのシニアレベルの熟練度
    • 他のAWS認定資格の取得
  • 長期(3~5年)
    • クラウドコンサルティング/クラウドアーキテクト

Q: 最近気になっている技術は何ですか?

Kubernetes、Terraformです。
自宅サーバーの規模だとk8sとTerraformの出る幕がないので、昔から気になってました。

Q: 周りからどんな人だと言われますか?

上司から「新卒から5年間の進歩がすごい」と評価されたことがあります。
ゲームテストチームから「はっきりと意見を言える力がある」と言われたことがあります。

This post is licensed under CC BY 4.0 by the author.