목록Spring boot (6)
And Brain said,

오늘은 MSA의 필수 패턴 중 하나인 Circuit Breaker에 대해 알아볼 것이다. MSA(Microservice Architecture)는 애플리케이션의 유연성, 확장성, 유지보수성 등을 향상시키지만, 여러 개의 서비스가 함께 동작하기 때문에 각각의 서비스가 다운되는 상황이 발생할 수 있다. 이러한 문제를 해결하기 위해서 분산 시스템에서 일시적으로 실패한 서비스를 격리하고 복구하는 시스템 전체의 가용성을 높이기 위해 사용되는 디자인 패턴인 Circuit Breaker가 사용된다. 호출된 시스템이 지연이나 에러를 일으키면 Circuit Breaker가 해당 호출을 중지시키고 대체로직을 수행한다. Circuit Breaker 패턴은 일반적으로 세 가지 상태를 가진다. Closed: 서비스가 정상적으로..

오늘은 Spring Cloud의 Bus에 대해 알아보도록 하자. MSA는 다들 잘 알다시피 여러 개의 마이크로서비스가 각각 독립적으로 동작하고 서로 통신하여 기능을 제공하는데 이때, 마이크로서비스들 간에 변경 사항이 발생할 경우, 이를 다른 서비스들에게 전파해야 한다. 이를 위해 Spring Boot 애플리케이션에서 사용되는 버스 구현체가 Spring Cloud Bus다. Spring Cloud Bus는 AMQP(Advanced Message Queuing Protocol) 기반의 브로커 기반 메시징 시스템으로, RabbitMQ나 Apache Kafka를 이용하여 구현한다. 메시지 브로커에 대한 더 자세한 내용은 아래 포스팅을 참조 https://theworldaswillandidea.tistory.co..

오늘은 Spring Boot의 Profile 설정을 통해, 쉽게 환경 별로 설정을 구분할 수 있도록 해보자. 바로 시작하자. 자, 이렇게 설정하면 된다. 매우 쉬우니 여기서 끝. 부연설명을 해보자면, 일단 이 프로젝트는 Config Server가 따로 존재하여, Config가 프로젝트 외부에 존재한다. 하여 yml 파일에 --- 식으로 다른 환경에 맞춰 Config Server 경로를 잡아주기 위해 Config Server의 IP를 변경해주었다. 기본적으로 Spring boot를 실행하면 프로필은 default로 실행된다. 하지만, 이런 식으로 설정해준다면 각각의 환경에 따라 변화무쌍하게 프로젝트를 운용할 수 있게된다. dev, prod 같은 것들은 예시이므로, 본인이 원하는 프로필네임으로 설정해주어도 ..

오늘은 현재 안드로이드의 공식 언어이자 태생부터 진화된 자바를 표방한 언어, Kotlin에 대해 알아보고 Kotlin으로 구축하는 간단한 Spring boot 예제까지 배워보도록 하자. 최신 언어가 기존의 언어를 대체하기란 정말로 쉽지 않다. 대부분의 사람들은 익숙한 것을 좋아하고 또한 기존 코드가 너무 방대하면 손을 댈 엄두를 못 내게 된다. 특히, 자바와 같이 높은 완성도의 언어라면 특별한 이유가 있지 않는 한 대체할 이유를 느끼지 못하게 된다. 구글도 오라클과 소송만 아니었다면 자바를 계속 썼을 것이다. 선결 이유가 어떻든 Kotlin은 안드로이드의 공식 언어로 채택되었고 사람들에게 자신의 존재감을 드러냈다. Kotlin은 이러한 전략을 사용했다. 기존 언어와 호환 앞서 기존 언어를 대체하려 했던 ..

Spring boot는 기본적으로 json converter로 Jackson을 사용한다. 하지만, Jackson은 객체를 만들어서 매핑해줘야 한다는 단점이 존재해 Gson을 사용하여 더 편리하게 작업하고 싶을때가 있다. 이럴때 application.yml 파일에 이런식으로 기본 converter를 Gson으로 바꿔주고 라이브러리를 추가해주면 된다. 그런데 만약 여러분의 프로젝트가 OpenAPI Swagger 를 사용한다면 문제가 발생한다. Swagger는 Gson을 지원하지 않기에 문제없이 둘을 동시에 사용하려면 커스텀 설정을 할 수 밖에 없다. Gson을 이용하여 Swagger 직렬화를 한 뒤 bean으로 등록해주면 된다. 이런식으로 설정해준다면, Spring boot에서 문제없이 둘을 동시에 사용할 ..