まちん

主にAndroidアプリを作ってます。

ネクストスキル週次ゼミ(9月のゼミまとめ)

9 月のネクストスキルの週次ゼミのまとめです。

9 月に学んだこと

第 1 週

クラウド時代の環境構築の基本について学びました。

  • CI/CD の基本概念
    • test, build, カバレッジ, Lint, セキュリティ
    • 初期に構築するのが大事
    • Delivery, Deployment
    • CodeCommit, CodeDeploy, CodePipeline でデモ
    • CIOps, ChatOps, GitOps
  • クラウド時代の環境構築のポイント
    • 大きく 3 レイヤー
      • アプリのデプロイ, EC2(VM)内の環境構築, VPC と EC2 の構築
    • Infrastructure as Code
    • Immutable Infrastructure
    • 宣言的、冪等性
    • VM の環境構築
      • 起動時にインストール vs AMI
      • userdata(EC2), Ansible, EC2 Image Builder, Packer
    • CI は 10 分以内
  • 構成パターンの整理
    • 上記のまとめ
    • デプロイ方法(ローリング、ブルーグリーン、カナリア)
    • 無停止リリース

昔苦労していた部分をうまく解決していった結果、今のやり方があるので、昔のやり方を知った上で、今の方法を考えると、理解しやすいなと思いました。

今回は主に VM に関してでしたが、今後、コンテナを使った環境構築もやるはずなので、その際にまた見比べると理解が深まりそうです。

第 2 週

AWS で動かすアプリケーションの設計やセキュリティの基本について学びました。

  • AWS におけるセキュリティの基本
    • 本番と開発で AWS 環境を分ける
    • IAM
    • シークレットキーはできるだけ発行しない
  • The Twelve-Factor App
    • クラウドらしいアプリとは
    • 1 コードベース 1 アプリを複数環境デプロイ
    • 依存関係のバージョン固定
    • 設定情報は環境変数で与える
    • マシン内のデータは持たない(ステートレス)
    • グレースフルシャットダウン
    • 開発、本番での時間のギャップを少なくする
    • ログをイベントストリームとして扱う(標準出力)
    • 12Factor でまず抑えるべきは、ステートレス、環境変数、ログは標準出力
  • ロギング・モニタリングの基本
    • ロギング
      • ログの種類
        • アプリケーションログ
        • システムログ
        • Web サーバログ
        • DB ログ
      • ログレベル
        • FATAL, ERROR, WARN, INFO, DEBUG
      • 個人情報に注意
    • モニタリング
      • ユーザが問題なく快適に使えていることが重要
      • 外形監視はおすすめ。
      • 不要なアラートは飛ばさないようにチューニング

第 3 週

AWS におけるデータ分析基盤について学びました。

  • データ分析基盤の基本構成
    • データ分析
      • 統計、機械学習
      • SQL
      • BI
      • ビッグデータ
      • ドメイン知識
    • 分析基盤
      • 本番稼働中の DB を見にいくのは NG
      • データレイク
      • DWH
      • データマート
      • ETL
        • AWS Glue
        • Goolge Cloud Dataflow
      • 分散処理ツール
        • OSS Hadoop
        • AWS EMR
        • Google Dataproc
  • AWS におけるデータ分析基盤用サービス
    • S3(データレイク) -> Redshift(DWH) -> RDS(データマート)
    • 用途用途で変換していく
    • Glue のデモ
    • データサイズやセキュリティを意識
  • その他の知っておくべきデータ処理
    • ログ分析
      • Fluentd, CloudWatch エージェント, DataDog
    • ストリーミング処理

講師の方も言ってましたが、そもそもこういうものがあり、こういうやり方があるということを知っておけば、必要になったタイミングで調べに行けばいいので、広く知っておくことも重要だなと思いました。

第 4 週

受講生のアンケートへの回答の講義でした。

  • RDB のユーザ管理
    • MySQL のユーザ、ロール、機能
    • AWS RDS のユーザ管理
      • 環境変数や SSM パラメータストアなどからユーザなどの設定情報を入れる
  • RDB のデータマイグレーション方法
    • SSH 経由(GUI ツール)で流す方法 △
    • マイグレーションツール
  • SQL の読み書きのコツ
    • データサイエンス 100 本ノック
    • SQL は必ず読むわけではないというのがポイント
  • セッション管理と Redis
    • セッションの仕組み(Web アプリケーション)
      • cookie にセッション ID を持たせ、サーバサイドでセッションデータ(userId など)を持つ
      • cookie にセッションデータを持つ(JWT など)
  • 同一オリジンポリシーと CORS
    • JavaScript による API アクセス
    • ブラウザの機能
    • Access-Control-Allow-Origin
  • Go 言語の特徴
    • 長所
      • 機能が少ない
      • 静的型付け
      • クロスコンパイルが簡単
      • コンテナ、サーバレスとの相性良し
      • 並行処理が簡単
    • 短所(批判)
      • 機能が少ない
      • 面白くない

データベーススペシャリストを受けるつもりだったので、RDB 周りについて質問しました。試験の役に立ったと思います。

まとめ

主にクラウドでの環境構築などを学びましたが、手でコマンドを打って構築 → 自動化やコンテナ化すると身につきやすいとのことでした。

自分もゴリゴリ手を動かして身につけていきたいです。

← ホームへ