InfoQ Homepage Articles
-
Developing Transactional Microservices Using Aggregates, Event Sourcing and CQRS - Part 1
Developing transactional business applications using the microservice architecture is challenging, because domain models, transactions and queries are resistant to functional decomposition. This article describes a way to develop microservices that solves these problems by using Domain Driven Design, Event Sourcing and Command Query Responsibility Segregation (CQRS).
-
Ways to Make Code Reviews More Effective
Performing Code Reviews helps to increase code quality, share knowledge and responsibility, and build better software and a better team. However, the big question remains – what is it we should be looking for? There are a lot of different things to consider. This article will list a wide range of items to check, and drill a little deeper into two specific areas: performance and security.
-
An Open API Initiative Update
The Open API Initiative group is evolving what has become the de-facto standard API Description Format to produce a consistent and compatible format for describing APIs, allowing interoperation between tooling, systems, and runtime environments. Tony Tam, creator of the popular Swagger Specification is providing an update on the group activity.
-
When Feature Flags Go Wrong
Feature flags can superpower development, allowing faster features. But they can also be the worst kind of technical debt if misused or mismanaged. This article walks us through some horror stories of feature flags gone bad, and lessons learned.
-
On Abstractions and For-Each Performance in C#
Donald Knuth famously said, “We should forget about small efficiencies, say about 97% of the time”. But when faced with the other 3%, it is good to know what’s going on behind the scenes. So in this article we’ll be taking a dive into the foreach loop.
-
Traffic Data Monitoring Using IoT, Kafka and Spark Streaming
Internet of Things (IoT) is an emerging disruptive technology and becoming an increasing topic of interest. One of the areas of IoT application is the connected vehicles. In this article we'll use Apache Spark and Kafka technologies to analyse and process IoT connected vehicle's data and send the processed data to real time traffic monitoring dashboard.
-
RXJava by Example
In the ongoing evolution of paradigms for simplifying concurrency under load, the most promising addition is reactive programming, a specification that provides tools for handling asynchronous streams of data and for managing flow-control, making it easier to reason about overall program design. In this article we overcome the learning curve with a gentle progression of examples.
-
Q&A: Relevant Search with Elasticsearch and Solr
In their book "Relevant Search", Doug Turnbull and John Berryman focus on the challenge of providing search results by balancing the needs and intents of the user. Using Elasticsearch and Solr, relevance engineers can constantly tune the needs of the business vs. the needs of the user.
-
Big Data Processing with Apache Spark - Part 5: Spark ML Data Pipelines
With support for Machine Learning data pipelines, Apache Spark framework is a great choice for building a unified use case that combines ETL, batch analytics, streaming data analysis, and machine learning. In this fifth installment of Apache Spark article series, author Srini Penchikala discusses Spark ML package and how to use it to create and manage machine learning data pipelines.
-
Standardizing Requirements Descriptions on Scrum Projects for Better Development and Testing Quality
Standardizing requirements descriptions on Scrum projects benefit development and testing quality. Without standardizing, the project may suffer. Standardizing requirements descriptions provides a minimum of eight benefits from requirements descriptions unification, which in turn positively affects testing and makes management of ongoing changes in requirements easier with the help of tools.
-
CQRS for Enterprise Web Development: What's in it for Business?
With a focus on the business case for a CQRS architecture, this article covers the core concepts of Command Query Responsibility Segregation, and contrasts them with a common, n-tier architecture. Benefits including scalability and maintainability are highlighted, which can reduce the total cost of ownership, and lead to an improved return on investment when choosing a CQRS architecture.
-
Java 9, OSGi and the Future of Modularity (Part 1)
The flagship feature of Java 9 will be the new Java Platform Module System (JPMS). Given the maturity of OSGi there were technical, political and commercial reasons why another Java module system will soon exist. In this article we compare the two from a technical perspective and see how JPMS and OSGi can work together.