Book description
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
Publisher resources
Table of contents
- Forewords
- Preface
- 1. Continuous Delivery: Why and What
- 2. Evolution of Java Development
- 3. Designing Architecture for Continuous Delivery
- 4. Deployment Platforms, Infrastructure, and Continuous Delivery of Java Apps
- 5. Building Java Applications
- 6. Additional Build Tooling and Skills
- 7. Packaging Applications for Deployment
-
8. Working Locally (Like It Was Production)
- Challenges with Local Development
- Mocking, Stubbing, and Service Virtualization
- VMs: Vagrant and Packer
-
Containers: Kubernetes, minikube, and Telepresence
- Introducing the “Docker Java Shop” Sample App
- Building Java Applications and Container Images
- Deploying into Kubernetes
- Simple Smoke Test
- Building the Remaining Applications
- Deploying the Entire Java Application in Kubernetes
- Viewing the Deployed Application
- Telepresence: Working Remotely, Locally
- Pattern #4: Environment Leasing
- FaaS: AWS Lamba and SAM Local
- FaaS: Azure Functions and VS Code
- Summary
- 9. Continuous Integration: The First Steps in Creating a Build Pipeline
- 10. Deploying and Releasing from the Pipeline
-
11. Functional Testing: Correctness and Acceptance
- Why Test Software?
- What to Test? Introducing Agile Testing Quadrants
- Continuous Testing
- Turtles All the Way Down
- Synthetic Transactions
- End-to-End Testing
- Acceptance Testing
- Consumer-Driven Contracts
- Component Testing
- Integration Testing
- Unit Testing
- Dealing with Flaky Tests
- Testing Outside-In Versus Testing Inside-Out
- Putting It All Together Within the Pipeline
- How Much Testing Is Enough?
- Summary
- 12. System-Quality Attributes Testing: Validating Nonfunctional Requirements
- 13. Observability: Monitoring, Logging, and Tracing
- 14. Migrating to Continuous Delivery
- 15. Continuous Delivery and Continuous Improvement
- Index
Product information
- Title: Continuous Delivery in Java
- Author(s):
- Release date: November 2018
- Publisher(s): O'Reilly Media, Inc.
- ISBN: 9781491986028
You might also like
book
40 Algorithms Every Programmer Should Know
Learn algorithms for solving classic computer science problems with this concise guide covering everything from fundamental …
book
Software Engineering at Google
Today, software engineers need to know not only how to program effectively but also how to …
book
Head First Design Patterns, 2nd Edition
You know you don’t want to reinvent the wheel, so you look to design patterns—the lessons …
book
Modern Java Recipes
The introduction of functional programming concepts in Java SE 8 was a drastic change for this …