スキップしてメイン コンテンツに移動

投稿

注目の投稿

【Day 18】迷わない「ブランチ命名規則」のデファクトスタンダード

最近の投稿

【Day 20】.NET Worker Service(バックグラウンド処理)のコンテナ化 〜常駐型バッチ処理とシグナル処理(SIGTERM)による安全な終了(Graceful Shutdown)〜

▲ Day 20: .NET Worker Service(バックグラウンド処理)のコンテナ化 🐳 受講生の皆さん、お疲れ様です! Docker/コンテナ実践講座の専任講師です。 前回の講義では、DockerfileのGit管理とレイヤーキャッシュ最適化をマスターし、チーム開発における高速ビルドの基盤を完成させました。 本日は、エンタープライズ開発でWeb APIと並んで頻出する 「常駐型バッチ・非同期キュー処理(.NET Worker Service)」のコンテナ化 を解説します! かつてWindowsサービス( sc.exe )で構築していた常駐プログラムを、なぜコンテナ化すべきなのか?そしてコンテナ停止時にデータを絶対に壊さない 「Graceful Shutdown(安全な終了)」の実装極意 を徹底解剖します! ① 導入・本日の達成目標 「Webアプリのコンテナ化はイメージが湧くけれど、深夜の定期バッチやメッセージキューを監視し続ける常駐ワーカーはどうやってコンテナ化するの?」 「 docker stop でコンテナを止めたら、処理中のDB書き込みや外部API通信が途中で強制切断されてデータが破損しないの?」 長年Windows Serverで常駐サービスを運用してきたエンジニアほど、このような疑問や不安を抱くはずです。 コンテナは「エフェメラル(使い捨て可能)」な思想で作られていますが、 「いつでも乱暴に電源を切ってよい」という意味ではありません。 停止要求を受け取った際に、実行中のタスクをキリの良いところまで完遂してから安全に終了する仕組みこそが、実務で絶対に外せない 「Graceful Shutdown」 です。 本日の講義を修了すると、以下の3大目標を完全に達成できます。 ...

【Day 17】ブランチは「いつ切り、いつ統合するのか?」その絶対原則

👨‍🏫 皆さん、こんにちは! 本講座の専任講師です。 前回のDay 16では、リリースポイントを永遠に刻む「git tag」と、セマンティックバージョニングおよび.csprojの連動手法を学びましたね。 さて、本日から本講座はいよいよ 【第4部: 現場の実践ルール&規約】 へと突入します! これまではGitの基本コマンドやマージ・リベースの仕組みを解説してきましたが、実際の開発現場で最も多くのエンジニアが頭を悩ませるのが 「ブランチは一体いつ切り、いつ統合(マージ)すべきなのか?」 という運用の絶対原則です。 Subversion (SVN) や VSS を長年使ってきたベテランエンジニアほど、「ブランチを切ると後でマージが大変だから滅多に切りたくない…」「リリース直前まで何ヶ月もブランチを放置してしまう」という心理的ブレーキが働きがちです。 しかし、Gitの真価を発揮するためには 「1タスク1ブランチ」「数時間〜数日で破棄する短命ブランチ」 という全く新しい思考法(パラダイムシフト)が不可欠です! 本日は、ブランチを作成する3大タイミング、mainへ安全に合流させる3大絶対条件、そしてマージ地獄を根絶する短命ブランチ戦略まで、C#現場の実践例とともに徹底解説します! ① 導入・本日の達成目標 チーム開発において、Gitのコマンドを知っていることと、「チームとして混乱なく開発を進められること」は別物です。 もしメンバーが思い思いのタイミングでブランチを切り、何週間も放置したあとに巨大な差分をいきなりマージしようとすれば、プロジェクトは確実に 「マージ地獄」 に陥り、ビルドエラーとデグレの嵐に見舞われます。 🎯 本日のゴール SVNの「長命・重量級ブランチ」とGitの...

【Day 19】DockerfileをGitにコミットしチーム共有するベストプラクティス(レイヤーキャッシュ最大化と運用規約)

