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
Hands-On Software Architecture with Java
Build robust and scalable Java applications by learning how to implement every aspect of software architecture …
book
Modern Java Recipes
The introduction of functional programming concepts in Java SE 8 was a drastic change for this …
book
Optimizing Java
Performance tuning is an experimental science, but that doesn’t mean engineers should resort to guesswork and …
book
Cloud Native Java
What separates the traditional enterprise from the likes of Amazon, Netflix, and Etsy? Those companies have …