After 18 months of development, the Spring framework has finally release the Spring Native (beta). Spring Native allows the Spring Framework to leverage the reduced startup time and lower memory footprint of the GraalVM Spring Native support.
When selecting a language for microservice development, a common complaint leveled against Java is its slower startup time and large memory footprint. In this article, we address these concerns with the introduction of the GraalVM and GraalVM Native Image.
During the lifetime of every user account, various events are generated and published to the application's message queue. It is advantageous to capture and persist these events to provide an audit log of an account's activity. In this article, we will build the AccountHistoryService which performs this task. In addition to capturing the account events, the service also provides a REST endpoint to query these events. After construction, we will deploy the application and exercise the generated Swagger interface. We then view the operational metrics using the AccountHistory Grafana dashboard.
In this fourth and final article discussing the AuthenticationService, we will exercise the service using its generated Swagger interface, and we view its operation metrics using the AuthenticationDashboard in Grafana.
In this third article discussing the AuthenticationService, we focus on the implementation of the core logic found in the AuthenticationService class and the JWTAuthorizationFilter, which intercepts service requests and verifies that each request has sufficient privileges to access the resource.
In this second article discussing the AuthenticationService, we cover several areas. First, we introduce the user credentials and privileges role data model and the Spring repositories used to persist the data. We also look at the service's event publisher, the JSON Web Token (JWT) provider, and the email client the service uses to send messages to the Notification Service.
Most applications require some form of authentication to restrict access to secured various service features. Additionally, we need a mechanism to register users and recover a user's forgotten passwords. To fulfill these requirements, this will be the first of a four-part series of articles cover the construction of the AuthenticationService. In this article, we introduce the basic components of the AuthenticationService.
It is a common requirement for applications to serve static content. This requirement can be fulfilled by a content delivery network (CDN), web-enabled object-store (e.g., Amazon S3, IBM Cloud Object Storage, Digital Ocean Spaces) or a web server. This article will build a simple Spring-based Content Service to serve the application's static assets.
In the previous article, we outlined a Reference Architecture of our foundational microservice application. To realize this architecture, we have selected Java as our implementation language. Additionally, we will leverage the Spring framework's various features to support our microservice implementation. This article provides a brief history of the Spring framework and why it was selected.