我尝试分析了伊坂幸太郎的小说《现代时代》中出现的交友网站的架构和技术选择
你好!
这篇文章是来自您的雜錦大师圣诞节时事日历的第23天的文章。
文章主题
伊坂幸太郎先生的小说《现代时代》,它涉及到约会网站的架构和技术选择,我想以工程师的角度来试着理解它。因为我一直希望能够认真地面对小说中出现的约会网站,所以我感到非常高兴。另外,如果有任何意见,比如“我认为这里应该是这样的”或者“可能还需要这样的功能”,请在评论中提出!!!
简单地介绍一下自己
工程师三年 / 职场人三年
喜爱的编程语言:Java
感兴趣的技术:Go
喜欢的作家(最重要):村上春树、伊坂幸太郎
(如果有推荐的小说或作家,请留言,非常欢迎)
为了那些不了解《现代时代》的人,我简单地解释一下。
渡辺是一位工程师,有一天他接替了五反田(同事)从事株式会社Goshu公司的约会网站的修缮工作,因为五反田在工作中突然消失了。这项修缮工作本身很简单,只需在用户的注册界面上添加五个新项目。渡边觉得“五反田竟然因为这样简单的任务而逃走,真是奇怪!”他开始调查这个约会网站,发现了一个事实。
这个约会网站是一种特殊的约会网站,只有通过某个特定的文言才能找到并进入。(该特定文言在源代码上被加密,只有独特的编译器才能进行解析。)然后,只有通过这个特定的文言搜索找到并进入约会网站的人会被接连杀害…
大致的故事就是这样。
以下的架构和技术选择完全是基于个人独断和偏见。
架构(预测)

架构的说明
这是一个微服务架构,原因如下:
1. 各功能需要单独编译。
2. 重视易于管理。
因此,得出了采用微服务架构的合理结论。
在这个故事中至关重要的是进行“通过特定的词语在搜索引擎中搜索并访问到交友网站的人”的分析,这是由访问分析批处理完成的。
技术选择
鉴于本书出版于2008年,因此我们选择了适应那个时代的技术。请您轻一点,谢谢。。。
自社サーバー
AWSでもなく自社で作ったサーバーです。なぜかと言うと、小説内ではこの出会い系サイトがWeb上のどこにあるのかわかっていないからです。自社サーバーと聞くと脆弱性の問題や攻撃を受けやすい印象がありますが、、、そこはすご腕のエンジニアがゴッシュにはいたという設定で自分の中で解決しました。
サーバーサイド
Javaです。この時代?のWebサービスはJavaという印象がありました。PHPも候補に入れてたんですが、ゴッシュという会社は自社サーバー作っちゃうくらいなのでPHPだとエンジニアのコスト抑えすぎ&そんな軽い言語ゴッシュが選ぶはずないと思ったのでJavaにしました。フレームワークはSpringです。
解析系バッチ
Pythonです。解析と言ったらPythonかなと思いました。(安直)
暗号化されてないデータベース
ユーザー情報やログ情報を格納するのはMySQLです。ゴッシュにとってこのDBに格納される情報自体あまり重要ではないかなと思ったのでMySQLにしました。
暗号化されたデータベース
検索エンジンで特定の文言で検索をかけて出会い系サイトに到達した人の情報(年齢・職業・名前)やどの検索エンジンを使ったのかなどの情報を格納するのがこのデータベースです。なぜCassandraかと言うとゴッシュにとって一番重要なデータを格納するからです。改竄されてはいけない、抜け落ちてはいけない、この条件を満たしてくれるのは分散処理に適したCassandraかなと思いました。上記の画像では1ノードしか用意してないですがおそらく5ノードくらい実際にはあると思います、リッチな会社なので。
独自のコンパイラ
ソースコード上で暗号化されている箇所が散見されています。その暗号を解析するのが独自のコンパイラです。実際にはどの言語で実装すればいいのか悩んだ結果Pythonです。これも暗号とか解析と言ったらPythonかな・・・と思い選定しました(安直)
フロント・画面
タイムリーフです。サーバーからもらったデータを表示させるのはタイムリーフで、簡単な動的な処理はJSにやってもらおうと思いました。Javaといったらタイムリーフかなって思いました(安直)
想法
我想亲自尝试制作一下。(但是我不想使用Timeleaf,我想使用Vue.js)
虽然制作自己的编译器似乎很困难,但我觉得这将是一次很好的学习机会。
最困难的是重新阅读小说。我认为读过的人应该知道,它相当长。
我也希望能进一步思考中间件等等。
我觉得技术选型真是有趣!!