본문 바로가기

반응형

전체 글

(148)
[CloudFront] CloudFront Functions를 통해 간단히 인증 처리하기 1. 아키텍쳐 CluodFront를 통해 S3 Image를 다운로드 받을 경우 별도 인증 로직이 없다면 누구나 Download 받을 수 있다. 인증을 구현하는 방법은 다양하지만 CloudFront에 Function을 두어 Header를 검사하여 인증을 처리하도록 해보자. CF에 Image를 다운로드 받을 때 Authorization 헤더를 추가한다. 헤더 통과하면 S3로부터 이미지를 받아오게 된다. → 물론 CDN에 캐싱된 이미지가 있으면 바로 반환한다. Cloudfront Functions은 JavaScript로만 구현이 가능하다. 단순 요청 헤더에 Authorization header 값을 받아오고 이를 원하는 값과 비교하면 끝이다. 헤더가 없을 경우
[EKS] Data Transfer 비용 절감 작업 (istio destination rule, topology aware hints) EKS 상에서 Data Transfer 비용을 줄이기 위해 했던 노력들과 그 후기를 정리해본다. 결론을 말하자면 서비스 안정성이 더 우선이기에 Data Transfer 줄이기 위한 작업은 포기했다. 1. Data Transfer 발생 원인Data Transfer 비용은 크게 2가지에서 발생되었다. 1. NAT Gateway 비용 2. AZ 간 통신 비용 여기서 이제 Bytes 단위로 과금이 되는데 AZ 간 통신할 때 Network Bytes가 많으면 그만큼 과금이 된다고 보면 된다. 본 글에서는 AZ 간 통신 Data Transfer 비용에 대해서 다룬다.2. EKS에서 Data Transfer 절감 방안요즘 인터넷에 EKS에서 Data Transfer를 절감할 수 있는 다양한 방안들에 대해서 많이 소개..
[Loki] Python으로 Loki에 로그 보내는 방법 일반적으로 Promtail, Logstash, fluentBit 등을 통해 로그를 전송하는 방법이 일반적이다. 하지만 경우에 따라서는 별도 개발언어를 사용하여 커스텀하게 Loki로 Log를 전송할 수 있다. 당연히 Loki도 HTTP API를 지원하기에 API Spec에 따라 POST로 로그를 전송하면 되기 때문이다. https://grafana.com/docs/loki/latest/api/#push-log-entries-to-loki Grafana Loki HTTP API | Grafana Loki documentation Open source Grafana Loki HTTP API Grafana Loki exposes an HTTP API for pushing, querying, and tailing..
[CloudFront] S3 Object 변경 시 Cloudfront Invalidation 자동으로 수행하기 1. 개요 보통 정적 컨텐츠를 처리하기 위해 CloudFront와 S3를 연동하는 경우가 많다. 이럴 때 Bucket object를 변경하면 CloudFront의 Edge Location은 이를 알아차리지 못하는데 이럴 때 자동으로 변경된 Object를 자동으로 Invalidation 해주는 방법에 대해서 알아보자. 2. 방법 소개 1. 서버 혹은 사용자가 Bucket의 Image를 변경한다. 2. S3 Bucket에 ObjectCreation 이벤트가 발생 시 Lambda 함수를 Trigger 할 수 있다. 3. Lambda 함수를 Event를 전달받아 어떤 Object가 생성/변경되었는지 확인할 수 있다. 4. Object가 새로 생성되는 이벤트는 무시하며, Object가 변경되는 이벤트일 경우에만 ..
Grafana Monitoring 스택 LGTM 구성기 (Loki, Mimir, Tempo) 아직 LGTM(Loki , Grafana , Tempo , Mimir)관련 한글 자료가 별로 없어서 간략하게 작성해본다. 회사에서 도입을 고민하고 있거나 PoC 중이라면 이 글이 조금의 도움은 될 수 있겠다고 본다. LGTM이란 무엇일까? Grafana에서 밀고 있는 LGTM(Loki , Grafana , Tempo , Mimir)이란 무엇일까? L : Loki (로그 수집 저장소) G : Grafana (시각화) T : Tempo (분산 추적 저장소 , APM) M : Mimr (시계열 메트릭 저장소) 그럼 왜 Grafana에서는 LGTM을 밀고 있는 것일까? 잘 생각해보면 답은 은근히 간단한데, 보통 시스템 모니터링 , 로깅 , 애플리케이션 성능 모니터링을 구성하기 위해 대부분의 회사에서 여러가지 오..
[Prometheus] AlertManager로 Slack 알람 전송하는 법 알아보자 1. 개요해외문서도 그렇고 국내문서도 그렇고 마땅히 잘 정리된 글을 찾기 힘들었다. 그나마 AliceK 님 글이 잘 정리되어 있어서 참고가 되었다. 그래서 전체적으로 이해하는데 약간 애를 먹었지만 삽질을 계속 하다보니 얼추 전체적인 흐름이 정리되어서 간략하게 정리해본다. 사실 Grafana Managed Alert를 사용하면 더욱 쉽고 간편하게 알람을 보낼 수 있지만 너무 많은 규칙들이 Grafana에서 처리될 경우 부하가 발생할 수 있기 때문에 이를 분산하기 위해 가급적이면 AlertManager로 알람을 보내려고 한다. 필자는 Grafana Mimir를 통해 시계열 메트릭을 저장하기에 Mimir Ruler를 통해 규칙을 평가하고, AlertManager에게 이를 전달하여 Slack으로 알람을 보내도록..
[AWS] 클라우드 와치 로그에서 특정 패턴일 경우 Slack 알람 보내는 방법 1. 구성 구성은 정말 간단하다. CloudWatch 로그 그룹에 애플리케이션 로그들이 쌓이고 있다. → 구독 필터로 특정 패턴을 감지하여 AWS Lambda로 보내준다. → AWS Lambda에서는 메시지를 전달받은 뒤 가공하여 Slack으로 메시지를 보내준다. serverless 프레임워크를 활용한다. serverless.yml service: SLACK-NOTIFICATION frameworkVersion: "3" plugins: - serverless-dotenv-plugin provider: name: aws profile: XXXXXXX timeout: 30 memorySize: 256 runtime: nodejs18.x stage: prod region: ap-northeast-2 iam: ..
[SpringBatch] 스프링배치 개념을 알아보자. 출처 : https://deeplify.dev/back-end/spring/batch-architecture-and-components 위 출처의 내용을 참고하여 공부 용도로 정리하였습니다. 구조 노란색 : 스케줄러 / DB (외부 애플리케이션) → AWS EventBridge , RDB , MongoDB , Redis , .. 빨간색 : 애플리케이션 서비스 (Spring Batch에서 제공) 초록색 : 개발자가 구성해야 하는 것들 → ex) 일정 주기대로 작업 시작되도록 설정하거나 , 작업을 실행하는 방법 등 Run Tier : 애플리케이션의 예약 및 시작과 관련이 있는 계층 (배치 작업의 시간 기반 및 상호 의존적인 스케줄링 제공 / 병렬 처리) Job Tier : 배치 작업의 전체 실행을 담당 (배..

반응형