Backend/MSA 14

Kafka TIL

Kafka란분산 스트리밍 플랫폼이다. 주로 실시간 데이터 피드의 빅데이터 처리를 목적으로 사용된다.대용량 데이터 스트림을 저장하고 실시간으로 분석하거나 처리하는 데 중점을 둔다.Kafka의 기본 구성 요소메시지 (Message)- Kafka를 통해 전달되는 데이터 단위이다. ex) 로그 데이터, 이벤트 데이터- 메시지는 키, 값, 타임스탬프, 그리고 몇 가지 메타 데이터로 구성된다.  프로듀서 (Producer)- 메시지를 생성하고 Kafka에 보내는 역할을 한다.- 프로듀서는 특정 토픽에 메시지를 보낸다. 토픽 (Topic)- 메시지를 저장하는 장소이다. 메시지는 토픽에 저장되었다가 소비자에게 전달된다.- 토픽은 여러 파티션으로 나누어질 수 있으며, 파티션은 메시지를 순서대로 저장한다. 파티션 (Par..

Backend/MSA 2025.01.01

RabbitMQ TIL

RabbitMQ란메시지 브로커이다. 데이터를 송신자로부터 수신자에게 전달하는 중단 매개체 역할을 한다. - 비동기 처리 : 데이터를 비동기적으로 처리하여 시스템의 응답성을 높인다.- 부하 분산 : 여러 소비자에게 메시지를 분산시켜 시스템의 부하를 균형 있게 분산한다.- 내결함성 : 메시지를 안전하게 저장하여 시스템 장애 시 데이터 손실을 방지한다. RabbitMQ의 기본 구성 요소RabbitMQ는 AMQP 프로토콜을 사용한다.  메시지 (Message)RabbitMQ를 통해 전달되는 데이터 단위이다. ex) 사용자 등록 정보, 주문 내역 프로듀서 (Producer)메시지를 생성하고 RabbitMQ에 보내는 역할을 한다.ex) 웹 애플리케이션이 사용자 등록 정보를 RabbitMQ에 보내는 경우 큐 (Que..

Backend/MSA 2025.01.01

대규모 시스템 학습 전 개념 정리 TIL

동시 접속자와 초당 요청량(TPS)대규모 시스템을 설계할 때 얼마나 많은 사용자가 시스템을 사용할 것인지 파악하는 것이 중요하다.가장 중요한 것은 동시 접속자의 요청 수이다. TPS(Transactions Per Second)초당 처리되는 트랜잭션의 수를 나타내는 지표이다. 시스템이 얼마나 많은 요청을 동시에 처리할 수 있는지를 나타내며, 시스템의 처리 능력을 가늠할 수 있게 해 준다. 시스템이 TPS을 견딜 수 있도록 설계해야 한다!            그리고 예상치 못한 이벤트로 인해 시스템이 TPS를 견디지 못해 중단되었을 경우의 상황도 대비해야 한다.1. 애플리케이션의 수를 늘린다.2. 오류 상황에서 사용자가 대기할 수 있도록 대기열을 설정한다.3. 자동 스케일링을 통해 시스템의 자원을 동적으로 ..

Backend/MSA 2024.12.30

241220 시큐어 코딩 개념과 실습 TIL

CORS (Cross-Origin Resource Sharing)애플리케이션을 개발한 후 방화벽에서 GET, POST, PATCH, PUT, DELETE 메서드를 허용하고,SPA로 개발된 프론트 페이지에 접속하여 요청을 했는데 403, 405 에러가 났다? -> CORS 적용 안했는지 의심해보기 CORS란?한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 리소스에서 접근할 수 있도록 브라우저에서 제공하는 보안 기능이다.웹 애플리케이션은 기본적으로 동일 출처 정책에 따라 동작하며, 이는 보안상의 이유로 다른 출처의 리소스 접근을 제한한다. 동일 출처 정책 (Same-Origin Policy) 이란?보안 메커니즘으로, 웹 브라우저의 출처와 동일한 출처의 리소스만 접근할 수 있도록 제한하는 것이다.예를 들..

Backend/MSA 2024.12.20

241219 모니터링 시스템 개념과 실습 TIL

모니터링 시스템 개념모니터링이란, 시스템의 성능, 안전성과 가용성을 실시간으로 관찰하고 측정하는 과정이다.모니터링은 시스템을 상태를 지속적으로 감시하고, 잠재적인 문제를 신속하게 발견해 대응할 수 있게 해준다.Spring Boot ActuatorSpring Boot Actuator는 Spring Boot 애플리케이션의 상태와 성능을 모니터링하고 관리할 수 있도록 다양한 엔드포인트를 제공하는 기능이다. 모든 엔드포인트를 노출하는 설정은, 실제 운영 환경에서 보안 위험을 증가시킬 수 있음. 필요한 엔드포인트만 노출하거나 따로 보안 설정을 해줘야 함. Spring Boot Actuator 실습 새로운 프로젝트를 생성하고, 의존성과 application.yml을 수정한다.spring.application.nam..

Backend/MSA 2024.12.19

241126 이벤트 드리븐 아키텍처와 스트림 처리 (Spring Cloud Stream) TIL

이벤트 드리븐 아키텍처란?시스템에서 발생하는 이벤트(상태 변화나 행동)를 기반으로 동작하는 소프트웨어 설계 스타일이다.이벤트는 비동기적으로 처리되며, 서비스 간의 느슨한 결합을 통해 독립적으로 동작할 수 있게 한다. - 이벤트: 시스템 내에서 발생하는 상태 변화 또는 행동을 나타내는 메시지이다.- 이벤트 소스: 이벤트를 생성하여 이벤트 버스에 전달하는 역할을 한다.- 이벤트 핸들러: 이벤트를 수신하여 처리하는 역할을 한다.- 이벤트 버스 : 이벤트 소스와 이벤트 핸들러 간의 메시지 전달을 중개한다. ex) 온라인 쇼핑몰1. 이벤트 소스: producer가 온라인 쇼핑몰에서 주문을 한다. 그럼 주문 서비스가 '주문 생성' 이벤트를 발생시킨다. 2. 이벤트 버스(큐): Kafka나 RabbitMQ와 같은 메..

