Persistence and Distribution

Focus On: Distributing Computing and Persistence

Next date:

Language: English

Price: 357€ (19% MwSt. [VAT] included)

Our goal is to choose an appropriated distributed / persistence architecture and technology for the challenge.

Prerequisites

Java EE knowledge or attendance at the Bootstrap workshop. Java EE Architecture workshop attendance or comparable skills are recommended.

Goals / Topics

CAP and FLP explained
Synchronous and asynchronous communication styles and protocols
NoSQL inside out: why we sometimes have to use it
JPA / RDBMS limitations and solutions
The foundation, or dissecting the Amazon's Dynamo: Consistent Hashing, Vector Clocks, Merkle trees, Gossip and Read Repairs
Threading, concurrency and Java EE
Persisting objects and structures with and without JPA
Impact of Java 8 and Lambdas on JavaEE architecture
Serialization, Externalization and optimizations
Binary protocols vs. HTTP and REST
Object oriented vs. record based persistence
Why home-grown persistence framework implementation is challenging (impossible?)
Introduction to Java EE with focus on persistence
What is map-reduce? Samples and use cases.
Domain Driven vs. Service Oriented applications
Integration of NoSQL databases
Cassandra
JCache and In-memory grids
Infinispan (JBoss Cache)
Hazelcast
Principles: ACID, BASE, Consistent Hashing, Copy On Write, Lazy / Eager Loading, Optimistic / Pessimistic Locking
Typesafe vs. "fluid" schemas
Schema and database evolution
Clustering, replication, distribution and invalidation
Caching strategies and implementations
Normalization vs. denormalization and redundancies as best practice
Performance and memory optimizations
Unit- and Integration Testing with and without mocks
Persistence Patterns
Interesting, but proprietary vendor extensions
New Java EE 7 Features
...prepare some questions!

In this advanced workshop we will code the samples, not a whole end-to-end application. I will also prepare some samples in advance. As a reference, you will get a GIT repository with all samples and solutions, as well as prepared sample applications. Also a GIT repository is going to be used throughout our course, so you will be able to synchronize your projects at any time. (ZIP snapshots will be available as well in nearly real time:-))

You will need a modern developer laptop with pre-installed JDK 1.8, GIT-client, and ideally Maven 3 to get the most from this workshop. We will install the rest of the environment together in the first 10 minutes.

We will spend 60% of the time with code and the remaining part discussing best practices, hacks and workarounds.

Feel free to contact me / register via email: workshops[-AT-]adam-bien.com

Registration