본문 바로가기

MSA6

5. 나쁜 상황에 대비한 스프링 클라우드와 넷플릭스 히스트릭스의 클라이언트 회복성 패턴 분산 시스템에서의 장애에 대응하는 애플리케이션 구축 방법은 중요한 일 원격 서비스 문제는 탐지하기 어렵고 비정상적인 서비스 하나가 여러 애플리케이션을 짧은 시간에 다운시킬 수 있기 때문 클라이언트 회복성 패턴 클라이언트 측 부하 분산 회로 차단기(circuit breaker) 폴백(fallback) 벌크헤드(bulkhead) 1. 클라이언트 측 부하 분산 클라이언트가 서비스 디스커버리 에이전트(넷플릭스 유레카)를 이용해 서비스의 모든 인스턴스를 검색한 후 해당 서비스 인스턴스의 실제 위치를 캐싱하는 것. (넷플릭스 리본라이브러리) 문제가 된 서비스 인스턴스를 제거해 서비스 호출이 그 인스턴스로 전달되는 것을 막는다 2. 회로 차단기 원격 자원에 대한 모든 호출을 모니터링하고, 호출이 필요한 만큼 실패하면.. 2022. 2. 19.
부록. Dockerfile과 Docker-compose를 이용한 프로젝트 빌드 및 실행 도커 환경에서 스프링 부트 프로젝트를 빌드 및 실행하는 방법을 알아보자. 개발 환경 개발 환경은 Spring Boot, Maven, Git, Docker입니다. 도커는 다음 사이트에서 다운로드 받을 수 있습니다. https://www.docker.com/get-started Get Started with Docker | Docker Learn about the complete container solution provided by Docker. Find information for developers, IT operations, and business executives. www.docker.com 윈도우에서 도커 실행 시 Docker > Settings > General 에서 Expose daemon .. 2022. 1. 20.
4. 서비스 디스커버리 서비스 디스커버리 서비스의 물리적 위치를 추상화 서비스 클라이언트가 인스턴스의 물리적 위치를 몰라도 되어, 서비스 인스턴스의 수평 확장 및 축소가 자유로움 비정상 인스턴스를 가용 서비스 목록에서 제거하여 회복성 높임 예 : 넷플릭스 유레카 주요 특징 1. 고가용성 서비스 목록을 여러 노드가 공유하는 클러스터링 환경 지원. 2. 피어 투 피어 각 노드는 서비스 인스턴스 상태를 공유함. 3. 부하 분산 클라이언트 요청을 동적으로 부하 분산하여 모든 서비스 인스턴스에 분해함. 4. 회복성 클라이언트는 서비스 정보를 로컬에 캐시하여 서비스 디스커버리가 가용하지 않을 때에도 서비스를 계속 찾을 수 있음. 5. 장애 내성 서비스 인스턴스의 비정상을 탐지하고 가용 서비스 목록에서 인스턴스를 제거함. 서비스 디스커버리.. 2022. 1. 9.
3. 스프링 클라우드 컨피그 서버로 구성 관리 - 배포되는 실제 코드에서 애플리케이션의 구성을 완전하게 분리 - 서버를 시작할 때 환경 변수나 애플리케이션의 마이크로서비스가 읽어 올 수 있는 중앙 저장소를 이용해 애플리케이션 구성 정보를 주입 1. 스프링 클라우드 컨피그 서버 구축 confsvr 라는 새로운 프로젝트 생성 - pom.xml 작성 // confsvr의 pom.xml ... org.springframework.cloud spring-cloud-dependencies Finchley.RELEASE pom import org.springframework.cloud spring-cloud-config-server org.springframework.cloud spring-cloud-starter-config UTF-8 com.hmg.confs.. 2022. 1. 2.
2. 스프링 부트 마이크로 서비스 구축 성공적인 마이크로 서비스 개발을 위한 세가지 역할 아키텍트 소프트웨어 개발자 데브옵스 엔지니어 1. 아키텍트 역할 : 마이크로서비스 아키텍처 설계 비즈니스 문제의 분해 비즈니스 문제를 각 활동 영역을 대표하는 덩이들로 분해 비즈니스 문제 기술 후 주요 명사를 물리적 데이터 모델의 테이블로 매핑 예)조직, 라이선스, 계약, 자산 서비스 세분화의 확정 단순화한 데이터 모델을 근거로 서로 독립적 빌드 배포 가능한 자체 완비형 유닛을 추출 데이터베이스 테이블을 서비스에 따라 정리하고 각 서비스가 특정 도메인의 테이블만 액세스할 수 있어야 함 서비스 인터페이스 애플리케이션의 마이크로서비스가 대화하는 방식을 정의 REST, URL, JSON, HTTP 상태 코드 2. 개발자 역할 : 스프링 부트와 자바로 마이크로서.. 2021. 12. 28.
1. Spring Microservice 개요 1. 모놀리식아키텍처(monolithic) vs 마이크로서비스(microservice) 모놀리식아키텍처(monolithic) UI, 비즈니스 로직, 데이터베이스 엑세스 로직 모두가 하나의 산출물로 패키징됨. 작은 변경에도 애플리케이션 전체를 다시 빌드, 테스트 및 배포해야함. 애플리케이션이 커질 수록 비용 증가. 마이크로서비스(microservice) 애플리케이션 로직을 각자 책임이 명확한 작은 컴포넌트들로 분해, 조합해서 솔루션을 제공. 각 팀마다 코드와 인프라스트럭처(앱 서버 및 데이터베이스)가 독립적. 독립적 빌드, 테스트, 배포 가능. 데이터 교환을 위해 HTTP, JSON 같은 경량 통신 프로토콜 사용. 다양한 언어와 기술로 애플리케이션 구축 가능 2. 스프링 부트 및 스프링 클라우드 스프링 부.. 2021. 12. 28.