전체 글
-
[Nginx] Elastic Beanstalk Nginx RateLimit 설정 (1)Nginx 2024. 4. 20. 17:36
서비스를 구축할 때 DDoS와 같은 공격을 방지하기 위한 효과적인 방법 중 하나는 동일한 IP로부터 들어오는 요청에 대한 속도(요청) 제한을 설정하는 것입니다. 이를 위해 Nginx의 Rate Limit 방식을 활용하여 공격으로부터의 보호를 강화할 수 있습니다. 이번 포스팅에서는 Elastic Beanstalk에 배포할 때 Nginx 설정 파일을 Override하여 Rate Limit을 적용하는 방법에 대해 소개 하겠습니다. Nginx Rate Limit 방식은 Leaky Bucket 알고리즘과 비슷한 방식으로 동작하여, 일정 속도로 흘러 들어오는 요청을 허용하고 초과하는 요청은 일정 기간 동안 기다리거나 거부하는 메커니즘을 제공합니다. Leaky Bucket Algorithm: Leaky Bucket ..
-
[Kafka] 프로듀서 애플리케이션 생성 및 실행Apache Kafka 2024. 4. 20. 15:40
아파치 카프카 애플리케이션 프로그래밍 With Java 책을 학습한 내용을 공유합니다. ✍️ Kafka Producer Application을 생성하고 실행까지 진행해보겠습니다. 실습환경 Inteliij Java 17 Gradle kafka-client Dependency 추가 프로듀서를 구현하기 위해 카프카 클라이언트 라이브러리를 추가합니다. dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' implementation 'org.apache.kafka:kafka-clients:2.5.0' // add im..
-
[Kafka] Topics, Producer, Consumer 설치 및 실행Apache Kafka 2024. 2. 14. 03:32
아파치 카프카 애플리케이션 프로그래밍 With Java 책을 학습한 내용을 공유합니다. ✍️ Kafka Topics, Producer, Consumer를 학습하고 실습을 진행 해보겠습니다. 🚀 Apache Kafka의 토픽(Topic)이란 ? 토픽(Topic)은 데이터의 주제나 카테고리를 나타내는 개념입니다. 토픽은 Kafka에서 메시지를 구분하고 분류하는 데 사용됩니다. 간단히 말하면, 특정 주제에 관련된 데이터를 포함하는 카프카의 논리적인 채널이라고 생각할 수 있습니다. 여러 프로듀서(데이터를 생성 및 전송하는 역할)가 특정 토픽으로 데이터를 전송할 수 있고, 이를 통해 여러 컨슈머(데이터를 소비하는 역할)가 해당 토픽의 데이터를 읽을 수 있습니다. 토픽은 Kafka 클러스터 내에서 파티션으로 나뉠 ..
-
[Kafka] EC2에 카프카 브로커, 주키퍼 설치 및 실행Apache Kafka 2024. 2. 14. 00:32
아파치 카프카 애플리케이션 프로그래밍 With Java 책을 학습한 내용을 공유합니다. 🚀Apache Kafka란 ? Apache Kafka는 대용량의 데이터를 안정적이고 효과적으로 스트리밍하고 처리하는 데 사용되는 오픈 소스 분산 스트리밍 플랫폼입니다. 대략적인 Kafka의 핵심 개념, 특징, 활용 사례는 아래와 같습니다. Kafka의 기본 개념 Kafka는 이벤트 스트리밍을 위한 플랫폼으로, 고성능, 내결함성, 확장성을 갖추고 있습니다. 기본적인 개념은 다음과 같습니다. 토픽(Topic): Kafka에서는 메시지가 흐르는 주제로, 데이터의 주제나 카테고리를 나타냅니다. 프로듀서(Producer): 데이터를 Kafka 토픽에 전송하는 역할을 하는 애플리케이션입니다. 컨슈머(Consumer): Kafka..
-
[Aws] S3 파일 업로드 확장자 제한 및 에러 페이지 처리 - 웹 취약점 보안Aws 2024. 2. 14. 00:07
S3 파일 업로드 확장자 제한 Amazon Simple Storage Service(Amazon S3) 버킷에 특정 파일 형식만 허용하도록 업로드를 제한해야하는 상황은 빈번합니다. 만약 이를 방어하지 않는다면, 쉘 스크립트를 업로드하여 원격 코드 실행이 가능한 취약점을 이용한 공격도 발생할 수 있습니다. 예를 들어서, 공격자는 PHP 웹쉘과 같은 악성 파일을 S3에 업로드한 후, 해당 파일의 URL을 이용하여 원격으로 시스템에 액세스하고 제어할 수 있습니다. 이러한 형태의 공격은 파일 업로드 기능이 적절한 보안 조치 없이 구현되어 있을 때 발생할 수 있습니다. 개발자 및 시스템 관리자는 파일 업로드 기능을 구현할 때 안전한 방식으로 처리하고 적절한 검증 및 보안 조치를 적용하여 이러한 공격을 방지해야 합..
-
[Aws + Spring] SNS(Simple Notification Service) + Spring Boot 에러 메일 전송 기능 구축하기Spring 2024. 1. 20. 16:28
소개 이번 포스트에서는 Spring Boot와 AWS의 Simple Notification Service(SNS)를 결합하여 어플리케이션에서 발생한 에러를 실시간으로 감지하고 관리자에게 메일로 알림을 보내는 기능을 구축하는 방법에 대해 알아보겠습니다. AWS SNS(Simple Notification Service)란? AWS SNS는 Amazon Web Services(AWS)에서 제공하는 완전 관리형 메시징 서비스로, 분산된 시스템에서 효율적으로 메시지를 전송하고 받을 수 있는 서비스입니다. 다양한 플랫폼과 어플리케이션 간에 쉽게 메시지를 송수신할 수 있도록 설계되었습니다. 주요 특징: 다양한 플랫폼 지원: SNS는 모바일 디바이스, 웹 어플리케이션, 이메일, HTTP 엔드포인트 등 다양한 플랫폼으로..
-
[Tech] 우아콘 WOOWACON 2023 - 대규모 트랜잭션을 처리하는 배민 주문시스템 규모에 따른 진화 세션 학습Tech 2024. 1. 8. 09:18
우아콘 2023 컨퍼런스에 신청을 했지만... 당첨 되지 못한 관계로 😢 유튜브에 업로드 된 우아콘 2023 ‘대규모 트랜잭션을 처리하는 배민 주문시스템 규모에 따른 진화’ 세션을 시청한 후, 내용을 기록하고 공유하고자 합니다. 출처: https://www.youtube.com/watch?v=704qQs6KoUk 목차 대규모 트랜잭션을 처리하기 위한 주문 시스템의 진화 소개 단일 장애 포인트 (하나의 시스템 장애는 전체 시스템의 장애로 이어짐) 대용량 데이터 (조인 연산으로 인한 조회 성능 저하) 대규모 트랜잭션 (주문수 증가로 저장소의 쓰기 처리량 한계에 도달) 🚀 샤딩(Sharding): 3가지 샤딩 전략의 장,단점 Key Based Sharding 전략 사용 샤드 번호 추출 데이터 소스 결정 다건 ..
-
[Aws + Spring] Spring Boot + Aws Glue + S3를 활용한 방문자 통계 구축 (3)Aws 2024. 1. 2. 22:49
저번 포스팅에 이어서 AWS Glue Job을 생성하기 전에 AWS Glue에 대한 간략하게 설명을 하겠습니다. 🚀 AWS Glue 란 ? AWS Glue는 데이터 ETL(Extract, Transform, Load) 작업을 수행하는 완전관리형 서비스로써, 데이터를 추출하고 변환한 후 다양한 저장소에 로드하는 데 사용됩니다. 이는 다양한 데이터 소스와 대상 간의 데이터 이동 및 변환을 쉽게 수행할 수 있게 해줍니다. 아래는 AWS Glue의 주요 개념에 대한 간단한 설명입니다. Job(잡): 잡은 AWS Glue에서 데이터 변환을 위해 실행되는 작업을 나타냅니다. PySpark 또는 Scala로 작성된 스크립트를 사용하여 데이터를 추출, 변환 및 로드할 수 있습니다. 여러 입력 및 출력을 처리하며, 이러..