Hear from the Spring team this January at SpringOne. >
close

Marcin Grzejszczak

Marcin Grzejszczak

Spring Cloud Sleuth / Contract / Pipelines

Warsaw, Poland

Author of "Mockito Instant" and "Mockito Cookbook" books. Contributor to several open source projects (including Rest-assured, Drools, Moco, Mockito). Co-author of the Groovy @Builder, "micro-infra-spring", "AccuREST" open source solutions. Author of Uptodate Gradle plugin, Spock subjects-collaborators extension and gradle-test-profiler open source projects. Co-founder of the Warsaw Groovy User Group. Currently working on the Spring Cloud project.
Blog Posts by Marcin Grzejszczak

Observability with Spring Boot 3

The Spring Observability Team has been working on adding observability support for Spring Applications for quite some time, and we are pleased to inform you that this feature will be generally available with Spring Framework 6 and Spring Boot 3!

What is observability? In our understanding, it is "how well you can understand the internals of your system by examining its outputs". We believe that the interconnection between metrics, logging, and distributed tracing gives you the ability to reason about the state of your system in order to debug exceptions and latency in your applications. You can watch more about what we think observability is in this episode of Enlightning with Jonatan Ivanov.

Read more...

Spring Cloud Sleuth OpenTelemetry (OTel) 1.1.0 Has Been Released

On behalf of the community, I am pleased to announce that the release of the Spring Cloud Sletuh OTel 1.1.0 project is available today. The release can be found in Maven Central. You can check out the reference documentation for more information.

What is this?

Spring Cloud Sleuth OTel is an extension project to Spring Cloud Sleuth that comes with an OpenTelemetry tracer.

As always, we welcome feedback on GitHub, on Gitter, on Stack Overflow, or on Twitter.

To get started with Maven with a BOM (dependency management only):

Read more...

Spring Cloud 2022.0.0-M2 (codename Kilburn) Has Been Released

On behalf of the community, I am pleased to announce that the Milestone 2 (M2) of the Spring Cloud 2022.0.0 Release Train is available today. The release can be found in Spring Milestone repository. You can check out the 2022.0 release notes for more information.

Notable Changes in the 2022.0.0-M2 Release Train

See the project page for all the issues and pull requests included in this release.

Spring Cloud 2022.0.0-M2 is compatible with Spring Boot 3.0.0-M2.

Spring Cloud Stream

  • Both Kafka and RabbitMQ binders for Spring Cloud Stream have been migrated as part of the core Spring Cloud Stream repository. With this change, Spring Cloud Stream now follows a mono-repo approach where all the framework-related codebase for Spring Cloud Stream is now part of a single repository. See more details here for the Kafka binder and here for the RabbitMQ binder. We recommend filing new feature requests and bug reports for Kafka and RabbitMQ binders in the core repository.
  • Introduced initial support for a new reactive Kafka binder based on Reactor Kafka. This support contains consumer and producer bindings using Reactor Kafka behind the scenes. See this issue for more details.
  • Also, given we’ve been relying on the new test binder for 3+ years now we have also removed the old test modules
Read more...

Spring Cloud Sleuth 3.1.0 is out!

With the release of the Spring Cloud 2021.0.0 (aka Jubilee) release train we’re more than happy to announce the general availability of Spring Cloud Sleuth 3.1.0. In this blog post we’ll describe the most notable released features.

Here is the list of most notable features, we’ll elaborate on them in the subsequent parts of this post.

Read more...

Spring Cloud 2021.0.0-RC1 (codename Jubilee) Has Been Released

On behalf of the community, I am pleased to announce that the Release Candidate 1 (RC1) of the Spring Cloud 2021.0 Release Train, codename Jubilee, is available today. The release can be found in Spring Milestone repository. You can check out the 2021.0 release notes for more information.

Notable Changes in the 2021.0 Release Train

RC1 is compatible with Spring Boot 2.6.0-RC1

See the project page for all the issues and pull requests included in this release.

Spring Cloud Commons

  • Adds support for per LoadBalancer client properties. (issue)
  • Adds X-Forwarded-* headers when using load-balanced RestTemplate. (issue)
Read more...

Spring Cloud 2020.0.3 (aka Ilford) Is Available

