FCA Systems

PO BOX 1254
Cedar Park, TX 78613
512-910-5254‬
Free call
info@fcasys.com
Have any questions?

DevOps Tools for Java Developers – Best Practices from Source Code to Production Containers

DevOps Tools for Java Developers – Best Practices from Source Code to Production Containers by Stephen Chin, Melissa McKay, Ixchel Ruiz, Baruch Sadogursky. 344 pages (O’Reilly, 2022)

The book “DevOps Tools for Java Developers” attempts to cover the broad DevOps area. It starts with basic things like “What is DevOps?” and “What is Source Control?” and ends with stories about accidents that could have been avoided if the companies followed DevOps practices.

Table of contents:

Chapter 1: DevOps for (or Possibly Against) Developers

Chapter 2: The System of Truth

Chapter 3: An Introduction to Containers 

Chapter 4: Dissecting the Monolith

Chapter 5: Continuous Integration

Chapter 6: Package Management

Chapter 7: Securing Your Binaries

Chapter 8: Deploying for Developers

Chapter 9: Mobile Workflows

Chapter 10: Continuous Deployment, Patterns and Antipatterns

The first three chapters introduce DevOps history, Docker, and the basics of Git. They also briefly describe widely accepted source management flows such as Git Flow, GitHub Flow, GitLab Flow, and OpenFlow. The chapters are intended for beginners; if you have worked in the IT industry for a year or two, you can safely skip them. 

Chapter 4 is dedicated to a comparison of bare Spring Boot, Micronaut, Quarkus, and Heidon frameworks. It explains the tradeoff in balancing rapid startup times, keeping memory footprints at a minimum, and the complexity of packaging the application runtime.

Chapter 5 introduces Ant, Maven, and Gradle build tools. Chapter 6 uncovers how modern Dependency Management works, which metadata should be added to artifacts produced by the build tools mentioned earlier, and how to publish artifacts to Maven Local/Central, Nexus, and JFrog Artifactory.

Chapter 7 explains different methods to increase application security. You can become familiar with Static Application Security Testing, Dynamic Application Security Testing, Interactive Application Security Testing, Runtime Application Self-Protection, and Metrics. I suggest reading this because, based on my experience, numerous companies I have worked with may improve the quality of deliverables by carrying out security testing.

Chapter 8 teaches the reader about building and pushing container images, focusing on Kubernetes and related Google’s Jib, Dekorate, and Eclipse JKube tools. The chapter’s content unintentionally expects readers to have some prior knowledge of it, so if you are trying to comprehend it for the first time, additional sources of information may be required. In addition, it covers the basics of Monitoring, Logging, and Distributed Tracing and how they can be simplified with OpenTelemetry and Jaeger.

Chapter 9 is dedicated to mobile testing and the challenges developers encounter due to the various screen resolutions and OS versions available on Android devices. It explains how a company may perform continuous testing on parallel devices without maintaining its fleet by leveraging AWS Device Farm, Google Firebase Test Lab, and Microsoft Visual Studio App Center. 

The last chapter tells the stories and lessons learned about significant accidents that happened with Taylor Energy (2004),  UK Hospital (2017),  Equifax (2017), Intel (2018), CloudFare (2013, 2019, 2020), and Knight Capital (2012). It illustrated the changes introduced by Oracle to change Java release cadence and adoption and by Apple to unify the iOS App Store.

Despite the admirable attempt to cover the broad DevOps area, this book suffers from two significant flaws. The first one is the unclear intended audience. It claims, “Whether you’re a seasoned Java programmer who is new to the DevOps space, or a novice programmer keen to build on your existing knowledge about containers and Cloud,” the content falls somewhere in between. The book will need to provide more benefits for a seasoned developer who has already acquired experience working with CI/CD, considering the resources required to read it. For a new developer, it may be challenging because it tries to cover too much without building a solid foundation. The second flaw is that four authors and two co-authors wrote the relatively short book, and therefore, the writing style considerably varies from chapter to chapter. 

Conclusion:

Every book can teach you a new trick or refresh your memory, and “DevOps Tools for Java Developers” is no exception. You can get an overview of modern DevOps tools and practices. Still, due to inconsistent writing style and variable expected knowledge from a reader, it is difficult to recommend it to a particular audience. Ultimately, it is always up to a reader to invest the time or pass it in favor of something else. 

Leave a Reply

How can we help you?

For any inquiries, assistance, or feedback, please don’t hesitate to contact us.

See our gallery
Looking for a First-Class Consultant?