An exploration of microsite/microservice concepts.
The purpose of this project is to explore concepts, tools, and techniques related to implementing and operating both microservices and microsites using Scala and off-the-shelf components, such as:
Concepts explored include, but are not limited to:
cats.effect.IO
to define microservicesF[_]
) and implicit
type classesHere is how to build and run all services locally. Note that sbt must be installed and available in order to begin.
First, clone this repository locally.
Next, build and run the unit tests from the top-level directory:
sbt recompile-all test
Then follow the instructions detailed in the docker compose deployment documentation.
demo-microsite ├── api ├── deployment │ └── docker ├── documentation │ └── adr ├── frontends │ ├── company │ └── site ├── gatling ├── scripts └── services ├── chassis ├── company ├── inventory ├── purchase-order ├── storage-facility └── template.g8
---
title: System Architecture
---
graph TD
gateway[Gateway] <--> site[Web Site]
gateway <--> company-site[Company Site]
gateway <--> storage-facility-site[Storage Facility Site]
gateway --> company-server[Company Server]
gateway --> storage-facility-server[Storage Facility Server]
company-site -- through gateway --> company-server
storage-facility-site -- through gateway --> storage-facility-server
company-server <--> kafka[(Kafka)]
storage-facility-server <--> kafka
storage-facility-server --> postgres[(PostgreSQL)]
company-server -- kafka --> storage-facility-server
This is where all RAML public API contracts are defined.
Here is where deployment artifacts are defined.
Project documentation source beyond README
s and Scaladoc can be found here.
This project uses adr-tools to manage the ADR definitions.
Subprojects which provide UI/UX functionality are located here.
This subproject defines both end-to-end "feature simulations" as well as "load test simulations." Of note is that, while defined as a sbt aggregate
, it does not link to any frontends
or services
. Only the public api is used.
All microservices are located here.