Binary Diary

誰かに会ったり 話しかけたり 街行く人に優しくね

あるシステムの環境を全てリニューアルしたらそれは元のシステムと同じものと言えるのか?

どうもこたにんです。

WEBサービスシステムリニューアルのおはなし

f:id:Kotanin0:20200730133821p:plain

とあるWEBサービスがあります。

このWEBサービスは一昔前から稼働するECサイトで、サービス名の知名度はそこそこあり、売上もそこそこあり、コンバージョンもまあ悪くありません。
このWEBサービスを運営している会社は、サービスをより良くするために、システムのリニューアルをしていきたいと考えました。

ここで、今後話が進めやすくなるように、このシステムは以下のような構成で動いていると定義しましょうか。

LAMP環境というやつです。
一昔前から稼働しているので、当時を考えるとデフォルトな構成です。

システムリニューアルに際し、一気に全部置き換えてビッグバンリリースはリスクが大きいので、部分的にリニューアルを進めることとしました。

サーバはAWS環境に移しました。
WEBフレームワークをKotlin+Springにし、JavaScriptをTypeScriptに書き換えました。
DBもAuroraを使うこととしましたし、nginxに載せ替えました。

ひとつずつ少ないリスクでリニューアルを繰り返すことで、システムは刷新され、モダンな環境になりました。
WEBサービスとしてもサービスレベルが上がり、コンバージョンも上がりました。
おかげで売上も上がり、会社として主軸のサービスが更に進化できました。

リニューアルしたシステムは元のシステムと同じなのか?

ここで疑問が湧き上がります。
リニューアルしたシステムは元のシステムと同じなのか?

システムの構成を見る限り、リニューアル前後で同じところは何一つありません。
言語もフレームワークもサーバも、何もかもが違います。
構成要素が全く違う2つのシステム。
これは同じシステムなのでしょうか?

たしかに、WEBサービスとしては同じものです。
ただ、それを構成する環境が全く違うので、システムだけを見たら同じと言えるの?

テセウスの船というパラドックスがあるんですよ

これは「テセウスの船」というパラドックスのお話です。

テセウスの船テセウスのふね、Ship of Theseus)はパラドックスの一つであり、テセウスパラドックスとも呼ばれる。ある物体において、それを構成するパーツが全て置き換えられたとき、過去のそれと現在のそれは「同じそれ」だと言えるのか否か、という問題同一性の問題)をさす。

テセウスアテネの若者と共に(クレタ島から)帰還した船には30本のがあり、アテネの人々はこれをファレロンのデメトリウスの時代にも保存していた。このため、朽ちた木材は徐々に新たな木材に置き換えられていき、論理的な問題から哲学者らにとって恰好の議論の的となった。すなわち、ある者はその船はもはや同じものとは言えないとし、別の者はまだ同じものだと主張したのである。


まさに先程のお話そのままですね。
全てのパーツが作り変えられたとき、それらは同じものと言えるのか?
という話。
このお話は「ヘラクレイトスの川(川の水は常に違う水が流れ行くが同じ川と言えるのか)」だとか「おじいさんの古い斧(おじいさんから代々受け継がれる斧、刃の部分も柄の部分も何度も交換しているがその斧はおじいさんの斧と言えるのか)」だとかいうお話のバリエーションもあるみたいです。

このパラドックスの一番のポイントは「同じ」の定義です。
何を以て「同じ」とするのか、それを明確にする必要があるわけです。

何を作っているのか、何で作られているのか

先に話したシステムは、WEBサービスとしては「同じ」と言えます。
「何を作っているのか」という点ではWEBサービスなので。

ただし、そのシステムが「何で作られているのか」という点では「同じ」とは言えないです。
だって使っている材料(言語や環境)が違うので。

使っている材料が違えど、作っているものは同じ。
それ即ち「サービス志向」なわけです。
「何を作っているのか」という目的と向き合う、サービスと向き合っているわけです。

逆に「何で作られているのか」に重視することは「システム志向」です。
アウトプットのサービスよりも、使っている材料にこだわりを持っているわけです。
特定の技術を深く熟知して活用する、作り手としては楽しい領域ですね。

システムリニューアルはいいぞ

いずれにせよ、システムリニューアルとはいいものです。
上のお話の通り、サービスとしてのレベルを上げることもできますし、モダンな環境下でよりスキルを磨くこともできます。

ただそこで「何で作られているのか」だけでなく「何を作っているのか」というサービス志向を忘れないでいたいですね。