Home
marshmel.log
Cancel

대규모 트래픽을 고려한 장애 허용 with circuit breaker

대규모 트래픽 발생 시 지연에 대비하는 방법 서비스에서 사용자 수가 급격히 증가하는 이벤트가 있을 때, 대규모 트래픽을 효율적으로 처리하는 것이 중요하다. MSA로 구성된 서비스에서 지연 발생 시 장애 전파를 막기 위해서는 발생한 장애가 다른 micro service에 영향을 주지 않아야 한다. 정보 조회의 경우 응답 시간이 길어지거나 응답에 실패할...

[Effective Java] Method

매개변수가 유효한지 검사하라 대부분의 메서드와 생성자는 매개변수가 특정 조건을 만족해야 원하는 동작을 할 수 있다. 매개변수에 대한 제약 조건은 메서드가 실행되기 전에 검증이 되어야 한다. 메서드가 동작하기 전에 오류를 잡아야 오류 발생 지점을 쉽게 찾을 수 있다. 만약 null이 아닌 0보다 큰 값을 요구하는 메서드가 있다고 가정한다면, 메서드가 ...

kafka consumer 예외 처리와 재시도 전략

테스트 환경 spring boot: 2.1.4.RELEASE jdk: 1.8 spring-kafka: 2.2.5.RELEASE 지금까지 Kafka consumer를 구성할 때 정말 간단한 설정만 하고, 사용했었다. spring-kafka를 이용해 @KafkaListener로 consumer의 기본 속성 값을 사용했다. 회원 정보가 변경되는 ...

[Effective Java] 예외를 예외답게 사용하기

예외 처리 개발을 하다보면 예외처리에 대한 고민을 많이 하게된다. 어느 부분에서는 예외를 명시해서 던지기만 하고 어느 부분에서는 예외를 원하는 방식으로 처리한다. 프로그램의 가독성과 유지보수성, 신뢰성을 위한 올바른 예외처리를 알아본다. 예외처리에 대해 Effective java 책을 보고 정리한 내용이다. 예외는 진짜 예외 상황에만 사용하라 예...

kafka의 동작을 알아보자

업무 중 kafka consumer를 사용해서 데이터를 처리하는 부분이 필요했다. 팀원들과의 고민은 consumer 구현 위치를 어떤 repository에 둘 것인가에 대한 것이었다. 여러 선택지와 각각의 장단점을 고려해보면서 이번 기회에 kafka를 제대로 정리하면 좋겠다고 생각했다. Kafka의 구조 전체적인 kafka의 구조이다. produ...

[MSA 4] Maven Repository로 MSA 환경에서 DTO 공유하기(maven central)

maven central은 여러가지 dependency를 저장해 놓은 패키지 저장소이다. 프로젝트에 필요한 의존성을 import 하여 사용할 수 있다. MSA 환경에서 Maven repository의 필요성 MSA 환경에서는 DTO(Data Transfer Object)를 공유하게 되는 경우가 발생한다. 마이크로 서비스 간의 통신이나 이벤트 발생 ...

[MSA 3] Custom annotation과 AOP를 이용한 멱등성을 보장하는 알림 전송하기

알림 시스템 구조 [MSA 2] AWS SQS를 이용한 알림 시스템 설계 및 구현 알림 시스템은 위와 같이 구성되어 있다. 여러 micro service에서 이벤트가 발생하게 되면 SNS나 SQS에 메세지를 publish하게 된다. Notification service는 SQS에 담겨 있는 메세지를 polling 받아 알림을 전송하고 알...

[MSA 2] AWS SQS를 이용한 알림 시스템 설계 및 구현

프로젝트를 설계할 때는 알림 시스템을 간단하게 생각하고 설계했었다. 하지만 알림을 구현하기 시작하면서 재 설계의 필요성을 느꼈다. 알림 시스템의 요구사항 알림 템플릿 먼저 알림 시스템의 템플릿을 알아보자. 배송이 시작되었습니다. [알림 메세지] https://mypage [연관된 페이지] 알림 형태 수신자 ...

[MSA 1] spring cloud로 프로젝트 초기 세팅하기

MSA 아키텍처로 설계하기 아키텍처에는 대표적으로 monolithic, micro service architecture 가 있다. 클라이언트와 서버가 합쳐진 하나의 거대한 아키텍처이고, msa는 작고 독립된 서비스들로 구성된 아키텍처로 독립적인 배포와 서비스별로 다른 기술을 사용해도 되는 장점을 가지고 있다. 독립적 배포와 장애 확산을 줄일 수 있...

Vite 사용해보기

Vite 란?? Vite(프랑스어로 “빠르다(Quick)”를 의미하며, 발음은 “veet”와 비슷한 /vit/ 입니다.)는 빠르고 간결한 모던 웹 프로젝트 개발 경험에 초점을 맞춰 탄생한 빌드 도구이며, 두 가지 컨셉을 중심으로 하고 있습니다. 개발 시 네이티브 ES Module을 넘어 더욱 다양한 기능을 제공합니다. 가령, Ho...