close

Ben Wilcock

Ben Wilcock

Spring Technical Marketing

Glastonbury, United Kingdom

Ben has been helping people deliver better software all his working life. He's achieved this through listening, learning, and leading software developers in large and small organizations spanning many industries and sectors. Ben's current focus is Spring. Ben helps VMware build stronger developer relationships with the millions of developers who use Spring every day. He's technical, often writing code, but also helps to shape products, build websites, and write & produce blogs, videos, and other digital content. You may even hear him speak at conferences such as Devoxx, MS Build, GOTO, and AxonIQ. He's known for sharing his insights with developers, supporting salespeople, talking to clients, helping with events and hosting, and getting stuck in on social media. In the past, he's specialized in software design, software development, service orientation, event-driven architecture, microservices, and cloud computing. He's occupied a variety of technical roles including, developer, architect, manager, and consultant. Amongst the many techniques he's applied are XP and agile, test-driven development, pairing, mobbing, domain-driven design, event-sourcing, event-storming, and more. He's also helped other technology leaders — from CEO and CTO to lead developer — get to grips with challenges surrounding cloud migration and transformation. You can follow Ben on twitter for regular updates, insights, and opinions on technology today and the world we live in at (https://twitter.com/benbravo73).
Blog Posts by Ben Wilcock

Getting Started With RSocket: Servers Calling Clients

Reading Time: about 7 minutes.
Coding Time: about 20 minutes.

If you’ve been following my series on RSocket, you’ve heard me refer to “clients and servers” many times. But, with RSocket, the line between client and server is blurry. With Rsocket, servers can send messages to clients, and clients can respond to these requests in the same way a server would.

In fact, the RSocket docs don’t use the terms ‘client’ or ‘server.’ The docs use the terms ‘requester’ and ‘responder’ instead. In RSocket, any component can act as a requester, and any component can act as a responder or even both at the same time. In RSocket, all this back-and-forth communication between requesters and responders takes place over a single ‘bi-directional’ connection.

Read more...

Getting Started With RSocket: Spring Boot Channels

Reading Time: about 6 minutes.
Practice Time: about 20 minutes.

If, like me, you’re still at the beginning of your RSocket journey, check out the motivations behind the RSocket protocol. This short but insightful document includes one message that resonates very strongly with me — ‘a mismatched abstraction increases the cost of developing a system.’

From a software design point of view, RSocket’s four interaction models offer a significant benefit. It means we can model our component-to-component communications using the correct interaction model for each use case. This more productive model could save you lots of time and energy when coding!

Read more...

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...