← All courses

Training

Advanced Java Training

Advanced Java Training

Microservices, Streaming Systems, and MCP Servers - Build production-grade JVM services that are fast, observable, secure, and AI-toolable - 2 days

This is a two-day, full-throttle build course for engineers who already live comfortably in Java and Linux and now need to deliver modern backend systems that can survive real traffic, real attackers, and real operational constraints.

You’ll work at the level where “it works” is meaningless unless it is measurable, resilient, secure-by-default, and automatable. The curriculum assumes you’re shipping software, not studying it: we’ll focus on decisions you must make under pressure, service boundaries, concurrency models, API contracts, streaming semantics, failure handling, and security posture, and we’ll connect it all to today’s reality of AI-assisted tooling through MCP server development.

The instructor has 30+ years of industry experience and will teach using real, industry-demanded patterns and constraints, not academic exercises.

Learning outcomes

By the end of this 2-day intensive, participants will be able to:

  • Design and implement Java 21 microservices on Linux with clear boundaries, explicit contracts, and production-ready defaults.
  • Build and harden MCP servers (Java) that expose tools/resources safely to LLM clients, with transport, auth, and operational controls.
  • Implement high-throughput streaming data pipelines with correct semantics (ordering, retries, backpressure, idempotency, DLQs).
  • Create robust endpoint layers (REST and event-driven APIs) with validation, versioning, pagination, error models, and compatibility strategies.
  • Apply modern security architecture: OAuth2/OIDC, JWT validation, mTLS, secrets management, least privilege, and abuse-resistant designs.
  • Engineer for production: observability, capacity planning, performance profiling, resilience patterns, and safe deployments on Linux.

Prerequisites (mandatory)

Participants must already be able to:

  • Write and debug non-trivial Java services without assistance (JVM internals familiarity strongly recommended).
  • Use Linux fluently: networking tools, systemd basics, process/FD inspection, cgroups/container fundamentals, shell proficiency.
  • Be comfortable with: HTTP, TLS, JSON, concurrency, basic distributed systems concepts, Git, and CI workflows.
  • Have prior exposure to microservices and messaging (Kafka/Pulsar/RabbitMQ equivalent concepts).
  • Bring a working Java 21 Linux environment with: build tooling (Maven/Gradle), containers (Docker/Podman), and an IDE/editor.

