MSA - 마이크로서비스 아키텍처

이름·2023년 7월 10일
post-thumbnail

MSA ( MicroService Architecture )

소프트웨어 아키텍처 패턴 중 하나로, 애플리케이션을 작은 독립적인 서비스들로
분할하는 개념을 가지고 있습니다. 이러한 서비스들은 서로 독립적으로 배포, 확장,
관리될 수 있으며, 각각의 서비스는 특정 비즈니스 기능을 수행합니다.

특징

  1. 작은 규모: 마이크로서비스는 작고 한정된 범위의 비즈니스 기능을 수행합니다. 이러한 작은 규모의 서비스들은 개별적으로 관리하고 이해하기 쉽습니다. 또한 개별 서비스들은 독립적으로 개발, 배포, 확장될 수 있습니다.

  2. 독립성: 각 마이크로서비스는 독립적인 프로세스로 실행되며, 데이터베이스, 라이브러리, 기타 종속성을 포함합니다. 이는 개별 서비스들이 다양한 기술 스택과 독립적인 개발 수명주기를 가질 수 있음을 의미합니다.

  3. 통신과 경계: 마이크로서비스는 네트워크를 통해 상호 작용합니다. 주로 가벼운 프로토콜을 사용하여 서비스 간의 통신이 이루어집니다. 이는 서비스 간의 결합도를 낮추고 유연성과 확장성을 높입니다.

  4. 확장성: 마이크로서비스 아키텍처는 각 서비스를 독립적으로 확장할 수 있는 장점이 있습니다. 이는 부하 분산을 위해 필요한 서비스만 확장할 수 있으며, 전체 애플리케이션의 성능과 확장성을 향상시킵니다.

  5. 유연성과 기민성: 마이크로서비스는 특정 비즈니스 기능을 담당하기 때문에 변경이나 확장이 필요한 경우 해당 서비스만 수정하면 됩니다. 이는 개발자들이 빠르게 실험하고 혁신을 추구할 수 있는 유연성과 기민성을 제공합니다.

장점

  1. 더 작은 규모의 서비스로 인해 개발 및 유지보수의 용이성이 증가합니다.
  2. 개별 서비스 간의 독립성이 높아져 개발자들은 서비스를 독립적으로 변경, 배포, 확장할 수 있습니다.
  3. 특정 서비스의 장애가 다른 서비스에 영향을 미치지 않고 전체 시스템의 안정성과 내결함성이 향상됩니다.
  4. 기술 스택의 선택이 자유롭고, 서비스 간의 상이한 기술 요구사항을 충족시킬 수 있습니다.
  5. 작은 규모의 서비스는 개발자들이 쉽게 이해하고 수정할 수 있는 코드 베이스를 가집니다.
  6. 마이크로서비스는 팀 간의 협업을 용이하게 하며, 독립적인 배포와 확장에 따른 릴리즈 주기가 단축됩니다.

단점

  1. 분산 시스템을 구축하므로 인프라스트럭처 및 운영 관리의 복잡성이 증가할 수 있습니다.
  2. 여러 서비스 간의 통신이 필요하므로 네트워크 지연이 발생할 수 있습니다.
  3. 마이크로서비스 간의 일관성을 유지하기 위한 데이터 관리가 어려울 수 있습니다.
  4. 전체 시스템의 복잡성이 증가하고, 개발자들은 서비스 간의 관계와 의존성을 잘 이해해야 합니다.
  5. 마이크로서비스 아키텍처의 도입은 초기 개발 비용이 높을 수 있습니다.

0개의 댓글