With the rise of DevOps, low-cost cloud computing, and container technologies, the way Java developers approach development today has changed dramatically. This practical guide helps you take advantage of microservices, serverless, and cloud native technologies using the latest DevOps techniques to simplify your build process and create hyperproductive teams. Stephen Chin, Melissa McKay, Ixchel Ruiz, and Baruch Sadogursky from JFrog help you evaluate an array of options. The list includes source control with Git, build declaration with Maven and Gradle, CI/CD with CircleCI, package management with Artifactory, containerization with Docker and Kubernetes, and much more. Whether you're building applications with Jakarta EE, Spring Boot, Dropwizard, MicroProfile, Micronaut, or Quarkus, this comprehensive guide has you covered.
“DevOps Tools for Java Developers” starts with an overview of DevOps. They note that it was invented by ops and a response to evolving pressures. I had read the source material for this assertion and didn't notice that at the time. However looking back, they were from an ops point of view.
I also like that the book covers early on why there is no such thing as a DevOps Engineer and why a DevOps department is bad. While I agree, there are lots of DevOps teams and job postings out there. So balance philosophy and reality in your job search. Luckily, the book is solidly on the side of practically/reality. The intro to the SRE (site reliability engineer) provide a good list of concepts. And all that was in chapter one!
The rest of the chapters cover specific topics. For example, source control is chapter two. The authors don't assume existing knowledge (ex: history/benefits of source control). They are also up to date (ex: git switch). There's even something for advanced readers (ex: detailed description of various git flows).
In some chapters, a variety of tools got covered. I particularly liked the overview of Micronaut and Quarkus. I also appreciated that Ant, Maven and Gradle all got included. The analogy in chapter 10 about identify/fix/deploy time compared to an oil spill was awesome.
There were boxes for best practices throughout the book. My favorite was why people are stuck on Java 8 and the comparison to an app store where you get “latest.”
Each chapter says who it is written by. Despite the four authors, the book feels cohesive. While there were some differences (ex: “I” was used more in one place), it wasn't distracting.
A received a free copy of this book from the publisher in exchange for writing this review.
Easy to read, actual, and totally recommended for the Engineering managers, QA, Developers who are unfamiliar with DevOps tools. Book uncovers the history of each tool and answers Why questions. Book contains not only the tools description but have examples to be followed.
Although I can't say I found this book deep technical or consider it as smth I would get back to re-read. But it definitely walks through tooling required to know by everyone in the engineering space.
Not a bad read at all. I derived most value from the maven plugin explanations that were used for Docker and Kubernetes integration with Quarkus framework. Also decent coverage of DevOps Tools - automation, CI, CD etc. This would be good complimentary read to Google SRE book.
For Java developers adopting DevOps practices, key tools to consider from source code to production containers include: Jenkins for CI/CD pipelines, Gradle for build automation, SonarQube for code quality analysis, Docker for containerization, Kubernetes for container orchestration, and tools like Ansible or Chef for infrastructure management; ensuring smooth development, testing, and deployment processes across environments. Breakdown of key tools and their functions: Source Code Management (SCM): Git: The industry standard for version control, enabling collaborative code development and tracking changes. Build Automation: Gradle: A popular Java build tool, providing flexible build configurations and efficient dependency management. Maven: Another widely used Java build tool, with a large plugin ecosystem. Code Quality Analysis: SonarQube: Analyzes code for potential issues like security vulnerabilities, code smells, and complexity, providing detailed reports. Continuous Integration (CI): Jenkins: A highly customizable CI/CD server, enabling automated build, testing, and deployment pipelines. Unit Testing Frameworks: JUnit: A standard Java testing framework for writing unit tests. TestNG: Another popular testing framework with advanced features like parameterization and parallel testing. Containerization: Docker: Tool to build, package, and deploy applications as self-contained containers. Container Orchestration: Kubernetes: Platform for managing containerized applications across clusters, providing scalability and fault tolerance. Infrastructure Management: Ansible: A declarative configuration management tool, enabling automated provisioning and deployment across servers Chef: Another popular configuration management tool with a focus on infrastructure automation Best Practices: Integrate DevOps tools early: Incorporate tools like SonarQube and unit testing frameworks into the development workflow to catch issues early. Standardized pipeline: Create a consistent CI/CD pipeline with clear stages for building, testing, and deployment across environments. Infrastructure as Code (IaC): Use configuration management tools to define infrastructure configurations in code for repeatable deployments. Monitoring and Logging: Implement robust monitoring systems to track application performance and identify potential issues. Continuous feedback loop: Encourage collaboration between developers and operations teams to quickly address issues and improve the overall system.