본문 바로가기

msa17

[기타] CloudEvents v1.0.2 번역 및 정리 - 이벤트 메시지 스키마 스펙 안녕하세요. 사바라다입니다 ! 클라우드가 보편화되고 서비스를 만들어내는게 쉬워지면서 여러개의 서버로 하나의 서비스를 이루는 MSA(MicroService Architecture)로 개발이 이루어지고 전환도 이루지고 있습니다. 이에 따라 기존의 모놀리식(monolithic) 방식과는 주요하게 고려해야할 부분이 부분이 다릅니다. 오늘 여러분들에게 소개드릴 내용은 CloudEvents Spec입니다. 하나의 서비스를 하나의 서버가 아닌 여러개의 서버로 제공한다는 것은 서버간의 Message 교환이 중요합니다. 따라서 Message의 Schema 또한 중요한데요. CloudEvents Spec은 이러한 스키마의 표준에 대해서 고민하고 논의하여 정의된 문서입니다. 오늘은 CloudEvents Spec의 내용을 요.. 2023. 4. 19.
[MSA] spring boot에서 resilience4j 사용해보자 - RateLimiter, BulkHead, TimeLimiter 편 안녕하세요. 이번 포스팅에서는 spring boot 환경에서 resilience4j의 ratelimiter와 bulkhead, 그리고 timelimiter 패턴에 대해서 실습해보는 시간을 가져보도록 하겠습니다. RateLimiter rateLimiter는 단위 시간동안 얼마만큼의 실행을 허용할 것인지 제한할 수 있는 메커니즘을 말합니다. resiliece4j에서는 단순하게 요청의 숫자를 이용하여 제한(limit)할 수 있으며 또는 제한에 걸린 요청은 queue를 생성하여 이후에 처리하거나 하는 방법도 제공합니다. 위 이미지는 공식 docs에서 가져온 이미지입니다. rateLimiter가 어떻게 동작하는지 매커니즘을 잘 나타내고 있습니다. System.nanoTime()을 JVM 시작과 함께 일정한 단위 .. 2021. 12. 15.
[MSA] spring boot에서 resilience4j 사용해보자 - Retry, CircuitBreaker 편 안녕하세요. 이번 포스팅에서는 resilience4j를 실제로 spring boot 환경에서 사용해보는 방법에 대해서 알아보는 시간을 가져보도록 하겠습니다. 환경 먼저 오늘 실습에 사용된 환경은 아래와 같습니다. Java 11 Spring Boot 2.5.5 resilience4j 1.7.1 Spring Boot 기본적으로 resilience4j는 Spring Boot 전용이 아닙니다. 다양한 프레임워크에서 돌아갈 수 있도록 모듈이 준비되어있는데요. 그래서 Spring Boot에서 지원하는 properties 또는 Bean을 활용한 설정을 하기위해서는 Spring Boot 전용 모듈을 함께 추가해 주어야합니다. 추가해주어야하는 모듈은 아래와 같습니다. dependencies { compile "io.gi.. 2021. 12. 12.
[MSA] Hystrix말고 resilience4j ? 안녕하세요. 오늘은 분산 시스템에서 장애 상황을 견딜 수 있게 하는 Hystrix가 maintenance mode에 들어감에 따라 대체로 떠올랐던 resilience4j에 대해서 알아보는 시간을 가져보도록하겠습니다. 이번 시간에는 Hystrix 프로젝트의 현재 상태와 resilience에서 제공하는 것은 어떤것이 있는지에 대해서 알아보고 다음시간에는 spring boot 환경에서 실습을 진행할 수 있도록 하겠습니다. 먼저 Hystirx와 fallback tolerance에 대해서 잘 모르신다면 이전에 제가 올렸던 [MSA] Spring Cloud Hystrix - 개념편 포스팅을 먼저 참고해주시기 바랍니다. Hystrix의 현재 상태(Status) Hystirx는 2017년 7월 13일 Version 1.. 2021. 12. 10.
[MSA] Spring Cloud Feign - With Hystrix 안녕하세요. 오늘은 Spring Cloud Feign의 마지막 시간입니다. 오늘 알아볼 내용은 Feign에서 Hystrix와 연동은 어떻게 이루어지고 어떻게 동작하는지, 그리고 이를 실습해보는 시간을 가져보도록하겠습니다. Hystrix에 대한 개념이 없으시거나 부족하신 분들은 제가 포스팅한 예전 포스트가 있으므로 참조해주시면 좋을 것 같습니다. [MSA] Spring Cloud Hystrix - 개념편 의존성 저는 현재 시점의 Spring Cloud의 최신버전인 Hoxton.SR8를 사용하고 있습니다. 해당 mavenBom으로 OpenFeign의 의존성을 가져오면 최신버전인 2.2.5.RELEASE를 사용할 수 있습니니다.있습니다. 다른 많은 포스팅을 보시면 hystrix의 의존성을 추가해야한다고 합니다.. 2020. 10. 10.
[MSA] Spring Cloud Feign - 커스터 마이징 설정편 안녕하세요. 오늘은 Spring Cloud Feign의 2번째 시간입니다. 오늘 함께 알아볼 내용은 Spring Cloud Feign의 설정을 커스터마이징 할 수 있는 것은 어떤것들이 있으며 어떻게 커스터마이징 할 수 있는가에 대해서입니다. FeignClient에 커터마이징 설정을 적용하기 위해서는 아래와 같이 @FeignClient에서의 configuration 속성을 이용하면 됩니다. 아래처럼 했을 때 AzureClient는 커스터마이징 설정인 AzureHttpConfiguration과 오버라이딩 되지 않은 부분에 대해서는 기본설정인 FeignClientsConfiguration가 적용됩니다. @FeignClient(name = "azureClient", url = "${external.bing.ur.. 2020. 9. 30.
[MSA] Spring Cloud Feign - 기본 사용 및 기본 설정편 안녕하세요. 오늘은 오랜만의 Spring Cloud에 대해서 알아보는 시간을 가지려고 합니다. 오늘 알아 볼 프로젝트는 Spring Cloud Feign 프로젝트입니다. MSA로 시스템 아키텍처가 많이 변경되면서 시스템간의 단일 책임 원칙으로 많은 시스템의 개선점을 보인 것은 사실입니다. 하지만 모든지 트레이드 오프는 있습니다. MSA로 변화의 큰 단점 중 하나로 꼽자면 바로 API 호출의 증가일 것입니다. 기존에 단순 DB 조회로 가능하던 부분들이 MSA로 전환되면서 직접 접근하는 것이 불가능해졌습니다. 따라서 이들이 모두 API가 되었습니다. MSA 처럼 분산되어있는 시스템을 사용하는 입장에서는 API를 호출하는 코드를 노가다 식으로 항상 만들어줘야하는 번거로움이 생겼습니다. 이를 해결해 줄 수 있는.. 2020. 9. 27.
[MSA] Spring Cloud Zuul 1.x - 실습편 안녕하세요. 오늘은 저번시간에 이어서 Spring Cloud Zuul 1.0의 실습을 해보도록 하겠습니다. 실습의 순서는 Spring Cloud Zuul 사용을 위한 의존성을 알아보고, Filter 등록 방법, Routing, 그리고 장애에 대비한 Retry 및 Fallback을 사용하는 방법까지 알아보도록 하겠습니다. pre-condition(사전 조건) zuul을 실습하기 전에 서비스를 한게 만들고 2개로 띄어두어야 실질적인 테스트를 할 수 있습니다. 아래와 같이 설정 Controller를 제작한 후 build, 2개의 서버를 띄우도록 합시다. @RestController public class TestController { @GetMapping("/ping") public ResponseEntity.. 2020. 1. 22.
[MSA] Spring Cloud Hystrix - 개념편 안녕하세요. 요즘 저는 MSA에 관하여 주로 포스팅을 올리고 있습니다. 오늘은 Spring Cloud에서 Circuit Break의 역할을 하는 Hystrix에 대해서 알아보도록 하겠습니다. 이번 포스팅은 이론을 중심으로 진행할 것이며 다음시간에는 Spring Boot를 통한 실습을 중심으로 진행하도록 하겠습니다. Hystrix 개론 MSA 처럼 분산환경을 구성하다보면 서비스가 다양한 이유로 언젠가는 실패할 수 있습니다. 외부의 서버와 연결이 되지 않는다, 메모리 릭으로 인해 서버가 다운 된다. 등 다양한 이유로 말이지요. Hystrix는 이러한 장애상황에 대해 견딜 수 있도록해줍니다. 어떻게 장애 상황에 대해서 내성을 강화시켜 줄 수 있을까요? Hystrix는 아래와 같은 특징을 가지고 있습니다. 다른.. 2020. 1. 6.
[MSA] MSA의 특징과 장단점 오늘은 저번 시간에 이어서 MSA의 특징과 장단점에 대해서 알아보도록 하겠습니다. MSA의 특징 스프링 5.0 마이크로서비스 2/e에서는 아래와 같은 문구가 나옵니다. 마이크로서비스의 특징에 대해서는 구체적이면서 모두가 동의하는 단 하나의 정의는 없다. 하지만 성공적이었던 모든 마이크로서비스 구현체들 사이에는 공통적으로 발견되느 특징들이 몇 가지 있다. 이 책에 서술되어 있는 성공적인 마이크로서비스의 공통적인 특징에 대해서 알아보도록 하겠습니다. 서비스는 일급 시민 API를 통해서만 마이크로서비스와 서비스와 상호작용할 수 있습니다. 즉, 마이크로서비스는 서비스의 end-point(접근점)을 API 형태로 외부에 노출하고, 실질적인 세부 사항은 모두 추상화합니다. 내부의 구현 로직, 아키텍처와 프로그래밍 .. 2020. 1. 2.
[MSA] MSA의 개념과 이해_기존 아키텍처와 MSA 마이크로서비스는 최근 많은 조직에서 고도의 애자일성, 전달 신속성, 확장성을 확보할 수 있는 중요한 수단으로 사용 중인 아키텍처 스타일입니다. 기존의 특정한 물리적인 서버에 서비스를 올리던 on-promise 서버기반의 monolithic architecture에서 이제는 클라우드 환경을 이용하여 서버를 구성하는 MicroService Architecture로 많은 서비스들이 전환되고 있고, 새로 출시되는 서비스들은 이렇게 진행되고 있습니다. 오늘은 기존의 Monolithic Architecture와 MSA(MicroService Architecture)의 변화와 차이에 대해서 알아보도록 하겠습니다. Monolithic Architecture 모놀리식 아키텍처란 서비스의 아키텍처를 구성할 때 모든 서비스.. 2019. 12. 26.
[MSA] Elastic Stack을 이용한 중앙 집중형 로깅_실제 운영 환경 안녕하세요. 오늘은 Elastic Stack을 이용한 중앙 집중형 로깅_1 포스팅에 이어서 각각의 elastic stack을 한번 이어보도록 하겠습니다. 개론 클라우드 환경에서 중앙 집중형 로깅을 만드는 것은 로컬환경에서 세팅하는 것과 많은 차이를 가지고 있습니다. 우리가 클라우드 상황임에 따라서 고려해야하는 상황이 좀 더 추가되는 것이지요. 고려해야하는 상황과 해결법은 아래와 같습니다. 서비스는 서버에 독립적이어야 한다. docker를 통한 해결 서비스는 상황에 따라 유연하게 Scale-out될 수 있어야한다. 새로운 서버에 새로운 서비스가 인스턴스로 올라왔다면 Log Shipper(로그를 중앙으로 전달하는 프로세스)또한 Scale-out 되어야 한다. Auto-Scaling 등을 이용한 해결 kube.. 2019. 12. 18.