일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- s3
- goorm x kakao
- DynamoDB
- CICD
- 오블완
- goorm
- MSA
- 백엔드
- codebuild
- Spring Boot
- serverless
- rds
- jpa
- 스터디
- Docker
- ec2
- 자격증
- mapping
- codedeploy
- sqs
- bootcamp
- CodeCommit
- aws
- Redis
- 개발자
- orm
- spring
- 티스토리챌린지
- QueryDSL
- backenddeveloper
- Today
- Total
목록2024/10 (12)
gony-dev 님의 블로그
AWS X-Ray시험에 반드시 나오니 주의!발단운영 환경에서 디버깅할 때를 종종 마주한다.정석 방법은 로컬에서 테스트하고, 곳곳에 로그 구문을 추가하고, 운영 환경에 재배포하고 로그를 보며 잘못된 방법을 파악하는 방법이다.이러한 방법은 상당히 성가시기 때문에 AWS X-Ray를 사용한다. AWS X-Ray Visual analysis of our applicationsX-Ray는 어플리케이션에 대한 시각적 분석을 제공한다.이번 강의에서 어플리케이션에 요청을 수행하는 클라이언트 입장에서 요청이 얼마나 실패하고 성공하는지 확인할 것이다.아래 그림에서 볼 수 있듯이 EC2 인스턴스와 소통할 때 일어나는 일을 시각적으로 파악할 수 있다. X-Ray Advantages성능 트러블슈팅이 가능하고 병목 현상을 식별할..
AWS Monitoring모니터링이 중요한 이유?우리는 지금까지 AWS에 대해 배워오면서 어플리케이션을 배포하는 방법을 알아왔다.그것도 안전하고, 자동적이고, 인프라 시설을 사용하면서 말이다.하지만 우리의 어플리케이션이 배포가 되어도, 사용자들은 이 어플리케이션의 구축 방법에는 별로 관심이 없다.오로지 그들은 작동 여부만 따진다.그래서 어플리케이션의 지연이나 정지가 발생이 일어나기 전에 문제를 해결할 수 있도록 트러블 슈팅을 수행하는 것이 바람직하다.Monitoring in AWSAWS CloudWatch를 통해 모니터링을 수행할 수 있다:Metrics: 지표를 수집한다.Logs: 로그를 수집하고 로그 파일을 분석한다.Events: 특정 이벤트가 발생했을 때 알림을 보낸다.Alarms: 지표 이벤트 및 ..
KinesisKinesis는 스트리밍되는 데이터를 실기간으로 수집, 처리 및 분석하도록 도와준다.어플리케이션 로그, 지표, 웹사이트 클릭스트림, IoT 원격 데이터 등 실시간 데이터 어느 것이든 될 수 있다.그 중 Kinesis Data Streams는 데이터 스트림을 입력, 처리 및 저장할 수 있고,Kinesis Data Firehose는 내부나 외부의 데이터 스토어로 데이터를 로드한다.Kinesis Data Analytics는 SQL이나 Apache Flink를 통해 데이터 스트림을 분석한다.Kinesis Data StreamsKinesis Data Streams는 1개 이상의 샤드로 이루어져 있으며, 이 샤드는 사전에 프로비저닝되어 있어야 한다.모든 샤드에 걸쳐 데이터는 분산되고, 샤드가 수집 및 ..
여러 개의 어플리케이션을 배포하려고 할 때, 어플리케이션들은 서로 소통을 해야할 필요가 있다.여기 두 가지의 어플리케이션 의사소통 패턴이 있다.1. Synchronous communications- 어플리케이션이 또 다른 어플리케이션과 직접 연결된다.- 예시로 구매 서비스와 배송 서비스의 직접적인 연결이 있다.2. Asynchronous / Event based- 미들웨어가 어플리케이션을 연결한다. 직접적으로 연결되어 있지 않다는 의미이다.- 위와 같은 예시로 구매 서비스가 'queue'라는 대기열에 메시지를 전달한다. 그러면 배송 서비스는 대기열에게 구매 내역을 물어보고 메시지를 받아 행동을 취한다.Amazon SQSSQS의 핵심은 대기열이다.SQS 대기열에는 메시지를 포함하며, 메시지를 담기 위해서는..
대기열 처리를 공부하다가 Redis를 이용한 해결 방안을 공부했다.그런데 이 대기열을 어떤 방식으로 진행할지를 고민하다가 Spring batch와 Scheduler를 발견하고,이를 자세히 알아보기로 했다. 1. Spring batch우선 스프링 배치의 '배치'는 사용자와 상호작용 없이 여러 개의 작업을 미리 정해진 순서대로 중단 없이 처리하는 과정을 뜻한다.그리고 스프링 배치는 대용량 요청을 일괄처리하기 위해 설계된 가벼운 배치 프레임워크이다.Spring의 특정을 가져와 DI, AOP, 서비스 추상화 등 Spring framework의 구성 요소들을 고대로 사용할 수 있다.Spring batch의 기능에는 로그 추적, 트랜잭션, 작업 재시작 및 건너뛰기, 리소스 관리 등 대용량 레코드 처리에 필요한 것들..
AWS CloudFormationCloudFormation은 코드를 사용하여 AWS 인프라의 모든 리소스를 정의하는 방법이다.원하는 것을 선언하고 선언문을 말하면 CloudFormation은 사용자가 지정한 정확한 구성을 사용하여 올바른 순서로 해당 항목을 생성한다.수동 구성이나 수동 작업이 필요없으며 자동으로 프로비저닝 된다.CloudFormation이 어떻게 구성되어 있는지 확인하고 싶다면 'Application Composer'를 사용하여 이 인프라를 시각화하여 볼 수 있다. 1. CloudFormation을 사용하는 이유?코드로 표현된 인프라이다.이 말은 리소스가 수동으로 생성되지 않기에 제어 측면에서 매우 뛰어남을 뜻한다.Git 등을 사용하여 버전 제어에 사용될 수 있다.인프라에 대한 모든 변..
트랜잭션이란 나누어지지 않는 최소한의 단위로 만들어 All or Nothing 전략으로 취할 수 있도록 하는 단위이다.트랜잭션으로 묶을 시 내부에서 하나의 로직이 실패하면 모두 취소시키며 그렇지 않으면 모두 성공시키게 된다.Redis는 Key/Value 형태의 NoSQL이다. 인메모리로 이루어져 있기에 캐시의 형태로 많이 사용한다.Redis Transaction1. Redis 트랜잭션 사용방법트랜잭션을 유지하기 위해서는 순차성을 지녀야 하며 도중에 명령어가 개입할 수 없도록 "Lock"을 걸어주어야 한다.Redis에서는 "MULTI", "EXEC", "DISCARD", "WATCH" 명령어들을 사용한다.각 명령어는 아래와 같은 작업을 진행한다.MULTIRedis 트랜잭션을 시작하는 커맨드이다.트랜잭션 시..
지금까지 우리는 아래와 같은 아키텍쳐를 통해 어플리케이션을 배포해왔다. 로드밸런서는 사용자의 모든 요청을 처리하고, 여러 가용 영역을 가진 오토 스케일링 그룹이 있고, 각 AZ에는 일부 EC2 인스턴스가 배포된다. 백엔드에는 데이터 서브네이 있을 수도 있다. 그래서 RDS와 읽기 전용 복제본 등이 있을 수 있다. 또한 캐싱 레이어가 필요하다면 ElastiCache를 살펴보아야 한다. 배포할 애플리케이션이 많고, 이들이 동일한 아키텍쳐를 따를 경우 반복적인 작업이 번거로울 수 있다.따라서 개발자로서 코드를 배포하기 위해 인프라를 관리하는 것은 복잡하다.또한 모든 데이터베이스, 로드 밸런서 등을 일일이 구성하고 싶지 않고, 모든 것이 확장되기를 원한다.지금까지의 학습을 통해 보면 대부분의 웹 어플리케이션들은..
Docker란?도커는 앱 배포를 위한 소프트웨어 개발 플랫폼이다.컨테이너에 앱이 패키징되는데 컨테이너는 표준화되어있어서 아무 운영체제에나 실행할 수 있다!!행위 특성도 예측이 가능해서 작업을 덜어주고, 유지 및 배포가 쉬우며, 언어, 운영체제, 기술에 상관 없이 실행이 가능하다는 장점이 있다.Docker images stored도커 에이전트를 실행하면 도커 컨테이너를 실행할 수 있다.도커 이미지는 도커 리포지토리에 저장된다.여러 리포지토리들을 알아보자Docker Hub퍼블릭 리포지토리로 많은 기술에 맞는 기본 이미지를 찾을 수 있다.Amazon ECR프라이빗 리포지토리퍼블릭 리포지토리로는 'Amazon ECR Public Gallery'가 있다.Docker vs. Virtual Machines도커도 가상..
Object Encryption다음 네 가지 방법 중 하나로 S3 버킷의 객체를 암호화 할 수 있다!Server-Side Encryption(SSE)S3 Managed Keys로 암호화 한다.이것은 버킷과 객체에 기본적으로 활성화되어 있다.KMS 키로 암호화 키를 관리해서 암호화 하는 SSE-KMS가 있다.사용자 제공 키인 SSE-C도 있다. 직접 암호화 키를 제공하는 방식이다.Client-Side Enccryption클라이언트 측에서 암호화한 다음 S3에 업로드 하는 방식이다.1. SSE-S3이 암호화에서 사용되는 키는 AWS에서 관리하고 소유한다. 사용자는 건드릴 수 없으며 AWS 서버 측에서 객체를 암호화한다.암호화 보안 유형은 AES-256헤더에 반드시 'x-amz-server-side-encry..