📌バンコク発|店舗ビジネスと個人収益を“仕組み化”するSatoshiの全ストーリーとノウハウはこちら。

「ちゃんと動いてます」と言い切れる自信があった。

コードは書いた。heartbeatの監視ロジックも実装した。.envもある。Railwayにもデプロイ済み。自動化OSは稼働中のはずだった。

でも、何かが引っかかっていた。

ログを見ると、監視のpingが一度も飛んでいない。通知も来ていない。「あれ、タイミングの問題かな」と思いながらコードを開いた瞬間、気づいた。

if name == “main“:
start_heartbeat()

この一行。全部ここに書いていた。

本番はgunicornで動いている。mainは一度も呼ばれない。つまり、heartbeat監視は一度も起動していなかった。デプロイした日からずっと、監視ゼロの状態で本番が走り続けていた。

「監視している」と思っていた自分が、最も危うい状態だった。


Turning Point(転換)―― 「壊れている」ではなく「見えていなかった」

問題はコードの品質ではなかった。

実行環境の違いを無視して書いたことが原因だった。ローカルではpython3 server.pyで動かすからmainに入る。本番のgunicornはそうじゃない。この差を埋めるだけでよかった。

dashboard/app.pyのstartup()関数にheartbeatの起動処理を移植。gunicornが立ち上がった瞬間に実行されるフックに乗せた。デプロイして、ログを眺める。

pingが飛んだ。それだけのことだったが、「稼働確認」と「稼働の実態」がようやく一致した瞬間だった。

同じ日、.envの棚卸しも着手した。

空のトークン。存在しないアカウントの変数。2つの変数が1行に結合した破損行。Bangkok
PeachのLINEトークンが401エラーを返し続けていて、自動返信が静かに止まっていた。ユーザーには届いていない。通知も来ない。止まっていることすら、気づけない状態。

「動いている」と「壊れていない」は別物だ、と改めて実感した。

トークンを棚卸しして、死んでいる変数を削除し、必要なものを再発行。Railwayに反映して、レスポンスを確認する。200 OK。

自動返信が再び動き出した。


Block 3「After(希望)」―― 「ゼロ」を確認できる仕組みへ

今日直したのは2つ。でも、本当に直したのは「確認できない状態」だった。

コードがあるから動いている、は思い込みだった。デプロイしたから反映された、も確認するまでは仮説に過ぎない。自動化を信頼するためには、「動いていることを証明する仕組み」が先にいる。

完璧なシステムはない。でも、壊れたときに気づけるシステムは作れる。

自動化を本気で使い倒したいなら、動かすことより「壊れをキャッチする設計」に時間をかけた方が、結果的に速く進める。今日、それを体で理解した。

次は、監視の通知先をLINEに直結させる。止まった瞬間にスマホに届く。それが整えば、ようやく「安心して任せられる」自動化OSに一歩近づく。

この記事が気に入ったら
フォローしてね!

もし心に響いたら、誰かにそっと伝えてみてね。
  • URLをコピーしました!

コメント

コメントする

目次