반응형

서버 결합 방식

기존 모놀리식 인프라의 경우 강력하게 통합된 서버 체인을 중심으로 움직이며 각 서버는 특정 목적을 가지고 있습니다. 이러한 구성 요소 또는 계층 중 하나에 중단이 발생하면 시스템에 치명적인 영향을 줄 수 있습니다. 이 구성은 크기 조정에도 악영향을 미칩니다. 한 계층에 서버를 추가하거나 제거하는 경우, 모든 계층의 모든 서버도 연결해야 합니다.  또한 강하게 결합된 아키텍처에서 한 애플리케이션 서버가 다운될 경우 웹 서버와 애플리케이션 간의 연결에서 오류가 발생할 수 있습니다.

 

반면 느슨한 결합을 사용하는 경우 관리형 솔루션을 시스템 계층 간의 중간자로 사용할 수 있습니다. 이렇게 하면 중계자가 구성 요소를 분리하는 주요 솔루션 중 2가지는 로드 밸런서와 메시지 대기열입니다. 예를들어 로드밸런서를 사용해 웹 서버와 애플리케이션 서버간 요청을 라우팅한다면, 한 서버에 장애가 발생해도 로드 밸런서가 모든 트래픽을 자동으로 정상 서버로 보내기 시작합니다.

 

마이크로서비스

마이크로서비스는 소프트웨어 개발에 대한 구조적이고 조직적 접근 방식입니다. 마이크로서비스 방식을 사용하면 소프트웨어를 소규모 서비스 모음으로 설계할 수 있습니다. 각 서비스는 독립적으로 배포되고 잘 정의된 API를 통해 통신합니다. 이 프로세스를 진행하면 배포 주기가 가속화되고, 혁신이 촉진되며, 애플리케이션의 유지 관리와 확장성이 모두 향상될 수 있습니다.

 

마이크로 서비스는 다음과 같은 특징이 있습니다.

  1. 자율적
    마이크로서비스 아키텍처의 구성 요소 서비스는 서로 분리되어 있고 API를 통해 통신합니다. 그러므로 다른 서비스에 영향을 주지 않고 서비스를 개발, 업데이트, 배포, 운영하고 크기를 조정할 수 있습니다. 소규모 자율 팀이 이러한 서비스를 소유할 수 있으므로 민첩하게 관련 작업을 처리할 수 있습니다.

  2. 전문적
    특정 문제를 중점적으로 해결하는 일련의 기능을 제공하도록 각 서비스를 설계합니다. 팀은 해당 서비스에 가장 적합한 프로그래밍 언어로 각 서비스를 작성할 수 있습니다. 그리고 각기 다른 컴퓨팅 리소스에서 서비스를 호스트할 수도 있습니다.

상세

 


모놀리식 아키텍처

모놀리식 아키텍처는 하나의 코드 베이스를 사용하여 여러 비즈니스 기능을 수행하는 소프트웨어 개발 모델입니다. 모놀리식 시스템의 모든 소프트웨어 구성 요소는 시스템 내의 데이터 교환 메커니즘으로 인해 상호 의존적인 성질이 있습니다.

모놀리식 아키텍처는 소프트웨어 개발의 가장 오래된 모델 중 하나이며, 여전히 많은 소프트웨어 시스템에서 사용됩니다.

 

모놀리식 아키텍처의 장점은 다음과 같습니다.

  • 단순성: 모든 코드가 단일 코드 베이스에 있으므로 개발 및 유지 관리가 쉽습니다.
  • 성능: 모든 구성 요소가 단일 프로세스에서 실행되므로 성능이 뛰어납니다.
  • 확장성: 시스템의 요구 사항이 증가하면 서버를 추가하여 확장할 수 있습니다.

 

그러나 모놀리식 아키텍처는 다음과 같은 단점도 있습니다.

  • 변경의 어려움: 한 구성 요소를 변경하면 다른 구성 요소에 영향을 미칠 수 있으므로 변경이 어렵습니다.
  • 테스트의 어려움: 모든 구성 요소를 함께 테스트해야 하므로 테스트가 어렵습니다.
  • 확장성의 한계: 시스템이 복잡해지면 확장성이 한계에 도달할 수 있습니다.

 

모놀리식 아키텍처는 다음과 같은 경우에 적합합니다.

  • 시스템이 작고 복잡하지 않을 때
  • 시스템의 요구 사항이 안정적이고 변경 가능성이 적을 때
  • 시스템의 성능이 중요하거나 확장성이 필요할 때

 