Training outline (2-day intensive)

  1. Course rules, delivery standards, and grading gates
    1. Non-negotiable engineering standards
      1. Deterministic builds
      2. Repeatable local environment
      3. No “works on my machine” dependencies
      4. Explicit configuration and defaults
    2. Output requirements for every deliverable
      1. API contract completeness
      2. Threat model notes
      3. Observability baseline
      4. Performance baseline
      5. Runbook readiness
    3. Disqualifying failures
      1. Insecure defaults
      2. Missing validation or broken error models
      3. No metrics/traces/log correlation
      4. Non-idempotent consumers without justification
  2. Java 21 foundations used as production tools (not trivia)
    1. Language and runtime features that change service design
      1. Records as contract carriers and boundary objects
      2. Sealed types for constrained domain modeling
      3. Pattern matching usage for safer dispatch paths
    2. Concurrency in modern Java services
      1. Virtual threads: where they help, where they hurt
      2. Structured concurrency (conceptual model, adoption constraints)
      3. Thread-per-request vs reactive pipelines: decision framework
      4. Synchronization and contention hotspots in real services
    3. JVM performance and reliability essentials
      1. GC selection and service-level implications
      2. Warmup, JIT behavior, and latency cliffs
      3. Allocation discipline for high-throughput endpoints
      4. Safe timeouts, cancellation, and resource cleanup patterns
  3. Linux-first service operation model
    1. Process, memory, and file descriptor discipline
      1. ulimit strategy and failure modes
      2. ephemeral port exhaustion patterns
      3. diagnosing blocked threads and stalled IO
    2. Systemd as a real deployment target (even when using containers)
      1. unit design for services
      2. health signaling
      3. logging integration
      4. restart policy correctness
    3. Container runtime realities
      1. cgroups CPU/memory constraints and JVM tuning implications
      2. immutable images, minimal attack surface
      3. configuration injection patterns
  4. Microservices architecture that doesn’t collapse under change
    1. Service boundary definition under real constraints
      1. domain boundaries and coupling controls
      2. shared libraries vs shared schemas vs shared services
      3. dependency direction rules and “no cycles” enforcement
    2. Communication patterns and trade-offs
      1. synchronous (HTTP/gRPC) vs asynchronous (events/streams)
      2. fan-out strategies and failure amplification control
      3. data consistency and correctness strategy selection
    3. Data ownership and schema evolution
      1. contract-first thinking
      2. backward/forward compatibility policies
      3. migration patterns that avoid flag days
  5. Endpoint engineering: “works” is not a spec
    1. REST endpoint design (production-grade)
      1. resource modeling and consistent naming
      2. pagination, filtering, sorting, and query complexity limits
      3. partial responses and field projections
      4. versioning strategies and deprecation mechanics
    2. Request/response correctness
      1. validation layers and error taxonomy
      2. idempotency keys and replay handling
      3. correlation IDs and request provenance
      4. rate limiting, quotas, and abuse resistance
    3. Input/output safety
      1. canonicalization rules
      2. payload size limits
      3. content-type enforcement
      4. safe serialization practices
    4. High-performance endpoint implementation patterns
      1. concurrency model selection per endpoint type
      2. timeout budgets and deadline propagation
      3. backpressure approaches for overloaded systems
  6. Streaming data systems
    1. Streaming fundamentals that matter in production
      1. ordering guarantees and partitioning strategy
      2. consumer group design and scaling dynamics
      3. offset management and replay strategy
    2. Delivery semantics and correctness
      1. at-most-once / at-least-once / effectively-once goals
      2. idempotent processing and deduplication strategies
      3. transactional outbox and inbox patterns
    3. Resilience in stream processing
      1. retry policies and poison message handling
      2. DLQ design and operational workflow
      3. backpressure and load shedding
    4. Schema management and evolution
      1. schema registry approaches
      2. compatibility rules and enforcement
      3. event versioning and translator patterns
    5. Observability for streams
      1. lag, throughput, error rates, DLQ volume
      2. per-key hotspots and partition skew diagnosis
  7. Security architecture: default-deny engineering
    1. Threat modeling as an engineering input
      1. attack surface inventory per service
      2. trust boundaries and data classification
      3. abuse cases for endpoints and streaming consumers
    2. Authentication and authorization
      1. OAuth2/OIDC concepts applied to microservices
      2. JWT validation correctness (audience, issuer, clock skew, rotation)
      3. scopes/roles/claims mapping to authorization decisions
      4. service-to-service auth patterns
    3. Transport and service identity
      1. TLS/mTLS basics for production deployments
      2. cert rotation strategies
      3. zero-trust posture for internal networks
    4. Secrets management
      1. environment vs file mounts vs secret stores
      2. rotation and blast-radius reduction
      3. least privilege configuration
    5. API security controls
      1. input validation hardening
      2. rate limiting and bot resistance
      3. safe error reporting (no data leaks)
    6. Supply chain and runtime hardening
      1. dependency controls and signing posture
      2. container image hardening and minimal base images
      3. runtime permissions, seccomp/apparmor concepts
  8. MCP server development in Java (core module)
    1. MCP mental model for backend engineers
      1. servers, clients, sessions, transports
      2. tools vs resources vs prompts (capability boundaries)
      3. capability discovery and contracts
    2. MCP server architecture and service layering
      1. protocol layer vs domain layer separation
      2. tool execution model and cancellation/timeout handling
      3. deterministic outputs and safe error models
    3. Transport strategies (Linux-first operational view)
      1. stdio transport for local/agent integrations
      2. HTTP-based transports for networked deployment
      3. lifecycle management, keepalive, and shutdown correctness
    4. Authorization and access control for MCP
      1. token handling boundaries
      2. scoping access to tools/resources
      3. per-tool authorization rules and auditing
    5. Security risks specific to MCP-style tool servers
      1. tool chaining risk containment
      2. prompt injection-aware design constraints
      3. filesystem/network access minimization
      4. safe argument handling and validation discipline
    6. Observability and governance for MCP servers
      1. tool invocation logging with redaction
      2. per-tool metrics (latency, failures, volume)
      3. trace correlation with upstream requests
      4. audit trails and retention considerations
    7. Packaging and distribution
      1. versioning and compatibility commitments
      2. configuration profiles per environment
      3. running as a Linux service (systemd/container)
    8. Reliability engineering for MCP servers
      1. isolation of tool execution
      2. concurrency caps and queueing strategy
      3. circuit breakers for downstream dependencies
      4. safe degradation and “deny-by-default” behavior
  9. Microservices + streaming + MCP: composing systems without creating chaos
    1. Exposing microservice capabilities as MCP tools safely
      1. tool granularity and permission design
      2. rate limiting and quota enforcement for tools
      3. preventing “LLM as a traffic amplifier” failure modes
    2. Event-driven tool workflows
      1. tools that publish events vs tools that query state
      2. ensuring idempotency and auditability
    3. Data access strategy
      1. MCP resources as read-only surfaces where possible
      2. write operations with explicit confirmations and constraints
      3. segregation of duties between read and write capabilities
  10. Observability: if you can’t see it, you don’t own it
    1. Logging that supports incident response
      1. structured logging discipline
      2. correlation IDs and trace propagation
      3. redaction rules and sensitive fields handling
    2. Metrics that answer operational questions
      1. golden signals (latency, traffic, errors, saturation)
      2. endpoint-level and consumer-level SLIs/SLOs
      3. business and domain metrics separation
    3. Distributed tracing
      1. span modeling and cardinality discipline
      2. sampling strategy and tail-based considerations
    4. Alerting and runbooks
      1. alert design to avoid noise
      2. escalation paths and triage steps
  11. Resilience and correctness under failure
    1. Timeouts and retries
      1. retry budgets and exponential backoff discipline
      2. jitter and thundering herd avoidance
      3. distinguishing retryable vs non-retryable failures
    2. Circuit breakers, bulkheads, and load shedding
      1. protecting dependencies and self-protection
      2. per-endpoint concurrency caps
    3. Data correctness under partial failure
      1. compensating actions
      2. saga patterns (or alternatives) with clear invariants
    4. Chaos and fault injection mindset
      1. failure mode inventory
      2. dependency outage behavior guarantees
  12. Testing strategy for production systems
    1. Contract tests and compatibility enforcement
      1. consumer-driven contracts for endpoints
      2. event schema compatibility gates
    2. Integration testing with real dependencies
      1. ephemeral environments
      2. deterministic test data and cleanup strategy
    3. Performance testing essentials
      1. latency percentiles and tail behavior
      2. soak testing and resource leak detection
    4. Security testing essentials
      1. authz bypass checks
      2. input fuzzing mindset
      3. dependency vulnerability response workflow
  13. Delivery engineering: ship fast without breaking everything
    1. Build and release discipline
      1. reproducible builds and artifact provenance
      2. versioning and changelog expectations
    2. Configuration management
      1. environment-specific config without code forks
      2. safe defaults and explicit overrides
    3. Deployment strategies
      1. rolling, blue/green, canary basics
      2. rollback safety and DB migration discipline
    4. Operational readiness checklist
      1. dashboards, alerts, runbooks
      2. on-call handoff quality bar
      3. post-incident learning loop

Practical, connected learning

My wider training approach brings hands-on implementation and systems thinking together, connecting technology with real operational needs.