▲ Day 19: DockerfileをGitにコミットしチーム共有するベストプラクティス 🐳 受講生の皆さん、お疲れ様です! Docker/コンテナ実践講座の専任講師です。 前回の講義では .dockerignore を活用してビルド転送量を劇的に軽量化し、C#の bin/ や obj/ 混入事故を完全に防ぐ方法をマスターしました。 本日は、チーム開発における最大の関門である 「DockerfileをGitリポジトリにコミットし、全員で安全・爆速に共有するためのベストプラクティス」 を学びます! 「書き方ひとつでビルド時間が100倍変わる」Dockerレイヤーキャッシュの最適化と、チーム開発で絶対に破綻させないコーディング規約を徹底伝授します! ① 導入・本日の達成目標 「DockerfileをGitに共有したけれど、C#のコードを1行修正するたびに毎回3分もビルドに待たされる……」 「メンバーの手元では動いたのに、CIサーバーや新人のPCでビルドしたらNuGetパッケージの不整合でエラーになった……」 このような経験はありませんか? 従来のサーバー構築では「手順書」に従って手作業でコマンドを実行していたため、作業順序が違っても最終的な状態が合っていれば問題ありませんでした。 しかしDockerの世界では、 「命令を書く順番」がキャッシュ効率とビルド時間を決定づけ、チーム全体の生産性を大きく左右 します! 本日の講義をマスターすることで、以下の3つの重要ゴールを達成できます。 Dockerレイヤーキャッシュの無効化メカニズム を論理理解し、キャッシュヒット率99%を達成する命令順序を設計できる。 C#/.NET開発における 「.csproj 先行コピー ➡...

【Day 16】リリースポイントを記録する(git tag)

👨‍🏫 皆さん、こんにちは! 本講座の専任講師です。 前回のDay 15では、作業途中の書きかけコードを安全に退避できる救世主コマンド「git stash」と、未追跡ファイルを置き去りにしない -u オプションの鉄則を学びましたね。 さて、開発作業やテストが無事に完了し、いよいよ顧客やユーザーに届ける 「本番リリース」の瞬間 がやってきました! このとき、皆さんは 「リリースした時点のソースコード」 をどのように記録・保管していますでしょうか? Subversion (SVN) や VSS を使っていたベテランエンジニアの方なら、 「サーバーの /tags/v1.0.0/ フォルダにプロジェクト全体を丸ごとコピーして保存していた」 という経験があるかと思います。 しかし、Gitではフォルダコピーのような重たく危険な方法は一切使いません! Gitには、特定の完成コミットに対して永遠に動かない目印をペタッと貼り付ける超軽量コマンド 「git tag(タグ)」 が用意されています。 本日は、Gitのタグの仕組み、本番運用で必須となる「注釈付き(Annotated)タグ」、C#のバージョン定義(セマンティックバージョニング)との連動、そしてTortoiseGitでの直感操作まで、現場で即役立つプロの技を徹底解説します! ① 導入・本日の達成目標 ソフトウェア開発において、 「過去にリリースしたバージョンのコードを、何年後でも1ミリの狂いもなく完全再現できること」 は、品質保証とサポートにおける絶対条件です。 もしユーザーから「2年前に納品されたバージョン1.0.0で重大な不具合が出た」と報告された時、「どのコミットがバージョン1.0.0だったか分からない」では話になりません。 🎯 本日の...

【Day 18】.dockerignore の完全攻略(.git や bin/obj を除外して爆速ビルド)

▲ Day 18: .dockerignore の完全攻略(.git や bin/obj を除外して爆速ビルド) 🐳 皆さん、こんにちは! Docker/コンテナ実践講座の専任講師です。 前回(Day 17)では、SDKイメージとRuntimeイメージを分離してイメージサイズを劇的に軽量化する「マルチステージビルド」をマスターしました。 しかし、現場で実際に docker build を叩いていると、こんな違和感に直面したことはありませんか? 「ソースコードを1行直しただけなのに、ビルド開始時に何十秒も待たされる…」 「PCのファンが爆音で回り、ギガバイト単位の転送中プログレスが表示される…」 その元凶こそが、今回攻略する 『ビルドコンテキスト(Build Context)への不要ファイルの無差別転送』 です! 本日学ぶ .dockerignore は、ビルド速度を秒速化するだけでなく、Git履歴や認証鍵の漏洩を水際で防ぐ 現場の絶対必須スキル です! ① 導入・本日の達成目標 Docker初心者が最も陥りやすい落とし穴が、「 .dockerignore を作らずに docker build . を実行してしまうこと」です。 この設定を怠ると、Gitの膨大なコミット履歴( .git フォルダ)や、Windowsローカルでビルドされた巨大な bin/ ・ obj/ フォルダ、さらには秘密情報を含む開発用設定ファイルまで、すべてがコンテナのビルド領域に無防備に送り込まれてしまいます。 本日の講義を終える頃には、以下の3つの目標を完全にクリアできるようになります。 ビルドコンテキスト転送の仕組み を理解し、なぜ .dockerignore がビルド爆速化に直結するのかを...