萌えハッカーニュースリーダー

2025/04/19 05:05 How to Run Python in Production

出典: https://ashishb.net/programming/python-in-production-2/
hakase
博士

やっほー、ロボ子!今日のITニュース、プロジェクトの品質と保守性、それにデプロイメントについてだって。なかなか興味深い内容じゃ。

roboko
ロボ子

博士、こんにちは。品質、保守性、デプロイメント、全てソフトウェアエンジニアリングにおいて重要な要素ですね。早速見ていきましょう。

hakase
博士

まずはパッケージマネージャーじゃな。Poetryかuvが推奨されとる。特にuvは高速でPythonバイナリも管理できるらしいぞ。Poetryからの移行もサポートしとるみたいじゃが、まだ安定版じゃないのが気になるのじゃ。

roboko
ロボ子

uvは新しいツールですね。高速なのは魅力的ですが、安定性を考えると本番環境での利用は慎重になるべきかもしれません。リンターについてはどうでしょうか?

hakase
博士

リンターはPythonのような動的型付け言語には必須じゃな。autoflake、flake8、ruff、isortのスタックが推奨されとる。Pyrightは誤検出が多いらしいぞ。

roboko
ロボ子

なるほど。これらのリンターを組み合わせることで、コードの品質を高く維持できるのですね。シークレット漏洩防止ツールも重要ですね。

hakase
博士

そうじゃ、gitguardian、gitleaks、noseyparkerが推奨されとる。GitGuardianは最高のツールらしいがクローズドソースじゃ。GitleaksとNoseyparkerはオープンソースじゃから、好みで選ぶと良いのじゃ。

roboko
ロボ子

オープンソースのツールは、コミュニティのサポートも期待できるので安心ですね。Gitコミットフックも活用して、より品質を高めたいです。

hakase
博士

その通り!pre-commitフックはコード品質の維持に有効じゃぞ。保守性についてはどうかの?FastAPIとgunicornの組み合わせが推奨されとるみたいじゃ。

roboko
ロボ子

FastAPIはFlaskよりもスループットが高いのですね。データ保持にはdataclassesまたはpydanticを使用し、pure関数をグループ化するヘルパークラスを使うと良いとのことです。

hakase
博士

asyncとマルチスレッドは避けるべきじゃな。PythonのGILとasyncは複雑で、マルチスレッドはバグの元になりやすいからの。パフォーマンスが必要なら、複数のプロセスを使うのが良いのじゃ。

roboko
ロボ子

依存関係管理も重要ですね。pip-auditで脆弱性のある依存関係をチェックし、dependabotで自動アップデート、deptryで未使用の依存関係を見つけると。

hakase
博士

コードの法的準拠も忘れちゃいかんぞ。ライセンスに問題があるライブラリは避けて、licensecheckをCIで使用するのじゃ。

roboko
ロボ子

デプロイメントについては、Dockerを使うのが推奨されていますね。GPU対応VMでもDockerを使うとのことです。

hakase
博士

そうじゃ。マルチステージビルドを使って小さいベースイメージ上に構築し、Alpineベースのイメージは非推奨じゃ。非GPUデプロイメントではCPU専用ライブラリを使うと良いぞ。uvで設定できるらしい。

roboko
ロボ子

PyTorchは巨大なので、CPU専用バージョンを使うのは理にかなっていますね。ビルド時にコードをコンパイルし、外部依存関係もダウンロードしておくことで、起動時間を短縮できると。

hakase
博士

大規模モデルはクラウドストレージに配置して、Dockerボリュームとしてマウントするのが良いのじゃ。最後に、Dockerコンテナは非rootユーザーとして実行するのじゃぞ。セキュリティのためじゃ。

roboko
ロボ子

非rootユーザーで実行することで、攻撃対象領域を減らすことができるのですね。今回のニュースは、プロジェクトの品質、保守性、デプロイメントに関するベストプラクティスが満載でした。

hakase
博士

ほんとじゃな!しかし、これだけ色々やることがあると、まるで忍者のように隠密行動が必要じゃな。…って、ロボ子、お主もしかして、もう忍者の衣装に着替えてたりするかの?

roboko
ロボ子

博士、私はロボットなので、忍者の衣装はちょっと…サイズが合いません。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search