Continuous delivery adds enormous value to the business and the entire software delivery lifecycle, but adopting this practice means mastering new skills typically outside of a developer’s comfort zone. In this practical book, Daniel Bryant and Abraham Marín-Pérez provide guidance to help experienced Java developers master skills such as architectural design, automated quality assurance, and application packaging and deployment on a variety of platforms.
Not only will you learn how to create a comprehensive build pipeline for continually delivering effective software, but you’ll also explore how Java application architecture and deployment platforms have affected the way we rapidly and safely deliver new software to production environments.
Get advice for beginning or completing your migration to continuous delivery
Design architecture to enable the continuous delivery of Java applications
Build application artifacts including fat JARs, virtual machine images, and operating system container (Docker) images
Use continuous integration tooling like Jenkins, PMD, and find-sec-bugs to automate code quality checks
Create a comprehensive build pipeline and design software to separate the deploy and release processes
Explore why functional and system quality attribute testing is vital from development to delivery
Learn how to effectively build and test applications locally and observe your system while it runs in production
AI Reading Assistant
Whole-book reading guide from stratified index samples; jump to passages in the text
Tip the Site
Support this siteYour recognition and a small knowledge-service contribution help keep this technical work open source.Scan the WeChat Pay or Alipay code below. Logged-in and guest visitors can both tip.
WeChat Pay
Alipay
Open WeChat or Alipay and scan. No login required.
AI guide
【One-Line Pitch】
A practical field guide for experienced Java developers who need to move beyond writing code and own the whole path to production—architecture, build pipelines, packaging, testing, and deployment. Read it if you want to make releases boring, safe, and frequent.
【Book Arc】
- **Opening (~0%–10%)**: Frames continuous delivery as a business and lifecycle concern, then lays the CI foundation—version control, branching strategies (trunk-based, feature branching, Gitflow), code review, and the anatomy of a pipeline from unit tests through acceptance and user acceptance testing.
- **Early (~10%–30%)**: Shifts to architecture, arguing that loosely coupled, highly cohesive, observable services make CD tractable; covers microservices impacts on pipelines and the learning curves of PaaS and FaaS/serverless platforms.
- **Middle (~30%–55%)**: Gets hands-on with the toolchain—JVM build tools (Maven, Gradle, Bazel-style monorepo tools, SBT, Leiningen, Make), dependency management and "dependency hell," artifact packaging (fat JARs, WARs, Spring Boot), and machine/container image creation with tools like Packer.
- **Late (~55%–85%)**: Moves into quality assurance and the deploy/release split—functional and system quality attribute testing (performance, load, soak, scalability, security scanning), plus controlled failure and chaos-style testing in the pipeline.
- **Ending (~85%–100%)**: Closes on running and observing systems in production—local build/test workflows, monitoring, metrics, and APM adapted to distributed services. (Excerpts do not cover the final chapters in detail.)
【Key Takeaways】
- **CD is a lifecycle discipline, not a tool** (Opening): it spans version control, review, build, test, and deploy—each stage must be automated and gated.
- **Branching strategy is a deliberate choice** (Opening): trunk-based development, feature branching, and Gitflow each trade off integration speed against isolation; there is no one-size-fits-all answer.
- **Architecture determines CD feasibility** (Early): loose coupling, high cohesion, and observability make services easier to test, diagnose, and deploy independently.
- **Microservices multiply pipeline complexity** (Early): multiple pipelines, orchestrated deployments, service virtualization, version compatibility, and adapted monitoring all become new concerns.
- **Modern platforms impose learning curves** (Early): PaaS sandboxes restrict runtime and OS access, while FaaS demands event-driven, asynchronous thinking—budget for this.
- **Builds should be deterministic** (Middle): version ranges and "dependency hell" undermine reproducibility; pin versions and treat artifacts as immutable.
- **Packaging choices matter** (Middle): fat JARs, WARs, VM images, and Docker images each suit different deployment targets and pipeline stages.
- **Test beyond functionality** (Late): acceptance tests must validate nonfunctional attributes—reliability, performance, scalability, and security—and simulate failure in a controlled way.
【Reading Tips】
- Deep-read the architecture and pipeline-design chapters; skim the CLI/tool walkthroughs (ls, curl, Maven snippets) if you already know them.
- Treat the tool sections as a menu, not a checklist—pick the build tool, artifact format, and platform that match your stack.
- Pay closest attention to the deploy/release separation and quality-attribute testing; these are the concepts most often skipped in practice.
- Keep a notebook of "learning curve" warnings for PaaS/FaaS before committing your team to a platform.
【Coverage Limits】
This guide is synthesized from stratified excerpts covering roughly the first half of the book; later production-observability and advanced pipeline chapters are only lightly represented.
Page 13
anching Strategy f. Code Reviews i. What to Look For ii. Automation: PMD, Checkstyle, and FindBugs iii. Reviewing Pull Requests g. Automating Builds Revision...
nk of testing this type of failure, the Netflix Simian Army and Chaos Monkeys jump to mind; however, this type of testing is typically conducted within produ...
rministic; the resulting artifact from two identical builds (even those built some time apart) should be identical. You will explore some of the challenges w...
SH to become available... ==> amazon-ebs: Connected to SSH! ==> amazon-ebs: Uploading ./scripts/welcome.txt => homeubuntu/ ==> amazon-ebs: Provisioning with...
nt Options: --help Show this message and exit. Commands: api Generates a sample Amazon API Gateway event dynamodb Generates a sample Amazon DynamoDB event ki...
Check, implementing the check() method; this is done in the BasicHealthCheck class, which is shown in Example 10-4. (In this case, the check simply returns t...
e expected right answer is not always known before the test. However, this does not mean that the tests aren’t important, since failing to address these ques...
ss and the delivery of the required business functionality. However, it is equally important to ensure that the system is reliable and scalable, and that the...
Support this siteYour recognition and a small knowledge-service contribution help keep this technical work open source.
Scan the WeChat Pay or Alipay code below. Logged-in and guest visitors can both tip.
WeChat PayAlipay
Open WeChat or Alipay and scan. No login required.
Add Tag
Enter tag name (max 50 characters)
Share E-Book
Continuous Delivery in Java (Abraham Marín-Pérez Daniel Bryant)(Z-Library)
Scan QR code with your phone to access
Copy the link or scan the QR code to access this e-book on your phone
Share E-Book via Email
Please enter email address
Donation Statistics
¥.00
Total Donations
0
Donation Count
Continuous Delivery in Java (Abraham Marín-Pérez Daniel Bryant)(Z-Library)
Find Your Favorite Books
Only registered users can comment after logging in. Comments need to be reviewed by administrators before being displayed
Loading comments...
Reply to Comment
Edit Comment