12
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

社内AWS研修の振り返り

Last updated at Posted at 2021-05-10

取り組みを実施した背景

社内の新人Webエンジニアがインフラにあまり慣れていなかった為、インフラスキルの向上を目的にAWS研修を実施していただきました🙇‍♂️

実施にあたり自分のAWSに関するスキル感

  • EC2上でWordPressを立てたことがある
    • プライベートサブネットにWordPressのEC2サーバを、プライベートサブネットにMySQLのEC2サーバを立てた
    • ELBAWS Auto Scalingは使用したことがない

今回作ったインフラの構成図と使用したもの

開発環境

本番環境

使用したもの

  • OS: Amazon Linux release 2 (Karoo)
  • リバースプロキシサーバ: nginx 1.18.0
  • WEBサーバ: PHPビルトインウェブサーバ
    • PHP 8.0.1
  • DBサーバ: MySQL 8.0.20

研修の流れと「やったこと、わかったこと、わからなかったこと」

座学 📚

開発環境構築(ハンズオン)🔧

やったこと

  • パブリックサブネットでグローバルIPのあるEC2を作成
  • yumでnginxを入れて初期ページを表示する
  • yumでPHP8系をインストール
    • その後PHPのビルトインサーバでHelloWorld
      • PHP-FPMとビルトインサーバの2つがWEBサーバの候補で、他の参加者がPHP-FPMを選んでいたため物は試しと思いあえてビルトインサーバの方を選んだ(結果的に良くない実装だった😣 )
  • yumでMySQL8系をインストール
    • その後ビルトインサーバでHelloWorld
      • PHPでMySQLに入れたダミーデータを取得し表示
  • WordPressをインストール
    • nginx.confにルーティングを記述し、nginx再起動
    • ビルトインサーバを起動
    • IPアドレス経由でWordpressが開くかどうかをデバッグしながら確認

分かったこと

分からなかったこと

  • WordPressコンテンツが読み込まない状態になってしまった
    • DB内の「WordPressの設定データ」が間違っていた可能性がある
      • 原因調査しきれず🙇‍♂️
    • WordPress再インストールとconfigの再設定、DBの再生成で直った🙇‍♂️

本番環境構築(ハンズオン)🚀

やったこと

  • 開発環境からのコピー
    • 開発環境のEC2からamiを作成し、本番環境のEC2を生成&起動
    • 開発環境のDBからdump取って、本番環境のRDSに入れる

分かったこと

  • amiのとり方
  • amiから複製する方法
  • 開発環境のDBからdumpをエクスポートする方法
  • 本番環境のDBにdumpをインポートする方法

分からなかったこと

  • 特になし

本番環境構築(ハンズオン)続き🚀

やったこと

わかったこと

分からなかったこと

  • AutoScalingで新規起動したサーバでビルトインサーバを起動する方法😣

個人アプリ検討、選定、実装まで

検討

  • MoonGift等でOSSを調べて以下のアプリに興味を持った
    • OWASP ZAP
      • Webアプリケーションセキュリティスキャナー
    • Redmine
      • プロジェクト管理ソフトウェア
    • Lottery
      • 懇親会等で使えそうなルーレットアプリ

選定

  • Dockerで立ち上げ可能なアプリを選定
  • 第1候補: OwaspZap
    • 理由: 今後業務でアプリを作った際に試しに自己診断してみたいと考えたため
  • 第2候補: Redmine
    • 理由: チケット管理ツールを立ち上げて実際に使ってみることで、今後の開発時に活きる「実装アイディア」を得られればなと考えた
      • ただ、現状業務ではプロジェクト管理はGitHub内の機能を使用しているため、Redmineが業務に直接活きないと考えたため第2候補にした

実装

  • OwaspZap
    • DockerでCUIが起動出来た
      • しかし、GUIを起動するにはマシンリソース不足だったため断念😓
  • Redmine
    • Dockerを用いて起動出来た
      • GUIで起動出来た🙌

振り返り🧐

うまくいったこと 👍

  • EC2インスタンスで開発環境と本番環境を作ること
  • LBを経由してWordPressを公開すること

うまくいかなかったこと😓

  • nginxのルーティングをベストな設定で記述したかった
    • 十分な理解が無いままに記述して序盤上手く行ってしまったため、終盤にルーティングがぐちゃぐちゃになって困った
  • WordPressを稼働させる上で最適な構成にしたかった
    • ビルトインサーバで稼働させる方向で進めてしまった
      • その影響もありAutoScalingの設定時に他の参加者では不要な作業が発生した
        • もし次やるならPHP-FPMで作りたい

今後トライしたいこと💪

  • コンテナ周りのマネージドサービスを適切に使用して、運用負荷の少ないシステム構築すること
  • nginxのルーティングを、きちんと理解した上で記述出来るようにすること
  • AutoScalingで新規起動したサーバ上で、アプリケーションもちゃんと起動するようにすること

まとめ

一度プライベートでEC2でWordPressを立てたことはあったのですが、ざっくりとしか着手していなかった為今回の研修では「わかっていなかった所」が数多く見つかり、かつその理解を深めることが出来たのでとても良かったです。ありがとうございました🙇‍♂️

「ビルトインサーバでWordPress環境構築」という、「PHP-FPMを使った構築」より比較的情報が少ないかつ本番環境では非推奨な実装方法で進めてしまったため、問題が起こったときの原因究明が難しかったことが印象に残っています。(とはいえ、インフラの根本的な仕組みについて理解していれば解決は難しくないはず。主に自身の実力不足。)
今後技術選定を行うときは、「信頼できる情報源が豊富かどうか」も頭に入れた方が良いと学びました。

12
11
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?