Share E-Book
Scan to open this page

Scan with your phone to open this page

Author: Abraham Marín-Pérez & Daniel Bryant

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

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...
View in text
Excerpt 2
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...
View in text
Excerpt 3
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...
View in text
Excerpt 4
SH to become available... ==> amazon-ebs: Connected to SSH! ==> amazon-ebs: Uploading ./scripts/welcome.txt => homeubuntu/ ==> amazon-ebs: Provisioning with...
View in text
Excerpt 5
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...
View in text
Excerpt 6
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...
View in text
Excerpt 7
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...
View in text
Excerpt 8
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...
View in text
Tags
AI categories
DevOpsJavaSoftware
Publish Year: 2018
Language: English
File Format: PDF
File Size: 7.2 MB
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

Generating text preview…