究極の 24/365 運用を目指して
この記事は カノジョできないエンジニア Advent Calendar 2016 - Qiita の10日目の記事です。
恋人がいるいないとかはどうでもいい。
「会いたい」って要求に対して 24/365 で答えられないのであれば、ping の通らないサーバと同じ。
エンジニアは課題を解決するための生き物である。
「恋人がいる・いない」という状態だけをみて物事を判断していいのか。
課題
恋人がいようがいまいが、「会いたい」という要求に対して解決策が講じれない場合、それはソリューションの敗北を意味する。
会いたいときに会えないのに、「恋人いる」といって満足していていいのだろうか。
会いたいときに会えないのであれば、「恋人いない」のである。
とは言え恋人も生き物。会いたいからと言って必ず会えるとも限らない。恋人の維持コストについても十分に考慮しなければならない。
サーバ活用の事例を参考に 24/365 の「今会える恋人」環境構築について考察していく。
クラウド的な解決策
単純に会いたいときにあえればいい場合、サービスを活用するのが最も効率的だと思われる。
サーバの 24/365 運用の場面では、クラウドという解決策が取られる。ベンダーが多数保有するサーバを柔軟に切り替えつつ顧客の要求に答え続けるというものだ。
恋人というコンテキストで考えても同様のサービスはいくつか存在するが、コレを以て問題を解決するには、以下のような欠点に留意シなければならない。
- 価格がやや高額 (15000/1h 程度からの見積もりとなるケースがほとんど)
- 社会的なイメージが悪い。
- リクエストから実際の応答までに 30m-1h 程の時間がかかるケースがある。
(サービスによっては事前のスケジューリングが可能なものも) - 一部権限不足等で実行できないアクションが存在する。
(権限の付与されていないアクション実行は本当に危険) - 同一インスタンスの継続的な確保が困難
- サービスという性質上、恋人関係に関するニーズを満たせない精神的課題も存在する。
金銭面での課題を解決できたとしても他の課題は山積みである。 人によって、何のために「会いたい」のかはそれぞれだと思うが、おそらくサービス活用で最終的な満足が得られる人は少数であろう。
ビジネスライクなやり取りに関する懸念
サービスでのやり取りに恋人としての雰囲気を感じないという点に不満を感じる層は多いだろう。
そういった人々には街のトラック等でよく目にする、有料系の出会い系サイトがお勧めできる。
一般的なサービス利用より若干割り高になるが、普通の出会い感覚でインスタンスをオンデマンドに確保することが可能となっている。 (アクション実行権限周りも低めに設定されているケースが多い)
とはいえ、蓋を開ければ中身はプロの闇営業か個人営業のどちらかで、本質的に大衆向けサービスを利用するのと何ら変わるところはない。 夢を見たければあまり深入りはしないほうが良いだろう。
効率的に複数オンプレの運用を行う
同一のインスタンスと継続的な疎通を持とうとする場合やサービスでは得られない類の精神的充足を得ようとする場合、やはりオンプレでの恋人運用は避けられない。
とは言えオンプレで 24/365 を実現するためには、ある程度の冗長性が必要になってくる。1台のインスタンスにモノリシックなあらゆる要求をリクエストし続けるのは、あまりにも無理がある。
我慢が美徳という人たちもいるが、我慢が一体何の腹の足しになるのだろうか。お互いの幸福を追求するためにも冗長性は不可欠だと考える。某ゲスの歌詞にも次のような言葉がある。
大人じゃないからさ 無理をしてまで笑えなくてさ
大人になってまで 言葉飲み込むなんてやめとけよ
とはいえ、冗長環境の準備には大きな労力が必要となってくる。 複数のインスタンスを前提として冗長環境運用を行う場合、冗長性に対応したインスタンス構築はもちろんのこと、適切なロードバランシングが必要となってくる。
インスタンスを冗長構成に対応させる
多くのインスタンスは、冗長構成を前提に構築されていないため、これを冗長構成に対応させるには対話等をベースとした相互理解が不可欠となってくる。
最近では一部のキュレーションメディア等でも「ポリアモリー」などの単語を扱うケースがでてきたため、下記のような記事を見せつつ、新しい相互理解の形などと説明していくのが第一歩だろう。
この手の対話を面倒がって、冗長化に非対応のインスタンス同士で冗長構成を構築すると、ものすごくややこしいことになる。
心労もすごいし、何より毎日多分楽しくないので決しておすすめしない。何事も誠実さをもって進めるのが良いだろう。
ロードバランシングの省コスト化
複数インスタンスの保守管理は、それはそれで大変なものがある。このあたりの工夫なしに、同時管理インスタンス数の増加は不可能となるし、定期的に誠実なメンテナンスを実施できない場合、冗長構成の前提そのものが破綻してくる。
特にシステム内で、アクティブな恋人と非アクティブな恋人との区別をその時々のステータスに応じて区別するのは非常に難しい。このあたりで事故をおこすと本当に厄介だ。
名前解決に関する事故
各インスタンスに対し、インスタンス固有名での名前解決を行っている場合、ときに大きな問題を引き起こしがちとなる。
このような事故を防ぐためには普段から二人称的なエイリアスを積極的に利用するのが良い。「君」「あなた」などのエイリアスを以て名前解決を行うよう徹することで初歩的な事故は大分回避できるはず。
本番サーバにproductionのようなわかりやすい名前をつけるといったベストプラクティスに習って、特別な固有名称をつけるというのもわかりやすい。とかくIPアドレスと同じく人の名前というのはわかりにくい。
メッセージ送信に関する事故
メッセージ関連のご送信も大きな事故の原因となる。このような事故はプログラム上避けがたい所もあるため、メッセージ初回のハンドシェイクの段階で、あたりさわりのないHelloからスタートするなど、事故に未然に気付けるような工夫は重要である。
メッセージサービスそのものを分割すると言った手法も存在するが、「 カカオとか使ってるんだぁ」とか言われてドキドキするのもあまり心臓に良くないので、個人的にはあまり有効な手段とは思わない所。
タスクスケジューリングのコンフリクトと遅延
システム内インスタンス全体に対して、偏りなくイベントが発生するようタスクスケジューリングの管理も重要となってくる。
イベント発生頻度の低いインスタンスに対して、インスタンス側からアラートが発生するよう期待するのは流石におこがましいので、スケジュールの調整・管理はこちら側で行わなければならない。
曜日・時間帯等に基づく、スケジュール管理は柔軟性を欠くため基本的には、イベントロガー等を通じた定期アラートの実行が望ましい。Todoist などのタスク管理ツールが「完了から1週間後に再アラート」といった機能に対応しているので、このあたりを有効に活用しつつ、イベント発生頻度の定期監視を行うと良い。
最後に
ここまで、 24/365 の「今会える恋人」環境構築について考察してきた。繰り返しになるが、必要なときにping も通らない状態で、「恋人いる」と言ってしまうのはソリューションの敗北を意味する。
「とりあえずシステム作る」「とりあえずアプリ作る」「とりあえずWebサイト作る」と言った顧客要求に対し、我々エンジニアは常に「なんのために作るのか」「作ってどうするのか」を問い続けてきたはずである。
恋人に関しても同様で、何のために恋人を作るのか、「会いたい」という要求がどのように解決されるべきか、十分に考慮される必要がある。
恋人いるのに会いたいときに会えないのであれば、それは恋人いないのと同じである。特定のパートナーがいたとしても「彼女いないアドベントカレンダー」は決して他人事ではないはず。年末で仕事も落ち着きプライベートな時間が増えるこの機会に、恋人がいる/いないということの本質的な意義について再度検討するのも良いと私は考える。
加えて、自分が会いたいときに会えないと思う気持ちと同様に、その向こう側にも会いたいのに会えない人が存在することを忘れてはならない。特に複数インスタンスを運用する上では、より多くのインスタンスからの期待・リクエストを自分も受けとっていることを十分に考えておかなければならない。他人にpingが通らないと嘆く前に自分はどうなのか。寂しいのは、決して自分だけではないはずなのだから。
謝辞
カノジョいないエンジニア Advent Calendar だと勘違いしていたので、いる・いない論の話をしてしまいましたが、「できない」だったんですね…ずれた話になってしまいすみませんでした。「できる」「できない」の話はよくわかんないのでスルーさせてください。
色々ゲスいことも書きましたが、まぁお互いをお互いに人間らしく尊重しつつ、無理なく要求に答えあえるような環境を構築するのが一番いいよねって話です。 ポリアモリーを馬鹿にしたり誤解を与えるような理解を流布する意図は基本的にはないのですが、まぁそんなに高尚な概念というわけでもないので、コレくらいのラフさでしっかり短絡的な誤解も受けつつ少しずつ認知されていくことが大切なんじゃないかなぁと思います。
ポリアモリー運用は本当に色々大変ですが、人と人が人間らしく恋愛を続けていくための一つの鍵だと思っています。これからも実践的にポリアモリーの生き方を続けていきたいと思う所存です。
ポリアモリーに限った話でもないですが「自分らしさ」を大切にする恋愛のはじめ方として、まずは恋人いる・いないって所にとらわれることなく、「何のため」が明確な恋愛のあり方をそれぞれが見つけていければいいなぁと思いつつ、本稿がその誰かの第一歩を少しでも後押しできればいいなぁと思います。