Programming   1283960

« earlier    

Microservices, REST and the distributed big ball of mud
Many of the benefits associated with microservices depend on you being able to create autonomous components. You won’t realise much in the way of improved scale, resilience and flexibility unless you can develop, test and run your services in isolation.

An increasingly common sight with microservice architectures is the “death star” component diagram where services appear to talk to each other directly in an apparently haphazard way. This makes it difficult to understand the system and its interactions on any meaningful level – there’s just a lot of stuff that is connected.

This is the “distributed big ball of mud”. Instead of autonomous services collaborating to deliver business processes you have a haphazard set of components locked together in a distributed monolith. It makes for a complex system as you are constantly stubbing out services and managing dependencies. It also makes for a fragile system as if any one service fails or starts misbehaving then the consequences can ripple out across the entire system.

To avoid the distributed big ball of mud you need to address two distinct problems. Firstly, you need to ensure that your services collaborate asynchronously, as opposed to binding them together via the request\response communication. Secondly, your service boundaries have to be drawn so that each service can fulfil its obligations independently.
microservices  RESTful  Programming 
35 minutes ago by cnk

« earlier    

related tags

accessibility  advice  agent  agile  ai  algebra  algorithmia  algorithms  algos  android  animation  api  arcade  architecture  archive  article  assembly  authorization  awesome  best-practices  bestpractices  bluekit  book  books  browsers  business  c++  c  cli  clojure  cloud  code  collection  comic  comics  compilers  component  computer-science  computer  computers  controls  cool  crypto  cryptography  culture  data  datascience  datastructures  design  dev  development  developmental  devops  diy  economics  editor  education  eigen  emulation  engine  engineering  ergonomics  erratasec  es6  estimation  example  extension  free  functional-programming  functionalprogramming  gamedev  games  gdpr  golang  graduate  graphical_user_interfaces  guides-tutorials-howto-courses  hacking  hackintosh  hadoop  haskell  hdfs  health  highered  history  hosting  howto  html5  images  insane  interesting  ios  iot  it  java  javafx  javascript  js  jupyter  kafka  kakoune  keyboards  kubernetes  language  languages  leadership  learning  library  linux  lisp  machine_learning  macos  macosx  management  mapreduce  math  max/msp  metadata  microservices  modules  money  nes  nintendo  notepad  onlinetools  open  opensource  osx  pdf  performance  philosophy  photography  pipeline  policy  productionization  productivity  programming-languages  programming  projectmanagement  prolog  propertytesting  python  qr-codes  quality  react  reactivity  reactjs  redux  reference  repository  reproducibility  resource  resources  restful  retro  rsi  rstats  ruby  rust  scala  scale  scheme  science  scraping  scripting  scrum  security  shell  sidecar  software-engineering  software  software_development  softwareengineering  softwaretesting  speechrecognition  sqpshared  stackoverflow  standards  statistics  statsmodels  swift  tech  technology  testing  time-series  to-watch  tool  toolkit  tools  tutorial  ui  useful  ux  video  vim  visualization  web  webapp  webdesign  webdev  webdevel  windows  workflows  zines  zxing 

Copy this bookmark: