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)

The Twelve Factors

One codebase tracked in revision control, many deploys

Explicitly declare and isolate dependencies

Store config in the environment

Treat backing services as attached resources

Strictly separate build and run stages

Execute the app as one or more stateless processes

Export services via port binding

Scale out via the process model

Maximize robustness with fast startup and graceful shutdown

Keep development, staging, and production as similar as possible

Treat logs as event streams

Run admin/management tasks as one-off processes