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
- 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
- JCache and In-memory grids
- Infinispan (JBoss Cache)
- 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