InfoQ Homepage Programming Content on InfoQ
-
Turning a Node.js Monolith into a Monorepo without Disrupting the Team
Splitting monoliths into services creates complexity in maintaining multiple repositories (one per service) with separate (yet interdependent) build processes and versioning history. Monorepos have become a popular solution to reduce that complexity.
-
Shift Left Approach for API Standardization
Descriptions about API standardization using common tools like OpenAPI and Zally, to simplify re-use across microservices between teams. Reviews against best practices such as an API stylebook and guidelines from Microsoft and Google.
-
Moving Kafka and Debezium to Kubernetes Using Strimzi - the GitOps Way
Deploying an Apache Kafka cluster to a Kubernetes is not an easy task. There are a lot of pieces to configure like the zookeeper, the Kafka cluster, topics, and users. Strimzi is a Kubernetes controller making the deployment process of Kafka a child game. Moreover, Strimzi lets you manage Kafka using GitOps methodology as everything is executed using a Kubernetes YAML file.
-
Moldable Development: Guiding Technical Decisions without Reading Code
Developers spend most of their time reading code. Moldable Development challenges reading as a means to gather information from the system, by creating custom tools that show the problem in a way that makes it comfortable to understand. The solution typically follows quickly afterward. Glamorous Toolkit is a moldable development environment designed to decrease the cost of custom tools.
-
InfoQ .NET Trends Report 2022
Every year, all InfoQ editors invite seasoned developers and practitioners from the industry to discuss the current trends in the entire software development landscape. In this article, we discuss some of the .NET Trends for 2022, divided into four stages of adoption.
-
Virtual Threads: New Foundations for High-Scale Java Applications
Virtual threads are a lightweight implementation of Java threads, delivered as a preview feature in Java 19. They dramatically reduce the effort of writing, maintaining, and observing high-throughput concurrent applications. Virtual threads breathe new life into the familiar thread-per-request style of programming, allowing it to scale with near-optimal hardware utilization.
-
AutoML: the Promise vs. Reality According to Practitioners
Automation to improve machine learning projects comes from a noble goal, but true end-to-end automation is not available yet. As a collection of tools, AutoML capabilities have proven value but need to be vetted more thoroughly. Findings from a qualitative study of AutoML users suggest the future of automation for ML and AI rests in the ability for us to realize the potential of AutoMLOps.
-
Java Champion James Ward on the State of Java and JVM Languages
James Ward is a Java Champion and Google’s Kotlin product manager. In a podcast, Ward agreed that “people are still trapped in the Java world” and called default mutability in Java the “trillion-dollar mistake”. In this interview, he speaks about the state of Java, JVM languages, mutability, and functional programming.
-
How to Speed up Large Collections Processing in Java
A review on Java performance for many objects using Java Collections or alternative collections, with the impact of serial vs. parallel streams. For some streaming data sets, parallel processing can be slower than the default.
-
Chipping Away at the Monolith: Applying MVPs and MVAs to Legacy Applications
Legacy applications actually benefit the most from concepts like a Minimum Viable Product (MVP) and its related Minimum Viable Architecture (MVA). Once you realize that every release is an experiment in value in which the release either improves the value that customers experience or doesn’t, you realize that every release, even one of a legacy application, can be thought of in terms of an MVP.
-
Debezium and Quarkus: Change Data Capture Patterns to Avoid Dual-Writes Problems
It’s common in microservices to write data in two places, a database and then send the content to another microservice. One approach to tackle this problem is dual writes, but you may lose data because of concurrent writes. Debezium is an open-source project for change data capture using the log scanner approach to avoid dual writes and communicate persisted data correctly between services.
-
Data Manipulation with Functional Programming and Queries in Ballerina
Ballerina has been designed as a data-oriented programming language and supports a functional programming coding style. The Ballerina query language is similar to SQL in the sense that a query expression is made up of clauses. The Ballerina “Table” data structure can be more effective than maps in representing indexed data collections.