クラウドネイティブ世代の新卒2年目が「進化する銀行システム」を読んだ

クラウドネイティブ世代

自分で適当に思いついた言葉だったんですが、どうやら既出だったようです。

https://image.slidesharecdn.com/20150731cloudnative-150731102613-lva1-app6892/95/-11-638.jpg?cb=1438338435 *1 クラウドネイティブ世代がインフラに触れるということ

入社して配属されてから今までほぼ100% AWSを使っている環境ですし、社会人になるまでサービス運用はしたことがなかったので、僕はクラウドネイティブ世代と言っていいでしょう。

クラウド

クラウドネイティブ世代はどんな感じかといいますと、いくらクラウドとはいえど最初はおそるおそる使っていたんですが、すぐに慣れてしまい、一時的に必要な性能を見積もって1時間だけだし2500円くらいか、と思ってボタンを押したらCPUを400コアくらい使っていた感じです。自分でも「これがクラウド脳か」と思いました。サーバをラックマウントしてくれる人の苦労も忘れたらいけない。圧倒的感謝🙏

反動

クラウド時代を表す言葉として「ペットから家畜へ」*2 という言葉が有名で、この言葉を借りると、僕は家畜しか飼った事がないことになります。家畜(クラウド)は1個体1個体の細かいコンディションを気にしてはいられませんし、全体としてのパフォーマンスや効率を求めます。

家畜と戯れていると、ペットが欲しくなります。これが反動です。

「進化する銀行システム」の見本を頂いた

こんな環境(?)で働いているのですが、クラウドと正反対の環境としてまず思い浮かぶのがメインフレームであり、その代表例が銀行等のシステムでした。 メインフレームは、実物を目にしたことはなく、信頼性とお値段が桁違い、というイメージはあるものの、どんな使われ方をしているかは知りませんでした。

参考: *3 メインフレームサーバーの凄さについて

そんな時に、今月発売された「進化する銀行システム 24時間365日動かすメインフレームの設計思想」の見本を技評さんにいただきました。

Kindle版もありますよ。

ここからはこの本の概要や読んで思ったことを書いていきます。

この本の概要

タイトルを見て銀行システムについての内容がほとんどかと思ったのですが、銀行システムについてが1/3くらいで、2/3はメインフレームについてです。 銀行システムもメインフレームも前知識はほぼない状態で読んだのですが、何も知らなくてもわかるように丁寧に解説されています。ただ、Linux等のなんとなくな知識はあった方が何が違うのか?という点について考えながら読むことができて面白いかなと思います。

銀行の勘定系オンラインシステムの特徴と歴史

全てが手作業だった時代からオンライン化がはじまり、それが当たり前になったからこそ社会的な責任が大きくなり、「止められないシステム」になっていった流れがわかりやすかったです。銀行システムには世代があって、今はポスト第三世代と呼ばれているんですね。経営統合によるシステム統合、全銀システムを経由した送金の処理等々、止められない分歴史的経緯が絡んで難しくなっているのかなぁという印象を受けました。

メインフレームのハードウェア, ソフトウェア

メインフレームといえば大きくていかつい見た目を想像していましたが、やはりそうなんですね。ハードウェアのあらゆる部分が二重化されていて、特定の処理をするための専用モジュールが多く搭載されているようです。IBMのz/OSというOSが生誕50周年を超えているそうで、50年以上同じアーキテクチャのものが開発されて運用され続けてるのはすごいですね。

それとは別に、開発やテストはどういった環境で行うのかが疑問でした。メインフレームは高価でしょうから、手元のPCでテストコードを回したりできるのでしょうか。あと、リリース前の確認とか調査をするためのステージング環境とかも用意しているのでしょうか。

システムの安定性, 性能を高める技術

災害対策、いわゆるディザスタリカバリですが、災害時にシステムが切り替わる先を災害対策センタと呼ぶようです。システムを切り替えるにもそれまでレプリケーションされていたトランザクションのログのロード方法やリカバリ方法が色々あるようです。性能面ではDBとトランザクションについての記述が多かったです。専門用語が多かったのでまだ理解しきれていませんが、銀行なのでDBとトランザクションは肝ですよね。

メインフレームLinuxより優れているのか?

11章で、オープン系(Linuxとか)ではなく、なぜメインフレームが選ばれ続けているのかについて書かれているところが一番印象に残っています。メインフレームが選ばれる理由として

  1. 信頼性に優れている
  2. 可用性に優れている
  3. 互換性に優れている
  4. 拡張性に優れている
  5. 業務全体の処理効率が優れている
  6. I/O処理の効率が優れている

の6つがあり、その他実績等を総合してメインフレームが選ばれると書かれています。

今日においても本当にそうでしょうか?

全てに置いてハードウェアが二重化されている物と比べれば信頼性は劣りますが、ソフトウェアによって可用性が担保できますし、ハードウェアが安価な分、量でカバーできるはずなので問題にはならなさそうです。 互換性は、Linuxで20年後も全く同じ状態のソフトウェアが動くかと言われると怪しいですが、CI/CDといった手法によってメンテナンスされれば動くことは保証されますし、最新の状態に追従できているソフトウェア資産の方が価値が高いはずです。拡張性はスケールアウトしかありませんし、処理効率はソフトウェアで改善ができます。I/Oはどうなのでしょう?ソフトウェアのアーキテクチャから工夫をすれば対抗できるかもしれません。ただ外部入出力にあたるネットワークは変わらないはずなのでそこがボトルネックになれば同じ条件かもしれません。

読んでいるうちに6つの要素について、昨今の技術ならLinuxでも満たす事はできそうだし、実は 実績 が一番の理由なのではないかと思い始めました。

クラウドメインフレーム

f:id:kuro_m88:20170222011934p:plain

この写真は、ラスベガスで開催されたAWSのre:invent 2016*4でJames Hamilton氏が"A toast to the death of the mainframe!“ (メインフレームの死へ乾杯!)と言ってステージ上で乾杯を始めた時に撮った写真なのですが、この発表では、メインフレームを数十年間使い続けた企業がAWSに移行した例が出てきました。ここ最近でこういった例が増えてきているようです。 メインフレームの顧客をクラウドが奪うという意味では対立していますが、この本を読んで技術的に対立/対抗している物ではなさそうだという印象を受けました。

そこで思いついたのが、クラウドは「超巨大なメインフレーム」なんじゃないかという説です。 AWSで例を挙げると、柔軟な計算リソースはEC2、信頼性、可用性、拡張性に優れたストレージとしてS3、シームレスに拡張できるDBとしてDynamoDBがあります。GCPだと最近発表されたCloud Spanner*5が熱いですね。それぞれ別々のサービスとしてではなく、全部入りの一つの巨大なシステムを多数のユーザで共有してると考えるとメインフレームが超巨大になっただけに見えてきます。ユーザごとに見れば必要なだけリソースをスケールアウト/インさせていますが、実際のクラウド事業者のデータセンタ(メインフレームの箱)のサイズは変わらないですからね。新しいメインフレームが出て、要件が見合った企業は移行しているイメージでしょうか。 自分はこの説で今の流れがなんとなくしっくり来た気がします。

これだけ規模が大きくなれば実績が積まれるのは時間の問題ですし、自分も実績を作って行きたいですね💪

メインフレームの本当のところは仕事で関わってみないとわからないと思うのですが、今のところ関わる事がなさそうなので、想像だけしてみました。面白かった。

紹介した本