For Big Data Serving, writing custom code in plugins is often required - in Vespa, such plugins (called Components) are run in the Stateless Java Container Cluster:
- Query Processors implemented as Searchers enables query enrichment, rewrites and external data lookup as part of query processing.
- Document processors is similar and operates on incoming documents in an asynchronuous environment for high throughput.
- Handlers and renderers are Other Components that lets application owners build rich APIs, see the Vespa Container.
The development cycle is normally creating a plugin (based on the sample applications), deploying it to Vespa, write tests, iterate:
All the Vespa sample applications use the bundle plugin to build the Components.
A key Vespa feature is code and configuration concistency, deployed using an application package. This ensures that code and configuration is in sync, and loaded atomically when deployed. This is done by generating config classes from config definition files. In Vespa and application code, configuration is hence accessed through generated config classes - read more in the Cloud Configuration System.
The Maven target generate-sources (invoked by mvn install) uses
After generating config classes, they will resolve in tools like IntelliJ IDEA.
Examples unit tests are found in
Add testing to automate deployments: