분류 전체보기

마이크로서비스 환경에서는 하나의 요청이 여러 서비스를 거쳐 처리되기 때문에, 특정 서비스에서의 지연이나 장애가 전체 응답 속도에 영향을 주는 경우가 많다.분산 시스템의 관점에서 보면, 장애의 원인을 빠르게 식별하고 정확히 진단할 수 있는 능력이 곧 운영 안정성과 직결된다. 어디에서 병목이 발생했는지, 어떤 서비스 호출에서 예외가 발생했는지를 파악하기 어려운 구조인 만큼 투명한 추적이 중요해진다.이때 사용하는 도구가 바로 Zipkin이다. Zipkin은 마이크로서비스 간의 호출 흐름을 시각화하고, 트랜잭션별로 어느 지점에서 얼마만큼의 시간이 소요되었는지를 추적할 수 있도록 도와준다.이번 포스팅에서는 Zipkin을 활용한 분산 추적의 기본 개념과 Spring 애플리케이션에 적용하는 방법을 소개하고자 한다. ..

마이크로서비스 간의 유기적인 연결이 많아질수록, 한 서비스의 장애로 인해 전체 시스템으로 확산되는 위험이 함께 존재한다.분산 시스템의 궁극적인 목적은 Fault Tolerance(내결함성), 즉 시스템이 부분적인 장애나 실패 상황에서도 전체 기능을 계속 유지할 수 있도록 만드는 것이다.바로 이때 필요한 것이 장애를 격리하고 시스템의 복원력을 지켜주는 장치로서 Circuit Breaker를 활용할 수 있다.단순히 예외를 잡는 수준이 아니라, 실패가 반복되면 아예 호출 자체를 차단하고 우회(fallback)하게 함으로써 전체 장애로 번지는 것을 막아주는 역할을 한다.이번 포스팅에서는 Circuit Breaker의 개념과 Spring Application에 적용해보는 과정을 다루어 보겠다. CircuitB..

다양한 기능이 유기적으로 연결된 서비스 환경에서 하나의 이벤트가 여러 시스템에 동시에 전달되어야 하는 상황이 자주 발생한다. AWS SQS는 Point-to-Point 모델을 따르기 때문에, 하나의 메시지를 여러 수신자에게 전달하려면 큐마다 별도로 메시지를 전송하는 방식으로 구현해야 한다. AWS SNS는 이러한 문제를 해결하기 위한 발행-구독(Pub/Sub) 방식의 메시지 서비스로, 하나의 메시지를 다양한 채널(SQS, Email 등)로 동시에 전파할 수 있다.이번 글에서는 Spring 기반 애플리케이션에서 SNS를 활용하여 이벤트를 다양한 주체에 분산 전파하는 구조를 구현하는 방법을 정리해본다. 1. AWS 인프라 설정- 1-1. SNS Topic 생성- 1-2. SNS Subscription 생성 ..

현대의 시스템 아키텍쳐에서 시스템 간 데이터를 주고받을 때, 처리를 즉시 완료하지 않아도 되는 작업이라면 비동기 메시징 방식이 효과적으로 사용된다.특히 마이크로소프트 아키텍쳐를 위시한 분산 환경에서는 구성 요소 간 결합도를 낮추는 디커플링을 위해 메시지 큐의 활용도가 증가하고 있다.이번 포스팅에서는 AWS에서 제공하는 메시지 서비스 중 하나인 SQS를 활용하여 서비스 간의 통신을 Spring Application에서 구현하는 과정을 다루어 보려고 한다. 1. AWS 인프라 설정- 1-1. SQS 생성- 1-2. SQS 설정- 1-3. 엑세스 정책 설정- 1-4. AWS CLI 설치 및 프로파일 설정2. Producer 애플리케이션 작성- 2-1. 애플리케이션 의존성 및 환경 설정- 2-2. SQS 관련..

