You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
chore: Refactoring Feast Serving to have fewer packages (feast-dev#3032)
* refactor: no-op refactor that removes some unused classes and reduces the number of modules in Feast Serving
Signed-off-by: Danny Chiao <[email protected]>
* fix test
Signed-off-by: Danny Chiao <[email protected]>
* Add more details to README in java
Signed-off-by: Danny Chiao <[email protected]>
* Move server config modules to service
Signed-off-by: Danny Chiao <[email protected]>
* revert breakage
Signed-off-by: Danny Chiao <[email protected]>
* Complete docs
Signed-off-by: Danny Chiao <[email protected]>
* Complete docs
Signed-off-by: Danny Chiao <[email protected]>
Copy file name to clipboardExpand all lines: java/CONTRIBUTING.md
+34-11Lines changed: 34 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,25 +2,48 @@
2
2
> The higher level [Development Guide](https://docs.feast.dev/v/master/project/development-guide)
3
3
> gives contributing to Feast codebase as a whole.
4
4
5
-
###Overview
5
+
## Overview
6
6
This guide is targeted at developers looking to contribute to Feast components in
7
7
the feast-java Repository:
8
8
-[Feast Serving](#feast-serving)
9
-
-[Feast Java Client](#feast-java-client)
9
+
-[Feast Serving Client](#feast-serving-client)
10
10
11
11
> Don't see the Feast component that you want to contribute to here?
12
12
> Check out the [Development Guide](https://docs.feast.dev/v/master/project/development-guide)
13
13
> to learn how Feast components are distributed over multiple repositories.
14
14
15
-
#### Common Setup
15
+
### Repository structure
16
+
There are four key top level packages:
17
+
-`serving`: Feast Serving (a gRPC service to serve features)
18
+
-`serving-client`: Feast Serving Client (a thin Java client to communicate with Feast serving via gRPC )
19
+
-`datatypes`: A symlink to the overall project protos. These include the core serving gRPC protos, proto representations of all objects in the Feast registry.
20
+
-`coverage`: Generates JaCoCo coverage reports
21
+
22
+
#### Feast Serving
23
+
> **Note:** there are references to metrics collection in the code. These are unused and exist for legacy reasons (from when this used Spring Boot), but remain in the code until published to StatsD / Prometheus Pushgateway.
24
+
25
+
The primary entrypoint into the Feast Serving server is `ServingGuiceApplication`, which connects to the rest of the packages:
26
+
-`connectors`: Contains online store connectors (e.g. Redis)
27
+
-`exception`: Contains user-facing exceptions thrown by Feast Serving
28
+
-`registry`: Logic to parse a Feast file-based registry (in GCS, S3, or local) into the `Registry` proto object, and automatically re-sync the registry.
29
+
-`service`: Core logic that exposes and backs the serving APIs. This includes communication with a feature transformation server to execute on demand transformations
30
+
- The root code in this package creates the main entrypoint (`ServingServiceV2`) which is injected into `OnlineServingGrpcServiceV2` in `grpc/` implement the gRPC service.
31
+
-`config`: Guice modules to power the server and config
32
+
- Includes server config / guice modules in `ServerModule`
33
+
- Maps overall Feast Serving user configuration from Java to YAML in `ApplicationPropertiesModule` and `ApplicationProperties`
34
+
-`controller`: server controllers (right now, only a gRPC health check)
35
+
-`grpc`: Implementation of the gRPC serving service
36
+
-`interceptors`: gRPC interceptors (currently used to produce metrics around each gRPC request)
37
+
38
+
### Common Setup
16
39
Common Environment Setup for all feast-java Feast components:
17
40
18
41
Ensure following development tools are installed:
19
42
- Java SE Development Kit 11
20
43
- Maven 3.6
21
44
-`make`
22
45
23
-
####Code Style
46
+
### Code Style
24
47
Feast's Java codebase conforms to the [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html).
25
48
26
49
Automatically format the code to conform the style guide by:
@@ -33,7 +56,7 @@ mvn spotless:apply
33
56
> If you're using IntelliJ, you can import these [code style settings](https://github.com/google/styleguide/blob/gh-pages/intellij-java-google-style.xml)
34
57
> if you'd like to use the IDE's reformat function.
35
58
36
-
####Project Makefile
59
+
### Project Makefile
37
60
The Project Makefile provides useful shorthands for common development tasks:
38
61
39
62
@@ -42,18 +65,18 @@ Run all Unit tests:
42
65
make test-java
43
66
```
44
67
45
-
Run all Integration tests:
68
+
Run all Integration tests (note: this also runs GCS + S3 based tests which should fail):
46
69
```
47
70
make test-java-integration
48
71
```
49
72
50
-
Building Docker images for Feast Core & Feast Serving:
73
+
Building Docker images for Feast Serving:
51
74
```
52
75
make build-docker REGISTRY=gcr.io/kf-feast VERSION=develop
53
76
```
54
77
55
78
56
-
####IDE Setup
79
+
### IDE Setup
57
80
If you're using IntelliJ, some additional steps may be needed to make sure IntelliJ autocomplete works as expected.
58
81
Specifically, proto-generated code is not indexed by IntelliJ. To fix this, navigate to the following window in IntelliJ:
59
82
`Project Structure > Modules > datatypes-java`, and mark the following folders as `Source` directorys:
@@ -64,12 +87,12 @@ Specifically, proto-generated code is not indexed by IntelliJ. To fix this, navi
64
87
## Feast Serving
65
88
See instructions [here](serving/README.md) for developing.
66
89
67
-
## Feast Java Client
90
+
## Feast Serving Client
68
91
### Environment Setup
69
-
Setting up your development environment for Feast Java SDK:
92
+
Setting up your development environment:
70
93
1. Complete the feast-java [Common Setup](#common-setup)
71
94
72
-
> Feast Java Client is a Java Client for retrieving Features from a running Feast Serving instance.
95
+
> Feast Serving Client is a Serving Client for retrieving Features from a running Feast Serving instance.
73
96
> See the [Feast Serving Section](#feast-serving) section for how to get a Feast Serving instance running.
0 commit comments