close

Ben Wilcock

Ben Wilcock

Spring Technical Marketing

Glastonbury, United Kingdom

Ben is our resident Technical Marketing person for all things Spring related here at Pivotal. Formerly a developer and solution architect himself, during his career, Ben has encouraged thousands of developers to build resilient cloud-native microservice architectures with Spring. Spring is designed to make it easier for developers to write valuable code — code that's simple, readable, and contains less boilerplate. The Spring developer community is vast, global, diverse, and inclusive. Ben helps us promote a consistent and relevant narrative for Spring wherever it's needed. He's technical, often writing code, but also helps us to shape products, websites, blogs, and talks, as well as support salespeople, chat with customers, help with events, and get stuck in on social media. You can find Ben on Twitter.
Blog Posts by Ben Wilcock

Getting Started With RSocket: Spring Boot Request-Stream

Time: about 15 minutes.

Previously in this series, you experimented with request-response and fire-and-forget messaging in Spring Boot with RSocket. This time you’ll try another of RSocket’s fresh new messaging models — request-stream.

In this exercise, you’ll learn how to stream data using the conventional ‘client-requests-a-server-stream’ approach.

One thing that I haven’t mentioned until now is that RSocket lets you use its messaging models in either direction. Therefore, if you wanted to use the less common ‘server-requests-a-client-stream’ model, that’s no problem for RSocket. Plus, there are lots of non-java RSocket implementations to choose from, including Go, Javascript, and .Net—ideal if your architecture includes platforms where Java isn’t perhaps the best fit.

Read more...

Getting Started With RSocket: Spring Boot Fire-And-Forget

Time: about 15 minutes.

Some developers reading this post will have been using HTTP for many years by now. Most of them will also know that if you want to use HTTP with other messaging models — like fire-and-forget, for example — you must sometimes use clever workarounds like this one posted on Stackoverflow. That’s because HTTP is a request-response protocol. It requires a request to be sent and a response to be received. It has no concept of a one-way message without any form of response.

RSocket takes a different approach. RSocket defines a new protocol layer on top of transports like TCP and WebSockets. This new protocol offers greater choice to developers, with built-in support for four distinct interaction models:

Read more...

Getting Started With RSocket: Spring Boot Client

Time: approximately 15 mins.

In the previous article, you saw how Spring Boot simplifies the task of writing RSocket servers. But what about RSocket clients? In this article, you’ll learn how to write your own RSocket client and then use this new client to send request-response messages to your RSocket-server. Let’s get started!

This tutorial uses the Linux shell. For details on how to run a Linux shell on Windows, see this Microsoft tutorial.

Step 1: Create A New Spring Boot Project For Your Client

Read more...

Getting Started With RSocket: Spring Boot Server

Time: approximately 15 mins.

In the diverse world of microservices, HTTP is the undisputed leader in agent-to-agent communications. It’s mature, well established, and everywhere. But in some cases, HTTP request-response can be cumbersome. What if you need communication patterns beyond traditional request-response, such as fire-and-forget or streaming? And what if you want to send messages in either direction?

With HTTP, there are ways to achieve this but it’s not what the protocol was built for. Many of the solutions come with additional tradeoffs or shortcomings. Plus, here’s no rulebook that says “thou shalt always use HTTP”, messaging protocols like AMQP proved that already. So, it’s good to know what your options are, and healthy to add a few new technologies to your list every once in a while. This post is about one such alternative—RSocket.

Read more...

Netflix Built a Spring Application Generator to Boost Dev Productivity. Here's How You Can, Too.

If you watch Taylor Wicksell of Netflix’s SpringOne Platform keynote you can’t help but be blown away by the sheer productivity of their engineering team. Last year, over 300 Spring-based apps went into production – an incredible achievement.

Taylor Wicksell of Netflix’s SpringOne Platform Keynote

What Can Your Enterprise Learn From Netflix?

At Netflix, Taylor and his Java Platform team own the Java developer experience (DevEx). Taylor’s team has one mission: to help Netflix’s engineers stay productive – delivering great code at great velocity. It’s a mission that is clearly proving successful.

Read more...

Announcing: The NEW Spring Website!

Spring is constantly evolving and always innovating while being consistent where it matters: delivering a reliable framework to help you build maintainable software, faster. In the last few years, the Spring contributors have worked hard to bring the predictable Spring experience to microservices, serverless, streams, reactive, batch, data, and new languages like Kotlin. Over the coming year, you’ll see many more examples of this, including some cool new features that we’re just dying to share with you.

Read more...

Simple Event Driven Microservices with Spring Cloud Stream

Event driven architecture is great. But without a framework, writing the scaffolding required to work with popular event messaging platforms can be messy. In this post we’ll take a look at how Spring Cloud Stream can be used to simplify your code.

The Problem

You just want to write logic for your event driven application, but the boilerplate messaging code can get in the way. Connecting your apps to messaging services is tricky, and if you’re an enterprise developer, you probably need to work with multiple messaging technologies (either on-premises or in the cloud).

Read more...

Securing Services with Spring Cloud Gateway

So far in this series, we’ve covered Getting Started and Hiding Services with Spring Cloud Gateway. However, when we set about hiding our services, we didn’t secure them. In this article, we’ll correct this.

To secure our services, we’ll use the Token Relay pattern supported by OAuth 2.0 and the Javascript Object Signing & Encryption (JOSE) and JSON Web Tokens standards. This will give our users a means to identify themselves, authorize applications to view their profile and access the secured resources behind the gateway.

Read more...

Hiding Services & Runtime Discovery with Spring Cloud Gateway

Ben Wilcock – Spring Marketing, Pivotal.
Brian McClain – Technical Marketing, Pivotal.

It’s rare for a company to want every API to be publicly accessible. Most prefer to keep their services secret by default, only exposing APIs publicly when absolutely necessary.

Spring Cloud Gateway can help. Spring Cloud Gateway allows you to route traffic to your APIs using simple Java™ instructions (which we saw in the last article) or with YAML configuration files (which we’ll demonstrate in this one). To hide your services, you set up your network so that the only server accessible from the outside is the gateway. The gateway then becomes a gate-keeper, controlling ingress and egress from outside. It’s a very popular pattern.

Read more...

Getting Started with Spring Cloud Gateway

Microservice architectures are great, but as your application programming interfaces (APIs) start to grow, so do the challenges related to their maintenance.

For example, as an existing API matures and adds new features it will need to take its clients along with it on the journey. When the details of an API change, clients need to adjust in order to work with these changes. This process takes time and can really slow your APIs evolution and interfere with your ability to iterate quickly.

Offering multiple APIs brings with it its own set of challenges. How do you route requests and responses to the correct API? How do you manage any message disparity? How do you support clients when your endpoints can move around?

Read more...