Open12

ユーザー視点で見たソフトウェアとサービス

ピン留めされたアイテム
anfangdanfangd

アプリケーションやシステムの構成管理や環境戦略などについて整理しようとしたけど、前段のところから整理したくなったのでまとめてみる。

Background

  • Cloud Infrastructure, Platform Engineering, Site Reliability Engineering, システムアーキテクト, DevOps などなどが関心事としてある。
  • プロダクション環境だけではなく、企画・設計・構築・テスト・受け入れ・監査・運用・保守・機能追加の全行程を踏まえてインフラストラクチャを捉えたい。
  • そもそもソフトウェア、サービスによって必要となる環境の定義やスコープが異なる。
  • どういう種類のものがあるのか整理しておきたい。

Goal

  • 一通り洗い出して表にしたり図を書き起こすことができていること。

発展してやりたいこと

  • 環境戦略について考える
  • コードや実行ファイルの構成管理とバージョニングについて考える
anfangdanfangd

まとめ

バージョンがあるのはソフトウェア。
環境があるのはシステム。

例外はあって、システムの更改で刷新したらバージョン(というか世代)を付けることがある。また、WebAPIもバージョンがあったりする。

anfangdanfangd

ざっくり整理

ホスト端末で稼働するソフトウェア

PCやサーバで動作するソフトウェア

  • Kernel
  • ミドルウェア
    • DB: Postgres, MySQL
    • Webサーバ: apache, nginx
    • エージェント: CloudWatch Agent, Falcon
  • アプリケーション
    • CLIコマンド: ls, pwd, cat
    • TUIアプリ: tmux
    • GUIアプリ: Webブラウザ, テキストエディタ, Outlook, Excel

Webサービス

WebブラウザなどのWebクライアントツールを通して使用するサービス

  • Webサイト: 企業コーポレートサイトなど、一方向に情報を発信してるサイト
  • Webサービス: WebブラウザやAPIを通して双方向に情報の取得・更新ができるサービス

クラウドサービス

Webブラウザやコマンド、APIを通して使用するサービス

  • IaaS: AWS, Google Cloud, Azure
  • SaaS: Gmail, Google Map
  • PaaS: Twilio, mongoDB
  • FaaS: AWS Lambda

その他

専用のクライアントアプリケーションとサーバの組み合わせで使用するサービス

  • Client - Server System
    • 専用のクライアントツールと専用のサーバアプリケーションで動作するシステム
    • 専用のハードウェアだったり、専用の回線を使って構築されていたりする

それ以外は?

  • ライブラリ, SDK は?
    • 実行されるまではテキストやバイナリのデータという扱い
    • ビルドされて実行できるようになるとホスト端末で稼働するソフトウェアになる
anfangdanfangd

ホスト端末で稼働するソフトウェア

PCやサーバで動作するソフトウェア

  • Kernel
  • ミドルウェア
    • DB: Postgres, MySQL
    • Webサーバ: apache, nginx
    • エージェント: CloudWatch Agent, Falcon
  • アプリケーション
    • CLIコマンド: ls, pwd, cat
    • TUIアプリ: tmux
    • GUIアプリ: Webブラウザ, テキストエディタ, Outlook, Excel

記事の主旨とは異なるものの、イメージとして次の図はわかりやすい。

cf. 初学者のための正しいシェルとカーネルの概念 ~ 大学も技術者認定機関も間違いだらけ #Linux - Qiita

シェルとカーネルの概念図と呼び出し階層

cf. 初学者のための正しいシェルとカーネルの概念 ~ 大学も技術者認定機関も間違いだらけ #Linux - Qiita

同心円で表現されていたシェルとカーネルの概念図に抜けている重要な層を追加して高水準(ユーザー寄り)から低水準(ハードウェア寄り)の順番で上から縦に並べたもの

anfangdanfangd

これらのソフトウェアはすべてバージョニングされている。

また、使用するのはほとんどがリリースバージョンだが、開発者や先取りしたいユーザーはβ版、α版を使用することが可能。

ホスト端末が〇〇環境というのはあるかもしれないが、これらのソフトウェアをここに見ると環境の概念はない。

anfangdanfangd

Webサービス

Webブラウザを通して使用するサービス

  • Webサイト: 企業コーポレートサイトなど、一方向に情報を発信してるサイト
  • Webサービス: WebブラウザやAPIを通して双方向に情報の取得・更新ができるサービス
anfangdanfangd

Webサイト

  • バージョニングされていない。
  • 一般ユーザーはバージョンや環境は意識しない。
  • CMSを使っている場合、入稿担当者も基本的にはバージョンや環境は意識しない。
    • CMSがなかったり、入稿の仕組みが整備できていないと、入稿担当者は環境を意識する必要がある。

Webサービス

  • 基本的にはバージョニングされていない
  • WebAPIはバージョニングされていることもある
  • Webサービス自体の環境は意識しない。
    • 提供者目線でいうと本番環境をユーザーが利用している。
    • 提供者の内部利用する環境として開発環境や検証環境のようなものが存在する
  • もしユーザーが開発者であれば、利用している環境を開発環境や検証環境として使用する場合もある
anfangdanfangd

それ以外は?

ライブラリ, SDK は?

  • 実行されるまではテキストやバイナリのデータという扱い
  • ビルドされて実行できるようになるとホスト端末で稼働するソフトウェアになる
anfangdanfangd

そうはいってもデータにもバージョンはある。
環境はない。