본문 바로가기

아키텍처 | 설계12

kafka, rabitmq, sqs 사용시 고려사항 - 마이크로 서비스 아키텍처 sqs 같은 비동기식 구현에서 만약에 처리되지 않은 메세지가 있다면.아래 4가지 방법을 쓴다.1. 재처리메세지 처리 중 에러가 발생했을때 다시 처리하도록 하는 방법최대 재처리 횟수를 정해야한다. - 보통 3~5번에러 발생 후 바로 재처리하면 같은 원인으로 에러가 날 수 있다.일정 시간 기다렸다가 재처리한다.1번째 에러 발생시 - 1초후2번째 에러 발생시 - 5초후세번째 30초후 2. 무시에러가 난 메세지를 무시하고 없애는 방식이다. 3. 알림에러가 발생했을때 관리자에게 알려주는 방식이다. 4. 사람이 처리에러 처리 부분이 복잡하거나 규모가 큰 경우 에러처리를 해주는 컴포넌트를 만든다.Error hospital 이라고 부른다.처리 중 에러가 난 메세지들을 모아서 다양한 정책으로 재처리한다. 큐 메세지 전달.. 2020. 6. 7.
MSA 데이터 베이스 분리, 트랜잭션 처리 TCC , 앤서블/테라폼 데이터베이스 분리 도메인 단위로 나눈다. - 국가코드 같은 공유 정적 데이터는 코드나 설정파일에 넣는 것도 방법이다. - 이렇게 코드에 넣으면 속도가 빨라진다. 공유 데이터 접근하기 데이터베이스 1개를 같이 쓰지 말고 서비스에 접근해서 데이터를 다룬다. 창고 서비스와 재무 서비스도 서로 다른 데이터베이스를 써야 한다. 트랜잭션 유지 문제 마이크로 서비스 분산 트랜잭션 처리 방법 msa 는 중간에 서비스에 장애가 생기면 트랜잭션을 어떻게 보장할까 TCC 라고 하는 방법으로 해결 할 수 있다. Try Confirm Cancel 의 줄임말이다. 트랜 잭션 참여자가 모두 동의하면 트랜잭션 매니저가 각각의 참여자에게 커밋하라고 지시한다. 하나라도 반대표가 나온다면 모든 참여자에게 롤백 명령을 보낸다. 지속적 통합.. 2020. 6. 7.
디자인 패턴- 퍼사드 패턴, 스트랭글러 패턴 디자인 패턴 퍼사드 패턴 - 어떤 서브 시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공한다. 호출자 입장에서 서브 클래스를 알 필요없이 하위 시스템을 쓸 수 있다. 컨트롤러 입장에서 서비스 클래스를 이렇게 호출하면 된다. BookService.createOne() 이렇게 하고 createOne 에서 필요한 로직을 처리한다. 자주 쓰는 모듈이 있거나 필요하다면 npm 모듈로 만들고 받아서 구현한다. 메인 코드를 최소화 할 수 있다. 교살자 패턴 - 스트랭글러 패턴 특정 기능을 새로운 애플리케이션 및 서비스로 점진적으로 교체한다. 그리고 레거시 시스템을 중단한다. MSA 4장 정리 - 데이터베이스 통합은 최대한 피하라 - REST, RPC 의 장단점을 이해하고 사용하기 - 오케스트레이션(동기) 보.. 2020. 6. 7.
MSA의 장점, 단점. 동작 방식, 버저닝 전략 MSA 통신 할때 보안 처리 방법 EKS 같은 쿠버네티스를 사용 할 때는 Istio 같은 솔루션이 도움이 된다. 주소를 외부에 노출하지 않고 pod끼리 http://order-api:3000 이런 식으로 통신 할 수 있다. MSA구조의 장점, 단점. 모놀리틱과 비교해서 msa 장점 msa 단점 기술 이기종성 - 분리된 서비스로 개발할 수 있기 때문에 서비스마다 가장 적합한 기술을 선택 할 수있다. 배포 용이성 - 모놀리틱의 거대한 프로젝트를 빌드하는 것보다 마이크로 서비스 1개를 배포하는것이 훨씬 쉽고 빠르다. 확장성 - 새로운 개발항목이 추가되었을때 모놀리틱은 전체 코드에 영향이 있는지를 살피고 개발, 테스트 해야한다. 마이크로 서비스는 코드베이스가 작다. 그리고 새로운 서비스를 독립적으로 만들면 된다.. 2020. 6. 7.
Azure API Management service(api-gateway)에 API 추가하기 1. api-doc/json 주소에 들어간다. -> swagger 페이지의 json을 얻는다. 2. API Management - APIs 에 들어간다. 3. All API에서 변경 사항을 추가할 API를 선택한다. API 이름 옆의 ...을 클릭한다. Import 를 클릭한다. Open API를 클릭한다. Select a file을 클릭한다. json 파일을 추가한다. Import 한다. 끝 2019. 7. 26.