전체 글

Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
프로젝트에서 온프레미스 환경에 있는 MongoDB 데이터베이스를 AWS DMS 를 사용하여 S3로 마이그레이션을 하게 되었다..!! DMS CDC 기능을 사용해보기 위해서 mongoDB 레플리카 셋을 구축해보게 되었다. MongoDB ReplicaSet 이란 ? Replica Set은 쿠버네티스에서도 등장하는데, Mongo DB에서는 관점이 조금 다르다. 데이터베이스의 데이터를 여러 서버에 동일한 데이터 셋을 저장하고 운영하기 위한 클러스터이다. Replica Set을 구성해서, 하나의 서버에 장애가 일어나더라도 다른 서버가 동일한 데이터 셋을 운영할 것이므로 가용성을 보장할 수 있다. Replica Set 의 패턴 MongoDB에서 레플리카셋을 구성하는 패턴은 크게 두가지이다. 1. PSS (Prima..
Thread 의 장점 1. 응답성, 빠른 처리 : 하나의 스레드가 waiting 인 상태 동안에 동일한 task 내의 다른 스레드는 실행될 수 있어서 응답 속도를 높인다. 2. 자원 절약 : 같은 작업을 수행하는 하나의 프로세스 안의 thread들은 자원을 공유하는 부분이 있다. ex) Code, Data 영역 3. 경제성 : process 를 생성하거나 문맥 교환하는 것에 비해 thread는 경제적이다. (Solaris OS 의 경우 생성의 경우 30배, 문맥 교환의 경우 5배 더 절약된다.) 4. Process는 하나지만, thread는 여러개 인 경우 -> 병렬적으로 일할 수 있다. Thread 구현 방법 Kernel Thread : 운영체제 kernel의 지원을 받는다. ex) 하나의 thread..
동기식 입출력 & 비동기식 입출력 입출력 처리를 운영체제를 통해서 해야 한다. 입출력을 요청한 프로세스가 기다려야 한다면 → 동기식 입출력이다. 입출력이 진행되는 동안에 그 프로세스가 곧바로 CPU를 점유하여 실행한다면 → 비동기식 입출력이다. 동기식 입출력 I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감 방법 1 : I/O 가 끝날 때 까지 CPU를 낭비시킨다. → 매 시점에 하나의 I/O 만 일어날 수 있음 방법 2 : I/O가 완료될 때까지 해당 프로그램에게서 CPU 를 빼앗음 → 다른 프로그램에게 CPU 를 준다. 대부분 방법2로 구현된다. 비동기식 입출력 I/O 가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감. 동기식 & 비동..
·Algorithm (PS)
https://www.acmicpc.net/problem/6593 6593번: 상범 빌딩 당신은 상범 빌딩에 갇히고 말았다. 여기서 탈출하는 가장 빠른 길은 무엇일까? 상범 빌딩은 각 변의 길이가 1인 정육면체(단위 정육면체)로 이루어져있다. 각 정육면체는 금으로 이루어져 있어 www.acmicpc.net BFS 로 풀었다 상하 이동 처리만 신경써주면 된다 하지만 나는 삽질을 몋시간동안 했는지 모르겠다 근데 그 이유가 queue에서 뺄 때 popleft 가 아니라 pop() 을 써서 그렇다 .. 어이없다 ; from collections import deque # 방향 이동 - 동서남북 + 상하 dx = [-1, 1, 0, 0, 0, 0] dy = [0, 0, -1, 1, 0, 0] dz = [0, 0,..
! [remote rejected] main -> main (pre-receive hook declined) 구글링 해보니까 branch protect 정책을 설정하지 않아서 생긴 문제라고 한다 Git에 새로 생긴 기능이려나..? 따라서 레포지토리 -> Settings -> Branch 에 들어가서 새로운 Branch Protection rule을 만들어 주었다. 나의 경우 사이드 프로젝트 였으므로 push force 를 허용하고 delete 도 허용하는 두가지 rule을 추가하였고, 별도로 다른 정책은 건드리지 않았다. 대용량 파일 올리는 방법은 git lfs로 쪼개서 올리는 방법이 있다. git에서는 50MB 를 넘어가면 대용량 파일로 간주하여 올리는데 문제가 발생한다.. brew install lf..
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-..
minjiwoo
minji's engineering note