Skip to content

フェーズ 5 – アーキテクチャと並行処理 (2~3ヶ月)

Clean CodeとSOLID原則

  • Clean Code: 明確な命名、短い関数、有用なコメント、一貫したフォーマット。
  • SOLID:
  • SRP (Single Responsibility Principle)
  • OCP (Open/Closed Principle)
  • LSP (Liskov Substitution Principle)
  • ISP (Interface Segregation Principle)
  • DIP (Dependency Inversion Principle)

: タスクマネージャーのサービスをSOLID原則に従ってリファクタリング。

デザインパターン

  • パターン: Factory(作成)、Singleton(単一インスタンス)、Builder(オブジェクト構築)、Strategy(振る舞い)、Observer(イベント)。
  • 適用: プロジェクトのコンテキストに適したパターンの選択。

: 異なるタスク優先順位付けアルゴリズムにStrategyを使用。

スレッドと並行処理

  • 概念: Thread、Runnable、ExecutorService、ForkJoinPool。
  • 技術: スレッドプールの作成と管理、非同期タスク。

: ExecutorServiceでタスクレポートを並行処理。

同期と並行処理の問題

  • メカニズム: synchronized, Lock, ReentrantLock, ConcurrentHashMap
  • 問題: Deadlock、Race Condition、Starvation。

: 共有タスクリストへの安全なアクセスを実装。

マイクロサービス入門

  • 概念: マイクロサービスアーキテクチャ、REST通信、サービスディスカバリ。
  • ツール: Spring Cloud(例: Eureka for service discovery)。

: タスクマネージャーをマイクロサービス(タスクとユーザー)に分割。

メッセージキューの基礎(オプション)

  • 概念: Publisher/Subscriber、キュー、トピック。
  • RabbitMQ: セットアップ、メッセージの送信と受信。

: RabbitMQを介してタスク更新をユーザーに通知。

パフォーマンス最適化

  • Caching: データベースアクセスを減らすためにRedisを使用したSpring Cache。
  • JVM Tuning: 基本概念(ヒープ、ガベージコレクション)。

: タスクシステムの頻繁なクエリにキャッシュを実装。

DevOps/クラウド入門: DockerとCI/CD

  • Docker: コンテナ、イメージ、Dockerfile、Docker Compose。
  • CI/CD: GitHub Actionsでビルドとデプロイのパイプラインを設定。

: タスクアプリのDockerfileを作成し、GitHub Actionsでデプロイ。

オブザーバビリティ

  • ツール: Prometheus(メトリクス)、Grafana(可視化)、ELK Stack(ログ)。
  • 概念: パフォーマンス監視、集中ログ、アラート。

: PrometheusとGrafanaでタスクのAPI応答時間を監視。

セキュリティ: OWASP Top Ten

  • 概念: Injection、認証エラー、機密データの露出。
  • 実践: 入力検証、サニタイズ、安全な設定。

: タスクAPIをSQL InjectionとXSSから保護。

最終プロジェクト

高度なタスク管理システム
- バックエンド: フェーズ4のタスクAPIをマイクロサービス(タスクとユーザー)で強化。
- アーキテクチャ: Clean Code、SOLID、デザインパターン(例: Strategy)でリファクタリング。
- 並行処理: ExecutorServiceでレポートを並行処理。
- オプション: RabbitMQを介したマイクロサービス間の通信と、頻繁なクエリのためのRedisキャッシュの追加。
- DevOps: Dockerでパッケージ化、GitHub ActionsでCI/CDを設定。
- オブザーバビリティ: メトリクスのためにPrometheusとGrafanaを追加。
- セキュリティ: OWASP Top Tenに対する保護を実装。
- Git: 機能ごとのcommit(例: feature/microservices, feature/concurrency)。
- 公開: GitHubに詳細なREADME(セットアップ、アーキテクチャ、デプロイ)とともに公開。

リソース