まちん

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

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

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

12 月は主に システムを本番環境で動かすために必要なことや、情報セキュリティの基礎 について学びました。

12 月に学んだこと

第 1 週

DevOps について学びました。

  • DevOps とは
    • 旧来の開発体制
    • Dev と Ops が分かれていると起こる問題
    • Effective DevOps の 4 本の柱
      • コラボレーション
      • アフィニティ
      • スケーリング
      • ツール(技術面)
    • DevOps、アジャイル、リーンの共通点
      • ビジネスの成功がゴール
      • 例: 可用性を高くすることは、必ずしもビジネスにとって重要なのか。
    • 職能でチームを作るか、サービスでチームを作るか
  • DevOps に関する技術
    • ドキュメンテーション
    • アプリケーション(12Factor)
    • インフラ(IaC)
    • アプリをインフラにのせる(CI/CD)
  • DevOps の発展的な話題
    • SRE
      • DevOps を実現するためのエンジニアリング手法やポジション
      • class SRE implements DevOps
    • サービスレベル
      • SLI(指標)
        • 測り方
      • SLO(目標)
        • 会社内の目標
      • SLA(契約)
        • 他社に対しての約束、契約。
    • 可用性とコスト
    • エラーバジェット
    • ポストモーテム
    • マイクロサービス
    • Cloud Native Computing
    • カオスエンジニアリング

日々開発をしていると、忘れがちですが、重要なのはビジネスのゴールであるということは常に考えておきたいなと思いました。

「どんなにアクセスが来てもいいようにする。」ではなく、ビジネスの目的、重要なことに合わせてインフラ構成や実装、運用フローなどを構築することが重要だと思いました。

第 2 週

プロダクションレディなシステムについて学びました。

  • ソフトウェアの開発段階とバージョニング
    • アルファ版、ベータ版(クローズド、オープン)
    • RC 版
    • 正式版(GA)
      • 簡易的
      • プロダクションレディ
    • セマンティックバージョニング
    • LTS
  • 簡易的な本番システムに必要なこと
    • ローカル環境
      • アプリケーション
        • 言語、ライブラリ、FW のバージョン固定
      • DB
        • Docker
        • 文字コード
    • バージョン管理
    • 環境構成
    • テスト、ビルド、デプロイ整備
    • ロギング、モニタリング
    • ドキュメンテーション、タスク管理
  • プロダクションレディなシステムに必要なこと
    • テスト
      • 負荷テスト、脆弱性診断、リストアテスト
    • 非機能
      • 非機能要求グレード(IPA)
    • 運用設計
      • 運用保守はどんなアプリでも必要
      • 運用体制
      • 運用業務
    • DevOps
      • CI/CD
      • IaC

サービスの規模、要件や、ゴールによってどこまで目指すかは変わってきそうですが、まずプロダクションレディの手前から構築し、次にプロダクションレディへと段階を踏むとよさそうに感じました。

第 3 週

情報セキュリティの基本について学びました。

  • 情報セキュリティの全体像
    • 情報資産を守る
    • 情報セキュリティの 3 大要素
      • 機密性
      • 完全性
      • 可用性
    • 対策は技術要素だけではない
    • セキュリティ 100%?
    • コストとセキュリティ
    • セキュリティとコスト・利便性はトレードオフ
    • リスク = 脆弱性 x 脅威 x 情報資産の重要度 s
    • セキュリティのプラクティス
      • 最小権限の原則
      • 多層防御
        • 秘密鍵
        • IP 制限
        • 踏み台の停止
      • インシデント発生時の対応
      • トレーサビリティ(監査ログ)
  • 情報セキュリティの人的対策・物理的対策
    • 組織的・人的対策
      • 体制、点検、教育
      • CISO, CSIRT
    • 情報資産管理
    • PC・スマホの利用
      • ストレージ暗号化やウイルス対策、画面ロック、MDM など。
    • ソフトウェア利用
    • ID 管理
    • パスワード管理
    • 物理的対策
    • システム開発(本番データを開発で使わないなど)
    • 個人情報、法令
  • 情報セキュリティの技術的対策
    • アプリケーション
      • 認証認可
      • 開発環境
      • Web セキュリティ
      • フレームワークを隠す
      • 脆弱性診断
    • サーバ
      • アカウント管理
      • IDS/IPS
      • アンチウイルス
      • 脆弱性診断
      • NW
    • DB
      • 認証情報
      • バックアップ
    • 運用
      • ロギング
      • 監査
      • サービスレベル
  • 発展的内容
    • DevSecOps
    • ゼロトラスト
    • サービスメッシュ

第 4 週

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

  • AWS
    • Lambda の監視
  • データ
    • データ可視化ツールの選定
  • アプリケーション
    • REST API の認証認可
      • 既存の認証基盤
      • 新規の DB
        • Web フレームワーク(フィルタ、ミドルウェア)
      • IDaaS
    • テストコードの書き方と、テストしやすい設計
      • テストピラミット
      • 入出力の分離
  • セキュリティ
    • セキュリティの自動テスト
      • DevSecOps
      • Web 脆弱性診断
      • ライブラリ脆弱性診断
      • 入力バリデーション
      • 認証認可
    • CVE や CVSS
  • その他
    • ブロックチェーン・NFT
    • CPU の仕組み

だいぶ多岐に渡りましたが、セキュリティの自動テスト(前回の講座でも)は知らないことが多かったので、すごくためになりました。

また、CPU の仕組みも結構面白かったです。自分は情報系の大学出身ではなく、あまり低レイヤー(ハード、OS など)の知識が高くないので、長期的なスパンでもよいので学びたいなと思います。最近だとコンピュータシステムの理論と実装の本を一生懸命やっています。NAND から論理的に加算器や CPU、メモリが作れて結構楽しいです。

まとめ

だいぶ応用的な内容が増えてきましたが、おかげで全体像をかなり見渡せるようになったと思います。

← ホームへ