[스프링 마이크로서비스 코딩 공작소] 1장. 스프링 클라우드와 만나다 - 3부

garam0410·2022년 8월 24일
0
post-thumbnail

1.5 클라우드 및 마이크로서비스 기반 어플리케이션


1.5.2 클라우드 컴퓨팅이랑 정확히 무엇인가?

  • 인터넷을 통해 컴퓨팅과 가상화된 IT 서비스를 제공하는 것

  • 낮은 초기 투자, 사용 및 유지 보수 용이성, 확장성과 같은 이점 제공

클라우드 컴퓨팅 모델

  • IaaS (Infrastructure as a Service)
  • CaaS (Container as a Service)
  • Paas (Platform as a Service)
  • Faas (Function as a Service)
  • Saas (Software as a Service)

1.5.3 왜 클라우드와 마이크로서비스인가?

  • 마이크로서비스 아키텍처의 핵심 개념 중 하나는 각 서비스가 분리되어 독립적인 산출물로 패키징되고 배포된다는 것

  • 서비스 인스턴스는 신속히 시작되어야 하고 각각은 서로 구별할 수 없어야 함

  • 마이크로서비스를 작성할 때는 서비스를 어떤 형태로 배포할지 결정해야함

  • 물리 서버
    마이크로 서비스를 물리 서버에 구축, 실제로 이렇게 하는 곳은 많지 않으며, 확장성이 어렵고 막대한 비용이 발생

  • 가상 머신 이미지
    마이크로 서비스의 주요 이점중 하나는 확장성과 서비스 실패 이벤트에 대한 응답으로 인스턴스를 빠르게 시작하고 종료할 수 있는 것
    가상 머신은 클라우드 제공업체의 심장이자 영혼

  • 가상 컨테이너
    VM 이미지에 마이크로서비스를 배포하는 데 대한 자연스러운 확장
    많은 개발자는 전체 VM에 배포하지 않고 Docker Container로 클라우드에 배포
    가상 컨테이너는 VM 내 실행되고 가상 컨테이너를 사용하여 하나의 VM을 동일 이미지를 공유하는 일련의 독립형 프로세스로 분리 가능
    마이크로서비스는 패키징되어 서비스의 다수 인스턴스를 IaaS 사설 및 공용 클라우드에 신속히 배포하고 시작 가능

클라우드 기반 마이크로서비스의 장점은 탄력성 개념에 기반을 둠
클라우드 공급자는 새로운 VM과 컨테이너를 수분안에 가동할 수 있게 해줌
서비스에 대한 용량 요규가 감소하면 컨테이너 축소 가능

서버의 탄력성은 또한 어플리케이션이 회복적일 수 있음을 의미
서비스중 하나가 문제가 생겨 실패하고 있다면, 새 서비스 인스턴스가 기동되어 나중에 문제를 해결하기 전까지 어플리케이션을 정상상태로 유지할 수 있음


이 책에서 사용되는 CaaS 특징

  • 간소화된 Infrastructure 관리
    간단한 API 호출로 새로운 서비스를 시작하고 중지할 수 있음

  • 대규모 수평 확장성
    CaaS 공급자를 통해 빠르고 간결하고 하나 이상의 인스턴스를 시작할 수 있음, 서비스를 신속하게 할 수 있고, 장애가 있는 서버를 우회할 수 있음을 의미

  • 지리적 분산을 이용한 높은 중복성
    필요에 따라 CaaS 공급자는 여러 데이터 센터를 보유, 이 공급자를 통해 마이크로서비스를 배포하면 데이터 센터에서 클러스터를 사용하는 것 보다 더 높은 수준의 중복성을 얻을 수 있음

1.6 마이크로서비스는 코드 작성 이상을 의미한다.

마이크로서비스 작성 지침

  • 적정 규모
    서비스가 한가지 책염 영역에 집중되도록 하려면 어떻게 해야하는가?
  • 위치 투명성
    서비스 클라이언트에 영향을 주지 않고 서비스 인스턴스를 추가하고 삭제하려면 물리적 위치를 어떻게 관리해야 하는가?
  • 회복성
    서비스에 문제가 있을 때 서비스 클라이언트가 빠르게 실패하려면 어떻게 해야 하는가?
  • 반복성
    새로운 서비스가 시작할 때마다 항상 기존과 동일한 코드와 구성을 갖게 하려면 어떻게 해야 하는가?
  • 확장성
    서비스 간 종속성을 최소화하면서 어플리케이션을 신속히 확장하려면 어떻게 해야하는가?

1.7 핵심 마이크로서비스 개발 패턴

  • 서비스 세분화
    서비스의 적정 책임 수준은 어느정도 인가

  • 통신 프로토콜
    클라이언트와 서비스가 데이터를 주고받는 방식은?

  • 인터페이스 설계
    서비스 엔드포인트를 클라이언트에 노출하는 방식은?

  • 구성 관리
    커드와 구성이 독립적인 개체가 되도록 서비스가 어떻게 어플리케이션별 구성을 관리하는가?

  • 이벤트 처리
    서비스 간 상태 및 데이터 변경 사항을 전달하려고 이벤트를 사용하는 방식은?

1.8 마이크로서비스 라우팅 패턴

  • 마이크로 서비스를 사용하려는 클라이언트 어플리케이션이 서비스 위치를 발견하고 서비스로 라우팅하는 방법에 관한 것

  • 클라우드 기반 어플리케이션을 위해서 수백 개의 마이크로서비스가 실행될 수 있음

  • 보안과 콘텐츠 정책을 시행하려면 서비스의 물리적 IP를 추상화 하고, 서비스를 호출하는 단일 진입점이 필요

0개의 댓글