Spring Cloud Stream + RabbitMQ Binder
·
📘 Backend/Spring Cloud
📚 Spring Cloud Stream + RabbitMQ Binder(시계열 데이터 집계 파이프라인 구현)사내에서 새로운 플랫폼 개발이 시작되기 전, 기존의 데이터 처리 로직은 아래와 같았습니다.기존 로직AI Raw Data 생성MQTT 프로토콜로 RabbitMQ에 만들어둔 Topic(Routing Key)기반 Quorum Queue로 데이터 적재Spring에서 Queue의 데이터를 Consume(DeliverCallBack을 이용한 Basic Consume 방식) 하여 전처리(집계 및 캐싱, 통계처리)구현할 로직BasicConsume 방식으로 Queue에서 받던 데이터를 StreamBridge 클래스 로 전환해 RabbitMQ Binder를 구현한 AggregationProcessor에 바로 전달A..
Distributed Log Tracing (Zipkin + Spring Cloud Sleuth)
·
📘 Backend/Spring Cloud
📚 Distributed Log Tracing (Zipkin + Spring Cloud Sleuth)Spring Cloud Sleuth 란?Spring Cloud Sleuth 공식 문서Spring Cloud Sleuth는 분산 로그 추적기로, Spring에서 Zipkin Client 모듈로 각 Request에 대한 ID를 자동으로 생성해 줍니다.이 ID 정보는 각 Protocal의 Header를 통해 전달되며, 정보를 수신한 서버는 다음 서버에게 동일한 정보를 제공하는 방식으로 History를 추적할 수 있습니다.Trace IdSpan Id전체 작업에 할당된 ID. 작업은 각각의 작은 단위들로 구성되어 있다고 한다면, 각각의 작은 단위들은 공통의 Trace ID 를 갖고 있습니다.각각의 작은 단위들이 ..
Spring Cloud Config Server/Client (RabbitMQ & Cloud Bus)
·
📘 Backend/Spring Cloud
📘 Spring Cloud Config Server Spring Cloud Config 는 여러 서비스 들의 설정 파일을 외부로 분리해 하나의 중앙 설정 저장소 처럼 관리 할 수 있도록 해주며 특정 설정 값이 변경시 각각의 서비스를 재기동 할 필요없이 적용이 가능하도록 도와준다. 여러 서버의 설정 파일을 중앙 서버에서 관리할 수 있다. 서버를 재배포 하지 않고 설정 파일의 변경사항을 반영할 수 있다. 하지만 이것이 모든 문제를 해결해주지는 않는다. Spring Cloud Config를 이용하면 다음의 문제들을 겪을 수 있으므로 주의해야 한다. Git 서버 또는 설정 서버에 의한 장애가 전파될 수 있다. 우선 순위에 의해 설정 정보가 덮어씌워질 수 있다. Spring Cloud Config 설정 파일 우선..
Spring Cloud Config
·
📘 Backend/Spring Cloud
📘 Spring Cloud Config 분산된 환경의 어플리케이션에서 환경설정 정보를 중앙의 Config Server에 모아 관리하게 해주는 라이브러리이다. 구축을 하게 된 배경은 디스코드 봇을 만드는중인데 봇의 토큰 값을 로컬에서 관리하는 방법 말고 다른방법이 또 있을까 해서 검색하다 AWS Parameter Store를 할까 하다가 이걸로 하게 됐다. 구현 순서 Spring Cloud Config Server Spring Cloud Config Client SSH Key 등록 📘 Spring Cloud Config Server 여러 서버들의 설정정보를 모아놓을 HQ Config Server 사전 준비 사항 Spring Cloud Config 서버로 쓸 Private Git Repository 생성 S..
Spring Cloud Gateway (Eureka)
·
📘 Backend/Spring Cloud
📘 API Gateway 클라이언트의 마이크로 서비스 호출에 대한 접근 인증 및 ACL을 적용하여 중요 데이터를 보호하는 트래픽 관리 외부 클라이언트와 백엔드 서비스 간 통신을 최적화하여 클라이언트에게 원활한 경험 제공 확장성과 고가용성을 보장하며 클라이언트의 모든 API 호출을 가져와 적절한 마이크로 서비스로 라우팅 함. (로드밸런서와 유사한 구조) API Gateway를 사용하는 이유 마이크로 서비스는 각각 자체기능을 필요로 하기 떄문에 어플리케이션을 느슨하게 결합된 여러 서비스로 분해 가능 더 쉽게 개발, 배포 및 유지 관리를 할 수 있지만 고객이 어플리케이션에 빠르고 안전하게 액세스 하기가 더 어려워진다 Non-Blocking I/O가 지원되는 플랫폼에 구축하는것이 가장 합리적이다 (반응형 프로그..