Our goal is to choose an appropriated distributed / persistence architecture and technology for the challenge.
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
- The foundation, or dissecting the Amazon's Dynamo: Consistent Hashing, Vector Clocks, Merkle trees, Gossip and Read Repairs
- NoSQL inside out: why we sometimes have to use it
- JPA / RDBMS limitations and solutions
- Work stealing, leasing with and without JavaEE
- 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
- JPA usecases, samples and scenarios
- Column and row based stores
- What is map-reduce? Samples and use cases.
- Domain Driven vs. Service Oriented applications
- Integration of NoSQL databases
- Oracle NoSQL Database (KV Store)
- Distributed and persistent caches
- Infinispan (JBoss Cache)
- Principles: ACID, BASE, Consistent Hashing, Copy On Write, Lazy / Eager Loading, Optimistic / Pessimistic Locking
- JPA features and caveats
- Queries, mapping, and relations
- 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
- Declarative vs. programmatic queries
- Performance and memory optimizations
- JPA in managed and unmanaged environments
- 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.7, 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