On behalf of the community, I am pleased to announce that Service Release 3 of the Spring Cloud 2020.0 Release Train (2020.0.3) is available today. The release can be found in Maven Central. You can check out the 2020.0 release notes for more information.

Notable Changes in the 2020.0.3 Release Train

The biggest change in this release was support for Spring Boot 2.5. Besides that, this release is primarily for bug fixes and dependency upgrades.

See all of the included issues and pull requests at the Github project.

Read more...

Spring Cloud Finchley SR4 Released

On behalf of the community, I am pleased to announce that the Service Release 4 (SR4) of the Spring Cloud Finchley Release Train is available today. The release can be found in Maven Central. You can check out the Finchley release notes for more information.

Notable Changes in the Finchley Release Train

Spring Cloud Commons

Bug Fixes

Spring Cloud Vault

Bug Fixes

Spring Cloud Config

Bug Fixes

Spring Cloud Gateway

Bug Fixes

Spring Cloud Netflix

Bug Fixes

Spring Cloud Sleuth

Bug Fixes

Spring Cloud Consul

Bug Fixes

Read more...

Spring Cloud Pipelines to Cloud Pipelines Migration

Spring Cloud Pipelines is a GitHub project that tries to solve the following problems:

  • Creation of a common deployment pipeline

  • Propagation of good testing and deployment practices

  • Reducing the time required to deploy a feature to production.

The first commit took place on 31-08-2016. Since then, we have gotten a lot of feedback from the community related to the suggested deployment pipeline and its concrete visualisations. Over those two years, the most important features we have managed to build are:

  • Opinionated deployment pipeline setup

  • Scripts for the pipeline, to verify backward compatibility of your project and allow zero-downtime deployment

  • Support for PHP, .NET, NodeJS, and JVM (Maven & Gradle) projects

  • Deployment option for Cloud Foundry

  • Deployment option for Kubernetes

  • Deployment option via Ansible

  • Pipeline visualisation in Jenkins by using Jenkins Job DSL

  • Pipeline visualisation in Jenkins by using Jenkinsfile

  • Pipeline visualisation in Concourse

We would like to announce the next 1.0.0.M9 release of Spring Cloud Pipelines, which will also be its last in the current form.

Read more...

Spring Cloud Pipelines 1.0.0.M8 Released

On behalf of the Spring Cloud team, it is my pleasure to announce a new milestone release of Spring Cloud Pipelines - 1.0.0.M8.

What’s new?

This release adds a lot of new features and quality and testing improvements. As for main features, we’ve added support for a project with multiple modules, and for mono-repos (projects with standalone application sources in it). As for quality and testing, we’re approaching 200 Bash tests (we’ve written missing tests for the Concourse pipeline). We’ve started publishing the project’s sources as a downloadable artifact. That way instead of cloning the repo or downloading the ~25mb archive, you can fetch around 150kb of sources. The docs for 1.0.0.M8 are available here

From now on, we’re attaching the distributions in tar.gz and zip formats, with sources only to each release.

Thanks

Super special thanks go to the one and only @ciberkleid for all her hard work on the project (look at that!!! - #130) and to @jugglinhats (#148) Kudos Cora and Oleg and everybody involved in the project!

Read more...

Spring Cloud Contract in a polyglot world

This article contains a short reminder of what Contract Testing is, how Spring Cloud Contract implements it, and how Spring Cloud Contract can be used in a polyglot world.

What is Contract Testing

In order to increase the certainty that our systems behave properly, we write different types of tests. According to the test pyramid the main types of tests are unit, integration, and UI. The more complex the tests, the more time and effort they require and the more brittle they become.

In a distributed system, one of the most frequent problems is testing integrations between applications. Let’s assume that your service sends a REST request to another application. When using Spring Boot, you can write a @SpringBootTest in which you test that behavior. You set up a Spring context, you prepare a request to be sent…​ and where do you send it? You haven’t started the other application, so you get a Connection Refused exception. You can try mocking the real HTTP call and returning a fake response. However, if you do that, you do not test any real HTTP integration, serialization and deserialization mechanisms, and so on. You could also start a fake HTTP server (for example, WireMock) and simulate how it should behave. The problem here is that you, as a client of an API, define how the server behaves. In other words, if you tell the fake server to return text testText when a request is sent to endpoint /myEndpoint, it does just that, even if the real server does not have such an endpoint. In short, the problem is that the stubs might not be reliable.

Read more...