현대의 애플리케이션 아키텍처에서는 서비스 간 결합도를 낮추고 유연한 처리를 가능하게 하기 위해 메시지 큐(Message Queue)를 활용하는 경우가 많다. 특히 마이크로서비스 환경에서는 각 서비스가 독립적으로 동작하면서도 필요한 데이터를 주고받아야 한다.이때 직접 호출 방식 대신 메시지 큐를 사용하면, 서비스 간 결합도를 낮추고 장애 복원력과 확장성을 높일 수 있다. AWS는 이런 메시지 기반 아키텍처를 손쉽게 구축할 수 있도록 다양한 서비스를 제공한다. 이번 포스팅에서는 AWS가 제공하는 대표적인 메시지 서비스인 SQS와 SNS의 특징과 유스케이스를 살펴보려고 한다. AWS의 메시지 서비스 AWS에서는 다양한 메시지 서비스들을 제공하여 아키텍처의 디커플링(Decoupling), 즉 구성요소 간의 의..
Apache Kafka는 대용량의 이벤트 데이터를 처리하기 위한 분산 스트리밍 플랫폼이다. Kafka를 사용하는 대부분의 상황에서는 메시지를 안정적으로 읽고 필요한 처리를 수행한 뒤 중복 없이 다음 메시지를 이어서 처리하는 것이 중요하다. 이 과정의 핵심 개념이 바로 Offset과 Commit이다. 이번 포스팅에서는 Kafka의 메시지 처리 흐름을 이해하는 데 필수적인 Offset과 Commit에 대해 정리하고, 자동 커밋과 수동 커밋 방식의 차이와 선택 기준에 대해서 소개한다. Offset Kafka의 메시지는 Topic 내부의 Partition에 저장되며 각각의 메시지에는 고유한 일련번호가 붙는다. 이 번호를 Offset이라고 하며 Partition 내에서의 메시지 위치를 나타낸다. 예를 들어, ..

이번 포스팅에서는 AWS의 활동 보안 및 감사를 위한 서비스인 CloudTrail에 대해서 살펴볼 예정이다. AWS CloudTrail AWS 리소스에 대한 사용 활동을 기록하고 감사할 수 있게 해주는 보안 및 컴플라이언스 서비스서비스 사용(EC2 종료, S3 버킷 생성 등), 콘솔, CLI, API 등을 통해 발생한 이벤트를 시간, 결과, 오류, 인증 정보와 함께 로그로 저장기본적으로 최근 90일간의 이벤트 로그는 무료로 제공되며 장기 보관을 원할 경우 Trail을 생성해 S3에 저장해야 한다.CloudTrail의 주요 구성 요소는 Event, Trail이 있다. CloudTrail vs CloudWatchCloudTrail : AWS의 모든 서비스에 대한 사용 로그, AWS 서비스가 언제, 어디서, ..

이번 포스팅에서는 CloudWatch에서 로그, 지표, 경보 등 기본 구성요소를 기반으로 제공하는 기능들인 Dashboard, Synthetics, Resource Health 등 다양한 기능을 살펴볼 예정이다. [AWS] CloudWatch : 주요 개념과 구성요소 (로그, 지표, 경보)https://sjh9708.tistory.com/266 [AWS] CloudWatch : 주요 개념과 구성요소 (로그, 지표, 경보)이번 포스팅에서는 AWS 인프라를 포함한 시스템을 모니터링 할 수 있는 서비스인 AWS CloudWatch의 주요 구성 요소에 대해서 살펴보려고 한다. AWS Cloudwatch CloudWatch는 AWS에서 제공하는 모니터링sjh9708.tistory.com CloudWatc..

이번 포스팅에서는 AWS 인프라를 포함한 시스템을 모니터링 할 수 있는 서비스인 AWS CloudWatch의 주요 구성 요소에 대해서 살펴보려고 한다. AWS Cloudwatch CloudWatch는 AWS에서 제공하는 모니터링 서비스로 다양한 AWS 서비스와 애플리케이션의 로그, 지표, 이벤트 등의 운영 데이터를 수집하고 시각화할 수 있다. 운영 데이터 수집: 로그(Log), 지표(Metric), 이벤트(Event) 등 다양한 형태의 데이터를 수집한다.모니터링 및 시각화: 실시간 대시보드로 데이터를 시각화하고 시스템 상태를 모니터링할 수 있다.경보(Alarm) 기능: 특정 조건에 따라 경보를 생성하고, SNS, Lambda, EC2 Auto Scaling 등과 연계해 자동화된 대응을 수행할 수 있다..