Skip to content
Chris Busse edited this page Jul 28, 2015 · 1 revision

Convener

Ted Epstein

Attendees

Notes

  • Inspired by Martin Fowler article - intent to be part of an application architecture, not necessarily and enterprise architecture
  • Typical pre-Microservice architecture: ESB, Data Services, CRUD
  • What is definition of Microservice? A tightly cohesive group of methods bound around one context...
  • Debate ensures about, in an enterprise architecture, where do Microservices live and what qualifies as a "Microservice" ... not just being fine grained?

Microservice:

  • Minimal dependencies
  • DB Only
  • Stands Alone
  • Real-time
  • Composed Async (through higher level)

Not Microservice:

  • Dependencies on: 3rd-party App
  • Batch Process(?)

Database Pattern

  • Replication ("Buffered Dependency")
  • Aggregation
  • Scaling on Demand
  • Is the database required to scale or just the serving of the APIs?

Data Modeling

  • References: IDs, Hyperlinks
  • Microservices, culturally, may resist attempts to standardize. Enterprise will want standardization & governance
  • Standardization is very much an open question - could apply to data or just meta data
  • Discussion of continuing to use message queues vs. direct http communication between microservice APIs
  • ...continuing MQ reliance can be due to complication of scaling & legacy constraints

Motivations

  • Scalability
  • Separation of concerns
  • Speed of development & maintainability

Process Patterns

Pipeline / Front-to-back - is this an appropriate thing to use microservices for when there is a chain of operations? ... every stage in the pipeline having its own MQ ... queued dependencies

Antipatterns

  • Distributed Transactions (ACID) ... some debate around this... maybe ok if you have coordination taking place on a higher level
  • Low latency
  • Direct dependencies on each other / sync / interdependecies

Microgateways (looks like APIs all the way down) - Dave Mehi

  • security down
  • analytics up
  • allows you to spread out APIs to be "local" in different places
  • (this seemed to be a new concept to many here ... lots of questions generated)

Microservices as it relates to hardware (needs to be scalable). Needs CI/CD, automated testing & deployment.

Can you half-way do microservices to solve a pain point? (implied maybe not fully CI/CD ready) Sure... easier to make changes to system, easier for devs to understand what is going on in your apps