This is a tracking meta-issue for the removal of HTTP from the Java Riak client library
Rationale
Version 2.0 of the Riak Java client (RJC) is going to be large overhaul of the client. The main goal is to remove years of technical debt at the core by retiring the original Protocol Buffers (PB) and HTTP clients, replacing them with a modern core that uses Netty4. This also allows us to remove the translation / abstraction layer that sits between IRiakClient at the top and the aforementioned original clients at the bottom. By doing these things, in addition to allowing us to address some long standing design issues, future maintainability and feature development costs are reduced significantly.
Historically, the reason for supporting both Protocol Buffers and HTTP protocols in the client library was due to the Riak Protocol Buffers API not supporting all Riak operations. As of Riak 1.4 and the RJC 1.4.0 we have reached feature parity between the two APIs. Protocol buffers is the faster and more efficient way to talk to Riak. In addition, feature development and maintenance is again helped by not having to implement every feature multiple times.
Thus, I proposed we no longer include HTTP in the RJC starting with v2.0.
Authentication / Authorization
Ignoring feature parity, the one reason users have chosen to use HTTP over PB when using the RJC is that Riak had no Authentication or Authorization features. By using an authenticating HTTP proxy between the RJC and Riak some amount of security could be provided.
This all changes in Riak 2.0 and the RJC v2.0 will support the new authentication and authorization features over PB. For complete details on these new features please see basho/riak#355
Open Questions
- Is there some compelling reason to keep HTTP in the RJC which we have not thought of?
Risks
- Current deployments using HTTP proxying / authenticating will need to alter their architecture. This may be seen negatively by those current users.
This is a tracking meta-issue for the removal of HTTP from the Java Riak client library
Rationale
Version 2.0 of the Riak Java client (RJC) is going to be large overhaul of the client. The main goal is to remove years of technical debt at the core by retiring the original Protocol Buffers (PB) and HTTP clients, replacing them with a modern core that uses Netty4. This also allows us to remove the translation / abstraction layer that sits between IRiakClient at the top and the aforementioned original clients at the bottom. By doing these things, in addition to allowing us to address some long standing design issues, future maintainability and feature development costs are reduced significantly.
Historically, the reason for supporting both Protocol Buffers and HTTP protocols in the client library was due to the Riak Protocol Buffers API not supporting all Riak operations. As of Riak 1.4 and the RJC 1.4.0 we have reached feature parity between the two APIs. Protocol buffers is the faster and more efficient way to talk to Riak. In addition, feature development and maintenance is again helped by not having to implement every feature multiple times.
Thus, I proposed we no longer include HTTP in the RJC starting with v2.0.
Authentication / Authorization
Ignoring feature parity, the one reason users have chosen to use HTTP over PB when using the RJC is that Riak had no Authentication or Authorization features. By using an authenticating HTTP proxy between the RJC and Riak some amount of security could be provided.
This all changes in Riak 2.0 and the RJC v2.0 will support the new authentication and authorization features over PB. For complete details on these new features please see basho/riak#355
Open Questions
Risks