Microservices talk

Preview:

Citation preview

Microservices

Who, what, where, when, why… how?

Who we are

Matt West

Bill O’Neill

Definition: Microservices (Squishy at best)

Start With Service Oriented Architecture (SOA)

Architectural pattern in which application components provide services to other components via a communications protocol (typically over a network)

SOA + Marketplace = $ + ? + $$ + ?? + $$$ + ???

Meanwhile in a galaxy far far away...

as well as agile methodologies momentum

Conway’s Law:

organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations

In other words smart, small, loosely coupled, cross-functional teams started to create independent components to match their structure.

Microservice Characteristics

- Like SOA but “smaller”- Many small services- Polyglot (Use the best language for the job)- Database “in” the service (again based on need)- Versioned independently- Deployed independently- Scale independently

*Shamelessly stolen from Martin Fowler

Who does this?

*http://blogs.wsj.com/cio/2015/10/05/innovate-or-die-the-rise-of-microservices/

And most importantly...

Deployment and Operations

● Scalability● Reliability● Metrics● Security● Continuous Deployment

Making Microservices Possible

● Affordable Infrastructure - AWS○ Used by all sized companies, start-ups to Fortune 500○ Grew by 71% last year

● Process Isolation○ Physical Machine○ Virtual Machine○ Linux kernel virtualization → Docker

■ Made possible using Linux Control Groups (2007, v2.6.24) and Namespaces

■ Top 20 most active project on Github■ Supported by IBM, Google, Cisco, Red Hat

Docker

● Lightweight○ Share same kernel

○ More efficient use of resources

○ Layered filesystem

● Open● Secure

Monolith

Monolith

Scalability

Monolith

Reliability

Tracing (debugging production systems)

Monolith Monolith

Solution - Log Aggregation

Service-to-Service Security

Monolith

● HTTP(S) basic auth● SAML/OpenID● Client certs● HMAC over HTTP● HTTPS● API keys

Other Concerns...

● Semantic Versioning (x.y.z)○ Major○ Minor○ Build

● Separate data stores● Code reuse and shared

libraries● Transactional boundaries● Reporting● Service discovery

● Monitoring○ Health checks○ Correlation IDs○ Synthetic monitoring○ Metric tracking

● Testing○ End-to-end testing○ Test journeys○ Consumer driven tests

○ Tests after production (Canary testing)

● Caching● Auto-scaling

Continuous Deployment

● Allows parts of your application to update independently ● Don’t need huge regression test cycles to fix a bug● Can be rolled out using canary testing● Can be recalled quickly● Allows teams to operate independently● Features can be rolled to production independently● Supports agile workflow● Supports Conway’s Law

Typical Continuous Deployment Pipeline

We are hiring! http://centricient.com/

Recommended