This is a blog site designed with microservices architecture using Spring Cloud Netflix
features, Kotlin
as a main server side language and Angular
for user interface parts.
- Spring Framework 5 with Webflux/Reactor
- Spring Boot 2.0
- Spring Cloud Netflix 2.0
- Spring Webflux Security with JWT
- Kotlin 1.2
- Angular 6
- Gradle 4.10 with Kotlin Script and jUnit 5
- Docker
- Node 8+
- Yarn
- JRE 8+
- Docker
- Config Server: A Spring Boot application which provides configs (yml files) to all other services. Should be run first.
- Service Discovery: A Spring Boot application with embedded
Service Discovery Server
(Eureka server). Each other services exceptConfig Server
are registered in it and can access each other by names instead of host-port combination usingApi Gateway Router
service. Should be run second. - Frontend: A Spring Boot application with Angular parts. Contains embedded
Api Gateway Router
(Zuul),Client Side Load Balancer
(Ribbon) andService Discovery Client
(Eureka client) which help to redirect requests to Api service instances registered inService Discovery Server
. - API: A Spring Boot application with backend information for the Frontend. Includes
Spring Security
parts to provide Json Web Tokens and validate them.
-
Set environment variables
SPRING_PROFILES_ACTIVE=local SPRING_CLOUD_CONFIG_SERVER_GIT_URI=<path-to-config-repo>
where
<path-to-config-repo>
can be a path to local or remote git repository with config files, e.g.file://${user.home}/awesome-blog-config-repo
orhttps://github.com/naXa777/awesome-blog-config-repo
. -
Run Config Server instance
./gradlew config-server:bootRun
Check that it's running: go to http://localhost:9000/actuator/health
-
Run Service Discovery instance
./gradlew service-discovery:bootRun
Check that it's running: go to http://localhost:9001/
-
Run API instance
./gradlew api:bootRun
Check that it's running: go to http://localhost:8081/api/echo
-
Run Frontend instance
./gradlew frontend:bootRun
Check that it's running: go to http://localhost:8082