Repository
git clone https://github.com/toipacoelho/Software-Engineering.git
Implementation Architecture
We opted to used kafka as broker because of it's ability to preserve temporal reference.
The auditing system implements an ELK stack (ElasticSearch + LogStash + Kibana). The connection between the elk system and logs it's made using filebeats, there's the need to instantiate filebeat on every container producing logs.
System Events
Every sensor sends an unprocessed string topic to the enterprise bus through it's gateway.The data Collector will consume the topic, so the client can see it's vital signs in the user interface.
This works based on a thread subscrives the topic, then an observer listen to the events ocurring in the thread and make them available to the bean that will render the user interface.
Deployment Architecture
The system is divided by Docker Containers.
- Broker - Apache Kafka
- image: wurstmeister/kafka
ports: 9092, 2181
- Server - Jboss Wildlfy
- image: jboss/wildlfy
ports: 8080
- Auditing - ElasticSearch, Logstash and Kibana
- image: sebp/elk
ports: 5044, 5601, 9200, 9300
- Management - Portainer
- image: portainer/portainer
ports: 9000
All ports refer to exposed container ports, not to the actual mapping, that can be arranged differently on your deployment.
Deployment Strategy
Using maven, it builds the package Dashboard in the source directory and runs the tests after the building. If the package is approved by all tests, than is produced an .war file that is archived and copied to the directory mounted by the Web Server container too, the /war directory.
You should edit wildfly-maven-plugin plugin in the pom.xml file to be in agreement with your server address and credentials. For more info about the preocess check this link