본문 바로가기

IT 용어정리

Backing Service (백엔드 서비스)

# Backing Service (백엔드 서비스)

백엔드 서비스 (Backing Services)란, 어플리케이션 실행중에 네트워크를 통해 사용할 수 있는 모든 서비스를 말한다. Backing Service는 데이터의 지속성과 일관성 있는 처리를 위해 동작한다. 마이크로서비스의 복잡한 흐름에서 상호간 비동기로 처리되어야 하는 서비스 간에 Backing Service를 구현하여 서비스 결합도를 낮추고 성능을 확보한다. MSA 에서는 백엔드 서비스를 어플리케이션에 붙여진 리소스로 다루게 되고, 서비스간의 통신 부분에 많은 어려움을 겪는다. 이것을 해결하기 위해 마이크로서비스 Backing Services는 메세지큐를 활용한 비동기 통신 패턴을 사용한다. MSA의 특성상 신규 생성, 재생성, 서비스 인스턴스 삭제 등의 작업이 빈번하게 이뤄여야 하기 때문에 Message Queue를 활용한 비동기 통신을 많이 사용하게 된다. 비동기 방식으로 처리 되는 특성으로 인해서 Backing Service의 구성도 중요하다.


 

 

# Loosely Coupled System (결합도 낮추기)

일반적인 웹서비스에서 서버-클라이언트 사이의 통신은 결합도가 높은 구조이며, 동기방식으로 작동한다. 이와 같은 방식은 시스템 내 요소들 간에 의존성이 높아 시스템에 많은 영향을 끼치며, 유연성이 낮다.

Message Broker를 기반으로 전송하는 서비스1과 수신하는 서비스2간의 결합도를 낮춰 한 시스템의 상태가 다른 시스템에 영향을 주지 않도록 하는 것이 좋다.

시스템의 직접 통신을 분리하여 서비스간 결합도가 낮아져 개별 확장성을 높이고, 장애를 격리시켜 안정성을 확보할 수 있다.

 

# Message queue (메세지 큐)

 

MSA는 서비스간 결합도가 낮아야 하기 때문에, 데이터의 송수신 방법으로 비동기 방식으로 메세지를 사용한다. 마이크로서비스 구조에서 인스턴스가 확장되더라도 분산 시스템 및 데이터의 동기화 문제를 간단하게 해결하기 위해 Apache kafka, Rabbit MQ와 같은 메세지 브로커를 사용해 메세지를 구현한다.