Resilience4j를 사용한 탄력성 개선
13. Resilience4j를 사용한 탄력성 개선 Resilience4j의 서킷 브레이커와 재시도 메커니즘 소개 재시도와 서킷 브레이커 메커니즘은 마이크로서비스와 같이 동기 방식으로 연결되는 소프트웨어 컴포넌트에 특히 유용함 서킷 브레이커 소개 서킷 브레이커는 다량의 오류를 감지하며 서킷을 열어 새 호출을 받지 않는다 서킷 브레이커는...
13. Resilience4j를 사용한 탄력성 개선 Resilience4j의 서킷 브레이커와 재시도 메커니즘 소개 재시도와 서킷 브레이커 메커니즘은 마이크로서비스와 같이 동기 방식으로 연결되는 소프트웨어 컴포넌트에 특히 유용함 서킷 브레이커 소개 서킷 브레이커는 다량의 오류를 감지하며 서킷을 열어 새 호출을 받지 않는다 서킷 브레이커는...
12. 구성 중앙화 스프링 클라우드 컨피그 서버 소개 구성 저장소의 저장 유형 선택 깃 저장소 로컬 파일 시스템 하시코프 볼트 JDBC 데이터베이스 클라이언트가 먼저 접속할 서버 결정 기본적으로 클라이언트는 구성 서버에 먼저 접속해 구성을 검색하며, 구성에 따라 검색 서버에 자기 자신을 등록 또한 클라이언트는 검색 서버에 ...
11. API 접근 보안 OAuth 2.0 및 OpenID Connect 소개 인증은 사용자 이름과 암호 같은, 사용자가 제공한 자격 증명을 확인해 사용자를 식별자를 하는 것 권한 부여는 인증된 사용자, 즉 식별된 사용자에게 여러 API에 대한 접근 권한을 부여하는 것 OAuth2.0은 권한 부여를 위한 공개 표준 OpenID Connecti...
10. 스프링 클라우드 게이트웨이를 에지 서버로 사용 시스템 환경에 에지 서버 추가 외부 클라이언트는 모든 요청을 에지 서버로 보냄 서비스를 에지 서버 뒤로 숨기려면 도커 컴포즈 파일에 있는 두 서비스의 포트 선언을 제거해야 함 스프링 클라우드 게이트웨이 설정 스프링 이니셜라이저로 스프링 부트 프로젝트 생성 s...
9. 넷플릭스 유레카와 리본을 사용한 서비스 검색 서비스 검색 소개 DNS 기반 서비스 검색의 문제 라운드 로빈 방식 DNS를 이용해 검색하면 안 되는 이유?? DNS 클라이언트는 보통 리졸브된 IP 주소를 캐시하며, DNS 이름에 대응되는 IP 주소가 여러 개인 경우에는 동작하는 첫 번째 IP 주소를 계속 사용한다. 따라서 DNS 서버와 ...
8. 스프링 클라우드 소개 스프링 클라우드의 진화 하시코프 컨설과 아파치 주키퍼 기반의 서비스 검색 및 구성 중앙화 스프링 클라우드 스트림을 사용한 이벤트 기반 마이크로서비스 대체 방안 넷플릭스 히스트릭스 -> Resillence4j 넷플릭스 히스트릭스 대시보드/넷플릭스 터빈 -> 마이크로미터 및 모니터링 시스템 넷플릭...
7. 리액티브 마이크로서비스 개발 논블로킹 동기 API와 이벤트 기반 비동기 서비스의 선택 기준 일반적으로 견고하고 확장성 있는 마이크로서비스를 만들려먼 가능한 한 자율적으로 만드는 것이 중요 런타임 의존성을 최소화해야 함 -> 느슨한 결합(loose coupling) 따라서 동기 API 방식보다는 이벤트 기반 비동기 메시지 전달 방식을 ...
6. 영속성 추가 진행 방향 확인 프로토콜 계층(protocol layer)은 매우 얇으며, 공통 클래스로 구성됨 각 마이크로서비스의 주요 기능은 서비스 계층에 있다 모든 핵심 마이크로서비스에는 자체 데이터베이스와 통신하는 영속성 계층(Persistence layer)이 있다. 핵심 마이크로서비스에 영속성 계층 추가 스프링 데이터 외에 자바...
5. OpenAPI/스웨거를 사용한 API 문서화 스프링 폭스 소개 스프릭 폭스를 사용하면 API를 구현하는 소스 코드와 연동해 API를 문서화 가능 자바 코드와 API문서의 수명 주기가 다르면 시간이 지나면서 쉽게 어긋나기 때문에 중요함 RESTful API의 문서화 관점에서 보면 API를 구현하는 자바 클래스가 아닌, API를 설명하는 자바...
4. 도커를 사용한 마이크로서비스 배포 도커 소개 도커는 가상머신을 대체하는 경량 컨테이너 개념을 일반화 컨테이너는 리눅스 호스트에서 실행되며, 리눅스 네임스페이스를 이용해서 사용자, 프로세스, 파일 시스템, 네트워킹 등의 전역 시스템 리소스를 컨테이너에 분배 또한 리눅스 제어 그룹을 사용해 컨테이너가 사용할 수 있는 CPU와 메모리를 제한 ...