마이크로소프트 아키텍처

원종서·2022년 2월 21일
1

MSA

목록 보기
1/3

클라우드 인프라의 등장으로, 초기 개발 준비 시간을 단축할 수 있었으며, 사용량에 따라 유동적으로 서비스 비용을 바꿀 수 있다.

스케일 업과 스케일 다운

사용량에 따른 성능 및 가용성을 높이는 방법

업 = 시스템 자체의 물리적 용량을 증가하는 방법
아웃 = 용량이 같은 다수의 장비를 병령 추가함.

특정 서비스만 탄력성 있게 확장할 수 있다.(시스템을 블록처럼 분리하면 됨. -> 독립적인 서비스 연계로 구성한다.)

클라우드 플랫폼 중 하나의 클라우드 파운드리를 서비스하는 피보탈에서는 이처럼 큰 덩어리로 클라우드 혼경에 올라갈 수 있게한 앱을 클라우드 친화 애플리케이션 이라함.

클라우드 네이티브 애플리케이션 독립적으로 분리되어 배포될 수 있는 조각으로 구성된 애플리케이션

마이크로 서비스

모노리스 하나의 단위로 개발되는 일체식 애플리케이션
보통 클라이언트, 서버, 데이터베이스로 3티어로 나뉨.

모노리스 단점
1. 작은 변화라도 전체를 빌드.
2. 단일 프로세스에서 실행

로드 밸런서를 앞에 두고 여러 인스턴스 위에서 큰 덩어리를 복제해 수평으로 확장함.

반면에 마이크로서비스는 서버측이 여러개로 구성됨.
각기 저장소 다른것이 장점.

SOA와 마이크로서비스

  1. 구조적 방법론: 기능을 하향식 분해 해 설계
  2. 객체단위 모듈화: 객체지향적 설계
  3. CBD(Component Based Develpoment) : 모듈화의 단위가 기능별로 재사용할 수 있는 큰 컴포넌트 단위
  4. SOA(Service Oriented Architecture) : 컴포넌트를 모아 비지니스적으로 의미있는 완결적 서비스 단위
  5. MSA(Microservice Architecutre) : 마이크로서비스 기반으로 시스템을 개발하는 아키텍처 및 개발 방식

폴리그랏 특정 서비스를 구축하는데 사용되는 언어나 저장소를 자율적으로 선택할 수 있는 방식

MSA VS SOA

MSA는 SOA 와 달리. 데이터 저장소까지 분리한다. (둘 다 애플리케이션 모듈화함)

마이크로서비스를 위한 조건

  1. 업무 기능 중심의 팀
    역활 또는 기술별로 팀이 분리되는 것이 아니라 업무 기능을 중심으로 기술이 다향한 사람들이 하나의 팀이 되어 서비스를 만드는 것을 의미.
  2. 자율적인 분권 거버넌트, 폴리글랏
    빠르게 서비스를 만드는 것을 최우선 목적으로 둔다. 중앙 거버넌트의 표준이나 절차 준수를 강요하지 않는다
  3. 프로젝트가 아니라 제품 중심
    폭포수 모델 또는 빅뱅 방식이 아니라, 점적인 반복, 제품 중심의 애자일 개발 방식을 사용 즉 마이크로서비스는 계속 피드백 받아 지속적으로 변화, 개선되고 향상됨.
  4. 인프라 자동화
    개발 완료 후 빌드, 테스트, 배포 같은 개발지원과정의 속도를 높이는 방법은 ?
    개발지원환경의 자동화 같은 환경은 개발과 운영을 동시에 수행하는 DevOps를 궁극적으로 가능하게 함으로 데브옵스 개발환경이라고도 한다.
  • 빌브 / 배포 파이프라인
    소스코드빌드 -> 개발환경배포 -> 스테이징 환경 배포 -> 운영환경 배포.
    최근에 배포환경이 마이크로서비스 개수에 따라 급격히 늘었기에 이를 효율적으로 관리하기 위해 인프라 구성과 자동화를 마치 소프트웨어처럼 코드로 처리하는 방식을 Infastructure as Code 라고 하며 각광받고 있다

Infastructure as Code

인프라 구성부터 애플리에키션 빌드, 배포를 정의함.
하드웨어 리소스 설정을 동일하게 통제 가능.
상황에 따른 검증 가능하며 적절한 설정을 쉽게 복제하고 공유할 수 있게 됨으로 인프라를 효율적으로 관리가능

  1. 통합 저장소가 아닌 분권 데이터 관리.
    분권 데이터 관리를 도입하고 나서 마이크로서비스가 부디친 문제는 각 마이크로서비스의 저장소에 담긴 데이터의 비지니스 정확성을 맞춰야하는 데이터 일관성 문제다.

마이크로서비스에서는 비동기 이벤트 처리를 통해 데이터 일관된 처리를 한다. 결과적 일관성 이라고 한다.

두 서비스 데이터가 일시적으로 불일치하는 시점이 잇고, 일관성이 없는 상태지만 결국에는 두 데이터가 같아진다.라는 개념
별도의 로컬 트랜잭션을 각각 수행하고 일괄성이 달라진 부분은 체크해서 보상 트랜잭션으로 일관성을 맞추는 개념.

  1. 주문 서비스가 주문 처리 트랜잭션 수행
    동시 주문 이벤트 발생
    주문 이벤트 메시지 큐로 전송
    배송 서비스가 주문 이벤트 인식
  2. 배송 서비스가 주문 처리에 맞는 배송 트랜잭션 수행
  3. 배송 처리 트랜잭션 중 롤백 시
    배송 처리 실패 이벤트 발생 후 메시지 큐로 전송
    주문 서비스가 배송 처리 실패 인식
  4. 주문 서비스는 주문 취소(보상 트랜잭션) 수행.
  1. 실패를 고려한 설계

0개의 댓글