마이크로 서비스 아키텍처

개발빼-엠·2023년 1월 30일
0

배움을 기록

목록 보기
13/47
post-thumbnail

마이크로 서비스란?

  • 마이크로서비스 하나는 독립적인 프로세스 하나를 의미한다.
  • 개발과 배포에 상호 독립적이다.
  • 개술 독립성을 가진다.
  • 독립적인 데이터 저장소를 가질 수 있다.
  • 각 마이크로서비스는 각자 가진 네트워크 기능으로 통신할 수 있다.

모놀리식 아키텍처를 단독으로 실행 가능한 다수의 모듈로 분해한 아키텍처를 마이크로서비스 아키텍처라고 한다. 이때 실행 가능한 하나의 모듈을 마이크로 서비스라고 한다.

각각의 마이크로서비스는 독립적인 프로세스 형태로 각기 배포할 수 있어야 하고, 개별적으로 개발할 수 있어야 한다.

상호 독립적인 구조이기 때문에 프로그래밍 언어나 프레임워크가 같을 필요는 없으며, 서로 독립적인 데이터 저장소와 네트워크 통신 기능을 가질 수 있다.

마이크로 서비스 아키텍처의 단점

  • 공유 자원 접근이 어렵다.
    • 모놀리식 아키텍처라면 프로세스가 같기 때문에 어렵지 않게 다른 로직으로 접근할 수 있지만, 마이크로서비스는 서로 다른 프로세스로 실행하기 때문에 추가적인 고민이 필요하다.
  • 배포와 실행이 복잡해진다.
    • 모놀리식 아키텍처라면 프로세스 하나만 실행해도 서비스가 가능했지만, 마이크로서비스는 복잡한 실행 과정을 거쳐야만 정상적인 서비스가 가능하다.
  • 분산 시스템을 구현하기 어렵다.
    • 독립적인 프로세스들을 유기적으로 동작할 수 잇게 하는 분산 네트워크 시스템이 필요한데 네트워크 레벨에서 다양한 상황별로 처리해야 하므로 구현하기 어려울 수 있다.

마이크로서비스와 Node.js

여러 마이크로서비스가 유기적으로 작동해야 하므로 마이크로서비스 하나는 구조가 작고 가벼워야 한다.

유지 보수와 배포가 어렵고 장애 포인트가 많다면 마이크로서비스 아키텍처는 장점이 없는 아키텍처이다.

대부분의 서비스는 정보를 저장하고 조회하는데 데이터베이스, 파일 등과의 I/O가 필수적인데, I/O가 동기방식이라면 다음요청을 처리하지 못해 성능이 좋지 않다. 이러한 문제는 메시지-큐를 이용해 해결한다.

I/O를 실제로 처리하는 서버를 별도로 두고, 요청을 받는 서버는 큐로 데이터를 전송한 후 이 요청을 처리하고, I/O가 처리되면 클라이언트에 보내는 방식을 사용한다.

Node.js는 내부적으로 이러한 메커니즘을 모두 처리해 주기 때문에 별도로 고민하지 않아도 된다.

0개의 댓글