본문 바로가기

MSA4

[MSA] 클라이언트 회복성 패턴 (길벗)을 학습하고 개인 학습용으로 정리한 내용입니다 클라이언트 회복성 패턴 클라이언트 회복성 패턴이란 원격 자원을 호출했을 때 에러가 발생하거나 제대로 동작하지 않을 때 문제를 해결하기 위한 소프트웨어 패턴이다. 대표적으로 클라이언트 측 부하 분산, 회로 차단기, 풀백, 벌크헤드 4가지가 존재한다. 원격 자원을 소비하는 클라이언트와 자원 사이에서 구현한다. 클라이언트 부하 분산 클라이언트 부하 분산은 넷플릭스 유레카 같은 서비스 디스커버리 에이전트를 이용해 서비스의 모든 인스턴스를 검색한 후 해당 서비스 인스턴스의 실제 위치를 캐싱하는 것이다. 클라이언트들이 서비스 디스커버리 엔진에 전적으로 의존하지 않아 안정성이 증가된다. 클라이언트 측 로드 밸런서가 지속적으로 서비스 인스턴스의 상태를 확인하여 문제.. 2021. 1. 15.
[MSA] 서비스 디스커버리 (길벗)을 학습하고 개인 학습용으로 정리한 내용입니다 서비스 디스커버리 MSA와 같이 분산 아키텍쳐에서는 다른 서비스를 호출해야할 경우 해당 서비스에 대한 네트워크 정보(IP,포트)를 알아야한다. 그러나 클라우드 환경에서는 서비스 인스턴스의 네트워크 정보가 동적으로 할당되기 때문에 고정적이지 않다. 그래서 서비스 클라이언트가 서비스를 호출할 때 해당 서비스의 네트워크 정보를 알아낼 수 있는 기능이 필요로 한데 이를 서비스 디스커버리(service discovery)라 한다. 서비스 디스커버리 아키텍처 1. 서비스 디스커버리를 이용하면 호출하고자 하는 서비스의 IP 주소를 알지 못하더라도 논리적 이름 만으로 서비스를 호출할 수 있다. 2. 서비스는 온라인 상태가 되면 자신의 IP 주소를 서비스 디스커버리 .. 2021. 1. 14.
[MSA] 스프링 클라우드 컨피그 서버를 통한 구성 관리 (길벗)을 학습하고 개인 학습용으로 정리한 내용입니다 일반적인 구성 관리 - 일반적으로 애플리케이션에 대한 구성 정보를 관리한다면 애플리케이션 내에 프로퍼티 파일(yaml, xml등)을 통해 구성 정보를 관리한다. - 이러한 경우 애플리케이션과 함께 관리 되어야하고 구성 정보가 변경될 경우 재 배포의 작업이 필요하다. - 무엇보다 수많은 마이크로서비스 인스턴스가 실행되는 클라우드 기반의 애플리케이션 상황에서는 적합하지 않은 방법이다. 마이크로 서비스에서의 구성 관리 마이크로 서비스에서의 구성 관리에서 지켜야하는 원칙 - 분리 : 실제 물리적인 서비스의 배포와 서비스 구성 정보를 완전히 분리한다. 애플리케이션 구성 정보를 서비스 인스턴스와 함께 배포하지 않는다. 대신 별도의 중앙 저장소에서 구성 정보를 가.. 2021. 1. 13.
[MSA] 마이크로서비스 (길벗)을 학습하고 개인 학습용으로 정리한 내용입니다 모놀리식 아키텍처 - 모놀리식 아키텍처는 마이크로 서비스와 상반되는 개념으로 많은 기능들이 포함된 하나의 커다란 애플리케이션을 만들어 배포하는 방식이다. - 여러 팀이 한 애플리케이션을 동시에 작업하는 경우가 많아 각 팀의 의사소통 및 조정 비용이 증가한다. - 각 팀에서 변경사항이 있을 때 마다 애플리케이션 전체를 다시 빌드하고 테스트해서 배포해야한다. 마이크로 서비스 - 느슨히 결합된 작은 분산 서비스 - 애플리케이션 로직을 각자 책임이 명확한 작은 컴포넌트들로 분해하고 이들을 조합하여 솔루션을 제공한다. - 각 컴포넌트는 작은 책임 영역을 담당하고 상호 독립적으로 배포된다. 따라서 각 서비스에 맞게 적절한 언어와 기술을 선택하여 개발이 가능하다... 2021. 1. 13.