전체 글

데이터베이스 격리 수준이란?동시에 여러 트랜잭션이 데이터를 변경하거나 조회할 때 한 트랜젝션의 작업 내용이 다른 트랜젝션에 어떻게 보일지를 결정하는 기준. MySQL MVCC와 Undo logMySQL MVCCMySQL에서는 락을 사용하지 않고 일관된 읽기를 지원하기 위해 Multi-Version Concurrency Control(MVCC)을 사용한다. MVCC란 원본 데이터와 변경 데이터를 동시에 유지하는 방식으로 MySQL에서는 Undo log를 통해 이를 구현한다.Undo LogUndo log는 트랜잭션 실행 이후 Rollback할 경우 기존 값을 복구하기 위해 만들어놓은 로그 영역이다.위와 같이 Update 문을 실행하면 Commit 여부와는 관계 없이 Undo log에 먼저 기록이 남게 된다...
레디스란?레디스는 Remote Dictionary Server의 약자로 모든 데이터를 디스크가 아닌 메모리에 저장하는 in-memory 데이터베이스이자, key-value 구조의 저장소이다.(이미지 출처: ByteByteGo) 위의 이미지처럼 메모리 상에서 운영되는 NoSQL 데이터베이스이기 때문에 빠른 입출력이 가능하지만 장애가 발생하면 모든 데이터를 잃을 위험이 있다. 레디스의 저장소 구현 코드레디스의 핵심 구조는 다음과 같이 계층적으로 구성되어 있으며, 오픈소스이기 때문에 코드를 보면서 실제 구현을 확인할 수 있다.dictdict는 dictType과 dictEntity를 포함하고 있는 해시 테이블이다.// redis/deps/hiredis/dict.h typedef struct dict { dict..
할 일 목록 작성 (1) App.module에서 전역적으로 모든 요청을 기록할 logger middleware를 제작하기 위해 먼저 logger middleware의 할 일 목록을 작성한다. 1. LoggerMiddleware 클래스를 만든다. 2. NestMiddleware의 use 메서드에서 next를 호출한다. 가장 간단해 보이는 구현부터 시작해서 Red, Green Refactor의 단계를 거치도록 한다. LoggerMiddleware 클래스를 만든다. [Red] logger.middleware.spec.ts describe('LoggerMiddleware', () => { it('should be defined', () => { expect(LoggerMiddleware).toBeDefined(..
· DevOps
AWS_SAA_C03(10) / Security & Encryption KMS Key Management Service의 약자. 데이터 암호화키를 생성하고 키 관리, 암호화, 복호화를 수행하는 서비스. 대부분의 AWS 서비스와 통합된다. IAM과 완전히 통합됨. Automatic Key Rotation AWS관리형 혹은 고객 관리형 KMS 키를 1년마다 자동으로 교체할 수 있다. imported KMS Key는 수동 교체만 가능하다. Multi-Region Keys Primary-Region에 있는 Key를 Multi-Region에 복사할 수 있다. 한 지역에서 암호화 하고 다른 지역에서 복호화 할 수 있다. 각 다중 지역 키는 독립적으로 관리된다. (전역 서비스 x, 기본 키 + 복제본 구조) KMS ..
· DevOps
AWS_SAA_C03(9) / Machine Learning Rekognition 이미지 및 비디오에서 객체, 얼굴, 텍스트 등을 찾는다. 부적절하거나 공격적인 콘텐츠를 감지할 수 있다. Transcribe 오디오 및 비디오에서 자동으로 음성을 텍스트로 변환한다. 자동 음성 인식(ASR)이라는 딥 러닝 프로세스를 사용한다. Polly 텍스트를 음성으로 변환한다. Translate 텍스트 번역 서비스. Lex 자동 음성 인식을 통해 음성을 텍스트로 변환. 챗봇 구축 지원. Connect 전화를 수신하고 고객 응대 흐름을 생성하는 클라우드 기반 가상 고객센터. Comprehend 텍스트 분석 서비스. 감정 분석, 핵심 문구 추출등을 할 수 있다. Natural Language Processing (NLP) ..
· DevOps
AWS_SAA_C03(8) / Analytics Athena S3에 저장된 데이터를 분석하는 서버리스 쿼리 서비스. SQL 언어를 사용하여 파일을 쿼리한다. (Presto 기반) CSV, JSON, ORC, Avro 및 Parquet 포멧 지원. Redshift PostgreSQL을 기반으로 하는 OLAP(Online Analytical Processing). 대형 데이터 셋을 분석할 수 있는 데이터 웨어하우스이다. OLTP(Online Transactional Processing) 아님. Columnar storage이다. (row base아님) SQL을 기반으로 한다. Fine-grained Row-Level Security(RLS) access control을 제공한다. Redshift Cluste..
· DevOps
AWS_SAA_C03(7) / Monitoring & Architect Step Functions 워크플로우를 시각적으로 구성할 수 있는 서버리스 형태의 기능. 주로 람다 함수를 오케스트레이션 하는 데 활용한다. EC2, ECS, On-premises, API Gateway, SQS 등과 연동할 수 있다. CloudWatch AWS의 모든 서비스에 대한 지표를 제공하는 서비스. CPUUtilization, NetworkIn등을 모니터링 할 수 있다. 측정 항목에는 타임스탬프가 있다. 지표의 CloudWatch 대시보드를 생성할 수 있다. 대시보드 공유 기능을 통해 계정을 생성하지 않고 유저가 대시보드에 접근할 수 있다 (이후 유저 고유의 비밀번호 생성) Metric Streams: Amazon Cloud..
· DevOps
AWS_SAA_C03(6) / Container & Serverless ECS Elastic Container Service의 약자로 Docker 컨테이너를 간편하게 배포할 수 있는 AWS의 완전 관리형 서비스이다. ECS 클러스터에서 ECS 테스크를 실행하는 형태로 작동한다. ECS Cluster - EC2 Launch Type EC2 인스턴스 유형으로 ECS를 실행하면 EC2 인프라를 관리해야 한다. 각각의 EC2 인스턴스는 ECS Agent를 실행해야 한다. ECS Cluster - Fargate LaunchType EC2 인스턴스를 관리하지 않는 서버리스 서비스이다. ECS Task만 정의하면 필요한 CPU, RAM에 따라 자동으로 실행된다. ECR Elastic Container Registry..
· DevOps
AWS SAA C03 / Decoupling SQS 디커플링을 위한 완전 관리형 분산 메시지 큐 서비스. Producer와 Comsumer 사이의 Buffer 역할을 한다. 처리량 및 대기열 메시지 수 무제한. DLQ(Dead Letter Queue)를 이용해서 전송에 실패한 메시지에 대해 처리할 수 있다. Producing & Consuming Messages Producing: 중복된 메시지 및 순서가 잘못된 메시지가 있을 수 있다. 중복: visibility timeout 늘리기 (메시지가 처리중일 때 다른 소비자에게 보이지 않도록 해서 중복 방지) 순서: FIFO Queue 메시지는 소비자가 삭제할 때까지 SQS에서 유지된다. (기본 4일까지, 최대 14일까지) 메시지당 최대 256KB 크기 제한..
· DevOps
AWS SAA C03 / Network Route53 AWS에서 제공하는 DNS(Domain Name System) 서비스. Authoritative DNS 서비스이다. (내가 직접 DNS 레코드를 업데이트 할 수 있음) Record Type A: hostname을 IPv4에 매핑 한다. AAAA: hostname을 IPv6에 매핑 한다. CNAME: hostname을 다른 hostname에 매핑 한다. Alias: hostname을 AWS 리소스에 매핑한다. Target: ELB, ClourFront, API gateway, EB, S3 website, VPC interface endpoint, Global Accelerator, Route53 record. NS: 도메인에 대한 트래픽이 어떻게 라우팅..
cslee00
성실하게 매일