정의시스템 컴포넌트 간의 통신을 위해 이벤트를 생성하고 감지하는 아키텍처이벤트: 무언가 발생한 것시스템의 상태 변화Event Notification으로 전달명령과 관련된 데이터를 포함할 수도 있고, 단지 무언가 발생했다는 알림일수도 있다불변(immutable) 이다⇒ Event Sourcing의 원천이 된다명령(Command): 다른 시스템에게 응답을 요청하는 것Event Sourcing데이터 변경 이벤트를 저장하고 시스템의 상태를 재구축하는 방식데이터 변경 히스토리 추적데이터 일관성 보장구성 요소Producer: 이벤트 생성Broker: 이벤트를 적절한 Consumer로 라우팅Consumer: 이벤트를 수신하고 처리이벤트 기반 아키텍처나 메세지 기반 아키텍처에서는 Publisher-Subscriber ..
전체 글
개발자 이우진의 기술 블로그입니다정의서비스 간 통신을 처리하는 소프트웨어 계층컨테이너화된 마이크로서비스로 구성서비스 간 연결을 관리하기 위해 모니터링, 로깅, 추적, 트래픽 제어 등 기능 제공마이크로서비스 수가 증가하여 서비스 성능 모니터링하기 어려워지는 문제 해결도입 이유애플리케이션 성능은 서비스 간 통신 속도와 탄력성에 따라 좌우된다. 그러나 MSA에서는 분산된 마이크로서비스를 모니터링하기 어렵다.서비스 레벨에서 모니터링많은 서비스가 연동하여 작동하는 방식을 이해하기 어려움ex) 다운스트림 및 업스트림 종속성서비스와 워크로드가 통신하는 방식을 더 잘 관찰서비스 레벨에서 제어서비스가 서로 통신하고 수행하는 작업을 제어서비스의 동작, 정책, 상호 작용에 대한 세밀한 제어 및 관리 기능ex) 규제를 준수하기 위한 보안 정책 적용이점분산 ..
SOA (Service Oriented Architecture)정의개별 서비스에 초점을 맞춘 아키텍처 스타일Monolithic Design과 반대되는 개념서비스를 재사용하거나, 독립적인 여러 서비스를 결합하여 복잡한 태스크 수행ex) 사용자 인증 서비스를 생성해서 모든 애플리케이션에서 재사용특징데이터(DB) 공유ESB (Enterprise Service Bus)여러 서비스가 있는 시스템과 통신할 때 사용할 수 있는 소프트웨어기술과 관계 없이 서비스와 서비스 소비자 간의 통신을 설정데이터 모델 변환, 연결성/메시징 처리, 라우팅, 통신 프로토콜 변환요청을 각 서비스에 맞는 프로토콜로 변환각 서비스로의 연결을 한 포인트로 중앙 집증SOA vs MSASOA는 데이터 공유, MSA는 데이터 복제, 세분화SOA는..
개요 리액티브 프로그래밍은 데이터 스트림을 함수로 조작하고 비동기적으로 작업하는 프로그래밍 패러다임이다. 데이터 소스에서 발생하는 데이터 이벤트 스트림을 옵저버가 구독하여 처리한다. 리액티브 프로그래밍은 함수형 프로그래밍 개념을 활용하여 데이터 스트림을 선언적으로 처리하는 패러다임이다. 복잡한 비동기 프로그래밍을 단순화할 수 있다. 함수형 프로그래밍 (Functional Programming) 프로그램을 순수 함수(Pure Function)의 조합으로 구현하는 프로그래밍 패러다임 순수 함수 (Pure Fucntion) Deterministic: 동일한 입력에 대해서 항상 동일한 출력을 반환하고 Side Effect 없음: 함수를 실행하며 외부 상태를 변경하지 않는 함수 비동기 프로그래밍 (Asychron..
https://leetcode.com/problems/create-maximum-number/description 핵심 아이디어 숫자 붙여서 최댓값 만들기 + 순서 유지 -> Greedy 정렬 + 순서 유지 -> Decreasing Monotonic Stack 리스트의 사전 순 비교는 Python의 max(list1, list2)를 이용할 수 있다 (결과 길이) l1, l2 모든 길이 조합 경우의 수 구하기 어떤 값을 안 쓰면 결과 달라지기 때문 숫자 붙이기 - Greedy결과가 최댓값이 되는 건 모든 값을 사용하는 조건에서만 성립한다 설명 이 문제는 아래처럼 나누어서 풀어야 한다 두 리스트를 조합해서 가장 큰 결과를 만든다 Greedy하게 큰 값 선택 같은 값이면 뒤..
정의객체 지향 프로그래밍에서 Factory는 다른 object를 생성하는 object이다.factory method: new Class object를 반환하는 메소드예시// ShapeFactory 클래스class ShapeFactory { // 도형을 생성하는 Factory Method public Shape createShape(String type) { if (type.equalsIgnoreCase("circle")) { return new Circle(); } else if (type.equalsIgnoreCase("rectangle")) { return new Rectangle(); } return..

상황Actuactor -> Promethus -> Grafana 구조를 구현하려고 한다자바 백엔드 서버는 로컬 서버 loacalhot:3000에서 실행하고 있다Prometheus는 docker 인스턴스 :9090 포트로 띄우고 있다Grafana도 docker 인스턴스 :80 포트로 띄우고 있다아래 블로그 글을 참고했으나 버전이 바뀌어 맞지 않는 부분이 있다https://hudi.blog/spring-boot-actuator-prometheus-grafana-set-up/그래서 Grafana에서 대시보드를 띄워도 "No Data" 에러가 발생한다. Application도 읽지 못 한다 해결법prometheus.ymlscrape_configs: - job_name: 'prometheus' static..
https://hudi.blog/spring-boot-actuator-prometheus-grafana-set-up/ Spring Boot Actuator, Prometheus, Grafana를 사용한 스프링부트 모니터링 환경 구축 이 포스팅에서는 Spring Actuator, Prometheus, Grafana를 사용하여 스프링부트 애플리케이션과 관련된 여러 메트릭을 수집하고, 시각화하여 모니터링할 수 있는 환경을 구축한다. 이 글에서는 각각의 컨 hudi.blog