마이크로서비스 아키텍처

마이크로서비스 아키텍처는 대규모 애플리케이션을 작은 규모의 독립적인 서비스로 분리하여 개발하는 아키텍처 스타일입니다. 각 서비스는 하나의 비즈니스 기능을 수행하며, 서로 느슨하게 결합되어 있습니다.

 

마이크로서비스 아키텍처는 다음과 같은 장점을 제공합니다.

  • 변경의 용이성: 한 서비스만 변경하면 다른 서비스에 영향을 미치지 않습니다. 따라서 새로운 기능을 추가하거나 기존 기능을 변경하는 것이 쉽습니다.
  • 테스트의 용이성: 서비스별로 테스트할 수 있으므로 테스트가 쉽고 빠릅니다.
  • 확장성의 향상: 서비스별로 확장할 수 있으므로 시스템의 요구 사항에 따라 쉽게 확장할 수 있습니다.
  • 기술의 혼합: 각 서비스는 독립적인 기술 스택을 사용할 수 있으므로 최적의 기술을 선택할 수 있습니다.

 

그러나 마이크로서비스 아키텍처는 다음과 같은 단점도 있습니다.

  • 복잡성: 구성 요소가 많아지고 의존성이 복잡해집니다.
  • 관리의 어려움: 여러 서비스를 관리해야 합니다.
  • 성능의 저하: 서비스 간 통신으로 인해 성능이 저하될 수 있습니다.

 

마이크로서비스 아키텍처는 다음과 같은 경우에 적합합니다.

  • 시스템이 복잡하고 요구 사항이 자주 변경되는 경우
  • 새로운 기능을 빠르게 출시해야 하는 경우
  • 기술의 혼합이 필요한 경우

 

마이크로서비스 아키텍처를 구현하기 위해서는 다음과 같은 사항을 고려해야 합니다.

  • 서비스의 분할: 비즈니스 기능을 기반으로 서비스를 분할해야 합니다.
  • 서비스 간의 통신: 서비스 간 통신은 느슨하게 결합되어야 합니다.
  • 서비스의 배포: 서비스는 독립적으로 배포할 수 있어야 합니다.
  • 서비스의 관리: 서비스의 상태와 성능을 모니터링하고 관리해야 합니다.

 

마이크로서비스 아키텍처는 모놀리식 아키텍처의 단점을 보완하고, 현대 소프트웨어 시스템의 요구 사항을 충족하는 아키텍처 스타일입니다. 그러나 마이크로서비스 아키텍처는 복잡하고 관리가 어려울 수 있으므로, 시스템의 특성에 맞게 적절하게 적용하는 것이 중요합니다.

 

마이크로서비스 아키텍처를 구현하기 위한 몇 가지 주요 기술은 다음과 같습니다.

  • API: 서비스 간의 통신은 API를 통해 이루어집니다.
  • 컨테이너화: 서비스는 컨테이너로 실행하여 이동성과 확장성을 향상시킬 수 있습니다.
  • 마이크로서비스 플랫폼: 마이크로서비스 플랫폼은 서비스의 배포, 관리, 모니터링을 지원하는 도구와 서비스를 제공합니다.

 

최근에는 마이크로서비스 아키텍처를 구현하기 위한 다양한 도구와 프레임워크가 제공되고 있습니다. 이러한 도구와 프레임워크를 활용하면 마이크로서비스 아키텍처를 보다 쉽게 구현하고 관리할 수 있습니다.

 

특징 모놀리식 아키텍처 마이크로서비스 아키텍처
구성 요소 하나의 코드 베이스 독립적인 서비스
의존성 강한 의존성 약한 의존성
확장성 서버 추가 서비스 추가
테스트 구성 요소 전체 테스트 서비스별 테스트
변경의 어려움 높음 낮음

 

 

반응형

'자격증 > AWS SAA' 카테고리의 다른 글

[AWS SAA] 42. 컨테이너 서비스  (0) 2023.09.05
[AWS SAA] 41. 컨테이너  (0) 2023.09.04
[AWS SAA] 39. 인프라 관리  (0) 2023.09.02
[AWS SAA] 38. CloudFormation  (0) 2023.09.01
[AWS SAA] 37. IaC(Infrastructure as Code)  (0) 2023.09.01