Software is Defining the World (和訳は下記をご参照ください)

Long understood skills and methodologies in software development have been increasingly finding applications outside of pure software. Software seems to be defining the world. Well, that may not actually be the case. But it's certainly taking a noticeable bite.

Software development has the luxury of abstraction in a theoretically infinite space where much can be learned about engineering in general. In particular, the benefits of decoupling. Decoupling allows for seamless maintenance, interchangeability, interoperability, and at lower costs. This may not seem like much, but has powerful consequences.

Decoupling hardware makes it possible to define policy in software for, and yet independent of the hardware itself. This means that policy can change and the methods of use of the hardware along with it. Especially when the underlying hardware has a very concisely identifiable purpose, like storage.

Software defined storage policy has come to be known as simply SDS (software defined storage). The most popular abstractions from this approach to storage are block, object, and file systems.

Block storage is as it sounds - fixed size directly accessible blocks of data, has no meta-data, and is most commonly used by systems due to its fast performance.

Object storage is newer, referenced by ID, has arbitrary length, is often copy-on-right, has meta-data, is slower than block storage, and there’s a well-suited representation called JSON (javascript object notation) data.

{              
 "orderID": 12345,
  "shopperName": "Satoshi Nakamoto",
  "shopperEmail": "satoshi.nakamoto@example.com",
  "contents": [
    {
      "productID": 34,
      "productName": "PC X",
      "quantity": 1
    },
    {
      "productID": 56,
      "productName": "RAM X",
      "quantity": 4
    }
  ],
  "orderCompleted": true
}

Figure 1. Object Data Example

The scope of file systems is rather large and not limited by definition. There could be one of many different file systems (e.g. NTFS, EXT4, BTRFS, XFS, ZFS, etc.).

Figure 2. File System Example

And who knows?! There could be newer storage abstractions in the future and some or all of the above could fall out of favor. But that's OK because it will be software defined, and reversion possible should long forgotten storage devices be found or continue to be used indefinitely. Which is where the matter of lower costs comes in.

Storage hardware devices in the past have often been rather sophisticated in and of themselves, and thus expensive. With SDS though, underlying storage devices (e.g. hard drives) can be inexpensive commodity drives that are expected to fail. This is also OK because SDS and it's policies can account for this and handle redundancy seamlessly.

Don't be surprised to hear more terms of software defined something. For instance, there is already research and development in software defined networking, which could change enterprise networking policy to dynamically fit changing needs.

この世界はソフトウェアで定義されている。

ソフトウェア開発で分かって来たスキルや手法は徐々にソフト以外のところでも適用されてきた。また、ソフトウェアは世界を定義されていると 記載したが、事実ではないにしろ、この世界に影響を与えていることは確か。

ソフトウェア開発は無限の可能性があり、工学技術の勉強に役に立つ。特に、非干渉化のメリットだ。非干渉化の為、シームレスメンテナンス、交換、相互運用性は低コストで可能になる。この例はあまり多くはないが重要な結果につながっている。

非干渉化のハードウェアの適用はハードウェアから独立するソフトウェアでのポリシーを作れる。このポリシーとハードウェアの使い方の変化は可能になる。例えば、ストレージのようなハードウェアは具体的な目的があるので、使い方の変化は可能になる。

ソフトウェアディファインドストレージは現在SDSと呼んできた。SDSの中で、良く知られているストレージはブロックレベルのストレージ、オブジェクトストレージとファイルレベルのストレージだ。

ブロックレベルのストレージは言葉通りで、メタデータがなく、パフォーマンスが早いから一般的にシステムでよく使われている。

オブジェクトレベルのストレージは一番新しくて、IDで参照しており、恣意的な長さであり、よくコピーオンライトであり、メタデータもあり、また、ブロックレベルのストレージより遅い。その上、良く知られている代表はJSON(ジェイソン)、つまりJavascript Object Notationを指している。

{              
 "orderID": 12345,
  "shopperName": "Satoshi Nakamoto",
  "shopperEmail": "satoshi.nakamoto@example.com",
  "contents": [
    {
      "productID": 34,
      "productName": "PC X",
      "quantity": 1
    },
    {
      "productID": 56,
      "productName": "RAM X",
      "quantity": 4
    }
  ],
  "orderCompleted": true
}

表1. オブジェクトデータの例

ファイルレベルのストレージの範囲はかなり大きい。また、様々なファイルレベルのストレージ(例えば NTFS, EXT4, BTRFS, XFS, ZFSなど)がある。

表2. ファイルレベルのストレージの例

何とも言えないが、未来に新しいストレージができたら、現在あるストレージが時代遅れとなれるかもしれない。だが、ソフトウェアで定義されているので、時代遅れているストレージをその時でも使っているとしても、回収できるので大丈夫だ。ここでは低コストの大切さが入ってくる。

昔のストレージ・デバイスのハードウェアは複雑でありながら、値段が高かった。 だが、SDSがあるので、基礎的なストレージ(例:ハードドライブ)は失敗しやすいハードドライブでも使えるので、費用がかからない。SDSとのポリシーなら完全に余剰を受け取れるので大丈夫だ。

未来に、ソフトウェアで定義されている言葉を聞くと、驚かないでください。例えば、ソフトウェアで定義されているネットワーキングでは研究や開発をもう行っている。その結果、いつも変わっているニーズに合わせる為にエンタープライズネットワーキングポリシーが急速に変わる。