Backend/MSA 2024.11.26

241126 분산 추적 (Spring Cloud Sleuth) 및 로깅 (Zipkin) 실습 TIL

분산 추적이란?분산 시스템에서 서비스 간의 요청 흐름을 추적하고 모니터링하는 방법이다. 각 서비스의 호출 관계와 성능을 시각화하여 문제를 진단하고 해결할 수 있도록 돕는다. - 트레이스(Trace) : 하나의 요청이 시작부터 끝까지 각 서비스를 거치는 요청의 전체 흐름을 나타낸다.하나의 트레이스는 여러 개의 스팬으로 구성된다.- 스팬(Span) : 분산 추적에서 가장 작은 단위로, 특정 서비스 내에서의 개별 작업 또는 요청을 나타낸다.- 컨텍스트(Context) : 요청이 서비스 간에 전달될 때 함께 전파되어, 각 서비스가 요청의 전체 흐름에 대한 정보를 가질 수 있게 한다. 서비스 호출 간의 컨텍스트를 유지함으로써, 분산 시스템 전체에서 일관된 추적이 가능하다. 분산 추적이 필요한 이유MSA에서는 여러..

Backend/MSA 2024.11.26

241125 컨피그 서버 (Spring Cloud Config) 실습 TIL

Spring Cloud Config 란?분산 시스템 환경에서 중앙 집중식 구성 관리를 제공하는 프레임워크이다. - 중앙 집중식 구성관리 : 분산 시스템에서 각 마이크로서비스의 설정을 중앙 Config 서버에서 관리하도록 해주는 도구이다. 이를 통해 마이크로 서비스가 각각 독립적으로 설정 파일을 관리하지 않아도 되므로 유지보수가 간편해진다. - 환경별 구성 : Config 서버는 개발, 테스트, 운영 등 환경별로 구성을 분리하여 관리할 수 있다. - 실시간 구성 변경 : 설정 변경 시 애플리케이션을 재시작하지 않고도 실시간으로 반영할 수 있다.실시간 구성 변경 방법에는 여러가지가 있다.1) 수동으로 /actuator/refresh 엔드포인트 사용하기2) Spring Cloud Bus 사용하기 컨피그 서버 ..

Backend/MSA 2024.11.26

241125 보안 구성 (OAuth2 + JWT) 실습 TIL

OAuth2 이란?OAuth는 사용자의 민감한 인증 정보를 제 3자 애플리케이션에 직접 제공하지 않고도, 해당 애플리케이션이 사용자의 권한을 얻어 보호된 리소스에 안전하게 접근할 수 있도록 돕는 인증 및 권한 부여 프로토콜이다.예를 들면 우리가 캘린더 서비스를 개발했을 때, 사용자가 구글 계정을 이용해 캘린더 서비스에 로그인하려고 하면, 사용자의 인증 및 권한 부여는 구글이 담당한다.이 과정에서 우리의 캘린더 서비스는 사용자 인증 단계에 관여하지 않는다.  사용자가 구글 계정을 통해 인증에 성공하면, 구글은 캘린더 서비스에 접근 권한(토큰)을 부여한다.이를 통해 사용자는 구글 계정을 활용해 우리의 캘린더 서비스에 로그인하고 리소스를 안전하게 관리할 수 있다.  즉, OAuth를 사용하면,- 사용자는 민감..

Backend/MSA 2024.11.25

241122 API 게이트웨이 실습 TIL

API 게이트웨이란?API 게이트웨이란 클라이언트의 요청을 받아 백엔드 서비스로 라우팅하고, 다양한 부가 기능을 제공하는 중간 서버이다.- 라우팅 : 클라이언트의 요청을 적절한 서비스로 전달한다.- 인증 및 권한 부여 : 요청의 인증 및 권한을 검증한다.- 로드 밸런싱 : 여러 서비스 인스턴스 간의 부하를 분산한다.- 모니터링 및 로깅 : 요청 및 응답을 로깅하고 모니터링한다.- 요청 및 응답 변환 : 요청과 응답을 변환하거나 필터링한다. API 게이트웨이란? 예를 들면 order 애플리케이션, product 애플리케이션, user 애플리케이션의 정보를 원할 때 각각의 서비스를 각각 호출해야한다. 그럼 엔드포인트 앞에 붙는 호스트가 다 다를텐데, 우리는 API 게이트웨이를 통해 하나의 호스트로 요청을 보..

Backend/MSA 2024.11.22