最近、私は作るのが難しくないように思えるプロジェクトを始めました。コンセプトは、時々入力を受け入れなければならないかなりシンプルなアプリケーションであり(おそらく1日10倍)、それらに対していくつかの操作を実行し、すべての結果を収集しようとしました最後に。その後、このアプリケーションは、顧客が結果を表示するために使用できるフロントエンドWebポータルを取得しますが、ロケット科学そのものではありません。
このために、私は最初にPythonの組み込み同時実行ライブラリ(ThreadPoolExecutor
)をスマートに使用し、フロントエンドに使いやすいライブラリを使用しました(初心者には簡単で、保守とテストが比較的簡単なため、Flaskを選択しました)。
プロジェクトの半分に達した後、PMは、スレッドの代わりにサードパーティのメッセージキュー機能を使用する必要があり、負荷分散を実装する必要があると述べました。最終的に起こったことは、最終的にCelery、Redis、RabbitMQ、Nginx、uWSGIそして、誰も実際に経験したことのない他の大規模なサードパーティサービスの束。
最終的に、これはスパゲッティコードの束、テスト不能なタスク(サードパーティライブラリの複雑さ、コードのパッチ適用が機能しなかったため)、およびこれらのサービスの付加価値が誰にもわからないために頭痛の種につながります。
「はい、これらのサービスを使用する必要があります」と言う前に、誰もこれらの使用方法を知らないか、競合状態に悩まされているコードを導入する以外に彼らが何をするかさえ知らないことに留意してください。
これについてどうすればよいですか?この時点では、最終製品が当初よりも悪くなったとしても、私たちが持っていたものに戻すにはコストがかかりすぎ、PMはこれらのサービスを使用することに行き詰まっています。彼とこれについて議論するのに使用さえありますか?もっと時間が必要ですか?または厳しい答えは、私は自分の仕事にはあまりにも愚かですか?