전체 글

Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 만능 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험했던 내용과 공부했던 내용을 기록합니다. 🐻‍❄️☁️
macOS 에서 mysql 서비스를 실행시키는 명령어를 쳐주어야 한다. brew services start mysql 재접속해보니 성공했다
Process Synchronization 컴퓨터 시스템 내에서 데이터가 접근되는 패턴이 있다. 위의 그림처럼 데이터가 저장되는 공간에서 연산할 데이터만 로드시켜서 CPU에서 연산을 한다. 연산 결과는 다시 저장공간에 저장된다. 공유 데이터의 동시 접근이 일어나면 데이터의 불일치 문제가 발생할 수 있다. 일관성 유지를 위해서 협력 프로세스 간의 실행 순서를 정해주는 매커니즘이 필요 Race Condition 여러 프로세스들이 동시에 공유 데이터를 접근하는 상황 데이터의 최종 연산 결과는 마지막에 그 데이터를 다룬 프로세스에 따라 달라짐 race condition을 막기 위해서 concurrent process는 동기화 되어야 한다. Race Condition 이 발생하는 상황 1. Kernel Code ..
CPU Scheduling 이 필요한 이유 ? 여러 종류의 job (= process) 가 섞여 있기 때문에 스케줄링이 필요하다. CPU를 계속해서 사용하는 CPU bound job도 있고, 사용자와 인터렉션을 해야하는 I/O bound job 이 있다. FCFS (First-Come-First-Served) 프로세스의 도착 순서대로 사용한다. -> 마지막으로 도착한 프로세스가 지나치게 오래 기다리게 될 것이다. Round Robin 각 프로세스는 동일한 크기의 시간을 할당 받고, 할당받은 시간이 지나면 프로세스는 선덤 당하고 ready queue의 가장 뒤에 가서 줄을 선다. 프로세스가 ready queue에 n 개 있을 때, 할당 시간이 q time-unit인 경우, 각 프로세스는 최대 q time-..
RDS → S3 마이그레이션 task를 수행하는 중 DMS에서 CDC 작업이 제대로 이루어지는지 검증하는 작업을 수행했다. DMS로 MySQL DB (RDS) 에서 S3 Bucket으로 Migration 하기 AWS에서 새로운 RDS 인스턴스 생성 RDS와 MySQL Workbench 연결하기 RDS 보안그룹에 인바운드 규칙은 다음과 같이 추가되어야 한다. (필요에 따라 내 IP를 선택하거나 모든 트래픽을 선택하면 될 것이다. ) 3. 엔드포인트 생성 및 연결 테스트 완료 엔드포인트 생성 시 rds에서 사용하는 마스터키 비밀번호를 정확하게 입력해주어야 한다 4. RDS에서 파라미터 그룹 생성 5. 파라미터 설정에서 binlog_row_image 를 full 로 변경 6. binlog_format 값으로 ..
이러한 아키텍처대로, Private Subnet에 있는 ec2인스턴스에서 S3 Bucket에 접근할 수 있도록, PrivateLink 서비스를 사용하는 인프라를 구현해 보았다. VPC Endpoint를 사용하면 VPC에서 AWS 서비스들과 통신할 때 외부 인터넷에 데이터를 노출시키지 않고, Private하게 서비스에 접근 및 통신할 수 있다. 1. Private Subnet에 ec2 인스턴스 생성하기 2. S3 버킷을 원하는 region 에 생성하기 3. VPC endpoint로 EC2랑 S3를 연결하기 AWS 서비스를 선택한다 미리 생성한 ec2가 있는 VPC를 선택한다 S3 버킷을 만든 region 에 해당하는 aws s3 서비스를 선택한다. 4.Private Subnet 내에 속한 인스턴스에서 S3..
RDD ? RDD는 Resilient Distributed Dataset 의 줄임말로 스파크의 기본 데이터 구조이다. Spark 에서 모든 작업은 새로운 RDD를 만들거나, 변형하거나, 연산하는 것 중 하나이다. Spark 에서는 빠른 맵리듀스 작업을 위해서 RDD를 사용해 처리한다.즉, 하둡에서의 맵리듀스의 단점을 보완하기 때문에 RDD로 대세가 바뀌게 되었다. 하둡에서의 Map Reduce 중간 결과에 대해 데이터 복제, I/O 직렬 수행으로 인해 오버헤드가 발생한다는 문제점이 있다. RDD라는 아이디어에 따르면, 메모리 내에서 데이터를 공유한다. 네트워크나 디스크에서 작업하는 것보다 메모리에서 작업하게 되면 10배에서 100배정도 더 빠르다. memory 의 내용을 read-only 로 사용하게 한..
Process 프로세스는 실행중인 프로그램이다 프로세스의 Context 프로세스에서는 문맥이 중요하다. CPU 수행 상태를 나타낸다. 하드웨어 문맥 : register가 현재 어떤 값을 가지고 있었는지, Program Counter 값 프로세스의 주소 공간 : code, data, stack에 어떤 내용이 들어있는지 프로세스 관련 커널 자료 구조 : PCB (Process Control Block), Kernel stack 이러한 프로세스 정보를 가지고 있으면 프로세스가 어떤 상태에 있는지 알 수 있다. 컴퓨터 시스템에서는 multi-tasking이 이루어진다. 즉 , 프로세스들이 번갈아 가면서 실행된다. 따라서, 현재 프로세스의 문맥을 알지 못하면 다음번에 CPU 자원을 사용할 때 실행할 수 없을 것이..
동기식 입출력 (Synchronous I/O) sync -> 시간적으로 서로 맞춘다 !! 립싱크할때의 그 싱크를 생각해보면 쉽다. I/O 요청 후 입출력 작업이 모두 완료 된 후에 CPU 제어가 사용자 프로그램에 넘어간다. 구현 방법 1 I/O 끝날때까지 CPU를 낭비시킨다. -> 한번에 하나의 I/O만 일어난다. 구현방법 2 -> 보통 동기식 입출력을 구현하는 방식 I/O 가 완료될 때까지 해당 프로그램에게서 CPU빼앗고 I/O 처리를 기다리는 줄에 그 프로그램이 대기한다. 다른 프로그램에게 CPU를 준다. ex) 정말로 스토리지에 결과값이 잘 write되었는지 확인해야만 다음 작업을 할 수 있는 경우 동기식으로 수행해야 할 것이다. 비동기식 입출력 (Asynchronous I/O) I/O가 시작된 후..
minjiwoo
MJ workspace