My - Dev-Ops Microservices
Goals:
Simplify application configuration concerns
Continuous delivery
Resilience
high availability
Visibility
Environment parity
Basic Infrastructure
Microservice - Java
Monitoring and Metrics - Prometheus
Service Discovery - Consul
Logging and log collection - ELK Stack (Elasticsearch, logstash and Kibana)
Deployment - Docker for packaging, Mesos and Marathon for clustering
Build pipelines - jenkins
Each VM will run
- Consul
- Mesos - Manage process
- Logstash
To monitor and collect metrics we use Prometheus.
Prometheus can use consul to directly to find the service instance to monitor. Once service are found Prometheus can scape their metric and prom-dash can be used to find metric.
Mesos - Used to place the docker container in the cluster of VMs. Marathon is like supervisors or netd for cluster of machines.
Consul: Service Discovery
(Other tools which we can use are DNS, Eureka, Zookeeper, Etcd, Consul)
Distributed, agent-based architecture
Gossip protocol for communication of state changes
Support HTTP and DNS queries
Service discovery if first class unlike others
Useful for monitoring in general
Configurable health checks
Key/value storage
Consul require 3,5 or 7 or 2 ,3 or 4 - Running in cluster mode Consul persists the state to disk.
Consul used RAFT for consensus.
GOSSIP protocol used by Consul is called SWIM
(SWIM - Scalable Weakly-consistent Infection-style Process Group Membership Protocol)